KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.4.41 (Ubuntu)
System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64
User : www-data ( 33)
PHP Version : 8.2.12
Disable Function : NONE
Directory :  /var/www/namascar_app/panel.namascar.app/app/Http/Controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/namascar_app/panel.namascar.app/app/Http/Controllers/DriverController.php
<?php

namespace App\Http\Controllers;

use App\Models\Currency;
use App\Models\Driver;
use App\Models\Requests;
use App\Models\ParcelOrder;
use App\Models\Vehicle;
use App\Models\DriversDocuments;
use App\Models\Message;
use App\Models\Note;
use App\Models\Brand;
use App\Models\CarModel;
use App\Models\VehicleType;
use App\Models\vehicleImages;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
use App\Http\Controllers\GcmController;
use Image;
class DriverController extends Controller
{

    public function __construct()
    {
        $this->middleware('auth');
    }

	public function index(Request $request)
    {

        $query = DB::table('tj_conducteur')
            ->leftJoin('tj_vehicule', 'tj_vehicule.id_conducteur', '=', 'tj_conducteur.id')
            ->leftJoin('tj_type_vehicule', 'tj_type_vehicule.id', '=', 'tj_vehicule.id_type_vehicule')
            ->select('tj_conducteur.*', 'tj_type_vehicule.libelle');
        
    	if($request->search != '' && $request->selected_search != '') {
    		$keyword = $request->input('search');
			$field = $request->input('selected_search');
			if($field == "prenom"){
				$query->where('tj_conducteur.prenom', 'LIKE', '%' . $keyword . '%');
				$query->orWhere(DB::raw('CONCAT(tj_conducteur.nom, " ",tj_conducteur.prenom)'), 'LIKE', '%' . $keyword . '%');
			}else{
				$query->where('tj_conducteur.'.$field, 'LIKE', '%' . $keyword . '%');

			}
			$query->where('tj_conducteur.deleted_at', '=', NULL);
            $query->paginate(20);
		}

		$drivers = $query->orderBy('tj_conducteur.id','desc')->paginate(20);

        $totalRide = DB::table('tj_requete')
        ->leftjoin('tj_user_app', 'tj_requete.id_user_app', '=', 'tj_user_app.id')
        ->join('tj_conducteur', 'tj_requete.id_conducteur', '=', 'tj_conducteur.id')
        ->join('tj_payment_method', 'tj_requete.id_payment_method', '=', 'tj_payment_method.id')
        ->where('tj_requete.deleted_at', '=', NULL)
        ->select('tj_requete.id_conducteur')
        ->orderBy('tj_conducteur.id','desc')
        ->get();

        return view("drivers.index")->with("drivers", $drivers)->with('totalRide', $totalRide);
    }

    public function approvedDrivers(Request $request)
    {

        $query = DB::table('tj_conducteur')
            ->leftJoin('tj_vehicule', 'tj_vehicule.id_conducteur', '=', 'tj_conducteur.id')
            ->leftJoin('tj_type_vehicule', 'tj_type_vehicule.id', '=', 'tj_vehicule.id_type_vehicule')
            ->select('tj_conducteur.*', 'tj_type_vehicule.libelle');
            $query->where('tj_conducteur.is_verified','=',1);

    	if($request->search != '' && $request->selected_search != '') {
    		$keyword = $request->input('search');
			$field = $request->input('selected_search');
			if($field == "prenom"){
				$query->where('tj_conducteur.prenom', 'LIKE', '%' . $keyword . '%');
				$query->orWhere(DB::raw('CONCAT(tj_conducteur.nom, " ",tj_conducteur.prenom)'), 'LIKE', '%' . $keyword . '%');
			}else{
				$query->where('tj_conducteur.'.$field, 'LIKE', '%' . $keyword . '%');
			}
			$query->where('tj_conducteur.deleted_at', '=', NULL)->where('tj_conducteur.is_verified','=',1);
		}


		$drivers = $query->orderBy('tj_conducteur.id','desc')->paginate(20);

    $totalRide = DB::table('tj_requete')
    ->leftjoin('tj_user_app', 'tj_requete.id_user_app', '=', 'tj_user_app.id')
    ->join('tj_conducteur', 'tj_requete.id_conducteur', '=', 'tj_conducteur.id')
    ->join('tj_payment_method', 'tj_requete.id_payment_method', '=', 'tj_payment_method.id')
    ->where('tj_requete.deleted_at', '=', NULL)
    ->select('tj_requete.id_conducteur')
    ->orderBy('tj_conducteur.id', 'desc')
    ->get();

        return view("drivers.approved")->with("drivers", $drivers)->with('totalRide', $totalRide);
    }

	public function pendingDrivers(Request $request)
    {
        $query = DB::table('tj_conducteur')
            ->leftJoin('tj_vehicule', 'tj_vehicule.id_conducteur', '=', 'tj_conducteur.id')
            ->leftJoin('tj_type_vehicule', 'tj_type_vehicule.id', '=', 'tj_vehicule.id_type_vehicule')
            ->select('tj_conducteur.*', 'tj_type_vehicule.libelle');
            $query->where('tj_conducteur.is_verified','=',0);

    	if($request->search != '' && $request->selected_search != '') {
    		$keyword = $request->input('search');
			$field = $request->input('selected_search');
    		if($field == "prenom"){
				$query->where('tj_conducteur.prenom', 'LIKE', '%' . $keyword . '%');
				$query->orWhere(DB::raw('CONCAT(tj_conducteur.nom, " ",tj_conducteur.prenom)'), 'LIKE', '%' . $keyword . '%');
			}else{
				$query->where('tj_conducteur.'.$field, 'LIKE', '%' . $keyword . '%');
			}
			$query->where('tj_conducteur.deleted_at', '=', NULL)->where('tj_conducteur.is_verified','=',0);
		}


		$drivers = $query->orderBy('tj_conducteur.id','desc')->paginate(20);

    $totalRide = DB::table('tj_requete')
    ->leftjoin('tj_user_app', 'tj_requete.id_user_app', '=', 'tj_user_app.id')
    ->join('tj_conducteur', 'tj_requete.id_conducteur', '=', 'tj_conducteur.id')
    ->join('tj_payment_method', 'tj_requete.id_payment_method', '=', 'tj_payment_method.id')
    ->where('tj_requete.deleted_at', '=', NULL)
    ->select('tj_requete.id_conducteur')->get();

        return view("drivers.pending")->with("drivers", $drivers)->with('totalRide', $totalRide);
    }

    public function statusAproval(Request $request, $id, $type)
    {

		$document = DriversDocuments::find($id);
		$comment = $request->get('comment');

        if($document){
        	if($type == 1){
                $document->document_status = 'Approved';
				$document->comment = '';
            }else{
            	$document->document_status = 'Disapprove';
				$document->comment = $comment;
				$this->notifyDriver($comment,$document->driver_id);
            }
			$document->save();
        }
  
		$admin_documents = DB::table('admin_documents')->where('admin_documents.is_enabled','Yes')->get();
        $driverDocumentCount = 0;
        foreach($admin_documents as $value){
            $approved_documents=DriversDocuments::where('driver_id', $document->driver_id)->where('document_status', 'Approved')->where('document_id',$value->id)->get();
            if(count($approved_documents)>0){
                $driverDocumentCount++;
            }
        }
        $admin_documents = DB::table('admin_documents')->where('admin_documents.is_enabled', 'Yes')->count();

       // $approved_documents = DriversDocuments::where('driver_id',$document->driver_id)->where('document_status','Approved')->count();

		$driver = Driver::find($document->driver_id);

		if($admin_documents == $driverDocumentCount){
         $driver->is_verified = 1;
		}else{
			$driver->is_verified = 0;
		}
		$driver->save();

		if(!blank($comment)){
			echo json_encode(array('success'=>'yes')); die;
		}

        return redirect()->back();
    }

	public function notifyDriver($comment,$id){

		$tmsg = '';
        $terrormsg = '';

        $title = str_replace("'", "\'", "Disapproved of your Document");
        $msg = str_replace("'", "\'", "Admin is Disapproved your Document. Please submit again.");
        $reasons = str_replace("'", "\'", "$comment");

        $tab[] = array();
        $tab = explode("\\", $msg);

        $msg_ = "";
        for ($i = 0; $i < count($tab); $i++) {
            $msg_ = $msg_ . "" . $tab[$i];
        }

        $message = array("body" => $msg_, "reasons" => $reasons, "title" => $title, "sound" => "mySound", "tag" => "documentdisaaproved");

        $driver = DB::table('tj_conducteur')
            ->select('fcm_id')
            ->where('fcm_id', '<>', '')
            ->where('id',$id)
            ->first();

        $tokens = array();
        if(isset($driver->fcm_id)) {
            $tokens[] = $driver->fcm_id;
        }

        $temp = array();
        if(count($tokens) > 0) {
            $date_heure = date('Y-m-d H:i:s');
            $from_id = $id;
            $to_id = $id;
            GcmController::send_notification($tokens, $message, $temp);
        }
	}

    public function statusDisaproval(Request $request, $id, $type)
    {
        $validator = Validator::make($request->all(), $rules = [
            'comment' => 'required',
        ], $messages = [
            'comment.required' => 'Add Comment for disapproval!',
        ]);


        if ($validator->fails()) {
            return redirect('driver/document/view/' . $id)
                ->withErrors($validator)->with(['message' => $messages])
                ->withInput();
        }
        $comment = $request->input('comment');
        $approvalStatus = 'disapproved';

        $user = DriversDocuments::find($id);
        if ($user) {
            if ($type == 1) {
                $user->comment = $comment;
                $user->document_status = $approvalStatus;
            } elseif ($type == 2) {
                $user->comment = $comment;
                $user->document_status = $approvalStatus;
            } elseif ($type == 3) {
                $user->comment = $comment;
                $user->document_status = $approvalStatus;
            } elseif ($type == 4) {
                $user->comment = $comment;
                $user->document_status = $approvalStatus;
            }
        }
        $user->save();

        $title = str_replace("'", "\'", "Disapproved of your Document");
        $msg = str_replace("'", "\'", "Admin is Disapproved your Document. Please submit again.");
        $reasons = str_replace("'", "\'", "$comment");

        $tab[] = array();
        $tab = explode("\\", $msg);
        $msg_ = "";
        for ($i = 0; $i < count($tab); $i++) {
            $msg_ = $msg_ . "" . $tab[$i];
        }
        $message = array("body" => $msg_, "reasons" => $reasons, "title" => $title, "sound" => "mySound", "tag" => "documentdisaaproved");

        $query = DB::table('tj_conducteur')
            ->select('fcm_id')
            ->where('fcm_id', '<>', '')
            ->where('id', '=', DB::raw($id))
            ->get();
        $tokens = array();
        if (!empty($query)) {
            foreach ($query as $user) {
                if (!empty($user->fcm_id)) {
                    $tokens[] = $user->fcm_id;
                }
            }
        }

        $temp = array();

        if (count($tokens) > 0) {
            $date_heure = date('Y-m-d H:i:s');
            $from_id = $id;
            $to_id = $id;
            GcmController::send_notification($tokens, $message, $temp);
            // $insertdata = DB::insert("insert into tj_notification(titre,message,statut,creer,modifier,to_id,from_id,type)
            // values('".$title."','".$msg."','yes','".$date_heure."','".$date_heure."','".$to_id."','".$from_id."','documentdisaaproved')");

        }
        return redirect()->back();
    }


    public function edit($id)
    {
        $driver = Driver::where('id', "=", $id)->first();
        $vehicle = Vehicle::where('id_conducteur', "=", $id)->first();

        $vehicleType = VehicleType::all();

        $brand =Brand::all();
        $model = [];
        if(!empty($vehicle)){
            $model = Carmodel::where('brand_id', "=", $vehicle->brand)->where('vehicle_type_id', "=", $vehicle->id_type_vehicule)->get();

        }
        $currency = Currency::where('statut', 'yes')->first();

        $vehicleImage = vehicleImages::where('id_driver', '=', $id)->first();
        $earnings = DB::select("SELECT sum(montant) as montant, count(id) as rides FROM tj_requete WHERE statut='completed' AND id_conducteur=$id");

		$avg_rating = Note::where('id_conducteur', "=", $id)->avg('niveau');
		$avg_rating = $avg_rating?$avg_rating:0;

        return view('drivers.edit')->with('driver', $driver)->with('model', $model)->with('brand', $brand)
            ->with("vehicle", $vehicle)->with("earnings", $earnings)->with('vehicleType', $vehicleType)->with('currency', $currency)
            ->with('vehicleImage', $vehicleImage)
			->with('avg_rating', $avg_rating);
    }

    public function create()
    {
        $brand = Brand::all();
        $vehicleType = VehicleType::all();
        $model = Carmodel::all();
        return view('drivers.create')->with('brand', $brand)->with('model', $model)->with('vehicleType', $vehicleType);
    }

    public function getModel(Request $request, $brand_id)
    {
        $id_type_vehicule = $request->get('id_type_vehicule');
        $data['model'] = Carmodel::where("brand_id", $brand_id)->where('vehicle_type_id',$id_type_vehicule)
            ->get(["name", "id"]);

        return response()->json($data);
    }

    public function getBrand(Request $request, $vehicleType_id)
    {
        $data['brand'] = Brand::where("vehicle_id", $vehicleType_id)
            ->get(["name", "id"]);

        return response()->json($data);
    }

    public function store(Request $request)
    {

        $validator = Validator::make($request->all(), $rules = [
            'nom' => 'required',
            'prenom' => 'required',
            'password' => 'required',
            'phone' => 'required',
            'email' => 'required|email',
            'id_type_vehicule'=>'required',
            'brand'=>'required',
            'model'=>'required',
            'km'=>'required',
            'milage'=>'required',
            'car_number'=>'required',
            'color'=>'required',
            'passenger'=>'required',
            'photo' => 'required|mimes:jpg,jpeg,png|max:2048'

        ], $messages = [
            'nom.required' => 'The First Name field is required!',
            'prenom.required' => 'The Last Name field is required!',
            'email.required' => 'The Email field is required!',
            'email.unique' => 'The Email field is should be unique!',
            'password.required' => 'The Password field is required!',
            'phone.required' => 'The Phone field is required!',
            'phone.unique' => 'The Phone field is should be unique!',
            'id_type_vehicule.required' => 'The Vehicle type field is required!',
            'brand.required' => 'The brand field is required!',
            'model.required' => 'The model field is required!',
            'km.required' => 'The km field is required!',
            'milage.required' => 'The milage field is required!',
            'car_number.required' => 'The NumberPlate field is required!',
            'color.required' => 'The Color field is required!',
            'passenger.required' => 'The Number of Passenger field is required!',
        ]);

        if ($validator->fails()) {
            return redirect('drivers/create')
                ->withErrors($validator)->with(['message' => $messages])
                ->withInput();
        }

        $user = new Driver;
        $user->nom = $request->input('nom');
        $user->prenom = $request->input('prenom');
        $user->email = $request->input('email');
        $user->statut = $request->has('statut') ? 'yes' : 'no';
        $user->statut_vehicule = $request->has('statut') ? 'yes' : 'no';
        // $user->tonotify = $request->has('notify') ? 'yes' : 'no';
        $user->online = 'yes';
        $user->status_car_image = 'yes';
        $user->login_type = 'phone';
        // $user->address = $request->input('address');
        $user->device_id = $request->input('device_id');
        $password = $request->input('password');
        $user->mdp = hash('md5', $password);
        $user->phone = $request->input('phone');
        $user->creer = date('Y-m-d H:i:s');
        $user->modifier = date('Y-m-d H:i:s');
        $user->updated_at = date('Y-m-d H:i:s');
        $user->bank_name = $request->input('bank_name');
        $user->holder_name = $request->input('holder_name');
        $user->account_no = $request->input('account_number');
        $user->branch_name = $request->input('branch_name');
        $user->other_info = $request->input('other_information');
        $user->ifsc_code = $request->input('ifsc_code');
        $user->amount = "0";
        $user->parcel_delivery=$request->has('parcel_delivery') ? "yes" : "no";
        if ($request->hasfile('photo')) {
            $file = $request->file('photo');
            $extenstion = $file->getClientOriginalExtension();
            $time = time() . '.' . $extenstion;
            $filename = 'driver_image_' . $time;
            $path = public_path('assets/images/driver/') . $filename;
            Image::make($file->getRealPath())->resize(150, 150)->save($path);

            //$file->move(public_path('assets/images/driver'), $filename);
            $image = str_replace('data:image/png;base64,', '', $file);
            $image = str_replace(' ', '+', $image);
            $user->photo_path = $filename;
        }
        $user->save();
        $driver_id = $user->id;


        $vehicle = new Vehicle;
        $vehicle->brand = $request->input('brand');
        $vehicle->model = $request->input('model');
        $vehicle->color = $request->input('color');
        $vehicle->numberplate = $request->input('car_number');
        $vehicle->car_make = '';
        $vehicle->km = $request->input('km');
        $vehicle->milage = $request->input('milage');
        $vehicle->id_conducteur = $driver_id;
        $vehicle->statut = 'yes';
        $vehicle->creer = date('Y-m-d H:i:s');
        $vehicle->modifier = date('Y-m-d H:i:s');
        $vehicle->updated_at = date('Y-m-d H:i:s');
        $vehicle->id_type_vehicule = $request->input('id_type_vehicule');
        $vehicle->passenger = $request->input('passenger');
        $vehicle->save();
        $vehicle_id = $vehicle->id;

        $vehicle_image = new vehicleImages;
        if ($request->hasfile('image_path')) {
            $file = $request->file('image_path');
            $extenstion = $file->getClientOriginalExtension();
            $time = time() . '.' . $extenstion;
            $filename = 'vehicle_' . $time;
            $Selectedfilename = 'selected_vehicleType_' . $time;
            $file->move(public_path('assets/images/vehicle'), $filename);
            $vehicle_image->image_path = $filename;
            // $vehicle_image->selected_image = $Selectedfilename;

        }
        $vehicle_image->id_vehicle = $vehicle_id;
        $vehicle_image->id_driver = $driver_id;
        $vehicle_image->creer = date('Y-m-d H:i:s');
        $vehicle_image->modifier = date('Y-m-d H:i:s');
        $vehicle_image->save();
        
        return redirect('drivers');
    }


    public function deleteDriver($id)
    {

        if ($id != "") {

            $id = json_decode($id);


            if (is_array($id)) {

                for ($i = 0; $i < count($id); $i++) {
                    $requests = Requests::where('id_conducteur', $id[$i]);
                    if ($requests) {

                        $requests->delete();
                    }
                    $parcels = ParcelOrder::where('id_conducteur', $id[$i]);
                    if ($parcels) {

                        $parcels->delete();
                    }

                    $vehicle = Vehicle::where('id_conducteur', $id[$i]);
                    if ($vehicle) {
                        $vehicle->delete();
                    }


                    $Message = Message::where('id_conducteur', $id[$i]);
                    if ($Message) {
                        $Message->delete();
                    }


                    $Note = Note::where('id_conducteur', $id[$i]);
                    if ($Note) {
                        $Note->delete();
                    }

                    $user = Driver::find($id[$i]);
                    $destination = public_path('assets/images/driver/' . $user->photo_path);
                    if (File::exists($destination)) {
                        File::delete($destination);
                    }

                    $user->delete();
                }

            } else {
                $requests = Requests::where('id_conducteur', $id);
                if ($requests) {

                    $requests->delete();
                }
                $parcels = ParcelOrder::where('id_conducteur', $id);
                if ($parcels) {

                    $parcels->delete();
                }

                $vehicle = Vehicle::where('id_conducteur', $id);
                if ($vehicle) {
                    $vehicle->delete();
                }


                $Message = Message::where('id_conducteur', $id);
                if ($Message) {
                    $Message->delete();
                }


                $Note = Note::where('id_conducteur', $id);
                if ($Note) {
                    $Note->delete();
                }

                $user = Driver::find($id);
                $destination = public_path('assets/images/driver/' . $user->photo_path);
                if (File::exists($destination)) {
                    File::delete($destination);
                }

                $user->delete();
            }

        }

        return redirect()->back();
    }

    public function updateDriver(Request $request, $id)
    {

        if ($request->id > 0) {
            $image_validation = "mimes:jpeg,jpg,png";
            $doc_validation = "mimes:doc,pdf,docx,zip,txt";
        } else {
            $image_validation = "required|mimes:jpeg,jpg,png";
            $doc_validation = "required|mimes:doc,pdf,docx,zip,txt";

        }

        $validator = Validator::make($request->all(), $rules = [
            'nom' => 'required',
            'prenom' => 'required',
            'phone' => 'required',
            'email' => 'required|email',
            'id_type_vehicule'=>'required',
            'brand'=>'required',
            'model'=>'required',
            'km'=>'required',
            'milage'=>'required',
            'numberplate'=>'required',
            'color'=>'required',
            'passenger'=>'required',
        ], $messages = [
            'nom.required' => 'The First Name field is required!',
            'prenom.required' => 'The Last Name field is required!',
            'email.required' => 'The Email field is required!',
            'email.unique' => 'The Email field is should be unique!',
            'phone.required' => 'The Phone field is required!',
            'phone.unique' => 'The Phone field is should be unique!',
            'id_type_vehicule.required' => 'The Vehicle type field is required!',
            'brand.required' => 'The brand field is required!',
            'model.required' => 'The model field is required!',
            'km.required' => 'The km field is required!',
            'milage.required' => 'The milage field is required!',
            'numberplate.required' => 'The NumberPlate field is required!',
            'color.required' => 'The Color field is required!',
            'passenger.required' => 'The Number of Passenger field is required!',
        ]);

        if ($validator->fails()) {
            return redirect()->back()
                ->withErrors($validator)->with(['message' => $messages])
                ->withInput();
        }


        $nom = $request->input('nom');
        $prenom = $request->input('prenom');
        $phone = $request->input('phone');
        $device_id = $request->input('device_id');
        $status = $request->input('statut');
        $id_type_vehicule = $request->input('id_type_vehicule');
        $brand = $request->input('brand');
        $model = $request->input('model');
        $color = $request->input('color');
        $km = $request->input('km');
        $milage = $request->input('milage');
        $numberplate = $request->input('numberplate');
        $passenger = $request->input('passenger');
        $bank = $request->input('bank_name');
        $holder = $request->input('holder_name');
        $branch = $request->input('branch_name');
        $acc_no = $request->input('account_number');
        $other_info = $request->input('other_information');
        $ifsc_code = $request->input('ifsc_code');
        $parcel_delivery = $request->has('parcel_delivery') ? "yes" : "no";

        if ($status == "on") {
            $status = "yes";
        } else {
            $status = "no";
        }

        $address = $request->input('address');
        $email = $request->input('email');
        $user = Driver::find($id);
        $vehicle = Vehicle::where('id_conducteur', "=", $id)->first();
        if ($user) {
            $user->nom = $nom;
            $user->prenom = $prenom;
            $user->phone = $phone;
            $user->device_id = $device_id;
            $user->statut = $status;
            $user->address = $address;
            $user->email = $email;
            $user->bank_name = $bank;
            $user->branch_name = $branch;
            $user->holder_name = $holder;
            $user->account_no = $acc_no;
            $user->other_info = $other_info;
            $user->ifsc_code = $ifsc_code;
            $user->parcel_delivery = $parcel_delivery;
            if ($request->hasfile('photo')) {
                $destination = public_path('assets/images/driver/' . $user->photo_path);
                if (File::exists($destination)) {
                    File::delete($destination);
                }
                $file = $request->file('photo');
                $extenstion = $file->getClientOriginalExtension();
                $time = time() . '.' . $extenstion;
                $filename = 'driver_' . $id . '.' . $extenstion;
                $path = public_path('assets/images/driver/') . $filename;
                Image::make($file->getRealPath())->resize(150, 150)->save($path);

                //$file->move(public_path('assets/images/driver'), $filename);
                $user->photo_path = $filename;
            }

            $user->save();
        }
       $vehicle_image = vehicleImages::where('id_driver', "=", $id)->first();
        if ($vehicle_image) {
            if ($request->hasfile('image_path')) {
                $destination = public_path('assets/images/vehicle/' . $vehicle_image->image_path);
                if (File::exists($destination)) {
                    File::delete($destination);
                }
                $file = $request->file('image_path');
                $extenstion = $file->getClientOriginalExtension();
                $time = time() . '.' . $extenstion;
                $filename = 'vehicle_' . $id . '.' . $extenstion;
                $file->move(public_path('assets/images/vehicle'), $filename);
                $vehicle_image->image_path = $filename;
                $vehicle_image->save();
            }
        }else{
            $vehicle_image = new vehicleImages;
            if ($request->hasfile('image_path')) {
                $file = $request->file('image_path');

                $extenstion = $file->getClientOriginalExtension();

                $time = time() . '.' . $extenstion;
                $filename = 'vehicle_' . $id . '.' . $extenstion;
                $file->move(public_path('assets/images/vehicle'), $filename);
                $vehicle_image->image_path = $filename;
                // $vehicle_image->selected_image = $Selectedfilename;
                $vehicle_image->id_vehicle = $vehicle->id;
                $vehicle_image->id_driver = $id;
                $vehicle_image->creer = date('Y-m-d H:i:s');
                $vehicle_image->modifier = date('Y-m-d H:i:s');
                $vehicle_image->save();

            }

        }
        if ($vehicle) {
            $vehicle->id_type_vehicule = $id_type_vehicule;
            $vehicle->brand = $brand;
            $vehicle->model = $model;
            $vehicle->color = $color;
            $vehicle->km = $km;
            $vehicle->milage = $milage;
            $vehicle->numberplate = $numberplate;
            $vehicle->passenger = $passenger;
            $vehicle->id_type_vehicule=$request->input('id_type_vehicule');
            $vehicle->save();
        }else{
            $vehicle = new Vehicle;
            $vehicle->id_type_vehicule = $id_type_vehicule;
            $vehicle->brand = $brand;
            $vehicle->model = $model;
            $vehicle->color = $color;
            $vehicle->km = $km;
            $vehicle->milage = $milage;
            $vehicle->numberplate = $numberplate;
            $vehicle->passenger = $passenger;
            $vehicle->id_conducteur = $id;
            $vehicle->car_make = '';
            $vehicle->statut = 'yes';
            $vehicle->creer = date('Y-m-d H:i:s');
            $vehicle->modifier = date('Y-m-d H:i:s');
            $vehicle->updated_at = date('Y-m-d H:i:s');

            $vehicle->save();

        }


        return redirect('drivers');
    }

    public function show($id)
    {
        $driver = Driver::where('id', "=", $id)->first();

        $vehicle=DB::table('tj_vehicule')->leftjoin('brands','brands.id','=','tj_vehicule.brand')
                                        ->leftjoin('car_model','car_model.id','=','tj_vehicule.model')
                                        ->select('tj_vehicule.*','brands.name as brand','car_model.name as model')
                                        ->where('id_conducteur', "=", $id)->first();

        $currency = Currency::where('statut', 'yes')->first();
        $transactions = DB::table('tj_conducteur_transaction')
            ->join('tj_payment_method', 'tj_conducteur_transaction.payment_method', '=', 'tj_payment_method.libelle')
            ->select('tj_conducteur_transaction.*', 'tj_payment_method.image')
            ->where('id_conducteur', "=", $id)->orderBy('tj_conducteur_transaction.id','desc')->paginate(10);

        $rides = Requests::
        leftjoin('tj_user_app', 'tj_requete.id_user_app', '=', 'tj_user_app.id')
            ->join('tj_conducteur', 'tj_requete.id_conducteur', '=', 'tj_conducteur.id')
            ->join('tj_payment_method', 'tj_requete.id_payment_method', '=', 'tj_payment_method.id')
            ->select('tj_requete.id', 'tj_requete.statut', 'tj_requete.statut_paiement', 'tj_requete.depart_name', 'tj_requete.destination_name', 'tj_requete.distance', 'tj_requete.montant', 'tj_requete.creer', 'tj_conducteur.id as driver_id', 'tj_conducteur.prenom as driverPrenom', 'tj_conducteur.nom as driverNom', 'tj_user_app.id as user_id', 'tj_user_app.prenom as userPrenom', 'tj_user_app.nom as userNom', 'tj_payment_method.libelle', 'tj_payment_method.image','tj_requete.ride_type')
            ->where('tj_requete.id_conducteur', $id)
            ->orderBy('tj_requete.id', 'DESC')
            ->paginate(10);

        $parcelOrders = ParcelOrder::
              join('tj_user_app', 'parcel_orders.id_user_app', '=', 'tj_user_app.id')
            ->join('tj_conducteur', 'parcel_orders.id_conducteur', '=', 'tj_conducteur.id')
            ->join('tj_payment_method', 'parcel_orders.id_payment_method', '=', 'tj_payment_method.id')
            ->select('parcel_orders.id', 'parcel_orders.status','parcel_orders.created_at','tj_user_app.id as user_id', 'tj_user_app.prenom as userPrenom', 'tj_user_app.nom as userNom')
            ->where('parcel_orders.id_conducteur', $id)
            ->orderBy('parcel_orders.id', 'DESC')
            ->paginate(10);


        $driverRating = "0.0";

        $driver_rating = DB::table('tj_note')
            ->select(DB::raw("COUNT(id) as ratingCount"), DB::raw("SUM(niveau) as ratingSum"))
            ->where('id_conducteur', '=', $id)
            ->first();
        if (!empty($driver_rating)) {
            if ($driver_rating->ratingCount > 0) {
                $driverRating = number_format(($driver_rating->ratingSum / $driver_rating->ratingCount), 1);
            }
        }

        return view('drivers.show')->with('driver', $driver)->with("vehicle", $vehicle)->with("rides", $rides)->with("currency", $currency)->with('transactions',$transactions)->with('driverRating',$driverRating)->with('parcelOrders',$parcelOrders);
    }

    public function changeStatus($id)
    {
        $driver = Driver::find($id);
        if ($driver->statut == 'no') {
            $driver->statut = 'yes';
        } else {
            $driver->statut = 'no';
        }

        $driver->save();
        return redirect()->back();

    }

    public function documentView($id)
    {
		$driver = Driver::where('id', "=", $id)->first();

		$admin_documents = DB::table('admin_documents')->where('admin_documents.is_enabled','Yes')->get();


		$admin_documents->map(function ($admin_document, $key) use ($id){
			$driver_document = DB::table('driver_document')->where('driver_id',$id)->where('document_id',$admin_document->id)->first();
			$admin_document->driver_document = $driver_document;
			return $admin_document;
		});

        return view('drivers.viewDocument')->with('admin_documents',$admin_documents)->with('driver',$driver);
    }



      public function uploaddocument($id,$doc_id)
      {
          $document=DB::table('admin_documents')->where('is_enabled','=','Yes')->get();
          return view('drivers.uploaddocument')->with('id', $id)->with('document_id',$doc_id)->with('document',$document);
      }


    public function updatedocument(Request $request, $id)
    {

        $validator = Validator::make($request->all(), $rules = [
            'document_path' => "mimes:doc,pdf,docx,zip,txt,jpeg,png,jpg",

        ], $messages = [
            'document_path.required' => 'The docuemnt field is required!',
        ]);

        if ($validator->fails()) {
            return redirect()->back()
                ->withErrors($validator)->with(['message' => $messages])
                ->withInput();
        }

        $document_id = $request->input('document_id');

		$document_name = DB::table('admin_documents')->where('id', $document_id)->first();
        
        $driver = DriversDocuments::where('driver_id', "=", $id)->where('document_id','=',$document_id)->first();

        if ($driver) {

            if ($request->hasfile('document_path')) {

                $destination = public_path('assets/images/driver/documents/' . $driver->document_path);

                if (File::exists($destination)) {
                    File::delete($destination);
                }

                $file = $request->file('document_path');

                $extenstion = $file->getClientOriginalExtension();

                $filename = str_replace(' ','_',$document_name->title) . '_' . time() . '.' . $extenstion;

                $file->move(public_path('assets/images/driver/documents'), $filename);

                $driver->document_path = $filename;

                $driver->document_status = 'Pending';
            }

            $driver->save();

        }else{

          $driver = new DriversDocuments;

          if ($request->hasfile('document_path')) {

              $file = $request->file('document_path');

              $extenstion = $file->getClientOriginalExtension();

              $filename = str_replace(' ','_',$document_name->title) . '_' . time() . '.' . $extenstion;

              $file->move(public_path('assets/images/driver/documents'), $filename);

              $driver->document_path = $filename;

              $driver->document_status = 'Pending';
          }

          $driver->driver_id = $id;

          $driver->document_id = $request->input('document_id');

          $driver->save();
        }

		return redirect()->route('driver.documentView',$id);
        
    }

    public function toggalSwitch(Request $request)
    {
        $ischeck = $request->input('ischeck');
        $id = $request->input('id');
        $driver = Driver::find($id);

        if ($ischeck == "true") {
            $driver->statut = 'yes';
        } else {
            $driver->statut = 'no';
        }
        $driver->save();

    }
    public function addWallet(Request $request, $id)
    {
        $driver = Driver::find($id);
        $amount = $request->amount;
        if ($amount == '' || $amount == null) {
            $amount = 0;
        }
        if ($driver) {
            $driverWallet = floatval($driver->amount) + floatval($amount);
            $driver->amount = (string) $driverWallet;
            $driver->save();
        }
        $date = date('Y-m-d H:i:s');

        DB::table('tj_conducteur_transaction')->insert([
            'amount' => $amount,
            'payment_method' => 'Wallet',
            'id_conducteur' => $id,
            'creer' => $date
        ]);

        $driver = Driver::find($id);
        $txnId = uniqid(0,999);
        $email=$driver->email;
        $date = date('d F Y');

        if (!empty($email)) {

            $emailsubject = '';
            $emailmessage = '';
            $emailtemplate = DB::table('email_template')->select('*')->where('type', 'wallet_topup')->first();
            if (!empty($emailtemplate)) {
                $emailsubject = $emailtemplate->subject;
                $emailmessage = $emailtemplate->message;
                $send_to_admin = $emailtemplate->send_to_admin;
            }
            $currencyData = DB::table('tj_currency')->select('*')->where('statut', 'yes')->first();
            if ($currencyData->symbol_at_right == "true") {
                $amount = number_format($amount, $currencyData->decimal_digit) . $currencyData->symbole;
                $newBalance = number_format($driver['amount'], $currencyData->decimal_digit) . $currencyData->symbole;
            } else {
                $amount = $currencyData->symbole . number_format($amount, $currencyData->decimal_digit);
                $newBalance = $currencyData->symbole . number_format($driver['amount'], $currencyData->decimal_digit);

            }
            $contact_us_email = DB::table('tj_settings')->select('contact_us_email')->value('contact_us_email');
            $contact_us_email = $contact_us_email ? $contact_us_email : 'none@none.com';


            $app_name = env('APP_NAME', 'Cabme');
            
            if($send_to_admin=="true"){
                $to = $email . "," . $contact_us_email;
            }else{
                $to = $email;

            }

            $emailmessage = str_replace("{AppName}", $app_name, $emailmessage);
            $emailmessage = str_replace("{UserName}", $driver['nom'] . " " . $driver['prenom'], $emailmessage);
            $emailmessage = str_replace("{Amount}", $amount, $emailmessage);
            $emailmessage = str_replace("{PaymentMethod}", 'Wallet', $emailmessage);
            $emailmessage = str_replace('{TransactionId}', $txnId, $emailmessage);
            $emailmessage = str_replace('{Balance}', $newBalance, $emailmessage);
            $emailmessage = str_replace('{Date}', $date, $emailmessage);

            // Always set content-type when sending HTML email
            $headers = "MIME-Version: 1.0" . "\r\n";
            $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
            $headers .= 'From: ' . $app_name . '<' . $contact_us_email . '>' . "\r\n";
            mail($to, $emailsubject, $emailmessage, $headers);
        }

        return redirect('driver/show/' . $id);
    }


}

Anon7 - 2021