OrderTrackingService.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace App\Services;
  3. use App\OrderTracking;
  4. use App\Owner;
  5. use App\Services\common\QueryService;
  6. use Illuminate\Support\Facades\Auth;
  7. Class OrderTrackingService
  8. {
  9. public function getQuery($params){
  10. $user = Auth::user();
  11. $owner_ids = $user ? $user-> getPermittingOwnerIdsAttribute() :[];
  12. if($params['owner_id'] ?? false){
  13. $owner_ids = array_intersect($owner_ids,$params['owner_id']) ;
  14. }
  15. $query = OrderTracking::query()->with(['owner','commodities'=>function($query){
  16. $query->with(['commodity','package.order']);
  17. },])->whereHas('owner',function($query) use ($owner_ids) {
  18. $query->whereIn('id',$owner_ids);
  19. });
  20. $queryParam = [
  21. 'start_at' => ['alias'=>'created_at','startDate'=>' 00:00:00'],
  22. 'end_at' => ['alias'=>'created_at','endDate'=>' 23:59:59'],
  23. ];
  24. $param = [
  25. 'start_at' => $params['start_at'] ?? '',
  26. 'end_at' => $params['end_at'] ?? '',
  27. ];
  28. $query = app(QueryService::class)->query($param,$query,$queryParam);
  29. return $query;
  30. }
  31. public function getConditionQuery($params){
  32. $query = $this->getQuery($params);
  33. if($params['client_code'] ?? false ){
  34. $query->whereHas('commodities.package',function($query) use ($params){$query->where('client_code',$params['client_code']);});
  35. }
  36. if($params['client'] ?? false){
  37. $query->where('client','like',$params['client']);
  38. }
  39. if($params['sku'] ?? false){
  40. $query->whereHas('commodities.commodity',function($query) use ($params){$query->where('sku',$params['sku']);});
  41. }
  42. if($params['logistic_number'] ?? false){
  43. $query->whereHas('commodities.package',function($query) use ($params){$query->where('logistic_number',$params['logistic_number']);});
  44. }
  45. return $query;
  46. }
  47. public function paginate($params){
  48. return $this->getQuery($params)->paginate($params['paginate'] ?? 50);
  49. }
  50. public function export($params){
  51. }
  52. }