<?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\OptionalExtra;
use App\Models\CleanerWash;
use App\Models\WashTypeToWash;
use App\Models\WashCategory;
use Carbon\Carbon;
use DB;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Validator;

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

    public function index(){
    }

    public function carSearchList(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'cwo_id' => 'required',
                'search_term' => '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');
        $search_term = $request->input('search_term');
        $dt = Carbon::now();

        /*$data = WashDetail::select('wash_details.id','wash_details.car_id','wash_details.entry_date','wash_details.wash_type_id','wash_details.body_type','wash_details.amount','wash_details.date_washed','wash_details.time_washed','wash_details.status','wash_details.payment_status','wash_details.payment_details','cwo_master.cwo_name','cwo_master.cwo_company','co_master.co_fname','co_master.co_lname','co_master.co_phone','users.email','co_car.car_registration_no','wash_categories.wash_name','currency_masters.symbol')
        ->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')
        ->orderBy('co_car.id', 'desc')
        ->get();*/

        /*$data = 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)
        ->where(function($query) use ($search_term) {
            $query->where('co_car.car_registration_no', 'like', '%' . $search_term . '%')
                ->orWhere('co_master.co_fname', 'like', '%' . $search_term . '%')
                ->orWhere('co_master.co_lname', 'like', '%' . $search_term . '%')
                ->orWhere('co_master.co_phone', 'like', '%' . $search_term . '%')
                ->orWhere('users.email', 'like', '%' . $search_term . '%');
        })
        ->orderBy('co_car.id', 'desc')
        ->get();*/
        $data = 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')
        ->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)
        ->where('wash_details.status', '!=', 4)
        ->where(function($query) use ($search_term) {
            $query->where('co_car.car_registration_no', 'like', '%' . $search_term . '%')
                ->orWhere('co_master.co_fname', 'like', '%' . $search_term . '%')
                ->orWhere('co_master.co_lname', 'like', '%' . $search_term . '%')
                ->orWhere('co_master.co_phone', 'like', '%' . $search_term . '%')
                ->orWhere('users.email', 'like', '%' . $search_term . '%')
                ->orWhere('wash_details.driver_name', 'like', '%' . $search_term . '%')
                ->orWhere('wash_details.driver_isd_code', 'like', '%' . $search_term . '%')
                ->orWhere('wash_details.driver_phone', 'like', '%' . $search_term . '%')
                ->orWhere('wash_details.driver_email', 'like', '%' . $search_term . '%');
        })
        ->orderBy('wash_details.id', 'desc')
        ->get();
        // echo "<pre>";print_r($data->toArray());exit;    

        $dataDisplay=[];
        $dataArray = [];
        if($data != ''){
            foreach ($data 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['isd_code'] = '+' . $d->isd_code;
                $dataDisplay['co_phone'] = $d->co_phone;
                $dataDisplay['car_registration_no'] = $d->car_registration_no;
                // $dataDisplay['wash_name'] = $d->wash_name;
                if($d->date_washed != ''){
                    $dataDisplay['date_washed']  = date("d/m/Y", strtotime($d->date_washed)); 
                } else {
                    $dataDisplay['date_washed']  = ''; 
                }
                if($d->time_washed != ''){
                    $dataDisplay['time_washed']  = date("h:i a", strtotime($d->time_washed)); 
                } else {
                    $dataDisplay['time_washed']  = ''; 
                }
                $dataDisplay['payment_status_id'] = $d->payment_status;
                if($d->payment_status == 1){
                    $dataDisplay['payment_status'] = 'Paid';    
                } else {
                    $dataDisplay['payment_status'] = 'Not Paid';   
                }
                $dataDisplay['status_id'] = $d->status;
                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;
                if($d->keys_collected != ''){
                    $dataDisplay['keys_collected']  = date("d/m/Y", strtotime($d->date_washed));
                } else {
                    $dataDisplay['keys_collected'] = '';
                } 

                // if($d->image != ''){
                //     $dataDisplay['image'] = asset('images/wash') . '/' . $d->image;
                // } else {
                //     // $cwo_logo = '';
                //     $dataDisplay['image'] = '';
                // }
                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',
            'carList' => $dataArray
        ]);

    }

}
