<?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 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')
        ->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();
        // 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;
                $dataDisplay['co_fname'] = $d->co_fname;
                $dataDisplay['co_lname'] = $d->co_lname;
                $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'] = 'Car Wash Started';    
                }
                if($d->status == 2){
                    $dataDisplay['status'] = 'Drying';    
                }
                if($d->status == 3){
                    $dataDisplay['status'] = 'Car Wash Completed';    
                }
                if($d->status == 4){
                    $status = 'Cancelled';
                }
                $dataDisplay['otp'] = $d->otp;
                $optionalExtra = OptionalExtra::where('wash_id', $d->id)->select('optional_extra', 'price')->orderBy('id', 'asc')->get();
                $dataDisplay['extras'] = $optionalExtra;

                $dataArray[] = $dataDisplay;
            }
        }

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

    }

}
