<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\WashDetail;
use App\Models\CurrencyMaster;
use App\Models\CarWashOwner;
use App\Models\BodyType;
use App\Models\WashCategoryBodyType;
use App\Models\WashCategory;
use App\Models\CarOwnerCar;
use App\Models\CarOwner;
use App\Models\OptionalExtra;
use App\Models\CwoPasscode;
use App\Models\CleanerWash;
use App\Models\WashTypeToWash;
use App\Models\Loyalty;
use App\Models\OtherServiceReport; // to show total_amount including other products
use App\Models\PreBooking;
use Carbon\Carbon;
use DB;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Validator;
// use Twilio\Rest\Client;

class CarWashController extends Controller
{
    public function __construct(){
    }


    public function index(){
    }

    public function totalCarWashed(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'cwo_id' => 'required',
                // 'start_date' => 'required',
                // 'end_date' => 'required',
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $cwo_id = $request->input('cwo_id');
        // $start_date = $request->input('start_date'); // format -> yyyy-mm-dd, today or less than today
        // $end_date = $request->input('end_date'); // format -> yyyy-mm-dd, today
        /*$totalCarWashed = WashDetail::join('wash_categories','wash_categories.id','=','wash_details.wash_type_id')
            ->where('wash_categories.cwo_id', $cwo_id)
            ->whereDate('wash_details.date_washed', '>=', $start_date)
            ->whereDate('wash_details.date_washed', '<=', $end_date)
            ->count();*/

        $today = date('Y-m-d');  
        
        /***************** today starts *********************/ 
        $todayTotalCarWashed = WashDetail::where('cwo_id', $cwo_id)
            ->whereDate('date_washed', '=', $today)
            // ->where('status', 3)
            ->count(); 
        /***************** today ends *********************/  

        /**************** month to date starts ****************/
        $one_month_ago = date('Y-m-d', strtotime('-1 month', strtotime($today)));
        $monthToDateTotalCarWashed = WashDetail::where('cwo_id', $cwo_id)
            // ->whereDate('wash_details.date_washed', '>=', $one_month_ago)
            // ->whereDate('wash_details.date_washed', '<=', $today)
            ->whereYear('date_washed', Carbon::now()->year)
            ->whereMonth('date_washed', Carbon::now()->month)
            // ->where('status', 3)
            ->count();
        /**************** month to date ends ****************/

        /**************** year to date starts ****************/
        $one_year_ago = date('Y-m-d', strtotime('-1 year', strtotime($today)));
        $yearToDateTotalCarWashed = WashDetail::where('cwo_id', $cwo_id)
            // ->whereDate('wash_details.date_washed', '>=', $one_year_ago)
            // ->whereDate('wash_details.date_washed', '<=', $today)
            ->whereYear('date_washed', Carbon::now()->year)
            // ->where('status', 3)
            ->count();
        /**************** year to date ends ****************/

        return response()->json([
            'success' => 1,
            'message' => 'Success',
            // 'totalCarWashed' => $totalCarWashed,
            'todayTotalCarWashed' => $todayTotalCarWashed,
            'monthToDateTotalCarWashed' => $monthToDateTotalCarWashed,
            'yearToDateTotalCarWashed' => $yearToDateTotalCarWashed
        ]);

    }

    public function totalRevenue(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'cwo_id' => 'required',
                // 'start_date' => 'required',
                // 'end_date' => 'required',
                // 'payment_mode' => 'required', //cash/card
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $cwo_id = $request->input('cwo_id');
        // $start_date = $request->input('start_date'); // format -> yyyy-mm-dd, today or less than today
        // $end_date = $request->input('end_date'); // format -> yyyy-mm-dd, today
        // $payment_mode = $request->input('payment_mode'); //cash/card
        /*$totalRevenue = WashDetail::select(DB::raw('SUM(wash_details.amount) as total_revenue'))
            ->join('wash_categories','wash_categories.id','=','wash_details.wash_type_id')
            ->join('cwo_master','cwo_master.id','=','wash_categories.cwo_id')
            ->where('wash_categories.cwo_id', $cwo_id)
            ->where('wash_details.payment_details', $payment_mode)
            ->whereDate('wash_details.date_washed', '>=', $start_date)
            ->whereDate('wash_details.date_washed', '<=', $end_date)
            ->get();
        // echo "<pre>";print_r($totalRevenue->toArray());exit;
        $total_revenue = $totalRevenue[0]->total_revenue != '' ? $totalRevenue[0]->total_revenue : 0;*/

        $getCurrency = CarWashOwner::leftJoin('currency_masters','currency_masters.id','=','cwo_master.currency_id')->select('currency_masters.code', 'currency_masters.symbol')->where('cwo_master.id', $cwo_id)->get();
        // echo "<pre>";print_r($getCurrency->toArray());exit;
        $today = date('Y-m-d');

        /***************** today starts *********************/
        $todayRevenueInCash = WashDetail::select(DB::raw('SUM(wash_details.total_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            ->where('wash_details.payment_details', 'cash')
            ->whereDate('wash_details.date_washed', '=', $today)
            ->get();
        // echo "<pre>";print_r($todayRevenueInCash->toArray());exit;
        $todayRevenueInCash = $todayRevenueInCash[0]->total_revenue != '' ? $todayRevenueInCash[0]->total_revenue : 0;

        $todayRevenueInCard = WashDetail::select(DB::raw('SUM(wash_details.total_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            // ->where('wash_details.payment_details', 'card')
            ->where('wash_details.payment_details', 'like', '%' . 'card' . '%')
            ->whereDate('wash_details.date_washed', '=', $today)
            ->get();
        // echo "<pre>";print_r($todayRevenueInCard->toArray());exit;
        $todayRevenueInCard = $todayRevenueInCard[0]->total_revenue != '' ? $todayRevenueInCard[0]->total_revenue : 0;

        $todayRevenueInContract = WashDetail::select(DB::raw('SUM(wash_details.total_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            ->where('wash_details.payment_details', 'like', '%' . 'contract' . '%')
            ->whereDate('wash_details.date_washed', '=', $today)
            ->get();
        // echo "<pre>";print_r($todayRevenueInContract->toArray());exit;
        $todayRevenueInContract = $todayRevenueInContract[0]->total_revenue != '' ? $todayRevenueInContract[0]->total_revenue : 0;

        // $todayRevenueInCash = $todayRevenueInCash + $todayRevenueInContract;
        /******************* today ends ************************/

        /**************** month to date starts ****************/
        $one_month_ago = date('Y-m-d', strtotime('-1 month', strtotime($today)));
        $monthAgoRevenueInCash = WashDetail::select(DB::raw('SUM(wash_details.total_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            ->where('wash_details.payment_details', 'cash')
            // ->whereDate('wash_details.date_washed', '>=', $one_month_ago)
            // ->whereDate('wash_details.date_washed', '<=', $today)4
            ->whereYear('wash_details.date_washed', Carbon::now()->year)
            ->whereMonth('wash_details.date_washed', Carbon::now()->month)
            ->get();
        $monthAgoRevenueInCash = $monthAgoRevenueInCash[0]->total_revenue != '' ? $monthAgoRevenueInCash[0]->total_revenue : 0; 
        
        $monthAgoRevenueInCard = WashDetail::select(DB::raw('SUM(wash_details.total_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            // ->where('wash_details.payment_details', 'card')
            ->where('wash_details.payment_details', 'like', '%' . 'card' . '%')
            // ->whereDate('wash_details.date_washed', '>=', $one_month_ago)
            // ->whereDate('wash_details.date_washed', '<=', $today)
            ->whereYear('wash_details.date_washed', Carbon::now()->year)
            ->whereMonth('wash_details.date_washed', Carbon::now()->month)
            ->get();
        $monthAgoRevenueInCard = $monthAgoRevenueInCard[0]->total_revenue != '' ? $monthAgoRevenueInCard[0]->total_revenue : 0;

        $monthAgoRevenueInContract = WashDetail::select(DB::raw('SUM(wash_details.total_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            ->where('wash_details.payment_details', 'like', '%' . 'contract' . '%')
            // ->whereDate('wash_details.date_washed', '>=', $one_month_ago)
            // ->whereDate('wash_details.date_washed', '<=', $today)
            ->whereYear('wash_details.date_washed', Carbon::now()->year)
            ->whereMonth('wash_details.date_washed', Carbon::now()->month)
            ->get();
        $monthAgoRevenueInContract = $monthAgoRevenueInContract[0]->total_revenue != '' ? $monthAgoRevenueInContract[0]->total_revenue : 0;     

        // $monthAgoRevenueInCash = $monthAgoRevenueInCash + $monthAgoRevenueInContract;
        /**************** month to date ends *******************/

        /**************** year to date starts ****************/
        $one_year_ago = date('Y-m-d', strtotime('-1 year', strtotime($today)));
        $yearAgoRevenueInCash = WashDetail::select(DB::raw('SUM(wash_details.total_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            ->where('wash_details.payment_details', 'cash')
            // ->whereDate('wash_details.date_washed', '>=', $one_year_ago)
            // ->whereDate('wash_details.date_washed', '<=', $today)
            ->whereYear('wash_details.date_washed', Carbon::now()->year)
            ->get();
        $yearAgoRevenueInCash = $yearAgoRevenueInCash[0]->total_revenue != '' ? $yearAgoRevenueInCash[0]->total_revenue : 0; 
        
        $yearAgoRevenueInCard = WashDetail::select(DB::raw('SUM(wash_details.total_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            // ->where('wash_details.payment_details', 'card')
            ->where('wash_details.payment_details', 'like', '%' . 'card' . '%')
            // ->whereDate('wash_details.date_washed', '>=', $one_year_ago)
            // ->whereDate('wash_details.date_washed', '<=', $today)
            ->whereYear('wash_details.date_washed', Carbon::now()->year)
            ->get();
        $yearAgoRevenueInCard = $yearAgoRevenueInCard[0]->total_revenue != '' ? $yearAgoRevenueInCard[0]->total_revenue : 0; 

        $yearAgoRevenueInContract = WashDetail::select(DB::raw('SUM(wash_details.total_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            ->where('wash_details.payment_details', 'like', '%' . 'contract' . '%')
            // ->whereDate('wash_details.date_washed', '>=', $one_year_ago)
            // ->whereDate('wash_details.date_washed', '<=', $today)
            ->whereYear('wash_details.date_washed', Carbon::now()->year)
            ->get();
        $yearAgoRevenueInContract = $yearAgoRevenueInContract[0]->total_revenue != '' ? $yearAgoRevenueInContract[0]->total_revenue : 0;  

        // $yearAgoRevenueInCash = $yearAgoRevenueInCash + $yearAgoRevenueInContract;
        /**************** year to date ends *******************/

        

        return response()->json([
            'success' => 1,
            'message' => 'Success',
            // 'totalRevenue' => $getCurrency[0]->symbol . $total_revenue,
            'currency' => $getCurrency[0]->symbol,
            'todayRevenueInCash' => "$todayRevenueInCash",
            'todayRevenueInCard' => "$todayRevenueInCard",
            'todayRevenueInContract' => "$todayRevenueInContract",
            'monthToDateRevenueInCash' => "$monthAgoRevenueInCash",
            'monthToDateRevenueInCard' => "$monthAgoRevenueInCard",
            'monthToDateRevenueInContract' => "$monthAgoRevenueInContract",
            'yearToDateRevenueInCash' => "$yearAgoRevenueInCash",
            'yearToDateRevenueInCard' => "$yearAgoRevenueInCard",
            'yearToDateRevenueInContract' => "$yearAgoRevenueInContract",
        ]);

    }

    public function totalRevenue_NewSplit(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'cwo_id' => 'required',
                // 'start_date' => 'required',
                // 'end_date' => 'required',
                // 'payment_mode' => 'required', //cash/card
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $cwo_id = $request->input('cwo_id');
        $getCurrency = getCurencyOfCwo($cwo_id);
        $today = date('Y-m-d');

        /***************** today starts *********************/
        $todayRevenueInCash = WashDetail::select(DB::raw('SUM(wash_details.cash_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            // ->where('wash_details.payment_details', 'cash')
            ->whereDate('wash_details.date_washed', '=', $today)
            ->get();
        // echo "<pre>";print_r($todayRevenueInCash->toArray());exit;
        $todayRevenueInCash = $todayRevenueInCash[0]->total_revenue != '' ? $todayRevenueInCash[0]->total_revenue : 0;

        $todayRevenueInCard = WashDetail::select(DB::raw('SUM(wash_details.card_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            // ->where('wash_details.payment_details', 'card')
            // ->where('wash_details.payment_details', 'like', '%' . 'card' . '%')
            ->whereDate('wash_details.date_washed', '=', $today)
            ->get();
        // echo "<pre>";print_r($todayRevenueInCard->toArray());exit;
        $todayRevenueInCard = $todayRevenueInCard[0]->total_revenue != '' ? $todayRevenueInCard[0]->total_revenue : 0;

        $todayRevenueInContract = WashDetail::select(DB::raw('SUM(wash_details.total_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            ->where('wash_details.payment_details', 'like', '%' . 'contract' . '%')
            ->whereDate('wash_details.date_washed', '=', $today)
            ->get();
        // echo "<pre>";print_r($todayRevenueInContract->toArray());exit;
        $todayRevenueInContract = $todayRevenueInContract[0]->total_revenue != '' ? $todayRevenueInContract[0]->total_revenue : 0;

        // $todayRevenueInCash = $todayRevenueInCash + $todayRevenueInContract;
        /******************* today ends ************************/

        /**************** month to date starts ****************/
        $monthAgoRevenueInCash = WashDetail::select(DB::raw('SUM(wash_details.cash_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            // ->where('wash_details.payment_details', 'cash')
            ->whereYear('wash_details.date_washed', Carbon::now()->year)
            ->whereMonth('wash_details.date_washed', Carbon::now()->month)
            ->get();
        $monthAgoRevenueInCash = $monthAgoRevenueInCash[0]->total_revenue != '' ? $monthAgoRevenueInCash[0]->total_revenue : 0; 
        
        $monthAgoRevenueInCard = WashDetail::select(DB::raw('SUM(wash_details.card_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            // ->where('wash_details.payment_details', 'card')
            // ->where('wash_details.payment_details', 'like', '%' . 'card' . '%')
            ->whereYear('wash_details.date_washed', Carbon::now()->year)
            ->whereMonth('wash_details.date_washed', Carbon::now()->month)
            ->get();
        $monthAgoRevenueInCard = $monthAgoRevenueInCard[0]->total_revenue != '' ? $monthAgoRevenueInCard[0]->total_revenue : 0;

        $monthAgoRevenueInContract = WashDetail::select(DB::raw('SUM(wash_details.total_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            ->where('wash_details.payment_details', 'like', '%' . 'contract' . '%')
            ->whereYear('wash_details.date_washed', Carbon::now()->year)
            ->whereMonth('wash_details.date_washed', Carbon::now()->month)
            ->get();
        $monthAgoRevenueInContract = $monthAgoRevenueInContract[0]->total_revenue != '' ? $monthAgoRevenueInContract[0]->total_revenue : 0;     

        // $monthAgoRevenueInCash = $monthAgoRevenueInCash + $monthAgoRevenueInContract;
        /**************** month to date ends *******************/

        /**************** year to date starts ****************/
        $yearAgoRevenueInCash = WashDetail::select(DB::raw('SUM(wash_details.cash_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            // ->where('wash_details.payment_details', 'cash')
            ->whereYear('wash_details.date_washed', Carbon::now()->year)
            ->get();
        $yearAgoRevenueInCash = $yearAgoRevenueInCash[0]->total_revenue != '' ? $yearAgoRevenueInCash[0]->total_revenue : 0; 
        
        $yearAgoRevenueInCard = WashDetail::select(DB::raw('SUM(wash_details.card_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            // ->where('wash_details.payment_details', 'card')
            // ->where('wash_details.payment_details', 'like', '%' . 'card' . '%')
            ->whereYear('wash_details.date_washed', Carbon::now()->year)
            ->get();
        $yearAgoRevenueInCard = $yearAgoRevenueInCard[0]->total_revenue != '' ? $yearAgoRevenueInCard[0]->total_revenue : 0; 

        $yearAgoRevenueInContract = WashDetail::select(DB::raw('SUM(wash_details.total_amount) as total_revenue'))
            ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
            ->where('wash_details.cwo_id', $cwo_id)
            ->where('wash_details.payment_details', 'like', '%' . 'contract' . '%')
            ->whereYear('wash_details.date_washed', Carbon::now()->year)
            ->get();
        $yearAgoRevenueInContract = $yearAgoRevenueInContract[0]->total_revenue != '' ? $yearAgoRevenueInContract[0]->total_revenue : 0;  

        // $yearAgoRevenueInCash = $yearAgoRevenueInCash + $yearAgoRevenueInContract;
        /**************** year to date ends *******************/

        

        return response()->json([
            'success' => 1,
            'message' => 'Success',
            'currency' => $getCurrency,
            'todayRevenueInCash' => "$todayRevenueInCash",
            'todayRevenueInCard' => "$todayRevenueInCard",
            'todayRevenueInContract' => "$todayRevenueInContract",
            'monthToDateRevenueInCash' => "$monthAgoRevenueInCash",
            'monthToDateRevenueInCard' => "$monthAgoRevenueInCard",
            'monthToDateRevenueInContract' => "$monthAgoRevenueInContract",
            'yearToDateRevenueInCash' => "$yearAgoRevenueInCash",
            'yearToDateRevenueInCard' => "$yearAgoRevenueInCard",
            'yearToDateRevenueInContract' => "$yearAgoRevenueInContract",
        ]);

    }

    public function todayCarWashedList(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'cwo_id' => 'required',
                // 'start_date' => 'required',
                // 'end_date' => 'required',
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $cwo_id = $request->input('cwo_id');
        // $start_date = $request->input('start_date'); // format -> yyyy-mm-dd, today or less than today
        // $end_date = $request->input('end_date'); // format -> yyyy-mm-dd, today
        $today = date('Y-m-d');

        $getCurrency = getCurencyOfCwo($cwo_id);

        /***************** today starts *********************/
        /*$carWashedList = WashDetail::select('wash_details.id','wash_details.car_id','wash_details.date_washed','wash_details.time_washed','wash_details.status','wash_details.payment_status','co_master.co_fname','co_master.co_lname','co_master.co_phone','co_car.car_registration_no','wash_categories.wash_name','wash_details.otp', 'wash_details.payment_details', 'wash_details.amount', 'wash_details.total_amount', 'co_master.isd_code', 'wash_details.driver_name', 'wash_details.driver_isd_code', 'wash_details.driver_phone', 'wash_details.is_free_wash')
        ->join('co_car','co_car.id','=','wash_details.car_id')
        ->join('co_master','co_master.id','=','co_car.co_id')
        ->join('users','users.id','=','co_master.user_id')
        ->join('wash_categories','wash_categories.id','=','wash_details.wash_type_id')
        ->join('cwo_master','cwo_master.id','=','wash_categories.cwo_id')
        ->leftJoin('currency_masters','currency_masters.id','=','cwo_master.currency_id')
        ->where('wash_categories.cwo_id', $cwo_id)
        // ->whereDate('wash_details.date_washed', '>=', $start_date)
        // ->whereDate('wash_details.date_washed', '<=', $end_date)
        ->whereDate('wash_details.date_washed', '=', $today)
        ->where('wash_details.status', 3)
        ->orderBy('co_car.id', 'desc')
        ->get();*/
        $carWashedList = WashDetail::select('wash_details.id','wash_details.car_id','wash_details.date_washed','wash_details.time_washed','wash_details.status','wash_details.payment_status','co_master.co_fname','co_master.co_lname','co_master.co_phone','co_car.car_registration_no','wash_details.otp', 'wash_details.payment_details', 'wash_details.amount', 'wash_details.total_amount', 'co_master.isd_code', 'wash_details.driver_name', 'wash_details.driver_isd_code', 'wash_details.driver_phone', 'wash_details.is_free_wash', 'wash_details.wash_type_id', 'wash_details.keys_collected', 'wash_details.image', 'wash_details.discount', 'co_car.make', 'co_car.vehicle_color', 'co_car.car_model')
        ->join('co_car','co_car.id','=','wash_details.car_id')
        ->join('co_master','co_master.id','=','co_car.co_id')
        ->join('users','users.id','=','co_master.user_id')
        ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
        ->leftJoin('currency_masters','currency_masters.id','=','cwo_master.currency_id')
        ->where('wash_details.cwo_id', $cwo_id)
        // ->whereDate('wash_details.date_washed', '>=', $start_date)
        // ->whereDate('wash_details.date_washed', '<=', $end_date)
        ->whereDate('wash_details.date_washed', '=', $today)
        // ->where('wash_details.status', 3)
        // ->where('wash_details.status', 5)
        ->orderBy('wash_details.id', 'desc')
        ->get();
        // echo "<pre>";print_r($carWashedList->toArray());exit;   
        /***************** today ends *********************/ 

        $dataDisplay=[];
        $dataArray = [];
        if($carWashedList != ''){
            foreach ($carWashedList as $d) {
                $dataDisplay['id'] = $d->id;
                $dataDisplay['car_id'] = $d->car_id;
                if($d->driver_name != ''){
                    $dataDisplay['co_fname'] = $d->driver_name;
                    $dataDisplay['co_lname'] = '';
                } else {
                    $dataDisplay['co_fname'] = $d->co_fname;
                    $dataDisplay['co_lname'] = $d->co_lname;
                }
                if($d->driver_phone != ''){
                    $dataDisplay['isd_code'] = '+' . $d->driver_isd_code;
                    $dataDisplay['co_phone'] = $d->driver_phone;
                } else {
                    $dataDisplay['isd_code'] = '+' . $d->isd_code;
                    $dataDisplay['co_phone'] = $d->co_phone;
                }
                $dataDisplay['car_registration_no'] = $d->car_registration_no;
                $dataDisplay['make'] = $d->make;
                $dataDisplay['vehicle_color'] = $d->vehicle_color;
                if($d->vehicle_color == '') {
                    $dataDisplay['vehicle_color'] = '';
                }
                $dataDisplay['car_model'] = $d->car_model;
                if($d->car_model == '') {
                    $dataDisplay['car_model'] = '';
                }
                // $dataDisplay['wash_name'] = $d->wash_name;
                $dataDisplay['date_washed']  = date("d/m/Y", strtotime($d->date_washed)); 
                $dataDisplay['time_washed']  = date("h:i a", strtotime($d->time_washed)); 
                if($d->payment_status == 1){
                    $dataDisplay['payment_status'] = 'Paid';    
                } else {
                    $dataDisplay['payment_status'] = 'Not Paid';   
                }
                if($d->status == 0){
                    $dataDisplay['status'] = 'Car in-queue';    
                }
                if($d->status == 1){
                    $dataDisplay['status'] = 'In Wash Bay';    
                }
                if($d->status == 2){
                    $dataDisplay['status'] = 'Finishing Bay';    
                }
                if($d->status == 3){
                    $dataDisplay['status'] = 'Car Wash Completed';    
                }
                if($d->status == 4){
                    $dataDisplay['status'] = 'Cancelled';    
                }
                if($d->status == 5){
                    $dataDisplay['status'] = 'Keys Collected';    
                }
                if($d->is_free_wash == 1) {
                    $dataDisplay['is_free_wash'] = true;
                }
                if($d->is_free_wash == 0) {
                    $dataDisplay['is_free_wash'] = false;
                }
                $dataDisplay['otp'] = $d->otp;
                $dataDisplay['payment_mode'] = $d->payment_details;
                $dataDisplay['wash_amount'] = $d->amount;
                $dataDisplay['total_amount'] = $d->total_amount;
                $dataDisplay['discount_value_in_percentage'] = $d->discount;

                if($d->keys_collected != ''){
                    $dataDisplay['keys_collected']  = date("d/m/Y", strtotime($d->date_washed));
                } else {
                    $dataDisplay['keys_collected'] = '';
                } 

                if($d->image != '') {
                    $dataDisplay['image'] = $d->image;
                } else {
                    $dataDisplay['image'] = '';
                }
                if($dataDisplay['image'] == "null"){
                    $dataDisplay['image'] = '';
                }

                $optionalExtra = OptionalExtra::where('wash_id', $d->id)->select('optional_extra', 'price')->orderBy('id', 'asc')->get();
                $dataDisplay['extras'] = $optionalExtra;  

                $cleaners = CleanerWash::select('cleaner_masters.name', 'cleaner_washes.description as cleaning_description')
                            ->join('cleaner_masters', 'cleaner_masters.id', '=', 'cleaner_washes.cleaner_id')
                            ->where('cleaner_washes.wash_id', $d->id)
                            ->orderBy('cleaner_washes.id', 'asc')
                            ->get();
                $dataDisplay['cleaners'] = $cleaners;

                $wash_types = WashTypeToWash::select('wash_categories.wash_name', 'wash_type_to_washes.price')
                            ->join('wash_categories', 'wash_categories.id', '=', 'wash_type_to_washes.wash_type_id')
                            ->where('wash_type_to_washes.wash_id', $d->id)
                            ->orderBy('wash_type_to_washes.id', 'asc')
                            ->get();
                $dataDisplay['wash_types'] = $wash_types;

                if($d->wash_type_id > 0){
                    $getWashType = WashCategory::where('id', $d->wash_type_id)->select('wash_name')->first();
                    if($getWashType != ''){
                        $dataDisplay['wash_name'] = $getWashType->wash_name;    
                    } else {
                        $dataDisplay['wash_name'] = '';
                    }
                } else {
                    $dataDisplay['wash_name'] = '';
                }

                $dataArray[] = $dataDisplay;
            }
        }

        return response()->json([
            'success' => 1,
            'message' => 'Success',
            'currency' => $getCurrency,
            'carWashedList' => $dataArray
        ]);

    }

    public function todayCarWashedList_NewSplit(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'cwo_id' => 'required',
                // 'start_date' => 'required',
                // 'end_date' => 'required',
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $cwo_id = $request->input('cwo_id');
        // $start_date = $request->input('start_date'); // format -> yyyy-mm-dd, today or less than today
        // $end_date = $request->input('end_date'); // format -> yyyy-mm-dd, today
        $today = date('Y-m-d');

        $getCurrency = getCurencyOfCwo($cwo_id);

        /***************** today starts *********************/
        $carWashedList = WashDetail::select('wash_details.id','wash_details.car_id','wash_details.date_washed','wash_details.time_washed','wash_details.status','wash_details.payment_status','co_master.co_fname','co_master.co_lname','co_master.co_phone','co_car.car_registration_no','wash_details.otp', 'wash_details.payment_details', 'wash_details.amount', 'wash_details.total_amount', 'co_master.isd_code', 'wash_details.driver_name', 'wash_details.driver_isd_code', 'wash_details.driver_phone', 'wash_details.is_free_wash', 'wash_details.wash_type_id', 'wash_details.keys_collected', 'wash_details.image', 'wash_details.discount', 'co_car.make', 'co_car.vehicle_color', 'co_car.car_model', 'wash_details.card_amount', 'wash_details.cash_amount')
        ->join('co_car','co_car.id','=','wash_details.car_id')
        ->join('co_master','co_master.id','=','co_car.co_id')
        ->join('users','users.id','=','co_master.user_id')
        ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
        ->leftJoin('currency_masters','currency_masters.id','=','cwo_master.currency_id')
        ->where('wash_details.cwo_id', $cwo_id)
        ->whereDate('wash_details.date_washed', '=', $today)
        ->orderBy('wash_details.id', 'desc')
        ->get();
        // echo "<pre>";print_r($carWashedList->toArray());exit;   
        /***************** today ends *********************/ 

        $dataDisplay=[];
        $dataArray = [];
        if($carWashedList != ''){
            foreach ($carWashedList as $d) {
                $dataDisplay['id'] = $d->id;
                $dataDisplay['car_id'] = $d->car_id;
                if($d->driver_name != ''){
                    $dataDisplay['co_fname'] = $d->driver_name;
                    $dataDisplay['co_lname'] = '';
                } else {
                    $dataDisplay['co_fname'] = $d->co_fname;
                    $dataDisplay['co_lname'] = $d->co_lname;
                }
                if($d->driver_phone != ''){
                    $dataDisplay['isd_code'] = '+' . $d->driver_isd_code;
                    $dataDisplay['co_phone'] = $d->driver_phone;
                } else {
                    $dataDisplay['isd_code'] = '+' . $d->isd_code;
                    $dataDisplay['co_phone'] = $d->co_phone;
                }
                $dataDisplay['car_registration_no'] = $d->car_registration_no;
                $dataDisplay['make'] = $d->make;
                $dataDisplay['vehicle_color'] = $d->vehicle_color;
                if($d->vehicle_color == '') {
                    $dataDisplay['vehicle_color'] = '';
                }
                $dataDisplay['car_model'] = $d->car_model;
                if($d->car_model == '') {
                    $dataDisplay['car_model'] = '';
                }
                // $dataDisplay['wash_name'] = $d->wash_name;
                $dataDisplay['date_washed']  = date("d/m/Y", strtotime($d->date_washed)); 
                $dataDisplay['time_washed']  = date("h:i a", strtotime($d->time_washed)); 
                if($d->payment_status == 1){
                    $dataDisplay['payment_status'] = 'Paid';    
                } else {
                    $dataDisplay['payment_status'] = 'Not Paid';   
                }
                if($d->status == 0){
                    $dataDisplay['status'] = 'Car in-queue';    
                }
                if($d->status == 1){
                    $dataDisplay['status'] = 'In Wash Bay';    
                }
                if($d->status == 2){
                    $dataDisplay['status'] = 'Finishing Bay';    
                }
                if($d->status == 3){
                    $dataDisplay['status'] = 'Car Wash Completed';    
                }
                if($d->status == 4){
                    $dataDisplay['status'] = 'Cancelled';    
                }
                if($d->status == 5){
                    $dataDisplay['status'] = 'Keys Collected';    
                }
                if($d->is_free_wash == 1) {
                    $dataDisplay['is_free_wash'] = true;
                }
                if($d->is_free_wash == 0) {
                    $dataDisplay['is_free_wash'] = false;
                }
                $dataDisplay['otp'] = $d->otp;
                $dataDisplay['payment_mode'] = $d->payment_details;
                $dataDisplay['wash_amount'] = $d->amount;
                $dataDisplay['total_amount'] = $d->total_amount;
                $dataDisplay['card_amount'] = $d->card_amount;
                $dataDisplay['cash_amount'] = $d->cash_amount;
                $dataDisplay['discount_value_in_percentage'] = $d->discount;

                if($d->keys_collected != ''){
                    $dataDisplay['keys_collected']  = date("d/m/Y", strtotime($d->date_washed));
                } else {
                    $dataDisplay['keys_collected'] = '';
                } 

                if($d->image != '') {
                    $dataDisplay['image'] = $d->image;
                } else {
                    $dataDisplay['image'] = '';
                }
                if($dataDisplay['image'] == "null"){
                    $dataDisplay['image'] = '';
                }

                $optionalExtra = OptionalExtra::where('wash_id', $d->id)->select('optional_extra', 'price')->orderBy('id', 'asc')->get();
                $dataDisplay['extras'] = $optionalExtra;  

                $cleaners = CleanerWash::select('cleaner_masters.name', 'cleaner_washes.description as cleaning_description')
                            ->join('cleaner_masters', 'cleaner_masters.id', '=', 'cleaner_washes.cleaner_id')
                            ->where('cleaner_washes.wash_id', $d->id)
                            ->orderBy('cleaner_washes.id', 'asc')
                            ->get();
                $dataDisplay['cleaners'] = $cleaners;

                $wash_types = WashTypeToWash::select('wash_categories.wash_name', 'wash_type_to_washes.price')
                            ->join('wash_categories', 'wash_categories.id', '=', 'wash_type_to_washes.wash_type_id')
                            ->where('wash_type_to_washes.wash_id', $d->id)
                            ->orderBy('wash_type_to_washes.id', 'asc')
                            ->get();
                $dataDisplay['wash_types'] = $wash_types;

                if($d->wash_type_id > 0){
                    $getWashType = WashCategory::where('id', $d->wash_type_id)->select('wash_name')->first();
                    if($getWashType != ''){
                        $dataDisplay['wash_name'] = $getWashType->wash_name;    
                    } else {
                        $dataDisplay['wash_name'] = '';
                    }
                } else {
                    $dataDisplay['wash_name'] = '';
                }

                $dataArray[] = $dataDisplay;
            }
        }

        return response()->json([
            'success' => 1,
            'message' => 'Success',
            'currency' => $getCurrency,
            'carWashedList' => $dataArray
        ]);

    }

    public function monthToDateCarWashedList(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'cwo_id' => 'required'
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $cwo_id = $request->input('cwo_id');
        $today = date('Y-m-d'); 
        $one_month_ago = date('Y-m-d', strtotime('-1 month', strtotime($today)));

        $getCurrency = getCurencyOfCwo($cwo_id);

        /***************** month to date starts *********************/
        /*$carWashedList = WashDetail::select('wash_details.id','wash_details.car_id','wash_details.date_washed','wash_details.time_washed','wash_details.status','wash_details.payment_status','co_master.co_fname','co_master.co_lname','co_master.co_phone','co_car.car_registration_no','wash_categories.wash_name','wash_details.otp', 'wash_details.payment_details', 'wash_details.amount', 'wash_details.total_amount', 'co_master.isd_code', 'wash_details.driver_name', 'wash_details.driver_isd_code', 'wash_details.driver_phone', 'wash_details.is_free_wash')
        ->join('co_car','co_car.id','=','wash_details.car_id')
        ->join('co_master','co_master.id','=','co_car.co_id')
        ->join('users','users.id','=','co_master.user_id')
        ->join('wash_categories','wash_categories.id','=','wash_details.wash_type_id')
        ->join('cwo_master','cwo_master.id','=','wash_categories.cwo_id')
        ->leftJoin('currency_masters','currency_masters.id','=','cwo_master.currency_id')
        ->where('wash_categories.cwo_id', $cwo_id)
        // ->whereDate('wash_details.date_washed', '>=', $one_month_ago)
        // ->whereDate('wash_details.date_washed', '<=', $today)
        ->whereYear('wash_details.date_washed', Carbon::now()->year)
        ->whereMonth('wash_details.date_washed', Carbon::now()->month)
        ->where('wash_details.status', 3)
        ->orderBy('co_car.id', 'desc')
        ->get();*/ 
        $carWashedList = WashDetail::select('wash_details.id','wash_details.car_id','wash_details.date_washed','wash_details.time_washed','wash_details.status','wash_details.payment_status','co_master.co_fname','co_master.co_lname','co_master.co_phone','co_car.car_registration_no','wash_details.otp', 'wash_details.payment_details', 'wash_details.amount', 'wash_details.total_amount', 'co_master.isd_code', 'wash_details.driver_name', 'wash_details.driver_isd_code', 'wash_details.driver_phone', 'wash_details.is_free_wash', 'wash_details.wash_type_id', 'wash_details.keys_collected', 'wash_details.image', 'wash_details.discount', 'co_car.make', 'co_car.vehicle_color', 'co_car.car_model')
        ->join('co_car','co_car.id','=','wash_details.car_id')
        ->join('co_master','co_master.id','=','co_car.co_id')
        ->join('users','users.id','=','co_master.user_id')
        ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
        ->leftJoin('currency_masters','currency_masters.id','=','cwo_master.currency_id')
        ->where('wash_details.cwo_id', $cwo_id)
        // ->whereDate('wash_details.date_washed', '>=', $one_month_ago)
        // ->whereDate('wash_details.date_washed', '<=', $today)
        ->whereYear('wash_details.date_washed', Carbon::now()->year)
        ->whereMonth('wash_details.date_washed', Carbon::now()->month)
        // ->where('wash_details.status', 3)
        // ->where('wash_details.status', 5)
        ->orderBy('wash_details.id', 'desc')
        ->get();    
        /***************** month to date ends *********************/ 

        $dataDisplay=[];
        $dataArray = [];
        if($carWashedList != ''){
            foreach ($carWashedList as $d) {
                $dataDisplay['id'] = $d->id;
                $dataDisplay['car_id'] = $d->car_id;
                if($d->driver_name != ''){
                    $dataDisplay['co_fname'] = $d->driver_name;
                    $dataDisplay['co_lname'] = '';
                } else {
                    $dataDisplay['co_fname'] = $d->co_fname;
                    $dataDisplay['co_lname'] = $d->co_lname;
                }
                if($d->driver_phone != ''){
                    $dataDisplay['isd_code'] = '+' . $d->driver_isd_code;
                    $dataDisplay['co_phone'] = $d->driver_phone;
                } else {
                    $dataDisplay['isd_code'] = '+' . $d->isd_code;
                    $dataDisplay['co_phone'] = $d->co_phone;
                }
                $dataDisplay['car_registration_no'] = $d->car_registration_no;
                $dataDisplay['make'] = $d->make;
                $dataDisplay['vehicle_color'] = $d->vehicle_color;
                if($d->vehicle_color == '') {
                    $dataDisplay['vehicle_color'] = '';
                }
                $dataDisplay['car_model'] = $d->car_model;
                if($d->car_model == '') {
                    $dataDisplay['car_model'] = '';
                }
                // $dataDisplay['wash_name'] = $d->wash_name;
                $dataDisplay['date_washed']  = date("d/m/Y", strtotime($d->date_washed)); 
                $dataDisplay['time_washed']  = date("h:i a", strtotime($d->time_washed)); 
                if($d->payment_status == 1){
                    $dataDisplay['payment_status'] = 'Paid';    
                } else {
                    $dataDisplay['payment_status'] = 'Not Paid';   
                }
                if($d->status == 0){
                    $dataDisplay['status'] = 'Car in-queue';    
                }
                if($d->status == 1){
                    $dataDisplay['status'] = 'In Wash Bay';    
                }
                if($d->status == 2){
                    $dataDisplay['status'] = 'Finishing Bay';    
                }
                if($d->status == 3){
                    $dataDisplay['status'] = 'Car Wash Completed';    
                }
                if($d->status == 4){
                    $dataDisplay['status'] = 'Cancelled';    
                }
                if($d->status == 5){
                    $dataDisplay['status'] = 'Keys Collected';    
                }
                if($d->is_free_wash == 1) {
                    $dataDisplay['is_free_wash'] = true;
                }
                if($d->is_free_wash == 0) {
                    $dataDisplay['is_free_wash'] = false;
                }
                $dataDisplay['otp'] = $d->otp;
                $dataDisplay['payment_mode'] = $d->payment_details;
                $dataDisplay['wash_amount'] = $d->amount;
                $dataDisplay['total_amount'] = $d->total_amount;
                $dataDisplay['discount_value_in_percentage'] = $d->discount;
                if($d->keys_collected != ''){
                    $dataDisplay['keys_collected']  = date("d/m/Y", strtotime($d->date_washed));
                } else {
                    $dataDisplay['keys_collected'] = '';
                }

                if($d->image != '') {
                    $dataDisplay['image'] = $d->image;
                } else {
                    $dataDisplay['image'] = '';
                }
                if($dataDisplay['image'] == "null"){
                    $dataDisplay['image'] = '';
                }

                $optionalExtra = OptionalExtra::where('wash_id', $d->id)->select('optional_extra', 'price')->orderBy('id', 'asc')->get();
                $dataDisplay['extras'] = $optionalExtra; 

                $cleaners = CleanerWash::select('cleaner_masters.name', 'cleaner_washes.description as cleaning_description')
                            ->join('cleaner_masters', 'cleaner_masters.id', '=', 'cleaner_washes.cleaner_id')
                            ->where('cleaner_washes.wash_id', $d->id)
                            ->orderBy('cleaner_washes.id', 'asc')
                            ->get();
                $dataDisplay['cleaners'] = $cleaners;

                $wash_types = WashTypeToWash::select('wash_categories.wash_name', 'wash_type_to_washes.price')
                            ->join('wash_categories', 'wash_categories.id', '=', 'wash_type_to_washes.wash_type_id')
                            ->where('wash_type_to_washes.wash_id', $d->id)
                            ->orderBy('wash_type_to_washes.id', 'asc')
                            ->get();
                $dataDisplay['wash_types'] = $wash_types;

                if($d->wash_type_id > 0){
                    $getWashType = WashCategory::where('id', $d->wash_type_id)->select('wash_name')->first();
                    if($getWashType != ''){
                        $dataDisplay['wash_name'] = $getWashType->wash_name;    
                    } else {
                        $dataDisplay['wash_name'] = '';
                    }
                } else {
                    $dataDisplay['wash_name'] = '';
                }

                $dataArray[] = $dataDisplay;
            }
        }

        return response()->json([
            'success' => 1,
            'message' => 'Success',
            'currency' => $getCurrency,
            'carWashedList' => $dataArray
        ]);

    }

    public function monthToDateCarWashedList_NewSplit(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'cwo_id' => 'required'
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $cwo_id = $request->input('cwo_id');
        $today = date('Y-m-d'); 
        $one_month_ago = date('Y-m-d', strtotime('-1 month', strtotime($today)));

        $getCurrency = getCurencyOfCwo($cwo_id);

        /***************** month to date starts *********************/
        $carWashedList = WashDetail::select('wash_details.id','wash_details.car_id','wash_details.date_washed','wash_details.time_washed','wash_details.status','wash_details.payment_status','co_master.co_fname','co_master.co_lname','co_master.co_phone','co_car.car_registration_no','wash_details.otp', 'wash_details.payment_details', 'wash_details.amount', 'wash_details.total_amount', 'co_master.isd_code', 'wash_details.driver_name', 'wash_details.driver_isd_code', 'wash_details.driver_phone', 'wash_details.is_free_wash', 'wash_details.wash_type_id', 'wash_details.keys_collected', 'wash_details.image', 'wash_details.discount', 'co_car.make', 'co_car.vehicle_color', 'co_car.car_model', 'wash_details.card_amount', 'wash_details.cash_amount')
        ->join('co_car','co_car.id','=','wash_details.car_id')
        ->join('co_master','co_master.id','=','co_car.co_id')
        ->join('users','users.id','=','co_master.user_id')
        ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
        ->leftJoin('currency_masters','currency_masters.id','=','cwo_master.currency_id')
        ->where('wash_details.cwo_id', $cwo_id)
        ->whereYear('wash_details.date_washed', Carbon::now()->year)
        ->whereMonth('wash_details.date_washed', Carbon::now()->month)
        ->orderBy('wash_details.id', 'desc')
        ->get();    
        /***************** month to date ends *********************/ 

        $dataDisplay=[];
        $dataArray = [];
        if($carWashedList != ''){
            foreach ($carWashedList as $d) {
                $dataDisplay['id'] = $d->id;
                $dataDisplay['car_id'] = $d->car_id;
                if($d->driver_name != ''){
                    $dataDisplay['co_fname'] = $d->driver_name;
                    $dataDisplay['co_lname'] = '';
                } else {
                    $dataDisplay['co_fname'] = $d->co_fname;
                    $dataDisplay['co_lname'] = $d->co_lname;
                }
                if($d->driver_phone != ''){
                    $dataDisplay['isd_code'] = '+' . $d->driver_isd_code;
                    $dataDisplay['co_phone'] = $d->driver_phone;
                } else {
                    $dataDisplay['isd_code'] = '+' . $d->isd_code;
                    $dataDisplay['co_phone'] = $d->co_phone;
                }
                $dataDisplay['car_registration_no'] = $d->car_registration_no;
                $dataDisplay['make'] = $d->make;
                $dataDisplay['vehicle_color'] = $d->vehicle_color;
                if($d->vehicle_color == '') {
                    $dataDisplay['vehicle_color'] = '';
                }
                $dataDisplay['car_model'] = $d->car_model;
                if($d->car_model == '') {
                    $dataDisplay['car_model'] = '';
                }
                // $dataDisplay['wash_name'] = $d->wash_name;
                $dataDisplay['date_washed']  = date("d/m/Y", strtotime($d->date_washed)); 
                $dataDisplay['time_washed']  = date("h:i a", strtotime($d->time_washed)); 
                if($d->payment_status == 1){
                    $dataDisplay['payment_status'] = 'Paid';    
                } else {
                    $dataDisplay['payment_status'] = 'Not Paid';   
                }
                if($d->status == 0){
                    $dataDisplay['status'] = 'Car in-queue';    
                }
                if($d->status == 1){
                    $dataDisplay['status'] = 'In Wash Bay';    
                }
                if($d->status == 2){
                    $dataDisplay['status'] = 'Finishing Bay';    
                }
                if($d->status == 3){
                    $dataDisplay['status'] = 'Car Wash Completed';    
                }
                if($d->status == 4){
                    $dataDisplay['status'] = 'Cancelled';    
                }
                if($d->status == 5){
                    $dataDisplay['status'] = 'Keys Collected';    
                }
                if($d->is_free_wash == 1) {
                    $dataDisplay['is_free_wash'] = true;
                }
                if($d->is_free_wash == 0) {
                    $dataDisplay['is_free_wash'] = false;
                }
                $dataDisplay['otp'] = $d->otp;
                $dataDisplay['payment_mode'] = $d->payment_details;
                $dataDisplay['wash_amount'] = $d->amount;
                $dataDisplay['total_amount'] = $d->total_amount;
                $dataDisplay['card_amount'] = $d->card_amount;
                $dataDisplay['cash_amount'] = $d->cash_amount;
                $dataDisplay['discount_value_in_percentage'] = $d->discount;
                if($d->keys_collected != ''){
                    $dataDisplay['keys_collected']  = date("d/m/Y", strtotime($d->date_washed));
                } else {
                    $dataDisplay['keys_collected'] = '';
                }

                if($d->image != '') {
                    $dataDisplay['image'] = $d->image;
                } else {
                    $dataDisplay['image'] = '';
                }
                if($dataDisplay['image'] == "null"){
                    $dataDisplay['image'] = '';
                }

                $optionalExtra = OptionalExtra::where('wash_id', $d->id)->select('optional_extra', 'price')->orderBy('id', 'asc')->get();
                $dataDisplay['extras'] = $optionalExtra; 

                $cleaners = CleanerWash::select('cleaner_masters.name', 'cleaner_washes.description as cleaning_description')
                            ->join('cleaner_masters', 'cleaner_masters.id', '=', 'cleaner_washes.cleaner_id')
                            ->where('cleaner_washes.wash_id', $d->id)
                            ->orderBy('cleaner_washes.id', 'asc')
                            ->get();
                $dataDisplay['cleaners'] = $cleaners;

                $wash_types = WashTypeToWash::select('wash_categories.wash_name', 'wash_type_to_washes.price')
                            ->join('wash_categories', 'wash_categories.id', '=', 'wash_type_to_washes.wash_type_id')
                            ->where('wash_type_to_washes.wash_id', $d->id)
                            ->orderBy('wash_type_to_washes.id', 'asc')
                            ->get();
                $dataDisplay['wash_types'] = $wash_types;

                if($d->wash_type_id > 0){
                    $getWashType = WashCategory::where('id', $d->wash_type_id)->select('wash_name')->first();
                    if($getWashType != ''){
                        $dataDisplay['wash_name'] = $getWashType->wash_name;    
                    } else {
                        $dataDisplay['wash_name'] = '';
                    }
                } else {
                    $dataDisplay['wash_name'] = '';
                }

                $dataArray[] = $dataDisplay;
            }
        }

        return response()->json([
            'success' => 1,
            'message' => 'Success',
            'currency' => $getCurrency,
            'carWashedList' => $dataArray
        ]);

    }

    public function yearToDateCarWashedList(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'cwo_id' => 'required'
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $cwo_id = $request->input('cwo_id');
        $today = date('Y-m-d'); 
        $one_year_ago = date('Y-m-d', strtotime('-1 year', strtotime($today)));

        $getCurrency = getCurencyOfCwo($cwo_id);

        /***************** year to date starts *********************/
        /*$carWashedList = WashDetail::select('wash_details.id','wash_details.car_id','wash_details.date_washed','wash_details.time_washed','wash_details.status','wash_details.payment_status','co_master.co_fname','co_master.co_lname','co_master.co_phone','co_car.car_registration_no','wash_categories.wash_name','wash_details.otp', 'wash_details.payment_details', 'wash_details.amount', 'wash_details.total_amount', 'co_master.isd_code', 'wash_details.driver_name', 'wash_details.driver_isd_code', 'wash_details.driver_phone', 'wash_details.is_free_wash')
        ->join('co_car','co_car.id','=','wash_details.car_id')
        ->join('co_master','co_master.id','=','co_car.co_id')
        ->join('users','users.id','=','co_master.user_id')
        ->join('wash_categories','wash_categories.id','=','wash_details.wash_type_id')
        ->join('cwo_master','cwo_master.id','=','wash_categories.cwo_id')
        ->leftJoin('currency_masters','currency_masters.id','=','cwo_master.currency_id')
        ->where('wash_categories.cwo_id', $cwo_id)
        // ->whereDate('wash_details.date_washed', '>=', $one_year_ago)
        // ->whereDate('wash_details.date_washed', '<=', $today)
        ->whereYear('wash_details.date_washed', Carbon::now()->year)
        ->where('wash_details.status', 3)
        ->orderBy('co_car.id', 'desc')
        ->get();*/  
        $carWashedList = WashDetail::select('wash_details.id','wash_details.car_id','wash_details.date_washed','wash_details.time_washed','wash_details.status','wash_details.payment_status','co_master.co_fname','co_master.co_lname','co_master.co_phone','co_car.car_registration_no','wash_details.otp', 'wash_details.payment_details', 'wash_details.amount', 'wash_details.total_amount', 'co_master.isd_code', 'wash_details.driver_name', 'wash_details.driver_isd_code', 'wash_details.driver_phone', 'wash_details.is_free_wash', 'wash_details.wash_type_id', 'wash_details.keys_collected', 'wash_details.image', 'wash_details.discount', 'co_car.make', 'co_car.vehicle_color', 'co_car.car_model')
        ->join('co_car','co_car.id','=','wash_details.car_id')
        ->join('co_master','co_master.id','=','co_car.co_id')
        ->join('users','users.id','=','co_master.user_id')
        ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
        ->leftJoin('currency_masters','currency_masters.id','=','cwo_master.currency_id')
        ->where('wash_details.cwo_id', $cwo_id)
        // ->whereDate('wash_details.date_washed', '>=', $one_year_ago)
        // ->whereDate('wash_details.date_washed', '<=', $today)
        ->whereYear('wash_details.date_washed', Carbon::now()->year)
        // ->where('wash_details.status', 3)
        // ->where('wash_details.status', 5)
        ->orderBy('wash_details.id', 'desc')
        ->get();     
        /***************** year to date ends *********************/ 

        $dataDisplay=[];
        $dataArray = [];
        if($carWashedList != ''){
            foreach ($carWashedList as $d) {
                $dataDisplay['id'] = $d->id;
                $dataDisplay['car_id'] = $d->car_id;
                if($d->driver_name != ''){
                    $dataDisplay['co_fname'] = $d->driver_name;
                    $dataDisplay['co_lname'] = '';
                } else {
                    $dataDisplay['co_fname'] = $d->co_fname;
                    $dataDisplay['co_lname'] = $d->co_lname;
                }
                if($d->driver_phone != ''){
                    $dataDisplay['isd_code'] = '+' . $d->driver_isd_code;
                    $dataDisplay['co_phone'] = $d->driver_phone;
                } else {
                    $dataDisplay['isd_code'] = '+' . $d->isd_code;
                    $dataDisplay['co_phone'] = $d->co_phone;
                }
                $dataDisplay['car_registration_no'] = $d->car_registration_no;
                $dataDisplay['make'] = $d->make;
                $dataDisplay['vehicle_color'] = $d->vehicle_color;
                if($d->vehicle_color == '') {
                    $dataDisplay['vehicle_color'] = '';
                }
                $dataDisplay['car_model'] = $d->car_model;
                if($d->car_model == '') {
                    $dataDisplay['car_model'] = '';
                }
                // $dataDisplay['wash_name'] = $d->wash_name;
                $dataDisplay['date_washed']  = date("d/m/Y", strtotime($d->date_washed)); 
                $dataDisplay['time_washed']  = date("h:i a", strtotime($d->time_washed)); 
                if($d->payment_status == 1){
                    $dataDisplay['payment_status'] = 'Paid';    
                } else {
                    $dataDisplay['payment_status'] = 'Not Paid';   
                }
                if($d->status == 0){
                    $dataDisplay['status'] = 'Car in-queue';    
                }
                if($d->status == 1){
                    $dataDisplay['status'] = 'In Wash Bay';    
                }
                if($d->status == 2){
                    $dataDisplay['status'] = 'Finishing Bay';    
                }
                if($d->status == 3){
                    $dataDisplay['status'] = 'Car Wash Completed';    
                }
                if($d->status == 4){
                    $dataDisplay['status'] = 'Cancelled';    
                }
                if($d->status == 5){
                    $dataDisplay['status'] = 'Keys Collected';    
                }
                if($d->is_free_wash == 1) {
                    $dataDisplay['is_free_wash'] = true;
                }
                if($d->is_free_wash == 0) {
                    $dataDisplay['is_free_wash'] = false;
                }
                $dataDisplay['otp'] = $d->otp;
                $dataDisplay['payment_mode'] = $d->payment_details;
                $dataDisplay['wash_amount'] = $d->amount;
                $dataDisplay['total_amount'] = $d->total_amount;
                $dataDisplay['discount_value_in_percentage'] = $d->discount;
                if($d->keys_collected != ''){
                    $dataDisplay['keys_collected']  = date("d/m/Y", strtotime($d->date_washed));
                } else {
                    $dataDisplay['keys_collected'] = '';
                }

                if($d->image != '') {
                    $dataDisplay['image'] = $d->image;
                } else {
                    $dataDisplay['image'] = '';
                }
                if($dataDisplay['image'] == "null"){
                    $dataDisplay['image'] = '';
                }

                $optionalExtra = OptionalExtra::where('wash_id', $d->id)->select('optional_extra', 'price')->orderBy('id', 'asc')->get();
                $dataDisplay['extras'] = $optionalExtra; 

                $cleaners = CleanerWash::select('cleaner_masters.name', 'cleaner_washes.description as cleaning_description')
                            ->join('cleaner_masters', 'cleaner_masters.id', '=', 'cleaner_washes.cleaner_id')
                            ->where('cleaner_washes.wash_id', $d->id)
                            ->orderBy('cleaner_washes.id', 'asc')
                            ->get();
                $dataDisplay['cleaners'] = $cleaners;

                $wash_types = WashTypeToWash::select('wash_categories.wash_name', 'wash_type_to_washes.price')
                            ->join('wash_categories', 'wash_categories.id', '=', 'wash_type_to_washes.wash_type_id')
                            ->where('wash_type_to_washes.wash_id', $d->id)
                            ->orderBy('wash_type_to_washes.id', 'asc')
                            ->get();
                $dataDisplay['wash_types'] = $wash_types;

                if($d->wash_type_id > 0){
                    $getWashType = WashCategory::where('id', $d->wash_type_id)->select('wash_name')->first();
                    if($getWashType != ''){
                        $dataDisplay['wash_name'] = $getWashType->wash_name;    
                    } else {
                        $dataDisplay['wash_name'] = '';
                    }
                } else {
                    $dataDisplay['wash_name'] = '';
                }

                $dataArray[] = $dataDisplay;
            }
        }

        return response()->json([
            'success' => 1,
            'message' => 'Success',
            'currency' => $getCurrency,
            'carWashedList' => $dataArray
        ]);

    }

    public function yearToDateCarWashedList_NewSplit(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'cwo_id' => 'required'
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $cwo_id = $request->input('cwo_id');
        $today = date('Y-m-d'); 
        $one_year_ago = date('Y-m-d', strtotime('-1 year', strtotime($today)));

        $getCurrency = getCurencyOfCwo($cwo_id);

        /***************** year to date starts *********************/
        $carWashedList = WashDetail::select('wash_details.id','wash_details.car_id','wash_details.date_washed','wash_details.time_washed','wash_details.status','wash_details.payment_status','co_master.co_fname','co_master.co_lname','co_master.co_phone','co_car.car_registration_no','wash_details.otp', 'wash_details.payment_details', 'wash_details.amount', 'wash_details.total_amount', 'co_master.isd_code', 'wash_details.driver_name', 'wash_details.driver_isd_code', 'wash_details.driver_phone', 'wash_details.is_free_wash', 'wash_details.wash_type_id', 'wash_details.keys_collected', 'wash_details.image', 'wash_details.discount', 'co_car.make', 'co_car.vehicle_color', 'co_car.car_model', 'wash_details.card_amount', 'wash_details.cash_amount')
        ->join('co_car','co_car.id','=','wash_details.car_id')
        ->join('co_master','co_master.id','=','co_car.co_id')
        ->join('users','users.id','=','co_master.user_id')
        ->join('cwo_master','cwo_master.id','=','wash_details.cwo_id')
        ->leftJoin('currency_masters','currency_masters.id','=','cwo_master.currency_id')
        ->where('wash_details.cwo_id', $cwo_id)
        ->whereYear('wash_details.date_washed', Carbon::now()->year)
        ->orderBy('wash_details.id', 'desc')
        ->get();     
        /***************** year to date ends *********************/ 

        $dataDisplay=[];
        $dataArray = [];
        if($carWashedList != ''){
            foreach ($carWashedList as $d) {
                $dataDisplay['id'] = $d->id;
                $dataDisplay['car_id'] = $d->car_id;
                if($d->driver_name != ''){
                    $dataDisplay['co_fname'] = $d->driver_name;
                    $dataDisplay['co_lname'] = '';
                } else {
                    $dataDisplay['co_fname'] = $d->co_fname;
                    $dataDisplay['co_lname'] = $d->co_lname;
                }
                if($d->driver_phone != ''){
                    $dataDisplay['isd_code'] = '+' . $d->driver_isd_code;
                    $dataDisplay['co_phone'] = $d->driver_phone;
                } else {
                    $dataDisplay['isd_code'] = '+' . $d->isd_code;
                    $dataDisplay['co_phone'] = $d->co_phone;
                }
                $dataDisplay['car_registration_no'] = $d->car_registration_no;
                $dataDisplay['make'] = $d->make;
                $dataDisplay['vehicle_color'] = $d->vehicle_color;
                if($d->vehicle_color == '') {
                    $dataDisplay['vehicle_color'] = '';
                }
                $dataDisplay['car_model'] = $d->car_model;
                if($d->car_model == '') {
                    $dataDisplay['car_model'] = '';
                }
                // $dataDisplay['wash_name'] = $d->wash_name;
                $dataDisplay['date_washed']  = date("d/m/Y", strtotime($d->date_washed)); 
                $dataDisplay['time_washed']  = date("h:i a", strtotime($d->time_washed)); 
                if($d->payment_status == 1){
                    $dataDisplay['payment_status'] = 'Paid';    
                } else {
                    $dataDisplay['payment_status'] = 'Not Paid';   
                }
                if($d->status == 0){
                    $dataDisplay['status'] = 'Car in-queue';    
                }
                if($d->status == 1){
                    $dataDisplay['status'] = 'In Wash Bay';    
                }
                if($d->status == 2){
                    $dataDisplay['status'] = 'Finishing Bay';    
                }
                if($d->status == 3){
                    $dataDisplay['status'] = 'Car Wash Completed';    
                }
                if($d->status == 4){
                    $dataDisplay['status'] = 'Cancelled';    
                }
                if($d->status == 5){
                    $dataDisplay['status'] = 'Keys Collected';    
                }
                if($d->is_free_wash == 1) {
                    $dataDisplay['is_free_wash'] = true;
                }
                if($d->is_free_wash == 0) {
                    $dataDisplay['is_free_wash'] = false;
                }
                $dataDisplay['otp'] = $d->otp;
                $dataDisplay['payment_mode'] = $d->payment_details;
                $dataDisplay['wash_amount'] = $d->amount;
                $dataDisplay['total_amount'] = $d->total_amount;
                $dataDisplay['card_amount'] = $d->card_amount;
                $dataDisplay['cash_amount'] = $d->cash_amount;
                $dataDisplay['discount_value_in_percentage'] = $d->discount;
                if($d->keys_collected != ''){
                    $dataDisplay['keys_collected']  = date("d/m/Y", strtotime($d->date_washed));
                } else {
                    $dataDisplay['keys_collected'] = '';
                }

                if($d->image != '') {
                    $dataDisplay['image'] = $d->image;
                } else {
                    $dataDisplay['image'] = '';
                }
                if($dataDisplay['image'] == "null"){
                    $dataDisplay['image'] = '';
                }

                $optionalExtra = OptionalExtra::where('wash_id', $d->id)->select('optional_extra', 'price')->orderBy('id', 'asc')->get();
                $dataDisplay['extras'] = $optionalExtra; 

                $cleaners = CleanerWash::select('cleaner_masters.name', 'cleaner_washes.description as cleaning_description')
                            ->join('cleaner_masters', 'cleaner_masters.id', '=', 'cleaner_washes.cleaner_id')
                            ->where('cleaner_washes.wash_id', $d->id)
                            ->orderBy('cleaner_washes.id', 'asc')
                            ->get();
                $dataDisplay['cleaners'] = $cleaners;

                $wash_types = WashTypeToWash::select('wash_categories.wash_name', 'wash_type_to_washes.price')
                            ->join('wash_categories', 'wash_categories.id', '=', 'wash_type_to_washes.wash_type_id')
                            ->where('wash_type_to_washes.wash_id', $d->id)
                            ->orderBy('wash_type_to_washes.id', 'asc')
                            ->get();
                $dataDisplay['wash_types'] = $wash_types;

                if($d->wash_type_id > 0){
                    $getWashType = WashCategory::where('id', $d->wash_type_id)->select('wash_name')->first();
                    if($getWashType != ''){
                        $dataDisplay['wash_name'] = $getWashType->wash_name;    
                    } else {
                        $dataDisplay['wash_name'] = '';
                    }
                } else {
                    $dataDisplay['wash_name'] = '';
                }

                $dataArray[] = $dataDisplay;
            }
        }

        return response()->json([
            'success' => 1,
            'message' => 'Success',
            'currency' => $getCurrency,
            'carWashedList' => $dataArray
        ]);

    }

    public function changeWashStatus(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'wash_id' => 'required',
                'status' => 'required',
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $wash_id = $request->input('wash_id');
        $status = $request->input('status');
        $today_date = date('Y-m-d'); 

        $record = WashDetail::find($wash_id);
        // if($status == 3){ // if car wash completed
        //     $payment_status = $record->payment_status;
        //     if($payment_status == 0){
        //         return response()->json([
        //             'success' => 0,
        //             'message' => 'You can not change car status from in-queue to completed because the payment has not been confirmed yet.',
        //         ]);    
        //     }
        // }

        $record->status = $status;
        $record->save(); 

        if($status == 1){ // if car wash-in
            $record->wash_in = date('Y-m-d H:i:s');
            $record->save();
        }

        if($status == 2){ // if car wash-out
            $record->wash_out = date('Y-m-d H:i:s');
            $record->save();
        }

        $prebooking_id = $record->prebooking_id;
        if($prebooking_id > 0) {
            $prebookingDetails = PreBooking::find($prebooking_id);
            $prebookingDetails->status = $status;
            $prebookingDetails->save(); 
        }

        $getCwo = CarWashOwner::where('id', $record->cwo_id)->select('cwo_name', 'cwo_company', 'cwo_isd', 'cwo_phone')->first();
        $cwo_name = $getCwo->cwo_name;
        $cwo_company = $getCwo->cwo_company;
        $cwo_contact_no = '+' . $getCwo->cwo_isd . $getCwo->cwo_phone;

        $getCar = CarOwnerCar::where('id', $record->car_id)->select('co_id', 'car_registration_no')->first();
        $car_registration_no = $getCar->car_registration_no;
        $getCo = CarOwner::where('id', $getCar->co_id)->select('co_fname', 'co_lname', 'email', 'isd_code', 'co_phone', 'fcm_token')->first();
        $co_fname = $getCo->co_fname;
        $co_lname = $getCo->co_lname;
        $co_email = $getCo->email;
        $co_isd_code = $getCo->isd_code;
        $co_phone = $getCo->co_phone;

        if($status == 3){ // if car wash completed
            // echo "hi";exit;

            $payment_status = $record->payment_status;

            $record->date_washed = date('Y-m-d');
            $record->time_washed = date('H:i:s');
            $record->save(); 
            // $wash_type_id = $record->wash_type_id;
            // $getWashCat = WashCategory::where('id', $wash_type_id)->select('cwo_id')->first();
            // $getCwo = CarWashOwner::where('id', $getWashCat->cwo_id)->select('cwo_name', 'cwo_company', 'cwo_isd', 'cwo_phone')->first();
            
            /*send mail starts*/
            // $recipient_name = $co_fname . ' ' . $co_lname;
            /*whatsApp driver name starts*/
            if($record->driver_name != ''){
                $recipient_name = $record->driver_name;   
            } else {
                $recipient_name = $co_fname . ' ' . $co_lname;
            }
            // echo $recipient_name;exit;
         /*whatsApp driver name ends*/
            // $recipient_email = 'tamashree@karmicksolutions.com';
            if($record->driver_email != ''){
                // if($record->entry_date >= $today_date){
                    // $recipient_email = $co_email;
                    $recipient_email = $record->driver_email;
                    // echo $recipient_email;exit;
                    $subject = 'Autoclick Car Wash Completed';
                    $message_body = '<html>
                                        <head>
                                        <title>Autoclick Car Wash Completed</title>
                                        </head>
                                        <body>
                                            <p>Hi ' . $recipient_name . '</p>
                                            <p>Your car ' . $car_registration_no . ' is ready for collection at  ' . $cwo_company . '. Thank you!</p>
                                            <p>Regards</p>
                                            <p>AUTOCLICK</p>
                                            <p><a href="www.autoclickcarwashapp.com">www.autoclickcarwashapp.com</a> | <a href="mailto:info@autoclick.co.za">info@autoclick.co.za</a></p>
                                        </body>
                                    </html>';
                    $email = sendMail(array($recipient_name, $recipient_email), $message_body, $subject);
                    // print_r($email);exit;
                // }
            }
            /*send mail ends*/

            /*to show total_amount including other products starts*/
            $getOtherService = OtherServiceReport::select('total_amount')->where('wash_id', $wash_id)->first();
            // echo "<pre>";print_r($getOtherService->toArray());exit;
            if($getOtherService != '') {
                $wash_total_amount = $getOtherService->total_amount + $record->total_amount;
            } else {
                $wash_total_amount = $record->total_amount;
            }
            // echo $wash_total_amount;exit;
            /*to show total_amount including other products ends*/

            // $whats_message_body = 'Hi ' . $recipient_name . '. Your car ' . $car_registration_no . ' is ready for collection at ' . $cwo_company . '. Thank you! Regards, AUTOCLICK www.autoclickcarwashapp.com info@autoclick.co.za';
            $phone = '+'.$co_isd_code.$co_phone;
            // $this->sendWhatsapp($phone,$whats_message_body);
            // $whats_message_body = array($recipient_name,$car_registration_no,$cwo_company,date("d-m-Y", strtotime($record->date_washed)),$record->total_amount,$record->payment_details,$record->otp,$cwo_contact_no);
            $whats_message_body = array($recipient_name,$car_registration_no,$cwo_company,date("d-m-Y", strtotime($record->date_washed)),$wash_total_amount,$record->payment_details,$record->otp,$cwo_contact_no);
            // sendWhatsapp($phone,$whats_message_body);
            if($record->driver_phone != ''){
                if($record->entry_date >= $today_date){
                    $phone = '+'.$record->driver_isd_code.$record->driver_phone;
                    sendWhatsappCompletedOtp($phone,$whats_message_body);
                }
            }
        }

        if($status == 5){ // if car keys collected
            $record->keys_collected = date('Y-m-d H:i:s');
            $record->save();
        }

        $carDetails = CarOwnerCar::findorfail($record->car_id);
        $carDetails->wash_status_update_datetime = date('Y-m-d H:i:s');
        $carDetails->save();

        /*email starts*/
        if($status != 3){ // if car wash completed
            if($record->driver_name != ''){
                $recipient_name = $record->driver_name;   
            } else {
                $recipient_name = $co_fname . ' ' . $co_lname;
            }
            if($record->driver_email != ''){
                $recipient_email = $record->driver_email;
                if($status == 1) {
                $subject = 'Autoclick Car in Washbay';
                $message_body = '<html>
                                        <head>
                                        <title>Autoclick Car in Washbay</title>
                                        </head>
                                        <body>
                                            <p>Hi ' . $recipient_name . '</p>
                                            <p>Your car ' . $car_registration_no . ' is in bay at ' . $cwo_company . '. Thank you!</p>
                                            <p>Regards</p>
                                            <p>AUTOCLICK</p>
                                            <p><a href="www.autoclickcarwashapp.com">www.autoclickcarwashapp.com</a> | <a href="mailto:info@autoclick.co.za">info@autoclick.co.za</a></p>
                                        </body>
                                    </html>';
            }
            if($status == 2) {
                $subject = 'Autoclick Car in Finishing Bay';
                $message_body = '<html>
                                        <head>
                                        <title>Autoclick Car in Finishing Bay</title>
                                        </head>
                                        <body>
                                            <p>Hi ' . $recipient_name . '</p>
                                            <p>Your car ' . $car_registration_no . ' is in finishing bay at ' . $cwo_company . '. Thank you!</p>
                                            <p>Regards</p>
                                            <p>AUTOCLICK</p>
                                            <p><a href="www.autoclickcarwashapp.com">www.autoclickcarwashapp.com</a> | <a href="mailto:info@autoclick.co.za">info@autoclick.co.za</a></p>
                                        </body>
                                    </html>';
            }
            if($status == 5) {
                $subject = 'Autoclick Car Keys Collected';
                $message_body = '<html>
                                        <head>
                                        <title>Autoclick Car Keys Collected</title>
                                        </head>
                                        <body>
                                            <p>Hi ' . $recipient_name . '</p>
                                            <p>Your car ' . $car_registration_no . '’s keys have been collected from ' . $cwo_company . '. Thank you!</p>
                                            <p>Regards</p>
                                            <p>AUTOCLICK</p>
                                            <p><a href="www.autoclickcarwashapp.com">www.autoclickcarwashapp.com</a> | <a href="mailto:info@autoclick.co.za">info@autoclick.co.za</a></p>
                                        </body>
                                    </html>';
            }
            $email = sendMail(array($recipient_name, $recipient_email), $message_body, $subject);
            // print_r($email);exit;
            }
            
        }
        /*email ends*/

        /*push starts*/
        $fcm_token = $getCo->fcm_token;
        // $fcm_token = "eL409rTNQ1CiR4Y5wOUGh7:APA91bGLnCrYpQPlqwPQa_TnCvkZrT-kkmRmTiXyNFDhu7sJ3los_EZXOji2jBTcAc3haxJbCFq0Yb1iYa8l_ifAtCnK36Ut5Lw_ctTB-WV5LUfNnO8IQZFG4BEuohI1MYJuYdt_lnPo";
        if($status == 1) {
            $notification_title = "Car in washbay";
            $notification_body = 'Your car ' . $car_registration_no . ' is in bay at ' . $cwo_company;
        }
        if($status == 2) {
            $notification_title = "Car in finishing bay";
            $notification_body = 'Your car ' . $car_registration_no . ' is in finishing bay at ' . $cwo_company;
        }
        if($status == 3) {
            $notification_title = "Car Wash Completed";
            $notification_body = 'Your car ' . $car_registration_no . ' is ready for collection at ' . $cwo_company . '. Collection OTP: ' . $record->otp;
        }
        if($status == 5) {
            $notification_title = "Keys Collected";
            $notification_body = 'Your car ' . $car_registration_no . '’s keys have been collected from ' . $cwo_company;
        }
        // echo $notification_title . ' ' . $notification_body;exit;
        $data=array("request_type" => "notification");
        sendFcmNotification($fcm_token, $notification_title, $notification_body, $data);
        /*push ends*/

        return response()->json([
            'success' => 1,
            'message' => 'Wash status has been changed successfully'
        ]);

    }

    public function carWashAllStatus(Request $request){
        $washAllStatus = [
            [
                'id' => 0,
                'name' => 'In-Queue',
            ],
            [
                'id' => 1,
                'name' => 'In Wash Bay (Optional)',
            ],
            [
                'id' => 2,
                'name' => 'Finishing Bay (Optional)',
            ],
            [
                'id' => 3,
                'name' => 'Completed/Ready To Collect',
            ],
            [
                'id' => 5,
                'name' => 'Keys Collected (Optional)',
            ]

        ];

        // $washAllStatus = [
        //     [
        //         'id' => 0,
        //         'name' => 'In-Queue',
        //     ],
        //     [
        //         'id' => 3,
        //         'name' => 'Completed',
        //     ]

        // ];

        return response()->json([
            'success' => 1,
            'message' => 'Success',
            'washAllStatus' => $washAllStatus
        ]);

    }

    public function getWashStatus(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'wash_id' => 'required'
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                'message' => $errorString,
            ]);
        }

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

        $record = WashDetail::find($wash_id);
        $status_id = $record->status;
        if($record->status == 0){
            $status = 'Car in-queue';
        }
        if($record->status == 1){
            $status = 'Car Wash Started';
        }
        if($record->status == 2){
            $status = 'Drying';
        }
        if($record->status == 3){
            $status = 'Car Wash Completed';
        }
        if($record->status == 4){
            $status = 'Cancelled';
        }

        $payment_status_id = $record->payment_status;
        if($record->payment_status == 0){
            $payment_status = 'Not Paid';
        }
        if($record->payment_status == 1){
            $payment_status = 'Paid';
        }

        return response()->json([
            'success' => 1,
            'message' => 'Success',
            'status_id' => $status_id,
            'status' => $status,
            'payment_status_id' => $payment_status_id,
            'payment_status' => $payment_status,
        ]);

    }

    public function changePaymentStatus_withOutSplit(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'wash_id' => 'required',
                'payment_status' => 'required',
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $wash_id = $request->input('wash_id');
        $payment_status = $request->input('payment_status');
        $payment_mode = $request->input('payment_mode');

        $record = WashDetail::find($wash_id);
        $record->payment_status = $payment_status;
        $record->payment_details = $payment_mode;
        $record->save(); 

        return response()->json([
            'success' => 1,
            'message' => 'Payment status has been changed successfully'
        ]);

    }

    public function changePaymentStatus(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'wash_id' => 'required',
                'payment_status' => 'required',
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $wash_id = $request->input('wash_id');
        $payment_status = $request->input('payment_status');
        $payment_mode = $request->input('payment_mode');

        $card_amount = $request->input('card_amount');
        if($card_amount == '') {
            $card_amount = 0.00;
        }
        $cash_amount = $request->input('cash_amount');
        if($cash_amount == '') {
            $cash_amount = 0.00;
        }

        $record = WashDetail::find($wash_id);
        $record->payment_status = $payment_status;
        $record->payment_details = $payment_mode;

        $record->card_amount = $card_amount;
        $record->cash_amount = $cash_amount;
        $record->split_flag = 1;

        $record->save(); 

        return response()->json([
            'success' => 1,
            'message' => 'Payment status has been changed successfully'
        ]);

    }

    public function addCarWashTest(Request $request){
        // $getCo = CarOwner::where('id', 147)->select('co_fname', 'co_lname', 'email','isd_code','co_phone')->first();
        // $co_fname = $getCo->co_fname;
        // $co_lname = $getCo->co_lname;
        // $co_email = $getCo->email;
        // $co_isd_code = $getCo->isd_code;
        // $co_phone = '9932302080';//$getCo->co_phone;

        // $co_phone = "+919830724456";//"+27769515554";
        // $message_body = 'Hi Supratim, Your car 121212 is in the queue at abc co and it will not be long. Your OTP to collect is  124578. Regards, AUTOCLICK  www.autoclickcarwashapp.com info@autoclick.co.za';
        // $this->sendWhatsapp($co_phone,$message_body);
        // $whats_message_body = 'Hi ' . $recipient_name . '. Your car ' . $car_registration_no . ' is in the queue at ' . $cwo_company . ' and it will not be long. Your OTP to collect is  ' . $otp . ' Regards, AUTOCLICK www.autoclickcarwashapp.com info@autoclick.co.za';
        $phone = '+919932302080';
        $whats_message_body = array('Supratim','121212','abc co','124578');
        sendWhatsapp($phone,$whats_message_body);
        exit;
    }
    public function addCarWash(Request $request){
        // $extra = json_decode($request->input('extras'));
        // return response()->json([
        //         'success' => 0,
        //         'message' => $request->all(),
        //         'extras' => $extra,
        //         'price' => $extra[0]->price
        //     ]);
        $validate = Validator::make($request->all(), 
            [
                'car_id' => 'required',
                // 'wash_type_id' => 'required',
                'body_type_id' => 'required',
                'cwo_id' => 'required',
                'wash_types' => 'required'
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                'message' => $errorString,
            ]);
        }
        $today_date = date('Y-m-d'); 
        $car_id = $request->input('car_id');
        // $wash_type_id = $request->input('wash_type_id');
        $body_type_id = $request->input('body_type_id');
        $entry_date = $request->input('entry_date');
        $driver_name = $request->input('driver_name');
        $driver_isd_code = $request->input('driver_isd_code');
        $driver_phone = $request->input('driver_phone');
        $is_free_wash = $request->input('is_free_wash');
        $driver_email = $request->input('driver_email');
        $cwo_id = $request->input('cwo_id');
        $free_wash_type_id = $request->input('free_wash_type_id');
        $loyalty_type = $request->input('loyalty_type'); // 1 or 2 (1=Free Wash, 2=Price Discount)
        $no_of_paid_wash = $request->input('no_of_paid_wash'); 
        $discount_value_in_percentage = $request->input('discount_value_in_percentage');  
        if($discount_value_in_percentage == ''){
            $discount_value_in_percentage = 0;
        }
        if($entry_date != ''){
            $entry_date = date("Y-m-d", strtotime($entry_date)); 
        } else {
            $entry_date = date('Y-m-d');
        }
        if($body_type_id != ''){
            $getBodyType = BodyType::where('id', $body_type_id)->select('name')->first();
            $body_type = $getBodyType->name;
        } else {
            $body_type_id = 0;
            $body_type = '';
        }
        $dob = $request->input('dob');
        if($dob != '') {
            $dob = date("Y-m-d", strtotime($dob)); 
        } else {
            $dob = NULL;
        }

        $user_id = $request->input('user_id');  
        if($user_id == ''){
            $user_id = 0;
        }
        
        $wash_types = $request->input('wash_types');
        $amount = 0; 
        if($is_free_wash == 'true'){ // true starts
            // echo "1";exit;
            $is_free_wash = 1;  
            // $amount = 0;  
            /*** free wash id logic starts ***/
            if($wash_types != ''){
                $wash_type_id_array=json_decode($wash_types, true);
                if($wash_type_id_array != ""){  // if starts
                    if($loyalty_type != ""){ //*** if loyalty_type exists in new version
                        if($loyalty_type == 1){ // if loyalty_type = 1 starts
                            foreach ($wash_type_id_array as $e) { // foreach starts
                                // echo $e['wash_type_id'];exit;
                                if($free_wash_type_id != '' && $e['wash_type_id'] == $free_wash_type_id) {
                                    $amount = $amount + 0;    
                                } else {
                                    $getPrice = WashCategoryBodyType::where('wash_category_id', $e['wash_type_id'])->where('body_type_id', $body_type_id)->first();
                                    if($getPrice != ''){
                                        $amount = $amount + $getPrice->price;
                                    } else {
                                        $amount = $amount + 0;
                                    }
                                }
                                
                            } // foreach ends
                        } // if loyalty_type = 1 ends
                        if($loyalty_type == 2){ // if loyalty_type = 2 starts
                            foreach ($wash_type_id_array as $e) { // foreach starts
                                // echo $e['wash_type_id'];exit;
                                $getPrice = WashCategoryBodyType::where('wash_category_id', $e['wash_type_id'])->where('body_type_id', $body_type_id)->first();
                                if($getPrice != ''){
                                    $amount = $amount + $getPrice->price;
                                } else {
                                    $amount = $amount + 0;
                                }
                                
                            } // foreach ends
                        } // if loyalty_type = 2 ends
                    } else { //*** if loyalty_type is blank in old version stick to free_wash_type_id
                        foreach ($wash_type_id_array as $e) {
                            // echo $e['wash_type_id'];exit;
                            if($free_wash_type_id != '' && $e['wash_type_id'] == $free_wash_type_id) {
                                $amount = $amount + 0;    
                            } else {
                                $getPrice = WashCategoryBodyType::where('wash_category_id', $e['wash_type_id'])->where('body_type_id', $body_type_id)->first();
                                if($getPrice != ''){
                                    $amount = $amount + $getPrice->price;
                                } else {
                                    $amount = $amount + 0;
                                }
                            }
                            
                        } // foreach ends
                    } // if loyalty type exists check ends
                } // if ends
            }
            /*** free wash id logic ends ***/
        } // true ends

        if($is_free_wash == 'false'){
            // echo "0";exit;
            $is_free_wash = 0; 
            /*if($getPrice != ''){
                $amount = $getPrice->price;
            } else {
                $amount = 0;
            }*/

            /*wash category add starts*/
            // $wash_types = $request->input('wash_types');
            if($wash_types != ''){
                $wash_type_id_array=json_decode($wash_types, true);
                if($wash_type_id_array != ""){
                    foreach ($wash_type_id_array as $e) {
                        $getPrice = WashCategoryBodyType::where('wash_category_id', $e['wash_type_id'])->where('body_type_id', $body_type_id)->first();
                        if($getPrice != ''){
                            $amount = $amount + $getPrice->price;
                        } else {
                            $amount = $amount + 0;
                        }
                    }
                }
            }
            /*wash category add ends*/
        }
        $dt = Carbon::now(); 
        $total_amount = $amount;
        $payment_mode = $request->input('payment_mode');
        

        // $getWashCat = WashCategory::where('id', $wash_type_id)->select('cwo_id')->first();
        // $getCwo = CarWashOwner::where('id', $getWashCat->cwo_id)->select('cwo_name', 'cwo_company', 'cwo_isd', 'cwo_phone')->first();
        $getCwo = CarWashOwner::where('id', $cwo_id)->select('cwo_name', 'cwo_company', 'cwo_isd', 'cwo_phone')->first();
        $cwo_name = $getCwo->cwo_name;
        $cwo_company = $getCwo->cwo_company;
        $cwo_contact_no = '+' . $getCwo->cwo_isd . $getCwo->cwo_phone;

        $getCar = CarOwnerCar::where('id', $car_id)->select('co_id', 'car_registration_no')->first();
        $car_registration_no = $getCar->car_registration_no;
        $getCo = CarOwner::where('id', $getCar->co_id)->select('co_fname', 'co_lname', 'email','isd_code','co_phone', 'fcm_token')->first();
        $co_fname = $getCo->co_fname;
        $co_lname = $getCo->co_lname;
        $co_email = $getCo->email;
        $co_isd_code = $getCo->isd_code;
        $co_phone = $getCo->co_phone;
        // $image = '';
        // if ($request->hasFile('image')) {
        //     $image = time() . '.' . $request->file('image')->extension();
        //     $path = $request->file('image')->move(public_path('images/wash/'), $image);
        // }

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

        $otp = generateNumericOTP(4);

        $getWashCount = WashDetail::select('wash_count')->where('cwo_id', $cwo_id)->orderBy('id', 'desc')->take(1)->get();
        // echo $getWashCount->count();exit;
        // print_r($getWashCount->toarray());exit;
        if ($getWashCount->count() > 0){
            $wash_count = $getWashCount[0]->wash_count + 1;
        } else {
            $wash_count = 1;
        }
        
        // echo $wash_count;exit;


        /*insert into wash_details table starts*/
        $insertCarWash = WashDetail::create([
            'car_id'=> $car_id,
            'entry_date'=> $entry_date,
            'entry_time'=> date('H:i:s'),
            // 'wash_type_id'=> $wash_type_id,
            'body_type'=> $body_type,
            'body_type_id'=> $body_type_id,
            'amount'=> $amount,
            'status'=> 0,
            'payment_status'=> 0,
            'payment_details'=> $payment_mode,
            'otp'=> $otp,
            'image'=> $image,
            'driver_name'=> $driver_name,
            'driver_isd_code'=> $driver_isd_code,
            'driver_phone'=> $driver_phone,
            'driver_email'=> $driver_email,
            'dob'=> $dob,
            // 'cwo_id'=> $getWashCat->cwo_id,
            'cwo_id'=> $cwo_id,
            'is_free_wash'=> $is_free_wash,
            'wash_count'=> $wash_count,
            'discount'=> $discount_value_in_percentage,
            'cwo_user_id'=> $user_id,
            'created_at'=>$dt->toDayDateTimeString(),
            'updated_at'=>$dt->toDayDateTimeString()
        ]);
        /*insert into wash_details table ends*/     
        $wash_id = $insertCarWash->id;  

        /*update wash_status_update_datetime starts*/
        $carRecordDetails = CarOwnerCar::findorfail($car_id);
        $carRecordDetails->wash_status_update_datetime = date('Y-m-d H:i:s');
        $carRecordDetails->save();
        /*update wash_status_update_datetime ends*/

        /*extra add starts*/
        $extras = $request->input('extras');
        // echo $extras;exit;
        if($extras != ''){
            $extra_array=json_decode($extras, true);
            if($extra_array != ""){
                // $extra_price = 0;
                foreach ($extra_array as $e) {
                    // $extra_json = json_encode($e);
                    // $extra_price = $extra_price + $e['price'];
                    $total_amount = $total_amount + $e['price'];
                    $addOptionalExtra = OptionalExtra::create([
                        'wash_id'=> $wash_id,
                        'optional_extra'=> $e['optional_extra'],
                        'price'=> $e['price'],
                        'created_at'=>$dt->toDayDateTimeString(),
                        'updated_at'=>$dt->toDayDateTimeString()
                    ]);
                }
                // $total_amount = $amount + $extra_price;
            }
        }
        /*extra add ends*/

        /*if loyalty type 2 exists starts*/
        if($loyalty_type != ""){
            if($loyalty_type == 2){
                $discount_amount = ($discount_value_in_percentage/100) * $total_amount;
                $total_amount = $total_amount - $discount_amount;
            }
        }
        /*if loyalty type 2 exists ends*/

        $record_wash = WashDetail::find($wash_id);
        $record_wash->total_amount = $total_amount;
        $record_wash->save();

        /*cleaner add starts*/
        $cleaners = $request->input('cleaners');
        if($cleaners != ''){
            $cleaner_array=json_decode($cleaners, true);
            if($cleaner_array != ""){
                foreach ($cleaner_array as $e) {
                    $assignCleaner = CleanerWash::create([
                        'wash_id'=> $wash_id,
                        'cleaner_id'=> $e['cleaner_id'],
                        'description'=> $e['description'],
                        'created_at'=>$dt->toDayDateTimeString(),
                        'updated_at'=>$dt->toDayDateTimeString()
                    ]);
                }
            }
        }
        /*cleaner add ends*/

        /*wash category add starts*/
        $wash_types = $request->input('wash_types');
        if($wash_types != ''){
            $wash_type_id_array=json_decode($wash_types, true);
            if($wash_type_id_array != ""){
                foreach ($wash_type_id_array as $e) {
                    $getPrice = WashCategoryBodyType::where('wash_category_id', $e['wash_type_id'])->where('body_type_id', $body_type_id)->first();
                    if($is_free_wash == 1){ // if it is a free wash starts
                        if($loyalty_type != ""){ //*** if loyalty_type exists in new version
                            if($loyalty_type == 1){ // if loyalty_type = 1 starts
                                if($free_wash_type_id != '' && $e['wash_type_id'] == $free_wash_type_id) {
                                    $wash_type_price = 0;
                                } else {
                                    if($getPrice != ''){
                                        $wash_type_price = $getPrice->price;
                                    } else {
                                        $wash_type_price = 0;
                                    }    
                                }
                            } // if loyalty_type = 1 ends
                            if($loyalty_type == 2){ // if loyalty_type = 2 starts
                                if($getPrice != ''){
                                    $wash_type_price = $getPrice->price;
                                } else {
                                    $wash_type_price = 0;
                                }
                            } // if loyalty_type = 2 ends
                        } else {  //*** if loyalty_type is blank in old version stick to free_wash_type_id
                            if($free_wash_type_id != '' && $e['wash_type_id'] == $free_wash_type_id) {
                                $wash_type_price = 0;
                            } else {
                                if($getPrice != ''){
                                    $wash_type_price = $getPrice->price;
                                } else {
                                    $wash_type_price = 0;
                                }    
                            }
                        }
                        
                    } // if it is a free wash ends
                    if($is_free_wash == 0){ // if it is not a free wash starts
                        if($getPrice != ''){
                            $wash_type_price = $getPrice->price;
                        } else {
                            $wash_type_price = 0;
                        }
                    } // if it is not a free wash ends
                    
                    $assignWashType = WashTypeToWash::create([
                        'wash_id'=> $wash_id,
                        'wash_type_id'=> $e['wash_type_id'],
                        'price'=> $wash_type_price,
                        'created_at'=>$dt->toDayDateTimeString(),
                        'updated_at'=>$dt->toDayDateTimeString()
                    ]);
                }
            }
        }
        /*wash category add ends*/

        /*update is_loyalty_utilized starts*/
        if($is_free_wash == 1){
            $record_wash->is_loyalty_utilized = 1;
            $record_wash->save();
            if($no_of_paid_wash == ""){
                $getLoyalty = Loyalty::where('cwo_id', $cwo_id)->where('is_active', 1)->first();
                $no_of_paid_wash = $getLoyalty->no_of_paid_wash; 
            }
            // $record_wash->is_loyalty_utilized = 1;
            $getPrevious = WashDetail::where('id', '<', $wash_id)
                                        ->where('cwo_id', $cwo_id)
                                        ->where('is_loyalty_utilized', 0)
                                        ->where(function($query) {
                                                $query->where('status', 3)
                                                    ->orWhere('status', 5);
                                            })
                                        // ->take($no_of_paid_wash)
                                        ->orderBy('id', 'asc')
                                        ->get();
                                        // print_r($getPrevious->toArray());exit;
            if($getPrevious != ''){
                foreach($getPrevious as $d){
                    $record_prev = WashDetail::find($d->id);
                    $record_prev->is_loyalty_utilized = 1;
                    $record_prev->save();
                }
            }
        }
        /*update is_loyalty_utilized ends*/
        
        /*send mail starts*/
        // $recipient_name = $co_fname . ' ' . $co_lname;
         /*whatsApp driver name starts*/
         if($record_wash->driver_name != ''){
            $recipient_name = $record_wash->driver_name;   
         } else {
            $recipient_name = $co_fname . ' ' . $co_lname;
         }
        //  echo $recipient_name;exit;
         /*whatsApp driver name ends*/
        // $recipient_email = 'tamashree@karmicksolutions.com';
        if($record_wash->driver_email != ''){
            if($entry_date >= $today_date){
                // $recipient_email = $co_email;
                $recipient_email = $record_wash->driver_email;
                $subject = 'Autoclick  Car In-Queue';
                $message_body = '<html>
                                    <head>
                                    <title>Autoclick  Car In-Queue</title>
                                    </head>
                                    <body>
                                        <p>Hi ' . $recipient_name . '</p>
                                        <p>Your car ' . $car_registration_no . ' is in the queue at ' . $cwo_company . ' and it will not be long.</p>
                                        <p>Your OTP to collect is  ' . $otp . '</p>
                                        <p>Regards</p>
                                        <p>AUTOCLICK</p>
                                        <p><a href="www.autoclickcarwashapp.com">www.autoclickcarwashapp.com</a> | <a href="mailto:info@autoclick.co.za">info@autoclick.co.za</a></p>
                                    </body>
                                </html>';
                $email = sendMail(array($recipient_name, $recipient_email), $message_body, $subject);
                // print_r($email);exit;
            }
        }
        /*send mail ends*/
        // $co_phone = "+27769515554";//"+27769515554";
        // $whats_message_body = 'Hi ' . $recipient_name . '. Your car ' . $car_registration_no . ' is in the queue at ' . $cwo_company . ' and it will not be long. Your OTP to collect is  ' . $otp . ' Regards, AUTOCLICK www.autoclickcarwashapp.com info@autoclick.co.za';
        $phone = '+'.$co_isd_code.$co_phone;
        $whats_message_body = array($recipient_name,$car_registration_no,$cwo_company,$otp,$cwo_contact_no);
        // sendWhatsapp($phone,$whats_message_body);
        if($record_wash->driver_phone != ''){
            $phone = '+'.$record_wash->driver_isd_code.$record_wash->driver_phone;
            if($cwo_id == 151){
                if($entry_date >= $today_date){
                    sendWhatsappInQueueOtp($phone,$whats_message_body);
                }
            }
        }
        /*push starts*/
        $fcm_token = $getCo->fcm_token;
        // $fcm_token = "eL409rTNQ1CiR4Y5wOUGh7:APA91bGLnCrYpQPlqwPQa_TnCvkZrT-kkmRmTiXyNFDhu7sJ3los_EZXOji2jBTcAc3haxJbCFq0Yb1iYa8l_ifAtCnK36Ut5Lw_ctTB-WV5LUfNnO8IQZFG4BEuohI1MYJuYdt_lnPo";
        $notification_title = "Car in queue";
        $notification_body = 'Your car ' . $car_registration_no . ' is in queue in ' . $cwo_company . '. Collection OTP: ' . $otp;
        $data=array("request_type" => "notification");
        sendFcmNotification($fcm_token, $notification_title, $notification_body, $data);
        /*push ends*/
        return response()->json([
            'success' => 1,
            'message' => 'Success',
            'wash_id' => $wash_id
        ]);

    }
    /*private function sendWhatsapp($phone,$message){
        
        $sid = "ACdabf4a55beb849149560d4c9d5a763c8";
        $token = "75953403abd6fb6091d1741c037fcb29";
        $twilio = new Client($sid, $token);
        try{
            $message = $twilio->messages->create(
                "whatsapp:$phone", // to
                [
                    "from" => "whatsapp:+14155238886",
                    "body" => $message,
                ]
            );
        }
        catch(Exception $e) {

        }

    }*/
    public function cancelWash(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'wash_id' => 'required',
                'cwo_id' => 'required',
                'code' => 'required'
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $wash_id = $request->input('wash_id');
        $cwo_id = $request->input('cwo_id');
        $code = $request->input('code');

        $getPasscode = CwoPasscode::where('cwo_id', $cwo_id)->first();
        if($getPasscode != ''){
            if($getPasscode->code == $code){
                $record = WashDetail::find($wash_id);
                $record->status = 4; // cancel wash
                $record->date_washed = NULL;
                $record->time_washed = NULL;
                $record->payment_status = 0;
                $record->payment_details = '';
                $record->amount = 0.00;
                $record->total_amount = 0.00;
                $record->save(); 

                $prebooking_id = $record->prebooking_id;
                if($prebooking_id > 0) {
                    $prebookingDetails = PreBooking::find($prebooking_id);
                    $prebookingDetails->status = 4;
                    $prebookingDetails->save(); 
                }

                /*push starts*/
                $getCwo = CarWashOwner::where('id', $record->cwo_id)->select('cwo_company')->first();
                $cwo_company = $getCwo->cwo_company;
                $getCar = CarOwnerCar::where('id', $record->car_id)->select('co_id', 'car_registration_no')->first();
                $car_registration_no = $getCar->car_registration_no;
                $getCo = CarOwner::where('id', $getCar->co_id)->select('co_fname', 'co_lname', 'fcm_token')->first();
                $fcm_token = $getCo->fcm_token;
                // $fcm_token = "eL409rTNQ1CiR4Y5wOUGh7:APA91bGLnCrYpQPlqwPQa_TnCvkZrT-kkmRmTiXyNFDhu7sJ3los_EZXOji2jBTcAc3haxJbCFq0Yb1iYa8l_ifAtCnK36Ut5Lw_ctTB-WV5LUfNnO8IQZFG4BEuohI1MYJuYdt_lnPo";
                $notification_title = "Car Wash Cancelled";
                $notification_body = 'Your car wash for the car ' . $car_registration_no . ' has been calcelled in ' . $cwo_company;
                $data=array("request_type" => "notification");
                sendFcmNotification($fcm_token, $notification_title, $notification_body, $data);
                /*push ends*/

                /*email starts*/
                if($record->driver_name != ''){
                    $recipient_name = $record->driver_name;   
                } else {
                    $recipient_name = $co_fname . ' ' . $co_lname;
                }
                if($record->driver_email != ''){
                    $recipient_email = $record->driver_email;
                    $subject = 'Autoclick Car Wash Cancelled';
                    $message_body = '<html>
                                        <head>
                                        <title>Autoclick Car Wash Cancelled</title>
                                        </head>
                                        <body>
                                            <p>Hi ' . $recipient_name . '</p>
                                            <p>Your car wash for the car ' . $car_registration_no . ' has been calcelled in ' . $cwo_company . '. Thank you!</p>
                                            <p>Regards</p>
                                            <p>AUTOCLICK</p>
                                            <p><a href="www.autoclickcarwashapp.com">www.autoclickcarwashapp.com</a> | <a href="mailto:info@autoclick.co.za">info@autoclick.co.za</a></p>
                                        </body>
                                    </html>';
                    $email = sendMail(array($recipient_name, $recipient_email), $message_body, $subject);
                    // print_r($email);exit;                
                }
                /*email ends*/

                return response()->json([
                    'success' => 1,
                    'message' => 'Car Wash has been cancelled successfully.'
                ]);
            } else {
                return response()->json([
                    'success' => 0,
                    'message' => 'Passcode to cancel car wash did not match.',
                ]); 
            }
        } else {
            return response()->json([
                'success' => 0,
                'message' => 'Passcode to cancel car wash did not match.',
            ]);    
        }

        
        

    }

    public function updateWashCount(Request $request){
        $wash = WashDetail::get();
        // echo "<pre>";print_r($wash->toArray());exit;
        foreach ($wash as $d) {
            $record = WashDetail::find($d->id);
            $getWashCount = WashDetail::where('cwo_id', $record->cwo_id)->where('id', '<', $d->id)->count();
            // echo $getWashCount . "<br>";
            $wash_count = $getWashCount + 1;
            $record->wash_count = $wash_count;
            $record->save(); 
        }
        exit;
    }

    public function splitFlag(Request $request){
        $wash = WashDetail::where('split_flag', 0)->limit(100)->get();
        // echo "<pre>";print_r($wash->toArray());exit;
        foreach ($wash as $d) {
            $record = WashDetail::find($d->id);
            $payment_details = $record->payment_details;
            $payment_status = $record->payment_status;
            $total_amount = $record->total_amount;
            echo $d->id . " - " . $payment_details . "<br>";

            if($payment_status == 1){
                if($payment_details =='cash') {
                    $record->cash_amount = $total_amount;
                    $record->split_flag = 1;
                    $record->save();    
                }
                if($payment_details =='Cash') {
                    $record->cash_amount = $total_amount;
                    $record->split_flag = 1;
                    $record->save();    
                }
                if (str_contains($payment_details, 'Card')) {
                    echo "card-------" . "<br></br></br>";
                    $record->card_amount = $total_amount;
                    $record->split_flag = 1;
                    $record->save();    
                }
                if (str_contains($payment_details, 'card')) {
                    echo "card-------" . "<br></br></br>";
                    $record->card_amount = $total_amount;
                    $record->split_flag = 1;
                    $record->save();    
                }
            }
        }
        // exit;
    }

}
