optimise order queries

This commit is contained in:
omair saleh
2021-10-25 14:28:55 +08:00
2 changed files with 64 additions and 17 deletions
+51
View File
@@ -89,6 +89,57 @@ class Order extends AbstractModel implements Addressable, Packable
return $this->addresses()->where('status','=',ApprovalStatus::APPROVED);
}
public function originWarehousePackages()
{
return $this->parcels()->shippingList()
->whereDoesntHave('shippingSchedules',
function($schedule) {
return $schedule->dispatched()
->whereIn('schedules.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
}
);
}
public function inTransitPackages()
{
return $this->parcels()->shippingList()->Shipping()
->whereHas('shippingSchedules',
function($schedule) {
return $schedule->dispatched()
->whereIn('schedules.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
}
)
->whereDoesntHave('container', function($container) {
return $container->where('containers.status', ApprovalStatus::COMPLETED);
}
);
}
public function destinationWarehousePackages()
{
return $this->parcels()->shippingList()
->whereHas('container',
function($container) {
return $container->where('containers.status', ApprovalStatus::COMPLETED);
}
)
->whereDoesntHave('deliverySchedules',
function($schedule) {
return $schedule->dispatched()->whereIn('schedules.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
}
);
}
public function deliveredPackages()
{
return $this->parcels()->shippingList()
->whereHas('deliverySchedules',
function($schedule) {
return $schedule->dispatched()->whereIn('schedules.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
}
);
}
/**
* @return morphMany
*/