ÿØÿà JFIF    ÿÛ „ ( %"1!%)+...383,7(-.+  -+++--++++---+-+-----+---------------+---+-++7-----ÿÀ  ß â" ÿÄ    ÿÄ H   !1AQaq"‘¡2B±ÁÑð#R“ÒTbr‚²á3csƒ’ÂñDS¢³$CÿÄ   ÿÄ %  !1AQa"23‘ÿÚ   ? ôÿ ¨pŸªáÿ —åYõõ\?àÒü©ŠÄï¨pŸªáÿ —åYõõ\?àÓü©ŠÄá 0Ÿªáÿ Ÿå[úƒ ú®ði~TÁbqÐ8OÕpÿ ƒOò¤Oè`–RÂáœá™êi€ßÉ< FtŸI“öÌ8úDf´°å}“¾œ6  öFá°y¥jñÇh†ˆ¢ã/ÃÐ:ªcÈ "Y¡ðÑl>ÿ ”ÏËte:qž\oäŠe÷󲍷˜HT4&ÿ ÓÐü6ö®¿øþßèô Ÿ•7Ñi’•j|“ñì>b…þS?*Óôÿ ÓÐü*h¥£ír¶ü UãS炟[AÐaè[ûª•õ&õj?†Éö+EzP—WeÒírJFt ‘BŒ†Ï‡%#tE Øz¥OÛ«!1›üä±Í™%ºÍãö]°î(–:@<‹ŒÊö×òÆt¦ãº+‡¦%ÌÁ²h´OƒJŒtMÜ>ÀÜÊw3Y´•牋4ǍýʏTì>œú=Íwhyë,¾Ôò×õ¿ßÊa»«þˆѪQ|%6ž™A õ%:øj<>É—ÿ Å_ˆCbõ¥š±ý¯Ýƒï…¶|RëócÍf溪“t.СøTÿ *Ä¿-{†çàczůŽ_–^XþŒ±miB[X±d 1,é”zEù»& î9gœf™9Ð'.;—™i}!ôšåîqêÛ٤ёý£½ÆA–àôe"A$˝Úsäÿ ÷Û #°xŸëí(l »ý3—¥5m! rt`†0~'j2(]S¦¦kv,ÚÇ l¦øJA£Šƒ J3E8ÙiŽ:cÉžúeZ°€¯\®kÖ(79«Ž:¯X”¾³Š&¡*….‰Ž(ÜíŸ2¥ª‡×Hi²TF¤ò[¨íÈRëÉ䢍mgÑ.Ÿ<öäS0í„ǹÁU´f#Vß;Õ–…P@3ío<ä-±»Ž.L|kªÀê›fÂ6@»eu‚|ÓaÞÆŸ…¨ááå>åŠ?cKü6ùTÍÆ”†sĤÚ;H2RÚ†õ\Ö·Ÿn'¾ñ#ºI¤Å´%çÁ­‚â7›‹qT3Iï¨ÖÚ5I7Ë!ÅOóŸ¶øÝñØôת¦$Tcö‘[«Ö³šÒ';Aþ ¸èíg A2Z"i¸vdÄ÷.iõ®§)¿]¤À†–‡É&ä{V¶iŽ”.Ó×Õÿ û?h¬Mt–íª[ÿ Ñÿ ÌV(í}=ibÔ¡›¥¢±bLô¥‡piη_Z<‡z§èŒ)iÖwiÇ 2hÙ3·=’d÷8éŽ1¦¸c¤µ€7›7Ø ð\á)} ¹fËí›pAÃL%âc2 í§æQz¿;T8sæ°qø)QFMð‰XŒÂ±N¢aF¨…8¯!U  Z©RÊÖPVÄÀÍin™Ì-GˆªÅËŠ›•zË}º±ŽÍFò¹}Uw×#ä5B¤{î}Ð<ÙD é©¤&‡ïDbàÁôMÁ.ÿØÿà JFIF    ÿÛ „ ( %"1!%)+...383,7(-.+  -+++--++++---+-+-----+---------------+---+-++7-----ÿÀ  ß â" ÿÄ    ÿÄ H   !1AQaq"‘¡2B±ÁÑð#R“ÒTbr‚²á3csƒ’ÂñDS¢³$CÿÄ   ÿÄ %  !1AQa"23‘ÿÚ   ? ôÿ ¨pŸªáÿ —åYõõ\?àÒü©ŠÄï¨pŸªáÿ —åYõõ\?àÓü©ŠÄá 0Ÿªáÿ Ÿå[úƒ ú®ði~TÁbqÐ8OÕpÿ ƒOò¤Oè`–RÂáœá™êi€ßÉ< FtŸI“öÌ8úDf´°å}“¾œ6  öFá°y¥jñÇh†ˆ¢ã/ÃÐ:ªcÈ "Y¡ðÑl>ÿ ”ÏËte:qž\oäŠe÷󲍷˜HT4&ÿ ÓÐü6ö®¿øþßèô Ÿ•7Ñi’•j|“ñì>b…þS?*Óôÿ ÓÐü*h¥£ír¶ü UãS炟[AÐaè[ûª•õ&õj?†Éö+EzP—WeÒírJFt ‘BŒ†Ï‡%#tE Øz¥OÛ«!1›üä±Í™%ºÍãö]°î(–:@<‹ŒÊö×òÆt¦ãº+‡¦%ÌÁ²h´OƒJŒtMÜ>ÀÜÊw3Y´•牋4ǍýʏTì>œú=Íwhyë,¾Ôò×õ¿ßÊa»«þˆѪQ|%6ž™A õ%:øj<>É—ÿ Å_ˆCbõ¥š±ý¯Ýƒï…¶|RëócÍf溪“t.СøTÿ *Ä¿-{†çàczůŽ_–^XþŒ±miB[X±d 1,é”zEù»& î9gœf™9Ð'.;—™i}!ôšåîqêÛ٤ёý£½ÆA–àôe"A$˝Úsäÿ ÷Û #°xŸëí(l »ý3—¥5m! rt`†0~'j2(]S¦¦kv,ÚÇ l¦øJA£Šƒ J3E8ÙiŽ:cÉžúeZ°€¯\®kÖ(79«Ž:¯X”¾³Š&¡*….‰Ž(ÜíŸ2¥ª‡×Hi²TF¤ò[¨íÈRëÉ䢍mgÑ.Ÿ<öäS0í„ǹÁU´f#Vß;Õ–…P@3ío<ä-±»Ž.L|kªÀê›fÂ6@»eu‚|ÓaÞÆŸ…¨ááå>åŠ?cKü6ùTÍÆ”†sĤÚ;H2RÚ†õ\Ö·Ÿn'¾ñ#ºI¤Å´%çÁ­‚â7›‹qT3Iï¨ÖÚ5I7Ë!ÅOóŸ¶øÝñØôת¦$Tcö‘[«Ö³šÒ';Aþ ¸èíg A2Z"i¸vdÄ÷.iõ®§)¿]¤À†–‡É&ä{V¶iŽ”.Ó×Õÿ û?h¬Mt–íª[ÿ Ñÿ ÌV(í}=ibÔ¡›¥¢±bLô¥‡piη_Z<‡z§èŒ)iÖwiÇ 2hÙ3·=’d÷8éŽ1¦¸c¤µ€7›7Ø ð\á)} ¹fËí›pAÃL%âc2 í§æQz¿;T8sæ°qø)QFMð‰XŒÂ±N¢aF¨…8¯!U  Z©RÊÖPVÄÀÍin™Ì-GˆªÅËŠ›•zË}º±ŽÍFò¹}Uw×#ä5B¤{î}Ð<ÙD é©¤&‡ïDbàÁôMÁ.query('zone_id', 'all'); $delivery_men = DeliveryMan::when(is_numeric($zone_id), function($query) use($zone_id){ return $query->where('zone_id', $zone_id); })->with('zone')->where('type','zone_wise')->latest()->paginate(config('default_pagination')); $zone = is_numeric($zone_id)?Zone::findOrFail($zone_id):null; return view('admin-views.delivery-man.list', compact('delivery_men', 'zone')); } public function search(Request $request){ $key = explode(' ', $request['search']); $delivery_men=DeliveryMan::where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('f_name', 'like', "%{$value}%") ->orWhere('l_name', 'like', "%{$value}%") ->orWhere('email', 'like', "%{$value}%") ->orWhere('phone', 'like', "%{$value}%") ->orWhere('identity_number', 'like', "%{$value}%"); } })->where('type','zone_wise')->get(); return response()->json([ 'view'=>view('admin-views.delivery-man.partials._table',compact('delivery_men'))->render(), 'count'=>$delivery_men->count() ]); } public function reviews_list(){ $reviews=DMReview::with(['delivery_man','customer'])->whereHas('delivery_man',function($query){ $query->where('type','zone_wise'); })->latest()->paginate(config('default_pagination')); return view('admin-views.delivery-man.reviews-list',compact('reviews')); } public function preview($id, $tab='info') { $dm = DeliveryMan::with(['reviews'])->where('type','zone_wise')->where(['id' => $id])->first(); if($tab == 'info') { $reviews=DMReview::where(['delivery_man_id'=>$id])->latest()->paginate(config('default_pagination')); return view('admin-views.delivery-man.view.info', compact('dm', 'reviews')); } else if($tab == 'transaction') { return view('admin-views.delivery-man.view.transaction', compact('dm')); } } public function store(Request $request) { $request->validate([ 'f_name' => 'required', 'email' => 'required|unique:delivery_men', 'phone' => 'required|regex:/^([0-9\s\-\+\(\)]*)$/|min:10|unique:delivery_men', 'zone_id' => 'required', 'earning' => 'required', 'password'=>'required|min:6', ], [ 'f_name.required' => 'First name is required!', 'zone_id.required' => 'Please select a zone!', 'earning.required' => 'Please select deliveryman type!' ]); if ($request->has('image')) { $image_name = Helpers::upload('delivery-man/', 'png', $request->file('image')); } else { $image_name = 'def.png'; } $id_img_names = []; if (!empty($request->file('identity_image'))) { foreach ($request->identity_image as $img) { $identity_image = Helpers::upload('delivery-man/', 'png', $img); array_push($id_img_names, $identity_image); } $identity_image = json_encode($id_img_names); } else { $identity_image = json_encode([]); } $dm = New DeliveryMan(); $dm->f_name = $request->f_name; $dm->l_name = $request->l_name; $dm->email = $request->email; $dm->phone = $request->phone; $dm->identity_number = $request->identity_number; $dm->identity_type = $request->identity_type; $dm->zone_id = $request->zone_id; $dm->identity_image = $identity_image; $dm->image = $image_name; $dm->active = 0; $dm->earning = $request->earning; $dm->password = bcrypt($request->password); $dm->save(); Toastr::success(trans('messages.deliveryman_added_successfully')); return redirect('admin/delivery-man/list'); } public function edit($id) { $delivery_man = DeliveryMan::find($id); return view('admin-views.delivery-man.edit', compact('delivery_man')); } public function status(Request $request) { $delivery_man = DeliveryMan::find($request->id); $delivery_man->status = $request->status; try { if($request->status == 0) { $delivery_man->auth_token = null; if(isset($delivery_man->fcm_token)) { $data = [ 'title' => trans('messages.suspended'), 'description' => trans('messages.your_account_has_been_suspended'), 'order_id' => '', 'image' => '', 'type'=> 'block' ]; Helpers::send_push_notif_to_device($delivery_man->fcm_token, $data); DB::table('user_notifications')->insert([ 'data'=> json_encode($data), 'delivery_man_id'=>$delivery_man->id, 'created_at'=>now(), 'updated_at'=>now() ]); } } } catch (\Exception $e) { Toastr::warning(trans('messages.push_notification_faild')); } $delivery_man->save(); Toastr::success(trans('messages.deliveryman_status_updated')); return back(); } public function earning(Request $request) { $delivery_man = DeliveryMan::find($request->id); $delivery_man->earning = $request->status; $delivery_man->save(); Toastr::success(trans('messages.deliveryman_type_updated')); return back(); } public function update(Request $request, $id) { $request->validate([ 'f_name' => 'required', 'email' => 'required|unique:delivery_men,email,'.$id, 'phone' => 'required|regex:/^([0-9\s\-\+\(\)]*)$/|min:10|unique:delivery_men,phone,'.$id, 'earning' => 'required', ], [ 'f_name.required' => 'First name is required!', 'earning.required' => 'Please select deliveryman type!' ]); $delivery_man = DeliveryMan::find($id); if ($request->has('image')) { $image_name = Helpers::update('delivery-man/', $delivery_man->image, 'png', $request->file('image')); } else { $image_name = $delivery_man['image']; } if ($request->has('identity_image')){ foreach (json_decode($delivery_man['identity_image'], true) as $img) { if (Storage::disk('public')->exists('delivery-man/' . $img)) { Storage::disk('public')->delete('delivery-man/' . $img); } } $img_keeper = []; foreach ($request->identity_image as $img) { $identity_image = Helpers::upload('delivery-man/', 'png', $img); array_push($img_keeper, $identity_image); } $identity_image = json_encode($img_keeper); } else { $identity_image = $delivery_man['identity_image']; } $delivery_man->f_name = $request->f_name; $delivery_man->l_name = $request->l_name; $delivery_man->email = $request->email; $delivery_man->phone = $request->phone; $delivery_man->identity_number = $request->identity_number; $delivery_man->identity_type = $request->identity_type; $delivery_man->zone_id = $request->zone_id; $delivery_man->identity_image = $identity_image; $delivery_man->image = $image_name; $delivery_man->earning = $request->earning; $delivery_man->password = strlen($request->password)>1?bcrypt($request->password):$delivery_man['password']; $delivery_man->save(); Toastr::success(trans('messages.deliveryman_updated_successfully')); return redirect('admin/delivery-man/list'); } public function delete(Request $request) { $delivery_man = DeliveryMan::find($request->id); if (Storage::disk('public')->exists('delivery-man/' . $delivery_man['image'])) { Storage::disk('public')->delete('delivery-man/' . $delivery_man['image']); } foreach (json_decode($delivery_man['identity_image'], true) as $img) { if (Storage::disk('public')->exists('delivery-man/' . $img)) { Storage::disk('public')->delete('delivery-man/' . $img); } } $delivery_man->delete(); Toastr::success(trans('messages.deliveryman_deleted_successfully')); return back(); } public function get_deliverymen(Request $request){ $key = explode(' ', $request->q); $zone_ids = isset($request->zone_ids)?(count($request->zone_ids)>0?$request->zone_ids:[]):0; $data=DeliveryMan::when($zone_ids, function($query) use($zone_ids){ return $query->whereIn('zone_id', $zone_ids); }) ->when($request->earning, function($query){ return $query->earning(); }) ->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('f_name', 'like', "%{$value}%") ->orWhere('l_name', 'like', "%{$value}%") ->orWhere('email', 'like', "%{$value}%") ->orWhere('phone', 'like', "%{$value}%") ->orWhere('identity_number', 'like', "%{$value}%"); } })->limit(8)->get(['id',DB::raw('CONCAT(f_name, " ", l_name) as text')]); return response()->json($data); } public function get_account_data(DeliveryMan $deliveryman) { $wallet = $deliveryman->wallet; $cash_in_hand = 0; $balance = 0; if($wallet) { $cash_in_hand = $wallet->collected_cash; $balance = $wallet->total_earning - $wallet->total_withdrawn - $wallet->pending_withdraw; } return response()->json(['cash_in_hand'=>$cash_in_hand, 'earning_balance'=>$balance], 200); } }