repository = $repository; $this->createsAddress = $createsAddress; } public function execute(Request $request){ $company = $request->method() === 'PUT' ? Company::findOrFail($request->input('id')) : new company; $company->fill($request->except(array_merge(Constants::COMPANY_DOCUMENTS, Constants::ADDRESS_FIELDS))); if($company->save()){ foreach (Constants::COMPANY_DOCUMENTS as $documentType){ $documents = $request->input($documentType); if($documents !== null){ (new updateDocuments( Constants::MODULE_TYPES['company'], $company->id, $documentType))->execute($documents); } } $this->repository->where('company_id', $company->id)->where('billing', true)->delete(); $billing = new AddressBookObject(null, $company->id, null, null, $request->input('street_one'), $request->input('street_two'), $request->input('city'), $request->input('state'), $request->input('post_code'), $request->input('country'), false, true); $this->createsAddress->execute($billing); return new CompanyResource($company); } } }