<?php

namespace App\Http\Controllers\OwnerPanel;

use App\Http\Controllers\Controller;
// use App\Services\CarWashClientService;
use Illuminate\Http\Request;
use App\Models\CarWashOwner;
use App\Models\CleanerMaster;
use App\Models\CleanerWash;
use Carbon\Carbon;
use Illuminate\Support\Facades\Hash;
use DB;
use Auth;

class OwnerCleanerController extends Controller
{
    // protected $carwashclientService;

    // public function __construct(CarWashClientService $carwashclientService)
    public function __construct()
    {
        // $this->carwashclientService = $carwashclientService;
    }

    public function index(Request $request)
    {
        // echo $cwoid;exit;
        $dataBag['chMenu'] = '';
        $cwo_id = Auth::user()->cwo_id;
        $name = $request->input('name');

        if ($name == '') {
            $data = CleanerMaster::where('cwo_id', $cwo_id)->orderBy('id', 'desc');
        } else {
            $data = CleanerMaster::where('cwo_id', $cwo_id)->orderBy('id', 'desc');
            if ($name != '') {
                $data->where('name', 'like', '%' . $name . '%');
            }
        }

        $dataCnt = $data->count();
        $data = $data->paginate(10);
        $dataBag['allRecords'] = $dataCnt;
        $dataBag['records'] = $data;
        // echo "<pre>";print_r($dataBag['records']->toArray());exit;
        $dataBag['cwo'] = CarWashOwner::where('is_active', 1)->orderBy('id', 'desc')->get();
        return view('owner.cleaner.list', $dataBag);
    }


    /**
     * Show the form for creating a new resource.
     */
    public function create(Request $request)
    {
        $dataBag = array();
        $dataBag['chMenu'] = '';
        $dataBag['cwo'] = CarWashOwner::where('is_active', 1)->orderBy('id', 'desc')->get();
        // echo "<pre>";print_r($dataBag['cwo']->toArray());exit;
        return view('owner.cleaner.create', $dataBag);
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        // echo "store";exit;
        $request->validate([
            // 'wash_name' => 'required|unique:wash_categories,wash_name',
            'name' => 'required',
            // 'cwo_id' => 'required',
            // 'is_active' => 'required'
        ],[
            'name.required' => 'Please enter cleaner name.',
            // 'cwo_id.required' => 'Please select a car wash owner.',
            // 'is_active.required' => 'Please select a status.'
        ]);
        $name = $request->input('name');
        $cwo_id = Auth::user()->cwo_id;
        // $is_active = $request->input('is_active');
        $dt = Carbon::now();
        
        /*insert into wash_categories table starts*/
        $record = CleanerMaster::create([
                'name'=> $name,
                'cwo_id'=> $cwo_id,
                // 'is_active'=> $is_active,
                'created_at'=>$dt->toDayDateTimeString(),
                'updated_at'=>$dt->toDayDateTimeString()
            ]);
        /*insert into wash_categories table ends*/   

        return back()->with('success', 'Cleaner has been added successfully.')->with('msg_class', 'alert alert-success');
    }

    /**
     * Display the specified resource.
     */
    public function show(string $id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit($id)
    {
        // echo $cwoid . " - " . $unitid;exit;
        $dataBag = array();
        $dataBag['chMenu'] = '';
        $record = Cleanermaster::findorfail($id);
        $dataBag['details'] = $record;
        $dataBag['cwo'] = CarWashOwner::where('is_active', 1)->orderBy('id', 'desc')->get();
        return view('owner.cleaner.edit', $dataBag);
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, $id)
    {
        // echo $id;exit;
        $request->validate([
            // 'wash_name' => 'required|unique:wash_categories,wash_name',
            'name' => 'required',
            // 'cwo_id' => 'required',
            // 'is_active' => 'required'
        ],[
            'name.required' => 'Please enter cleaner name.',
            // 'cwo_id.required' => 'Please select a car wash owner.',
            // 'is_active.required' => 'Please select a status.'
        ]);
        $name = $request->input('name');
        $cwo_id = Auth::user()->cwo_id;
        // $is_active = $request->input('is_active');
        $dt = Carbon::now();
        /*update wash_categories table starts*/
        $data = Cleanermaster::findOrFail($id);
        $record = $data->update([
                'name'=> $name,
                // 'is_active'=> $is_active,
                'updated_at'=>$dt->toDayDateTimeString()
            ]);
        /*update wash_categories table ends*/
        return back()->with('success', 'Cleaner has been updated successfully.')->with('msg_class', 'alert alert-success');
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(string $id)
    {
        //
    }

    public function delete($id){
        $record_count = CleanerWash::where('cleaner_id', $id)->count();
        if($record_count > 0){
            if($record_count > 1){
                $data = 'washes';
            } else {
                $data = 'wash';
            }
            return back()->with('msg', 'This cleaner is associated with '. $record_count . ' ' . $data .'. You can not delete it.')->with('msg_class', 'alert alert-danger');    
        } else {
            $record = Cleanermaster::find($id); // fetch the record
            $record->delete();
            return back()->with('msg', 'Cleaner has been deleted successfully.')
                    ->with('msg_class', 'alert alert-success');
        }
    }
}
