diff --git a/app/Classes/General/Eloquent/Filters/InOriginWarehouse.php b/app/Classes/General/Eloquent/Filters/InOriginWarehouse.php new file mode 100644 index 00000000..80bac25a --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/InOriginWarehouse.php @@ -0,0 +1,29 @@ +whereHas('packingList', function($packingList){ + return $packingList->where('type', PackingListType::SHIPPING_PACKING_LIST)->where('status', ApprovalStatus::APPROVED); + })->whereDoesntHave('shippingSchedules', + function($schedule) { + return $schedule->where('etd', '<', Carbon::now()) + ->whereIn('schedules.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]); + } + ); + } +} \ No newline at end of file diff --git a/app/Classes/General/Eloquent/Filters/InTransit.php b/app/Classes/General/Eloquent/Filters/InTransit.php new file mode 100644 index 00000000..258d7e5c --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/InTransit.php @@ -0,0 +1,29 @@ +whereHas('packingList', function($packingList){ + return $packingList->where('type', PackingListType::SHIPPING_PACKING_LIST)->where('status', ApprovalStatus::APPROVED); + })->whereHas('shippingSchedules', + function($schedule) { + return $schedule->where('etd', '<', Carbon::now()) + ->whereIn('schedules.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]); + } + ); + } +} \ No newline at end of file diff --git a/app/Classes/General/Eloquent/Filters/WarehouseParcels.php b/app/Classes/General/Eloquent/Filters/WarehouseParcels.php new file mode 100644 index 00000000..a342a964 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/WarehouseParcels.php @@ -0,0 +1,24 @@ +whereHas('packingList', function ($query){ + return $query->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->where('status', ApprovalStatus::APPROVED); + }); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Packages/ListPackagesLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/ListPackagesLogic.php index 80d73e5b..73b05ddb 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/Packages/ListPackagesLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/ListPackagesLogic.php @@ -45,21 +45,17 @@ class ListPackagesLogic extends AbstractControllerLogic /** * @param Request $request * @return JsonResponse - * @throws ErrorException + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException */ public function logic(Request $request) : JsonResponse { - try { + $this->canListPackages->passes(); - $this->canListPackages->passes(); + $query = $this->listsPackages->execute($this->listsPackages->deserializeFilters($request->input('filters'))); - $query = $this->listsPackages->execute($this->listsPackages->deserializeFilters($request->input('filters'))); - - return $this->collectionResponse(PackageResource::collection($query)); - - } catch (\Exception $exception){ - throw new ErrorException($exception->getMessage(), $exception->getCode()); - } + return $this->collectionResponse(PackageResource::collection($query)); } diff --git a/app/Models/Package.php b/app/Models/Package.php index e78402f2..cfc50f2f 100644 --- a/app/Models/Package.php +++ b/app/Models/Package.php @@ -4,6 +4,9 @@ namespace App\Models; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\PackingListType; +use App\Classes\ValueObjects\Constants\RoleTypes; +use App\Scopes\CustomerOrdersScope; +use App\Scopes\CustomerPackagesScope; use Carbon\Carbon; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasManyThrough; @@ -137,4 +140,11 @@ class Package extends AbstractModel }); } + protected static function booted() + { + if (auth()->user()->type === RoleTypes::USER) { + static::addGlobalScope(new CustomerPackagesScope()); + } + } + } diff --git a/app/Scopes/CustomerPackagesScope.php b/app/Scopes/CustomerPackagesScope.php new file mode 100644 index 00000000..dd8a50d1 --- /dev/null +++ b/app/Scopes/CustomerPackagesScope.php @@ -0,0 +1,29 @@ +whereHas('order', function ($query) { + $query->whereHas('companyModule', function($query){ + return $query->whereHas('employees', function($query){ + return $query->where('user_id', Auth()->user()->id); + }); + }); + }); + } + +} \ No newline at end of file diff --git a/resources/assets/vue/components/orders/elements/ParcelComponent.vue b/resources/assets/vue/components/orders/elements/ParcelComponent.vue index 44303afb..41900336 100644 --- a/resources/assets/vue/components/orders/elements/ParcelComponent.vue +++ b/resources/assets/vue/components/orders/elements/ParcelComponent.vue @@ -20,7 +20,7 @@
Arrival Date
-{{item.transport.drop_date}}
+{{item.transport ? item.transport.drop_date : 'n/a'}}
Qty
@@ -62,7 +62,7 @@Order Number