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 { $company_object = new CompanyObject( $companyType === CompanyType::COMPANY_BUSINESS ? $request->input('company_name') : $request->input('name'), mt_rand(1000, 9999).(new GeneratesInitials())->name($request->input('company_name'))->length(3)->generate(), $businessType, $companyType, $status); $this->canCreateCompany->passes($company_object); return $this->createsCompany->execute($company_object); } }