diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php index 40376b12..32ff0ae8 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php @@ -23,8 +23,8 @@ class CreateContainerLogic extends AbstractControllerLogic */ protected function notification():array { return [ - 'title' => 'Created PackingList', - 'message' => 'You have successfully created a new PackingList' + 'title' => 'Created Container', + 'message' => 'You have successfully created a new Container' ]; } diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateLoadContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateLoadContainerLogic.php new file mode 100644 index 00000000..ec9c5db1 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateLoadContainerLogic.php @@ -0,0 +1,105 @@ + 'Created Container', + 'message' => 'You have successfully created a new Container' + ]; + } + + /** @var CanCreateContainer */ + private $canCreateContainer; + + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** @var FetchesCompanyModule */ + private $fetchesCompanyModule; + + /** @var CreatesPackingList */ + private $createsContainer; + + /** @var CreatesTransport */ + private $createsTransport; + + /** @var CreatesSchedule */ + private $createsSchedule; + + public function __construct( + CanCreateContainer $canCreateContainer, + FetchesPackingList $fetchesPackingList, + FetchesCompanyModule $fetchesCompanyModule, + CreatesContainer $createsContainer, + CreatesTransport $createsTransport, + CreatesSchedule $createsSchedule + ) + { + $this->canCreateContainer = $canCreateContainer; + $this->fetchesPackingList = $fetchesPackingList; + $this->fetchesCompanyModule = $fetchesCompanyModule; + $this->createsContainer = $createsContainer; + $this->createsTransport = $createsTransport; + $this->createsSchedule = $createsSchedule; + } + + /** + * @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 + { + $object = new ContainerObject( + $request->input('container_reference'), + $request->input('container_number'), + $request->input('seal_reference'), + $request->input('container_type'), + $request->input('status') + ); + + $company = $this->fetchesCompanyModule->execute(['id' => 2]); + + $this->canCreateContainer->passes($object); + + $container = $this->createsContainer->execute($object, $this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')])); + + $transportObject = new TransportObject(TransportType::LAND, null, $request->input('tracking'), Carbon::parse($request->input('receive_date')), Carbon::parse($request->input('receive_date')), ApprovalStatus::APPROVED); + $transport = $this->createsTransport->execute($transportObject, $container); + + $scheduleObject = new ScheduleObject(Carbon::parse($request->input('receive_date')), Carbon::parse($request->input('receive_date')), ApprovalStatus::APPROVED); + $schedule = $this->createsSchedule->execute($transport, $scheduleObject); + + return $this->resourceResponse(new ContainerResource($container)); + } + +} diff --git a/app/Http/Controllers/PackingLists/Containers/CreateLoadContainerController.php b/app/Http/Controllers/PackingLists/Containers/CreateLoadContainerController.php new file mode 100644 index 00000000..00373acc --- /dev/null +++ b/app/Http/Controllers/PackingLists/Containers/CreateLoadContainerController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/resources/assets/vue/components/containers/forms/CreateLoadContainerFormComponent.vue b/resources/assets/vue/components/containers/forms/CreateLoadContainerFormComponent.vue new file mode 100644 index 00000000..81c4147b --- /dev/null +++ b/resources/assets/vue/components/containers/forms/CreateLoadContainerFormComponent.vue @@ -0,0 +1,90 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/orders/forms/CreatePackageFormComponent.vue b/resources/assets/vue/components/orders/forms/CreatePackageFormComponent.vue index 10954bed..9ad0807e 100644 --- a/resources/assets/vue/components/orders/forms/CreatePackageFormComponent.vue +++ b/resources/assets/vue/components/orders/forms/CreatePackageFormComponent.vue @@ -12,7 +12,6 @@ - diff --git a/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue b/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue index 8da23c4d..769f0d9e 100644 --- a/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue +++ b/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue @@ -249,18 +249,19 @@
+
+
+ Add +
+ + + +
-
-
- Add -
- - - -
+
diff --git a/resources/assets/vue/general/mixins/containers/validation/createContainerFormValidation.js b/resources/assets/vue/general/mixins/containers/validation/createContainerFormValidation.js new file mode 100644 index 00000000..6b664c73 --- /dev/null +++ b/resources/assets/vue/general/mixins/containers/validation/createContainerFormValidation.js @@ -0,0 +1,32 @@ +import { required } from "vuelidate/lib/validators"; + +export default { + validations: { + parameters: { + tracking: { + required + }, + receive_date: { + required + }, + company_module_id: { + required + }, + container_reference: { + required + }, + container_number: { + required + }, + seal_reference: { + required + }, + container_type: { + required + }, + status: { + required + } + } + }, +} \ No newline at end of file diff --git a/resources/views/layouts/base_portal.blade.php b/resources/views/layouts/base_portal.blade.php index 87144464..eef21b0e 100644 --- a/resources/views/layouts/base_portal.blade.php +++ b/resources/views/layouts/base_portal.blade.php @@ -23,6 +23,12 @@
Refresh Orders
+ +
Add
+ + + +
@yield('inner_content') diff --git a/routes/packing_list.php b/routes/packing_list.php index ea64c7e1..2b6957e6 100644 --- a/routes/packing_list.php +++ b/routes/packing_list.php @@ -14,6 +14,7 @@ Route::group(['namespace' => 'PackingLists', 'as' => 'packing_list.', 'prefix' = Route::get('/{id}/show', 'FetchContainerController@fetch')->name('show'); Route::get('/list', 'ListContainersController@list')->name('list'); Route::post('/create', 'CreateContainerController@create')->name('create'); + Route::post('/create/load', 'CreateLoadContainerController@create')->name('create.load'); Route::put('/update/{id}', 'UpdateContainerController@update')->name('update'); Route::delete('/delete/{id}', 'DeleteContainerController@delete')->name('delete'); });