Edit File: DelegateController.php
<?php namespace App\Http\Controllers\DelegatesDashboard; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Traits\GeneralTrait; use App\Traits\Uploadable; use App\Traits\ApiTrait; use App\Models\User; use App\Models\Nationality; use App\Models\Region; use App\Models\City; use App\Models\Cartype; use App\Models\DelegateJoinrequest; use App\Http\Requests\DelegatesDashboard\AddDelegateRequest; use App\Http\Requests\DelegatesDashboard\UpdateDelegateRequest; use App\Exports\DelegatesExport; use Maatwebsite\Excel\Facades\Excel; use App\Models\Country; use App\Models\Order; use Session; use Validator; use Auth; class DelegateController extends Controller { // use ApiTrait, GeneralTrait, Uploadable; #get active delegates public function active_delegates(){ $delegates=User::where('company_id',Auth::user()->id) ->where('status','active') ->where('type','delegate') ->select('users.*') ->with('delegateJoinRequests') ->distinct() ->orderBy('created_at','desc') ->get(); return view('delegates_dashboard.delegates.active_delegates',compact('delegates')); } #get pending delegates public function pending_delegates(){ $delegates=User::where('company_id',Auth::user()->id) ->where('status','pending') ->where('type','delegate') ->select('users.*') ->with('delegateJoinRequests') ->distinct() ->orderBy('created_at','desc') ->get(); return view('delegates_dashboard.delegates.pending_delegates',compact('delegates')); } #get blocked delegates public function blocked_delegates(){ $delegates=User::where('company_id',Auth::user()->id) ->where('status','block') ->where('type','delegate') ->select('users.*') ->with('delegateJoinRequests') ->distinct() ->orderBy('created_at','desc') ->get(); return view('delegates_dashboard.delegates.blocked_delegates',compact('delegates')); } #get add delegate view public function add_delegate(){ $nationalities = Nationality::all(); $cities = City::get(); $regions = Region::all(); $cartypes = Cartype::all(); return view('delegates_dashboard.delegates.add_delegate',compact('cities','nationalities','regions','cartypes')); } #post new delegate info public function post_delegate(AddDelegateRequest $request){ $userData = $request->validated(['name','phone','type','status','company_id','approve']); $user = User::create($userData); // insert new join request $delegate_join_request_data = $request->validatedExcept(['name','type','status','user_id']); $delegate_join_request = DelegateJoinrequest::create($delegate_join_request_data); $delegate_join_request->update(['user_id'=> $user->id]); return response()->json(['key'=>'success','msg'=>trans('dashboard.created_successfully'),'url'=>route('delegates_dashboard.index')]); } #get edit delegate view public function get_delegate_details($id){ $keys = Country::get(); $user=User::find($id); $nationalities = Nationality::all(); $regions = Region::all(); $cities = City::get(); $cartypes = Cartype::all(); if(!$user){ return redirect()->back()->with(['fail' => trans('auth.user_not_found')]); } $request=DelegateJoinrequest::where('user_id',$id) ->first(); return view('delegates_dashboard.delegates.edit_delegate',compact('keys','cities' ,'nationalities','regions','cartypes','user','request')); } #update delegate info public function update_delegate_details(UpdateDelegateRequest $request){ $user=User::find($request['user_id']); $userData = $request->validated(['name','phone']); $user->update($userData); $delegate_join_request_data = $request->validatedExcept(['name']); $delegate_join_request = $user->delegateJoinRequests->first(); $delegate_join_request->update($delegate_join_request_data); return response()->json(['key'=>'success','msg'=> trans('dashboard.alerts.updated_successfully'),'url'=>route('delegates_dashboard.index')]); } #get delegate info public function delegate_details($id){ $user=User::find($id); if(!$user){ return redirect()->back()->with(['fail' => trans('auth.user_not_found')]); } $request=DelegateJoinrequest::where('user_id',$id)->first(); $active_orders=$user->delegateOrders->where('status','inprogress')->count(); $total_orders=$user->delegateOrders->where('status','!=','closed')->count(); $total_cost=$user->delegateOrders->where('status','finished') ->sum('price'); $delivery_cost=$user->delegateOrders->where('status','finished') ->sum('delivery_price'); return view('delegates_dashboard.delegates.delegate_details',compact('user','request','total_orders','active_orders','total_cost','delivery_cost')); } #update delegate status public function update_delegate_status(Request $request){ $user=User::find($request->user_id); if(!$user){ return redirect()->back()->with(['fail' =>trans('auth.user_not_found')]); } $user->status=$request->status; $user->update(); return response()->json(['key'=>'success','msg'=> trans('dashboard.alerts.updated_successfully'),'url'=>route('delegates_dashboard.index')]); } #delete delegate public function delete_delegate(Request $request){ $user=User::find($request->user_id); if(!$user){ if (!$user) { $msg = trans('auth.user_not_found'); return response()->json([ 'key' => 'fail', 'msg' => $msg ]); } } $request=DelegateJoinrequest::where('user_id',$user->id) ->first(); if($request){ $request->delete(); } $user->delete(); $msg = __('dashboard.alerts.deleted_successfully'); return response()->json([ 'key' => 'success', 'msg' => $msg ]); } #download delegates info as excel file public function download_all_delegates(Request $request) { return Excel::download(new DelegatesExport($request->type), 'all-delegates.xlsx'); } }
Back to File Manager