'Updated Package', 'message' => 'You have successfully updated the Package' ]; } /** @var CanUpdatePackage */ private $canUpdatePackage; /** @var UpdatesPackage */ private $updatesPackage; /** @var FetchesPackage */ private $fetchesPackage; /** * UpdatePackageLogic constructor. * @param CanUpdatePackage $canUpdatePackage * @param UpdatesPackage $updatesPackage * @param FetchesPackage $fetchesPackage */ public function __construct(CanUpdatePackage $canUpdatePackage, UpdatesPackage $updatesPackage, FetchesPackage $fetchesPackage) { $this->canUpdatePackage = $canUpdatePackage; $this->updatesPackage = $updatesPackage; $this->fetchesPackage = $fetchesPackage; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { $package = $this->fetchesPackage->execute(['id' => $request->route('id')]); $object = new PackageObject( $package->order_id, null, $request->input('type'), $request->input('description'), $request->input('width'), $request->input('height'), $request->input('length'), $request->input('weight'), $request->input('quantity'), $request->input('status')); $this->canUpdatePackage->passes($object); $query = $this->updatesPackage->execute($package, $object); return $this->resourceResponse(new PackageResource($query)); } }