diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index 74464e80..91f6e518 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -16,6 +16,7 @@ use App\Classes\Modules\Vouchers\Processors\Voucherify\NewCustomerToVoucherifyPr use App\Classes\Modules\Vouchers\Processors\CreateVoucherProcessor; use App\Classes\Modules\Companies\DataTransferObjects\EmploymentObject; use App\Classes\Modules\PerfexCRM\DataTransferObjects\CreateLeadPerfexCRMObject; +use App\Classes\Modules\Rewards\Services\CreatesUserReward; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\BusinessType; use App\Classes\ValueObjects\Constants\CompanyType; @@ -85,6 +86,9 @@ class CreateCustomerLogic extends AbstractControllerLogic /** @var ConnectCompanyToShippingCompanyModule */ private $connectCompanyToShippingCompanyModule; + /** @var CreatesUserReward */ + private $createsUserReward; + /** * CreateCustomerLogic constructor. * @param CreateUserProcessor $createUserProcessor @@ -100,9 +104,10 @@ class CreateCustomerLogic extends AbstractControllerLogic * @param CreateVoucherProcessor $createVoucherProcessor * @param RegisterOnShippingProcessor $registerOnShippingProcessor * @param ConnectCompanyToShippingCompanyModule $connectCompanyToShippingCompanyModule + * @param CreatesUserReward $createsUserReward */ public function __construct(CreateUserProcessor $createUserProcessor, CreateCompanyProcessor $createCompanyProcessor, CreateContactProcessor $createContactProcessor, AssignEmployeeProcessor $assignEmployeeProcessor, AssignSegmentProcessor $assignSegmentProcessor, AuthenticationProcessor $authenticationProcessor, GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor, - CreatesSeasonalSegment $createsSeasonalSegment, NewCustomerToVoucherifyProcessor $newCustomerToVoucherifyProcessor, CreateVoucherProcessor $createVoucherProcessor, RegisterOnShippingProcessor $registerOnShippingProcessor, ConnectCompanyToShippingCompanyModule $connectCompanyToShippingCompanyModule) + CreatesSeasonalSegment $createsSeasonalSegment, NewCustomerToVoucherifyProcessor $newCustomerToVoucherifyProcessor, CreateVoucherProcessor $createVoucherProcessor, RegisterOnShippingProcessor $registerOnShippingProcessor, ConnectCompanyToShippingCompanyModule $connectCompanyToShippingCompanyModule, CreatesUserReward $createsUserReward) { $this->createUserProcessor = $createUserProcessor; $this->createCompanyProcessor = $createCompanyProcessor; @@ -117,6 +122,7 @@ class CreateCustomerLogic extends AbstractControllerLogic $this->createVoucherProcessor = $createVoucherProcessor; $this->registerOnShippingProcessor = $registerOnShippingProcessor; $this->connectCompanyToShippingCompanyModule = $connectCompanyToShippingCompanyModule; + $this->createsUserReward = $createsUserReward; } /** @@ -174,10 +180,6 @@ class CreateCustomerLogic extends AbstractControllerLogic // $this->generateEmailVerificationAttemptProcessor->execute($user); - $this->newCustomerToVoucherifyProcessor->execute($company->id, $user, true); - - $this->createVoucherProcessor->execute($user, Vouchers::WELCOME_50_PERCENT_OFF); - $shippingCompanyModuleId = null; if ($request->input('shipping_company_module_id')) { $shippingCompanyModuleId = $request->input('shipping_company_module_id'); @@ -191,6 +193,16 @@ class CreateCustomerLogic extends AbstractControllerLogic $this->connectCompanyToShippingCompanyModule->execute($company->id, $shippingCompanyModuleId); } + $this->newCustomerToVoucherifyProcessor->execute($company->id, $user, true); + + $voucher = $this->createVoucherProcessor->execute($user, Vouchers::WELCOME_50_PERCENT_OFF); + if($voucher){ + $voucherCount = $user->rewards->where('voucher_id', $voucher->id)->count(); + if($voucherCount === 0){ + $this->createsUserReward->execute(null, $user, $voucher->id); + } + } + return $this->response($this->authenticationProcessor->execute($request, false)); }