'Created Package', 'message' => 'You have successfully created a new Package' ]; } /** @var CanCreatePackageList */ private $canCreatePackageList; /** @var CreatesPackageList */ private $createsPackageList; /** @var CreatesPackage */ private $createsPackage; /** @var CreatesPackageItem */ private $createsPackageItem; /** * CreatePackageControllerLogic constructor. * @param CanCreatePackageList $canCreatePackage * @param CreatesPackageList $createsPackageList * @param CreatesPackage $createsPackage * @param CreatesPackageItem $createsPackageItem */ public function __construct(CanCreatePackageList $canCreatePackageList, CreatesPackageList $createsPackageList,CreatesPackage $createsPackage,CreatesPackageItem $createsPackageItem) { $this->canCreatePackageList = $canCreatePackageList; $this->createsPackageList = $createsPackageList; $this->createsPackage = $createsPackage; $this->createsPackageItem = $createsPackageItem; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { try { $object = new PackagesListObject($request->input('order_id'),$request->input('packages')); $this->canCreatePackageList->passes($object); $package_list_query = $this->createsPackageList->execute($object); $package_list_id=$package_list_query->id; $packages=$object->getPackages(); foreach($packages as $package){ $query = $this->createsPackage->execute($package,$package_list_id,$request->input('order_id')); $package_id=$package_list_query->id; $package_items=$package->getItems(); foreach($package_items as $item){ $query = $this->createsPackageItem->execute($item,$package_id); } } return $this->resourceResponse(new PackageResource($package_list_query)); } catch (\Exception $exception){ throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }