<?php

namespace App\Http\Controllers\OwnerPanel;

use App\Http\Controllers\Controller;
// use App\Services\CarSearchService;
use Illuminate\Http\Request;
use App\Models\WashDetail;
use App\Models\OptionalExtra;
use App\Models\CleanerWash;
use App\Models\WashTypeToWash;
use App\Models\WashCategory;
use App\Models\WashCategoryBodyType;
use App\Models\CarOwnerCar;
use Carbon\Carbon;
use DB;
use Auth;

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

    public function index(Request $request)
    {
        $cwo_id = Auth::user()->cwo_id;
        $dataBag = array();
        $dataBag['chMenu'] = 'clientBirthdayList';

        $start_date = $request->input('start_date');
        $end_date = $request->input('end_date');
        if($start_date != '') {
            // echo "start date";
            if($end_date == '') {
                // echo "no end date";exit;
                return back()->with('msg', 'Please select both start date and end date to filter by date.')->with('msg_class', 'alert alert-danger');
            }
        }
        if($end_date != '') {
            // echo "end date";
            if($start_date == '') {
                // echo "no start date";exit;
                return back()->with('msg', 'Please select both start date and end date to filter by date.')->with('msg_class', 'alert alert-danger');
            }
        }

        $start_date = $request->input('start_date');
        if($start_date != ''){
            $start_date = date("Y-m-d", strtotime($start_date));
            $start_month = date("m", strtotime($start_date));
            $start_day = date("d", strtotime($start_date));
        }
        $end_date = $request->input('end_date');
        if($end_date != ''){
            $end_date = date("Y-m-d", strtotime($end_date));
            $end_month = date("m", strtotime($end_date));
            $end_day = date("d", strtotime($end_date));
        }
        // echo $start_date;exit;

        $cwo_id = Auth::user()->cwo_id;    
        $data = WashDetail::select('driver_name', 'dob', 'driver_isd_code', 'driver_phone', 'driver_email')
        ->distinct()
        ->whereRaw('DAYOFYEAR(curdate()) < DAYOFYEAR(dob) AND DAYOFYEAR(curdate()) + 7 >=  dayofyear(dob)')
        ->where('cwo_id', $cwo_id);
        // echo "<pre>";print_r($data);exit;

        if($start_date != '' && $end_date != '') {
            /*$data = WashDetail::select('driver_name', 'dob', 'driver_isd_code', 'driver_phone', 'driver_email')
            ->distinct()
            ->where('cwo_id', $cwo_id);
            if($start_date != '') {
                // echo $start_date->month;exit;
                // $data->whereDate('wash_details.date_washed', '>=', $start_date);
                $data->whereMonth('dob', $start_month);
                $data->whereDay('dob', '>=', $start_day);
            }
            if($end_date != '') {
                // $data->whereDate('wash_details.date_washed', '>=', $start_date);
                $data->whereMonth('dob', $end_month);
                $data->whereDay('dob', '<=', $end_day);
            }*/

            $startDate = Carbon::parse($request->input('start_date'));
            $endDate = Carbon::parse($request->input('end_date'));
            $data = WashDetail::select('driver_name', 'dob', 'driver_isd_code', 'driver_phone', 'driver_email')
            ->distinct()
            ->where(function ($query) use ($startDate, $endDate) {
                $query->whereRaw('DAYOFYEAR(dob) >= ?', [$startDate->dayOfYear()])
                      ->whereRaw('DAYOFYEAR(dob) <= ?', [$endDate->dayOfYear()]);
            });
        }
        $data = $data->orderByRaw('MONTH(dob), DAY(dob)');
        // $data = $data->toSql();
        // echo "<pre>";print_r($data);exit;


        $dataCnt = $data->count();
        $data = $data->paginate(500);
        $dataBag['allRecords'] = $dataCnt;
        $dataBag['records'] = $data;
        // echo "<pre>";print_r($dataBag['records']->toArray());exit;
        return view('owner.birthday.list', $dataBag);
    }

}
