diff --git a/app/Classes/Modules/ControllersLogic/Orders/UpdateReceiveNoteLogic.php b/app/Classes/Modules/ControllersLogic/Orders/UpdateReceiveNoteLogic.php new file mode 100644 index 0000000..3f42442 --- /dev/null +++ b/app/Classes/Modules/ControllersLogic/Orders/UpdateReceiveNoteLogic.php @@ -0,0 +1,80 @@ +repository = $repository; + $this->SetsOrderWarehouse = $SetsOrderWarehouse; + $this->UpdatesOrderReceiveNoteDate = $UpdatesOrderReceiveNoteDate; + $this->CreatesReceiveNote = $CreatesReceiveNote; + } + + + public function execute(string $orderId, Request $request){ + + try{ + $orderObject = new OrderObject($orderId, null, $request->input('warehouse_id')); + $this->SetsOrderWarehouse->execute($orderObject); + + $receiveNoteObject = new ReceiveNoteObject($request->input('tracking_no')); + $this->CreatesReceiveNote->execute($orderObject, $receiveNoteObject); + + $repository = $this->repository->findOrFail($orderId); + $stepObject = new StepObject($repository->current_step, $request->input('complete_date')); + return $this->UpdatesOrderReceiveNoteDate->execute($orderId, $stepObject); + + return new JsonResponse([], HttpStatus::RESOURCE_CREATED); + + }catch(\Exception $exception) { + throw new InternalServerErrorException("Failed to update order's packing list because {$exception->getMessage()}"); + } + + + + + + + + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Services/ReceiveNote/CreatesReceiveNote.php b/app/Classes/Modules/Orders/Services/ReceiveNote/CreatesReceiveNote.php index be516af..b973ca6 100644 --- a/app/Classes/Modules/Orders/Services/ReceiveNote/CreatesReceiveNote.php +++ b/app/Classes/Modules/Orders/Services/ReceiveNote/CreatesReceiveNote.php @@ -3,9 +3,12 @@ namespace App\Classes\Modules\Orders\Services\ReceiveNote; +use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\DataTransferObjects\ReceiveNoteObject; +use App\Classes\ValueObjects\Constants\HttpStatus; use App\Models\ReceiveNote; +use Illuminate\Http\JsonResponse; class CreatesReceiveNote { @@ -18,12 +21,19 @@ class CreatesReceiveNote $this->repository = new ReceiveNote(); } - public function execute(OrderObject $order , ReceiveNoteObject $receiveNote){ + public function execute(OrderObject $order, ReceiveNoteObject $receiveNoteObject){ + try{ + $this->repository->updateOrCreate(['order_id' => $order->getOrderId()], [ + 'tracking_no' => $receiveNoteObject->getTrackingNumber() + ]); + + return new JsonResponse([], HttpStatus::OK); + + } catch (\Exception $exception){ + throw new InternalServerErrorException("Failed to update receive note because {$exception->getMessage()}"); + } - $this->repository->order_id = $order->getOrderId(); - $this->repository->tracking_no = $receiveNote->getTrackingNumber(); - $this->repository->save(); } } \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Services/SetsOrderWarehouse.php b/app/Classes/Modules/Orders/Services/SetsOrderWarehouse.php index c56c02b..2c2ef9d 100644 --- a/app/Classes/Modules/Orders/Services/SetsOrderWarehouse.php +++ b/app/Classes/Modules/Orders/Services/SetsOrderWarehouse.php @@ -28,7 +28,6 @@ class SetsOrderWarehouse */ public function execute(OrderObject $order){ try { - /** @var Order $repository */ $repository = $this->repository->findOrFail($order->getOrderId()); $repository->warehouse_id = $order->getWarehouseId(); diff --git a/app/Classes/Modules/Orders/Services/Steps/UpdatesOrderReceiveNoteDate.php b/app/Classes/Modules/Orders/Services/Steps/UpdatesOrderReceiveNoteDate.php new file mode 100644 index 0000000..cbfca31 --- /dev/null +++ b/app/Classes/Modules/Orders/Services/Steps/UpdatesOrderReceiveNoteDate.php @@ -0,0 +1,48 @@ +repository = $repository; + } + + public function execute(string $orderId, StepObject $step){ + + try{ + $repository = $this->repository->where('order_id',$orderId)->where('reference_id',$step->getReferenceId())->first(); + $repository->complete_date = $step->getCompleteDate(); + $repository->save(); + return $repository; + + return new JsonResponse([], HttpStatus::OK); + + } catch (\Exception $exception){ + throw new InternalServerErrorException("Failed to update receive note because {$exception->getMessage()}"); + } + + + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Orders/UpdateReceiveNoteController.php b/app/Http/Controllers/Orders/UpdateReceiveNoteController.php new file mode 100644 index 0000000..407e024 --- /dev/null +++ b/app/Http/Controllers/Orders/UpdateReceiveNoteController.php @@ -0,0 +1,21 @@ +execute($orderId, $request); + } + +} \ No newline at end of file diff --git a/routes/api.php b/routes/api.php index b17edc2..73e9700 100644 --- a/routes/api.php +++ b/routes/api.php @@ -136,6 +136,8 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function Route::post('/bulk-receive-notes', 'BulkReceiveNotesController@create')->name('bulk.receive.update'); + Route::post('/{orderId}/update-receive-note', 'UpdateReceiveNoteController@update')->name('receive.note.update'); + }); // Service Routes