'Created PackageItem', 'message' => 'You have successfully created a new PackageItem' ]; } /** @var CanCreatePackageItem */ private $canCreatePackageItem; /** @var FetchesPackage */ private $fetchesPackage; /** @var CreatesPackageItem */ private $createsPackageItem; /** * CreatePackageItemLogic constructor. * @param CanCreatePackageItem $canCreatePackageItem * @param FetchesPackage $fetchesPackage * @param CreatesPackageItem $createsPackageItem */ public function __construct(CanCreatePackageItem $canCreatePackageItem, FetchesPackage $fetchesPackage, CreatesPackageItem $createsPackageItem) { $this->canCreatePackageItem = $canCreatePackageItem; $this->fetchesPackage = $fetchesPackage; $this->createsPackageItem = $createsPackageItem; } /** * @param Request $request * @return JsonResponse * @throws \App\Classes\Exceptions\AccessForbiddenException * @throws \App\Classes\Exceptions\MalformedRequestException * @throws \App\Classes\Exceptions\RequestValidationException */ public function logic(Request $request) : JsonResponse { $package = $this->fetchesPackage->execute(['id' => $request->input('package_id')]); $reference_no = rand(1000000, 9999999); $object = new PackageItemObject( $package->id, $request->input('name'), $reference_no, $request->input('description'), $request->input('quantity'), $request->input('uom'), $request->input('price'), $request->input('total'), ApprovalStatus::PENDING_SUBMISSION); $this->canCreatePackageItem->passes($object); $query = $this->createsPackageItem->execute($object); return $this->resourceResponse(new PackageItemResource($query)); } }