Edit File: DelegateController.php
<?php namespace App\Http\Controllers\Admin; use App\Models\Bank; use App\Models\City; use App\Models\User; use App\Models\Payout; use App\Models\Region; use App\Traits\Report; use App\Traits\GeneralTrait; use App\Models\Cartype; use App\Models\Country; use App\Models\Setting; use App\Traits\Uploadable; use App\Models\Nationality; use App\Jobs\NotifyDelegate; use Illuminate\Http\Request; use App\Services\SettingService; use App\Models\DelegateJoinrequest; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Session; use App\Http\Requests\Admin\Delegate\Store; use App\Http\Requests\Admin\Delegate\Settlement; use App\Jobs\DeleteUser; use App\Jobs\NotifyUser; use App\Jobs\BlockUser; use App\Jobs\AcceptDelegateJoinNotify; use App\Models\SMS; use DB; use App\Services\CitcServices; use App\Http\Resources\CitiesResource; class DelegateController extends Controller { use Uploadable , GeneralTrait ; /*************************** get all **************************/ // public function index() // { // $rows = User::where('type' , 'delegate')->latest()->get(); // return view('admin.delegates.index', compact('rows')); // } public function index($id = null) { if (request()->ajax()) { $rows = User::where('type' , 'delegate')->where('approve','accept')->search(request()->searchArray)->paginate(10); $html = view('admin.delegates.table' ,compact('rows'))->render() ; return response()->json(['html' => $html]); } return view('admin.delegates.index'); } /*************************** accept**************************/ // public function pending() // { // $rows = DelegateJoinrequest::where('status' , 'pending')->latest()->get(); // return view('admin.delegates.requests', compact('rows')); // } public function pending($id = null) { if (request()->ajax()) { $rows = User::where('type' , 'delegate')->whereHas( 'delegateJoinRequests',function($q){ $q->where('status' , 'pending'); })->search(request()->searchArray)->paginate(10); // $rows = DelegateJoinrequest::where('status' , 'pending')->search(request()->searchArray)->paginate(10); $html = view('admin.requests.table' ,compact('rows'))->render() ; return response()->json(['html' => $html]); } return view('admin.requests.requests'); } /*************************** accept**************************/ public function showRequest($id) { $keys = Country::get(); $cities = City::get(); $row = DelegateJoinrequest::findOrFail($id); return view('admin.delegates.request_show', compact('row' , 'cities' , 'keys')); } /************* refused ***************/ public function refused($id = null) { if (request()->ajax()) { $rows = User::where('approve' , 'refused')->search(request()->searchArray)->paginate(10); $html = view('admin.delegates.refused_table' ,compact('rows'))->render() ; return response()->json(['html' => $html]); } return view('admin.delegates.refused'); } public function acceptOrRefuse(Request $request , $status , $id) { $row = DelegateJoinrequest::findOrFail($id); if ($status == 'approved') { $user = $row->user(); if ($row->company_id != null) { $row->update(['user_id' => $row->user->id , 'status'=>'approved' ]); $citc_service = new CitcServices(); $citc_service->createDriver($user->id); }else{ $row->user->update(['type' => 'delegate','approve'=>'accept','name' => $row->fullname ,'email' => $row->email ]); } $row->update(['status' => $status ]); dispatch(new AcceptDelegateJoinNotify($row)); Session::flash('success', awtTrans('تم قبول الطلب بنجاح')); return redirect()->route('admin.delegates.pending'); }else{ // $package = SMS::where('active','1')->first(); if($request->reason){ // $this->sendSms($row->user->FullSmsPhone , $request->reason , $package->key , $package); } $row->update(['status' => $status , 'reject_reason' => $request->reason ?? null ]); $row->user->update(['type' => 'delegate','approve'=>'refused' ]); Session::flash('success', awtTrans('تم رفض الطلب بنجاح')); return response()->json(['url'=>route('admin.delegates.refused')]); } } /*************************** store **************************/ public function create() { $keys = Country::get(); $regions = Region::get(); $nationalities = Nationality::get(); $types = Cartype::get(); $cities = City::get(); $companies = User::where('type' , 'company')->where('approve' , 'accept')->get(); return view('admin.delegates.create' , compact('keys' , 'cities' , 'regions' , 'nationalities' ,'types' , 'companies')); } /*************************** store **************************/ public function store(Store $request) { $phone = $this->phoneValidate($request->phone); $user = User::where('phone',$phone)->first(); // dd($user->type); if($user && $user->type == 'user'){ $user->update($request->only(['phone','email','wallet','address','nationality_id'])+['type'=>'delegate','approve'=>'accept']); $arr = [ 'fullname' =>['ar' => $request->fullname_ar , 'en' => $request->fullname_en ], 'car_letters' => ['ar' => $request->car_letters_ar , 'en' => $request->car_letters_en], 'car_numbers' => ['ar' => $request->car_numbers_ar , 'en' => $request->car_numbers_en], 'personal_image' => $user->avatar ,'status'=> 'approved' ]; $user->delegateJoinRequests()->create( $request->validatedExcept(['fullname_ar' , 'fullname_en' , 'car_letters_ar' , 'car_letters_en' , 'car_numbers_en' , 'car_numbers_ar' , 'wallet', 'avatar','password','lat','long']) + $arr); } else { $user = User::create($request->validated() + ([ 'type' => 'delegate' , 'approve' => 'accept','country_key' => '00966' ])); $arr = [ 'fullname' =>['ar' => $request->fullname_ar , 'en' => $request->fullname_en ], 'car_letters' => ['ar' => $request->car_letters_ar , 'en' => $request->car_letters_en], 'car_numbers' => ['ar' => $request->car_numbers_ar , 'en' => $request->car_numbers_en], 'personal_image' => $user->avatar ,'status'=> 'approved']; $user->delegateJoinRequests()->create( $request->validatedExcept(['fullname_ar' , 'fullname_en' , 'car_letters_ar' , 'car_letters_en' , 'car_numbers_en' , 'car_numbers_ar' , 'wallet', 'avatar','password','lat','long']) + $arr); } Report::addToLog(' اضافه مندوب') ; // $citc_service = new CitcServices(); // $citc_service->createDriver($user->id); return response()->json(['url' => route('admin.delegates.index')]); } /*************************** edit page **************************/ public function edit($id) { $row = User::findOrFail($id); $delegateRequest= $row->delegateJoinRequests->first() ; // dd($delegateRequest); $keys = Country::get(); $regions = Region::get(); $nationalities = Nationality::get(); $types = Cartype::get(); $cities = City::get(); $companies = User::where('type' , 'company')->get(); return view('admin.delegates.edit' , compact('delegateRequest','row' ,'keys' , 'cities' , 'regions' , 'nationalities' ,'types' , 'companies') ); } /*************************** update **************************/ public function update(Store $request, $id) { // dd($request->all()); $user = User::find($id); $user->update($request->validated()); $arr = [ 'fullname' => [ 'ar'=> $request->fullname_ar , 'en' => $request->fullname_en, ], 'personal_image' => $user->avatar, ]; if($user->delegateJoinRequests()->first()){ $user->delegateJoinRequests()->first()->update( $request->validatedExcept(['name' , 'wallet' ,'avatar','block','password']) + ($arr)); } if($request['status']=='block'){ dispatch(new BlockUser($user)); } Report::addToLog(' تعديل مناديب') ; return response()->json(['url' => route('admin.delegates.index')]); } public function updateWithCitc($id) { $user = User::find($id); $citc_service = new CitcServices(); $citc_service->editDriver($user->id); Report::addToLog('اعادة ارسال بيانات المندوب للهيئة') ; return redirect()->back(); } /*************** show *************************************/ // public function show($id) // { // $row = User::findOrFail($id); // $keys = Country::get(); // $cities = City::get(); // return view('admin.delegates.show' , ['row' => $row, 'keys' => $keys , 'cities' => $cities]); // } /*************************** delete **************************/ public function destroy($id) { $user = User::find($id); dispatch(new DeleteUser($user)); $citc_service = new CitcServices(); $citc_service->deactiveDriver($user->id); $user->delete(); Report::addToLog(' حذف مندوب') ; return response()->json(['id' =>$id]); } public function destroyAll(Request $request) { $requestIds = json_decode($request->data); foreach ($requestIds as $id) { $ids[] = $id->id; } $users=User::whereIn('id', $ids)->get(); foreach($users as $user){ $citc_service = new CitcServices(); $citc_service->deactiveDriver($user->id); dispatch(new DeleteUser($user)); } if (User::WhereIn('id',$ids)->delete()) { Report::addToLog(' حذف العديد من المناديب') ; return response()->json('success'); } else { return response()->json('failed'); } } // public function getDelegatesHaveBalance() // { // $rows = User::where('type' , 'delegate')->where('wallet' , '>' ,0)->latest()->get(); // return view('admin.delegates.have_balance', compact('rows')); // } public function getDelegatesHaveBalance($id = null) { if (request()->ajax()) { $rows = User::where('type' , 'delegate')->where('wallet' , '>' ,0)->search(request()->searchArray)->paginate(10); $html = view('admin.delegates.have_balance_table' ,compact('rows'))->render() ; return response()->json(['html' => $html]); } return view('admin.delegates.have_balance'); } public function postDelegatesSettlement(Settlement $request) { $user = User::findOrFail($request->user_id); if($request->method == 'with_hand'){ $wallet_after_settlement = $user->update(['wallet'=>($user->wallet - $request->balance)]); dispatch(new NotifyDelegate($user , $request)); Session::flash('success', awtTrans('تمت التسويه بنجاح')); return redirect()->back(); } $data = SettingService::appInformations(Setting::pluck('value', 'key')); $split_mode = $data['hyper_split_mode']; $bank_id = $data['bank_id']; $swift_code = Bank::findOrfail($bank_id)->swift_code; if($split_mode == 'test'){ $url = "https://splits.sandbox.hyperpay.com/api/v1/login"; $order_url = "https://splits.sandbox.hyperpay.com/api/v1/orders"; $accountId = 'SA4280000621608010034790'; }else{ $url = "https://splits.hyperpay.com/api/v1/login"; $order_url = "https://splits.hyperpay.com/api/v1/orders"; $accountId = $request->bank_iban_number; } $response = Http::asForm()->post($url , [ 'email' => $data['hyper_split_email'], 'password' => $data['hyper_split_password'] ]); $array = json_decode($response->getBody()->getContents(), true); $authorization = $array['data']['accessToken']; $myBody['merchantTransactionId'] = rand(1111,9999).$user->id; $myBody['transferOption'] = "0"; $myBody['configId'] = $data['hyper_split_config_id']; if($request->type == 'iban'){ $arr[]=[ "name" => $user->name, "accountId" => $accountId, "debitCurrency" => "SAR", "bankIdBIC" => $swift_code, "transferAmount" => number_format((float)$request->balance, 2, '.', ''), "transferCurrency" => "SAR", "payoutBeneficiaryAddress1" => $user->address?$user->address:'', "payoutBeneficiaryAddress2" => $user->address?$user->address:'', "payoutBeneficiaryAddress3" => $user->address?$user->address:'' ]; }else{ $arr[]=[ "name" => $user->name, "accountId" => $accountId, "debitCurrency" => "SAR", "transferAmount" => number_format((float)$request->balance, 2, '.', ''), "transferCurrency" => "SAR", "payoutBeneficiaryAddress1" => $user->address?$user->address:'', "payoutBeneficiaryAddress2" => $user->address?$user->address:'', "payoutBeneficiaryAddress3" => $user->address?$user->address:'' ]; } $myBody['beneficiary'] = $arr; $response = Http::asForm()->post($order_url , [ 'headers' => ['Authorization'=>'Bearer '.$authorization], 'form_params' => $myBody ]); $array = json_decode($response->getBody()->getContents(), true); // if ($array->status == true) { // hint => in case data is true active this condition Payout::create([ 'data' => isset($array) ? json_encode($array['data']):'', 'message' => isset($array) ? $array['message']:'', 'errors' => isset($array) ? $array['errors'] : '', 'transaction_id' => isset($array) ? $array['data']['uniqueId'] : '' , 'user_id' => $user->id, 'amount' => $request->balance, ]); Session::flash('success', awtTrans('تم ارسال طلب التسويه بنجاح')); return redirect()->back(); // } Session::flash('danger', awtTrans('حدث خطا فى ارسال طلب التسويه بنجاح')); return redirect()->back(); } public function citcActiveDelegates(){ $rows = DB::table('delegate_joinrequests') ->join('users','delegate_joinrequests.user_id','users.id') ->where('delegate_joinrequests.citc_refrenceCode','!=',null) ->select('users.id','users.name','users.email','users.phone','users.avatar','delegate_joinrequests.citc_refrenceCode','delegate_joinrequests.citc_errorCodes','delegate_joinrequests.created_at') ->distinct('id') ->get(); // $rows = User::where('type' , 'delegate')->whereHas('delegateJoinRequests' , function($q){ // $q->where('citc_refrenceCode','!=',null)) // }) return view('admin.delegates.citc-active-delegates' ,compact('rows')); } public function citcNotActiveDelegates(){ $rows = DB::table('delegate_joinrequests') ->join('users','delegate_joinrequests.user_id','users.id') ->where('delegate_joinrequests.citc_refrenceCode',null) ->where('delegate_joinrequests.citc_errorCodes','!=',null) ->where('users.type','delegate') ->select('users.id','users.name','users.phone','users.avatar' , 'users.created_at','delegate_joinrequests.personal_image' , 'delegate_joinrequests.fullname','delegate_joinrequests.citc_refrenceCode','delegate_joinrequests.citc_errorCodes') ->distinct('id') ->get(); return view('admin.delegates.citc-notactive-delegates' ,compact('rows')); } public function notify(Request $request) { if ('all' == $request->id) { $count ='all'; $clients = User::where('type','delegate')->where('status','active')->get(); } else { $count ='one'; $clients = User::findOrFail($request->id); } dispatch(new NotifyUser($clients, $request, $request->type, $count)); return response()->json(); } // new public function getCities($id){ return response()->json(CitiesResource::collection(City::where('region_id',$id)->get())); } }
Back to File Manager