| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- <?php
- namespace App\Services;
- use App\OrderTracking;
- use App\Owner;
- use App\Services\common\QueryService;
- use Illuminate\Support\Facades\Auth;
- Class OrderTrackingService
- {
- public function getQuery($params){
- $user = Auth::user();
- $owner_ids = $user ? $user-> getPermittingOwnerIdsAttribute() :[];
- if($params['owner_id'] ?? false){
- $owner_ids = array_intersect($owner_ids,$params['owner_id']) ;
- }
- $query = OrderTracking::query()->with(['owner','commodities'=>function($query){
- $query->with(['commodity','package.order']);
- },])->whereHas('owner',function($query) use ($owner_ids) {
- $query->whereIn('id',$owner_ids);
- });
- $queryParam = [
- 'start_at' => ['alias'=>'created_at','startDate'=>' 00:00:00'],
- 'end_at' => ['alias'=>'created_at','endDate'=>' 23:59:59'],
- ];
- $param = [
- 'start_at' => $params['start_at'] ?? '',
- 'end_at' => $params['end_at'] ?? '',
- ];
- $query = app(QueryService::class)->query($param,$query,$queryParam);
- return $query;
- }
- public function getConditionQuery($params){
- $query = $this->getQuery($params);
- if($params['client_code'] ?? false ){
- $query->whereHas('commodities.package',function($query) use ($params){$query->where('client_code',$params['client_code']);});
- }
- if($params['client'] ?? false){
- $query->where('client','like',$params['client']);
- }
- if($params['sku'] ?? false){
- $query->whereHas('commodities.commodity',function($query) use ($params){$query->where('sku',$params['sku']);});
- }
- if($params['logistic_number'] ?? false){
- $query->whereHas('commodities.package',function($query) use ($params){$query->where('logistic_number',$params['logistic_number']);});
- }
- return $query;
- }
- public function paginate($params){
- return $this->getQuery($params)->paginate($params['paginate'] ?? 50);
- }
- public function export($params){
- }
- }
|