diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/ReschedulePackingListLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/ReschedulePackingListLogic.php new file mode 100644 index 00000000..8f2ca463 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/ReschedulePackingListLogic.php @@ -0,0 +1,83 @@ + 'Reschedule Container', + 'message' => 'You have successfully Reschedule Container' + ]; + } + + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** @var UpdatesScheduleStatus */ + private $updatesScheduleStatus; + + /** @var CreatesSchedule */ + private $createsSchedule; + + /** + * DeleteContainerControllersLogic constructor. + * @param FetchesPackingList $fetchesPackingList + * @param CreatesSchedule $createsSchedule + */ + public function __construct(FetchesPackingList $fetchesPackingList, UpdatesScheduleStatus $updatesScheduleStatus, CreatesSchedule $createsSchedule) + { + $this->fetchesPackingList = $fetchesPackingList; + $this->updatesScheduleStatus = $updatesScheduleStatus; + $this->createsSchedule = $createsSchedule; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + dd('yesss'); + try { + $container = $this->fetchesPackingList->execute(['id' => $request->route('id')]); + $transport = $container->transports()->first(); + + $old_sechedule = $transport->schedules()->first(); + + $this->updatesScheduleStatus->execute($old_sechedule, ApprovalStatus::REJECTED); + + $scheduleObject = new ScheduleObject( + Carbon::parse($request->input('eta')), + Carbon::parse($request->input('etd')), + ApprovalStatus::APPROVED + ); + $schedule = $this->createsSchedule->execute($transport, $scheduleObject); + + return $this->resourceResponse(new ContainerResource($container)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Http/Controllers/PackingLists/ReschedulePackingListController.php b/app/Http/Controllers/PackingLists/ReschedulePackingListController.php new file mode 100644 index 00000000..b92e672e --- /dev/null +++ b/app/Http/Controllers/PackingLists/ReschedulePackingListController.php @@ -0,0 +1,19 @@ +execute($request); + } +} diff --git a/routes/packing_list.php b/routes/packing_list.php index 4eb27ddf..d9997e67 100644 --- a/routes/packing_list.php +++ b/routes/packing_list.php @@ -10,6 +10,12 @@ Route::group(['namespace' => 'PackingLists', 'as' => 'packing_list.', 'prefix' = Route::put('/status/{id}/update/{status}', 'UpdatePackingListStatusController@update')->name('status.update'); Route::delete('/delete/{id}', 'DeletePackingListController@delete')->name('delete'); + Route::put('/reschedule/{id}', 'ReschedulePackingListController@reschedule')->name('reschedule'); + Route::put('/update-dispatch-date/{id}', 'UpdateDispatchDatePackingListController@update')->name('update_dispatch_date'); + Route::put('/update-drop-date/{id}', 'UpdateDropDatePackingListController@update')->name('update_drop_date'); + Route::put('/complete/{id}', 'CompletePackingListController@complete')->name('complete'); + + Route::group(['namespace' => 'Containers', 'prefix' => 'container', 'as' => 'container.'], function () { Route::get('/{id}/show', 'FetchContainerController@fetch')->name('show'); Route::get('/list', 'ListContainersController@list')->name('list');