canCreateCompany = $canCreateCompany; $this->createsCompany = $createsCompany; } /** * @param Request $request * @param int $businessType * @param int|null $companyType * @param int|null $status * @return Model * @throws \App\Classes\Exceptions\AccessForbiddenException * @throws \App\Classes\Exceptions\MalformedRequestException * @throws \App\Classes\Exceptions\RequestValidationException */ public function execute(Request $request, int $businessType = BusinessType::IMPORTER, ?int $companyType = CompanyType::COMPANY_BUSINESS, ?int $status = ApprovalStatus::PENDING_SUBMISSION): Model { $companyName = $companyType === CompanyType::COMPANY_BUSINESS ? $request->input('company_name') : $request->input('name'); $companyReference = $request->input('company_reference') ? $request->input('company_reference') : mt_rand(1000, 9999).(new GeneratesInitials())->name($companyName)->length(3)->generate(); $company_object = new CompanyObject( $companyName, $companyReference, $businessType, $companyType, $status); $this->canCreateCompany->passes($company_object); return $this->createsCompany->execute($company_object); } }