diff --git a/app/Classes/Modules/Packages/ControllersLogic/CreatePackageItemLogic.php b/app/Classes/Modules/Packages/ControllersLogic/CreatePackageItemLogic.php new file mode 100644 index 00000000..e9bb89e5 --- /dev/null +++ b/app/Classes/Modules/Packages/ControllersLogic/CreatePackageItemLogic.php @@ -0,0 +1,88 @@ + 'Created Package', + 'message' => 'You have successfully created a new Package' + ]; + } + + /** @var CanCreatePackage */ + private $canCreatePackage; + + /** @var FetchesDistrict */ + private $fetchesOrder; + + /** @var FetchesCompany */ + private $fetchesCompany; + + /** @var CreatesPackage */ + private $createsPackage; + + /** + * CreatePackageLogic constructor. + * @param CanCreatePackage $canCreatePackage + * @param FetchesDistrict $fetchesDistrict + * @param FetchesCompany $fetchesCompany + * @param CreatesPackage $createsPackage + */ + public function __construct(CanCreatePackage $canCreatePackage, FetchesOrder $fetchesOrder, FetchesCompany $fetchesCompany, CreatesPackage $createsPackage) + { + $this->canCreatePackage = $canCreatePackage; + $this->fetchesOrder = $fetchesOrder; + $this->fetchesCompany = $fetchesCompany; + $this->createsPackage = $createsPackage; + } + + /** + * @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 + { + + $order = $this->fetchesOrder->execute(['id' => $request->input('order_id')]); + + $object = new PackageObject( + $order->id, + null, + $request->input('type'), + $request->input('width'), + $request->input('height'), + $request->input('length'), + $request->input('weight'), + $request->input('quantity'), + 0); + + $this->canCreatePackage->passes($object); + + $query = $this->createsPackage->execute($object); + + return $this->resourceResponse(new PackageResource($query)); + + } + +} diff --git a/app/Classes/Modules/Packages/ControllersLogic/CreatePackageLogic.php b/app/Classes/Modules/Packages/ControllersLogic/CreatePackageLogic.php index f3492f4f..e9bb89e5 100644 --- a/app/Classes/Modules/Packages/ControllersLogic/CreatePackageLogic.php +++ b/app/Classes/Modules/Packages/ControllersLogic/CreatePackageLogic.php @@ -5,7 +5,7 @@ namespace App\Classes\Modules\Packages\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Packages\Services\CreatesPackage; -use App\Classes\Modules\Packages\Services\FetchesDistrict; +use App\Classes\Modules\Orders\Services\FetchesOrder; use App\Classes\Modules\Packages\Standards\Rules\CanCreatePackage; use App\Classes\Modules\Packages\DataTransferObjects\PackageObject; use App\Classes\Modules\Companies\Services\FetchesCompany; @@ -31,7 +31,7 @@ class CreatePackageLogic extends AbstractControllerLogic private $canCreatePackage; /** @var FetchesDistrict */ - private $fetchesDistrict; + private $fetchesOrder; /** @var FetchesCompany */ private $fetchesCompany; @@ -46,10 +46,10 @@ class CreatePackageLogic extends AbstractControllerLogic * @param FetchesCompany $fetchesCompany * @param CreatesPackage $createsPackage */ - public function __construct(CanCreatePackage $canCreatePackage, FetchesDistrict $fetchesDistrict, FetchesCompany $fetchesCompany, CreatesPackage $createsPackage) + public function __construct(CanCreatePackage $canCreatePackage, FetchesOrder $fetchesOrder, FetchesCompany $fetchesCompany, CreatesPackage $createsPackage) { $this->canCreatePackage = $canCreatePackage; - $this->fetchesDistrict = $fetchesDistrict; + $this->fetchesOrder = $fetchesOrder; $this->fetchesCompany = $fetchesCompany; $this->createsPackage = $createsPackage; } @@ -64,13 +64,22 @@ class CreatePackageLogic extends AbstractControllerLogic public function logic(Request $request) : JsonResponse { - $district = $this->fetchesDistrict->execute(['id' => $request->input('district_id')]); + $order = $this->fetchesOrder->execute(['id' => $request->input('order_id')]); - $object = new PackageObject($request->input('street_one'), $request->input('street_two'), $district->country_id, $district->state_id, $district->id, $request->input('post_code')); + $object = new PackageObject( + $order->id, + null, + $request->input('type'), + $request->input('width'), + $request->input('height'), + $request->input('length'), + $request->input('weight'), + $request->input('quantity'), + 0); $this->canCreatePackage->passes($object); - $query = $this->createsPackage->execute($this->fetchesCompany->execute(['id' => $request->input('company_id')]), $object); + $query = $this->createsPackage->execute($object); return $this->resourceResponse(new PackageResource($query)); diff --git a/app/Classes/Modules/Packages/Services/CreatesPackage.php b/app/Classes/Modules/Packages/Services/CreatesPackage.php index 4e09e48c..352d38e8 100644 --- a/app/Classes/Modules/Packages/Services/CreatesPackage.php +++ b/app/Classes/Modules/Packages/Services/CreatesPackage.php @@ -10,23 +10,18 @@ use App\Models\Company; class CreatesPackage extends AbstractUpdateRelationshipRecord { - - /** - * @param Company $company - * @param PackageObject $object - * @return \Illuminate\Database\Eloquent\Model - * @throws \App\Classes\Exceptions\MalformedRequestException - */ - public function execute(Company $company, PackageObject $object) { + public function execute(PackageObject $object) { $model = new Package(); - $model->street_one = $object->getStreetOne(); - $model->street_two = $object->getStreetTwo(); - $model->country_id = $object->getCountryId(); - $model->state_id = $object->getStateId(); - $model->district_id = $object->getDistrictId(); - $model->postcode = $object->getPostCode(); + $model->order_id = $object->orderId(); + $model->claimant_id = $object->claimantId(); + $model->type = $object->type(); + $model->width = $object->width(); + $model->height = $object->height(); + $model->length = $object->length(); + $model->length = $object->weight(); + $model->length = $object->quantity(); - return $this->handler($company->Packages(), $model); + return $this->handler($model); } } diff --git a/app/Classes/Modules/Packages/Standards/Rules/CanCreatePackageItem.php b/app/Classes/Modules/Packages/Standards/Rules/CanCreatePackageItem.php new file mode 100644 index 00000000..d94d7bdd --- /dev/null +++ b/app/Classes/Modules/Packages/Standards/Rules/CanCreatePackageItem.php @@ -0,0 +1,57 @@ +packageItemValidation = $packageItemValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param PackageObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->packageItemValidation->validate($object); + + } + + + /** + * @param PackageObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Packages/Standards/Validators/PackageItemValidation.php b/app/Classes/Modules/Packages/Standards/Validators/PackageItemValidation.php new file mode 100644 index 00000000..cf237b9f --- /dev/null +++ b/app/Classes/Modules/Packages/Standards/Validators/PackageItemValidation.php @@ -0,0 +1,51 @@ + $object->getOrderId(), + 'type' => $object->getType(), + 'width' => $object->getWidth(), + 'height' => $object->getHeight(), + 'length' => $object->getLength(), + 'weight' => $object->getWeight(), + 'quantity' => $object->getQuantity(), + ]; + } + + /** + * @return array + */ + protected function rules(): array { + return [ + 'order_id' => 'required', + 'type' => 'required', + 'width' => 'required', + 'height' => 'required', + 'length' => 'required', + 'weight' => 'required', + 'quantity' => 'required', + ]; + } + + /** + * @return array + */ + protected function messages(): array { + return []; + } + +} diff --git a/app/Classes/Modules/Packages/Standards/Validators/PackageValidation.php b/app/Classes/Modules/Packages/Standards/Validators/PackageValidation.php index 2cbf304e..cf237b9f 100644 --- a/app/Classes/Modules/Packages/Standards/Validators/PackageValidation.php +++ b/app/Classes/Modules/Packages/Standards/Validators/PackageValidation.php @@ -16,9 +16,13 @@ class PackageValidation extends AbstractValidation */ protected function data($object): array { return [ - 'street_one' => $object->getStreetOne(), - 'street_two' => $object->getStreetTwo(), - 'district_id' => $object->getDistrictId() + 'order_id' => $object->getOrderId(), + 'type' => $object->getType(), + 'width' => $object->getWidth(), + 'height' => $object->getHeight(), + 'length' => $object->getLength(), + 'weight' => $object->getWeight(), + 'quantity' => $object->getQuantity(), ]; } @@ -27,8 +31,13 @@ class PackageValidation extends AbstractValidation */ protected function rules(): array { return [ - 'street_one' => 'required', - 'district_id' => 'required', + 'order_id' => 'required', + 'type' => 'required', + 'width' => 'required', + 'height' => 'required', + 'length' => 'required', + 'weight' => 'required', + 'quantity' => 'required', ]; } diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/CreatePackingListLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/CreatePackingListLogic.php index 600b452e..be09d7a8 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/CreatePackingListLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/CreatePackingListLogic.php @@ -5,7 +5,6 @@ namespace App\Classes\Modules\PackingLists\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\PackingLists\Services\CreatesPackingList; -use App\Classes\Modules\PackingLists\Services\FetchesDistrict; use App\Classes\Modules\PackingLists\Standards\Rules\CanCreatePackingList; use App\Classes\Modules\PackingLists\DataTransferObjects\PackingListObject; use App\Classes\Modules\Companies\Services\FetchesCompany; @@ -30,9 +29,6 @@ class CreatePackingListLogic extends AbstractControllerLogic /** @var CanCreatePackingList */ private $canCreatePackingList; - /** @var FetchesDistrict */ - private $fetchesDistrict; - /** @var FetchesCompany */ private $fetchesCompany; @@ -46,10 +42,9 @@ class CreatePackingListLogic extends AbstractControllerLogic * @param FetchesCompany $fetchesCompany * @param CreatesPackingList $createsPackingList */ - public function __construct(CanCreatePackingList $canCreatePackingList, FetchesDistrict $fetchesDistrict, FetchesCompany $fetchesCompany, CreatesPackingList $createsPackingList) + public function __construct(CanCreatePackingList $canCreatePackingList, FetchesCompany $fetchesCompany, CreatesPackingList $createsPackingList) { $this->canCreatePackingList = $canCreatePackingList; - $this->fetchesDistrict = $fetchesDistrict; $this->fetchesCompany = $fetchesCompany; $this->createsPackingList = $createsPackingList; }