'Updated Contact', 'message' => 'You have successfully updated the Contact' ]; } /** @var CanUpdateContact */ private $canUpdateContact; /** @var UpdatesContact */ private $updatesContact; /** @var FetchesContact */ private $fetchesContact; /** * UpdateContactControllerLogic constructor. * @param CanUpdateContact $canUpdateContact * @param UpdatesContact $updatesContact * @param FetchesContact $fetchesContact */ public function __construct(CanUpdateContact $canUpdateContact, UpdatesContact $updatesContact, FetchesContact $fetchesContact) { $this->canUpdateContact = $canUpdateContact; $this->updatesContact = $updatesContact; $this->fetchesContact = $fetchesContact; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { try { $object = new ContactObject($request->input('company_id'), $request->input('name'), $request->input('designation'), $request->input('email'), $request->input('phone'), $request->input('wechat_id')); $this->canUpdateContact->passes($object); $query = $this->fetchesContact->execute(['id' => $request->route('id')]); $query = $this->updatesContact->execute($query, $object); return $this->resourceResponse(new ContactResource($query)); } catch (\Exception $exception){ throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }