RejectedService.php 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace App\Services;
  3. use App\Exports\RejectedExport;
  4. use App\RejectedBill;
  5. use App\Services\common\QueryService;
  6. use Carbon\Carbon;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Auth;
  9. Class RejectedService
  10. {
  11. private function conditionQuery(Request $request){
  12. $user = Auth::user();
  13. $rejectedBills=RejectedBill::query()->with('owner','logistic','items')->orderBy('id','desc')->whereIn('id_owner',
  14. $user?$user->getPermittingOwnerIdsAttribute():[]);
  15. $columnQueryRules=[
  16. 'created_at_start' => ['alias' => 'created_at' , 'startDate' => ' 00:00:00'],
  17. 'created_at_end' => ['alias' => 'created_at' , 'endDate' => ' 23:59:59'],
  18. 'owner_id' => ['alias' => 'id_owner','multi' => ','],
  19. 'order_number' => ['like' => ''],
  20. 'logistic_number' => ['like' => ''],
  21. 'mobile_sender' => ['like' => ''],
  22. 'checked_numbers' => ['like' => ''],
  23. ];
  24. if($request->id_quality_label!=''){
  25. if($request->id_quality_label==1){
  26. $rejectedBills->whereDoesntHave('items',function ($query){
  27. $query->where('id_quality_label',2);
  28. });
  29. }else{
  30. $rejectedBills->whereHas('items',function ($query){
  31. $query->where('id_quality_label',2);
  32. });
  33. }
  34. $request->offsetUnset('id_quality_label');
  35. }
  36. if($request->is_checked!=''){
  37. if(!$request->is_checked)
  38. $rejectedBills=$rejectedBills->where(function ($query) {
  39. $query->where('is_checked', false)
  40. ->orWhere('is_checked', null);
  41. });
  42. else{
  43. $rejectedBills=$rejectedBills->where('is_checked', true);
  44. }
  45. $request->offsetUnset('is_checked');
  46. }
  47. if($request->is_loaded!=''){
  48. $is_loaded=$request->is_loaded;
  49. if($is_loaded=='null')$is_loaded=null;
  50. $rejectedBills=$rejectedBills->where('is_loaded', $is_loaded);
  51. $request->offsetUnset('is_loaded');
  52. }
  53. if($request->barcode_goods!=''){
  54. $barcode_goods = $request->barcode_goods;
  55. $rejectedBills->whereHas('items',function ($query)use($barcode_goods){
  56. $query->where('barcode_goods','like',trim($barcode_goods).'%');
  57. });
  58. $request->offsetUnset('barcode_goods');
  59. }
  60. if($request->logistic_number_return){
  61. if(strpos($request->logistic_number_return,',')||strpos($request->logistic_number_return,',')||strpos($request->logistic_number_return,' ')){
  62. $arr=array_filter(preg_split('/[,, ]+/is', $request->logistic_number_return));
  63. $rejectedBills=$rejectedBills->whereIn('logistic_number_return',$arr);
  64. $request->offsetUnset('logistic_number_return');
  65. }else{
  66. $columnQueryRules['logistic_number_return'] = ['timeLimit' => 15];
  67. }
  68. }
  69. $rejectedBills = app(QueryService::class)->query($request,$rejectedBills,$columnQueryRules);
  70. return $rejectedBills;
  71. }
  72. public function paginate(Request $request){
  73. return $this->conditionQuery($request)->paginate($request->paginate ?? 50);
  74. }
  75. public function get(Request $request){
  76. return $this->conditionQuery($request)->get();
  77. }
  78. public function exportData(Request $request){
  79. $rejectedBills=$this->conditionQuery($request);
  80. if($rejectedBills->count()>RejectedExport::$max){
  81. $rejectedBills->where('is_finished',false);
  82. }
  83. return $rejectedBills;
  84. }
  85. }