RejectedService.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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('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'],
  19. 'order_number' => ['timeLimit' => 15],
  20. 'logistic_number' => ['timeLimit' => 15]
  21. ];
  22. if($request->id_quality_label!=''){
  23. if($request->id_quality_label==1){
  24. $rejectedBills->whereDoesntHave('items',function ($query){
  25. $query->where('id_quality_label',2);
  26. });
  27. }else{
  28. $rejectedBills->whereHas('items',function ($query){
  29. $query->where('id_quality_label',2);
  30. });
  31. }
  32. $request->offsetUnset('id_quality_label');
  33. }
  34. if($request->is_checked!=''){
  35. if(!$request->is_checked)
  36. $rejectedBills=$rejectedBills->where(function ($query) {
  37. $query->where('is_checked', false)
  38. ->orWhere('is_checked', null);
  39. });
  40. else{
  41. $rejectedBills=$rejectedBills->where('is_checked', true);
  42. }
  43. $request->offsetUnset('is_checked');
  44. }
  45. if($request->is_loaded!=''){
  46. $is_loaded=$request->is_loaded;
  47. if($is_loaded=='null')$is_loaded=null;
  48. $rejectedBills=$rejectedBills->where('is_loaded', $is_loaded);
  49. $request->offsetUnset('is_loaded');
  50. }
  51. if($request->barcode_goods!=''){
  52. $barcode_goods = $request->barcode_goods;
  53. $rejectedBills->whereHas('items',function ($query)use($barcode_goods){
  54. $query->where('barcode_goods','like',trim($barcode_goods).'%');
  55. });
  56. $request->offsetUnset('barcode_goods');
  57. }
  58. if($request->logistic_number_return){
  59. if(strpos($request->logistic_number_return,',')||strpos($request->logistic_number_return,',')||strpos($request->logistic_number_return,' ')){
  60. $arr=array_filter(preg_split('/[,, ]+/is', $request->logistic_number_return));
  61. $rejectedBills=$rejectedBills->whereIn('logistic_number_return',$arr);
  62. $request->offsetUnset('logistic_number_return');
  63. }else{
  64. $columnQueryRules['logistic_number_return'] = ['timeLimit' => 15];
  65. }
  66. }
  67. $rejectedBills = app(QueryService::class)->query($request,$rejectedBills,$columnQueryRules);
  68. return $rejectedBills;
  69. }
  70. public function paginate(Request $request){
  71. return $this->conditionQuery($request)->paginate($request->paginate ?? 50);
  72. }
  73. public function get(Request $request){
  74. return $this->conditionQuery($request)->get();
  75. }
  76. public function exportData(Request $request){
  77. $rejectedBills=$this->conditionQuery($request);
  78. if($rejectedBills->count()>RejectedExport::$max){
  79. $rejectedBills->where('is_finished',false);
  80. }
  81. return $rejectedBills;
  82. }
  83. }