diff --git a/app/Classes/Modules/ControllersLogic/Orders/PackingList/UpdatePackingListLogic.php b/app/Classes/Modules/ControllersLogic/Orders/PackingList/UpdatePackingListLogic.php new file mode 100644 index 0000000..b0f5ef3 --- /dev/null +++ b/app/Classes/Modules/ControllersLogic/Orders/PackingList/UpdatePackingListLogic.php @@ -0,0 +1,59 @@ +updatesPackingList = $updatesPackingList; + } + + + /** + * @param String $orderId + * @param Request $request + * @return JsonResponse + * @throws InternalServerErrorException + */ + public function execute(String $orderId, Request $request){ + + try { + + $orderObject = new OrderObject($orderId); + + $packingListObject = new PackingListObject($request->input('reference_no'), $request->input('packages')); + + $confirmed = $this->checkPackingListIsComplete($packingListObject->getPackages()); + + $this->updatesPackingList->execute($orderObject, $packingListObject, $confirmed); + + return new JsonResponse(null, 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/DataTransferObjects/PackageObject.php b/app/Classes/Modules/Orders/DataTransferObjects/PackageObject.php deleted file mode 100644 index bd8c8b8..0000000 --- a/app/Classes/Modules/Orders/DataTransferObjects/PackageObject.php +++ /dev/null @@ -1,82 +0,0 @@ -description = $description; - $this->quantity = $quantity; - $this->width = $width; - $this->height = $height; - $this->length = $length; - } - - /** - * @return string - */ - public function getDescription(): string - { - return $this->description; - } - - /** - * @return int - */ - public function getQuantity(): int - { - return $this->quantity; - } - - /** - * @return int - */ - public function getWidth(): int - { - return $this->width; - } - - /** - * @return int - */ - public function getHeight(): int - { - return $this->height; - } - - /** - * @return int - */ - public function getLength(): int - { - return $this->length; - } - - -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/DataTransferObjects/PackingListObject.php b/app/Classes/Modules/Orders/DataTransferObjects/PackingListObject.php index 89489db..83ede23 100644 --- a/app/Classes/Modules/Orders/DataTransferObjects/PackingListObject.php +++ b/app/Classes/Modules/Orders/DataTransferObjects/PackingListObject.php @@ -9,25 +9,21 @@ class PackingListObject /** @var string */ private $referenceId; - /** @var boolean */ - private $confirmed; - /** @var PackageObject[] */ private $packages; /** * PackingListObject constructor. * @param string $referenceId - * @param bool $confirmed - * @param array $packages + * @param PackageObject[] $packages */ - public function __construct(string $referenceId, bool $confirmed, array $packages) + public function __construct(string $referenceId, array $packages) { $this->referenceId = $referenceId; - $this->confirmed = $confirmed; $this->packages = $packages; } + /** * @return string */ @@ -37,21 +33,11 @@ class PackingListObject } /** - * @return bool + * @return array */ - public function isConfirmed(): bool + public function getPackages(): array { - return $this->confirmed; - } - - /** - * @return PackageObject[] - */ - public function getPackages() - { - return array_map(function($package){ - return new PackageObject($package['description'], $package['quantity'], $package['width'], $package['height'], $package['length']); - }, $this->packages); + return $this->packages; } diff --git a/app/Classes/Modules/Orders/Services/PackingList/UpdatesPackingList.php b/app/Classes/Modules/Orders/Services/PackingList/UpdatesPackingList.php new file mode 100644 index 0000000..1397364 --- /dev/null +++ b/app/Classes/Modules/Orders/Services/PackingList/UpdatesPackingList.php @@ -0,0 +1,38 @@ +repository = $repository; + } + + + public function execute(OrderObject $orderObject, PackingListObject $packingListObject, bool $confirmed){ + + $packingList = $this->repository->firstOrCreate(['order_id' => $orderObject->getOrderId()], + [ + 'reference_no' => $packingListObject->getReferenceId(), + 'confirmed' => $confirmed + ]); + + $packingList->packages()->delete(); + $packingList->packages()->createMany($packingListObject->getPackages()); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Orders/OrderController.php b/app/Http/Controllers/Orders/OrderController.php index b1db9ec..cb45254 100644 --- a/app/Http/Controllers/Orders/OrderController.php +++ b/app/Http/Controllers/Orders/OrderController.php @@ -2,9 +2,6 @@ namespace App\Http\Controllers\Orders; -use App\Classes\ControllersLogic\Orders\CreateOrder; -use App\Classes\Modules\ControllersLogic\Orders\UpdateOrderStepLogic; -use App\Classes\Modules\Orders\DataTransferObjects\PackageObject; use App\Classes\Modules\Orders\DataTransferObjects\PackingListObject; use App\Models\CustomIssues; use App\Models\Order; @@ -19,7 +16,7 @@ class OrderController extends Controller { public function show($id){ - $order = Order::findOrFail($id)->first(); + $order = order::findOrFail($id); return new OrderResource($order); } @@ -36,6 +33,7 @@ class OrderController extends Controller } public function updatePackingList(String $orderId, Request $request){ + dd($request->input('packages')); $packingList = PackingList::updateOrCreate(['order_id' => $orderId],['reference_no' => $request->input('reference_no')]); $confirmed = true; $packages = []; diff --git a/app/Http/Controllers/Orders/UpdatePackingListController.php b/app/Http/Controllers/Orders/UpdatePackingListController.php new file mode 100644 index 0000000..88dbc9f --- /dev/null +++ b/app/Http/Controllers/Orders/UpdatePackingListController.php @@ -0,0 +1,20 @@ +execute($orderId, $request); + } + +} \ No newline at end of file diff --git a/app/Http/Resources/Order.php b/app/Http/Resources/Order.php index d172872..1641d31 100644 --- a/app/Http/Resources/Order.php +++ b/app/Http/Resources/Order.php @@ -5,6 +5,8 @@ namespace App\Http\Resources; use App\Classes\Modules\Orders\Services\ListsOrderHistory; use App\Classes\Modules\Steps\GetStep; use App\Classes\Modules\Steps\StepAttachments; +use App\Models\OrderStep; +use App\Http\Resources\OrderStep as OrderStepResource; use Illuminate\Http\Resources\Json\JsonResource; use App\Models\AddressBook; @@ -27,13 +29,13 @@ class Order extends JsonResource 'supplier_id' => $this->supplier_id, 'warehouse_id' => $this->warehouse_id, 'address' => new \App\Http\Resources\AddressBook($addressBook), - 'current_step' => $this->current_step, 'complete' => (float)$this->complete, 'date' => $this->created_at->format('d/m/Y'), - 'steps' => [ + 'current_step' => [ 'details' => (new GetStep())->execute($this->current_step), 'attachments' => (new StepAttachments())->execute($this->id, $this->current_step) ], + 'steps' => OrderStepResource::collection(OrderStep::where('order_id', $this->id)->orderBy('sequence')->get()), 'details' => (new ListsOrderHistory())->execute($this->id, $this->created_at, $this->complete, $this->updated_at) ]; } diff --git a/app/Http/Resources/OrderStep.php b/app/Http/Resources/OrderStep.php new file mode 100644 index 0000000..ba13201 --- /dev/null +++ b/app/Http/Resources/OrderStep.php @@ -0,0 +1,24 @@ + $this->complete, + 'reference_id' => $this->reference_id, + 'details' => (new GetStep())->execute($this->reference_id) + ]; + } +} diff --git a/app/Traits/ChecksIfPackingListIsComplete.php b/app/Traits/ChecksIfPackingListIsComplete.php new file mode 100644 index 0000000..0b2ac55 --- /dev/null +++ b/app/Traits/ChecksIfPackingListIsComplete.php @@ -0,0 +1,23 @@ +increments('id'); $table->integer('list_id')->unsigned()->index(); + $table->integer('type')->default(0); $table->string('description'); $table->integer('width'); $table->integer('length'); diff --git a/resources/assets/images/icons/packing-icon.png b/resources/assets/images/icons/packing-icon.png new file mode 100644 index 0000000..bc9a378 Binary files /dev/null and b/resources/assets/images/icons/packing-icon.png differ diff --git a/resources/assets/images/icons/processing-icon.png b/resources/assets/images/icons/processing-icon.png new file mode 100644 index 0000000..44ec0ff Binary files /dev/null and b/resources/assets/images/icons/processing-icon.png differ diff --git a/resources/assets/sass/modules/_tabs_accordian.scss b/resources/assets/sass/modules/_tabs_accordian.scss index 5f90783..60ae67b 100644 --- a/resources/assets/sass/modules/_tabs_accordian.scss +++ b/resources/assets/sass/modules/_tabs_accordian.scss @@ -150,7 +150,7 @@ border-bottom: 1px solid rgba(0, 0, 0, 0.1); width: 100%; position: absolute; - bottom: -2px; + bottom: -1px; z-index: 120; left: 0; } @@ -168,7 +168,7 @@ content: ''; left: 0; z-index: 125; - top: 100%; + top: calc(100% - 1px); &.nav-tabs-primary{ background-color: $color-primary; } @@ -635,6 +635,22 @@ } } +.nav-item { + .arrow_tab { + overflow: hidden; + background-color: $color-master-lighter; + opacity: 0.5; + border-color: $color-master-light; + } + .active { + .arrow_tab { + opacity: 1; + background-color: $color-white !important; + border-color: $color-white; + } + } +} + /* Panel Groups ------------------------------------ */ diff --git a/resources/assets/vue/app.js b/resources/assets/vue/app.js index d0ea778..2c02568 100644 --- a/resources/assets/vue/app.js +++ b/resources/assets/vue/app.js @@ -80,10 +80,11 @@ Vue.component('order-page-component', require('./components/order/elements/Order Vue.component('order-select-component', require('./components/order/elements/OrderSelectComponent.vue')); Vue.component('order-component', require('./components/order/elements/OrderComponenet.vue')); -Vue.component('order-profile-component', require('./components/order/elements/OrdersProfileComponent.vue')); +Vue.component('order-profile-component', require('./components/order/elements/OrderProfileComponent.vue')); Vue.component('order-header-component', require('./components/order/elements/OrderHeaderComponenet.vue')); Vue.component('order-action-component', require('./components/order/elements/OrderActionComponenet.vue')); -Vue.component('order-history-component', require('./components/order/elements/OrderHistoryComponenet.vue')); +Vue.component('order-delivery-address-component', require('./components/order/elements/OrderDeliveryAddressComponenet.vue')); +Vue.component('order-quick-view-component', require('./components/order/elements/OrderQuickViewComponenet.vue')); Vue.component('confirm-order-component', require('./components/order/elements/steps/ConfirmOrderComponent.vue')); diff --git a/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue b/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue index 01051fe..21d3e5b 100644 --- a/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue +++ b/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue @@ -114,6 +114,16 @@ Complete +
  • +
    +
    + + + + +
    +
    +
  • @@ -158,26 +168,6 @@
    - - - - - - - - - - - - - - - - - - - - diff --git a/resources/assets/vue/components/company/elements/CompanySummaryComponenet.vue b/resources/assets/vue/components/company/elements/CompanySummaryComponenet.vue index dd8b6a1..9290729 100644 --- a/resources/assets/vue/components/company/elements/CompanySummaryComponenet.vue +++ b/resources/assets/vue/components/company/elements/CompanySummaryComponenet.vue @@ -8,41 +8,41 @@
    -
    +

    {{this.company.name}}

    -
    - {{this.company.street_one || ''}} {{ this.company.street_two || '' }} {{this.company.city || '' }} {{this.company.post_code || ''}} {{this.company.state || ''}} {{this.company.country || ''}} +
    + {{this.company.street_one || ''}} {{ this.company.street_two || '' }} {{this.company.city || '' }} {{this.company.post_code || ''}} {{this.company.state || ''}} {{this.company.country || ''}}
    - Registration No: + Registration No:
    - {{this.company.registration_no}} + {{this.company.registration_no}} Empty
    - Tax No: + Tax No:
    - {{this.company.tax_no}} + {{this.company.tax_no}} Empty
    - Email: + Email:
    - {{this.company.email}} + {{this.company.email}} Empty
    diff --git a/resources/assets/vue/components/order/elements/OrderActionComponenet.vue b/resources/assets/vue/components/order/elements/OrderActionComponenet.vue index 59594c6..94a89c2 100644 --- a/resources/assets/vue/components/order/elements/OrderActionComponenet.vue +++ b/resources/assets/vue/components/order/elements/OrderActionComponenet.vue @@ -6,7 +6,7 @@ delete order
    - +
    View Details
    diff --git a/resources/assets/vue/components/order/elements/OrderComponenet.vue b/resources/assets/vue/components/order/elements/OrderComponenet.vue index 0f73d73..ed67b08 100644 --- a/resources/assets/vue/components/order/elements/OrderComponenet.vue +++ b/resources/assets/vue/components/order/elements/OrderComponenet.vue @@ -2,8 +2,8 @@
    - - + +
    diff --git a/resources/assets/vue/components/order/elements/OrderDeliveryAddressComponenet.vue b/resources/assets/vue/components/order/elements/OrderDeliveryAddressComponenet.vue new file mode 100644 index 0000000..7cc3328 --- /dev/null +++ b/resources/assets/vue/components/order/elements/OrderDeliveryAddressComponenet.vue @@ -0,0 +1,30 @@ + + + \ No newline at end of file diff --git a/resources/assets/vue/components/order/elements/OrderHeaderComponenet.vue b/resources/assets/vue/components/order/elements/OrderHeaderComponenet.vue index 1550e9a..fb146a4 100644 --- a/resources/assets/vue/components/order/elements/OrderHeaderComponenet.vue +++ b/resources/assets/vue/components/order/elements/OrderHeaderComponenet.vue @@ -1,7 +1,7 @@ +