<?php

namespace App\Http\Controllers;

use App\Http\Requests\StoreUpdateAgendamentoRequest;
use App\Models\Agendamento;
use Carbon\Carbon;
use Illuminate\Http\Request;

class AgendamentoController extends Controller
{

    protected $request;

    public function __construct(Request $request)
    {
        $this->request = $request;

        //$this->middleware('auth');
        /*$this->middleware('auth')->only([
    'create', 'store'
    ]);
    $this->middleware('auth')->except([
    'index', 'show'
    ]);
     */
    }

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        if ($this->request) {
            $query = trim($this->request->get('searchText'));
            $agendamentos = Agendamento::orderBy('id', 'desc')
                ->paginate();

            return view('admin.pages.agendamentos.index', [
                'agendamentos' => $agendamentos,
                'searchText' => $query,
            ]);
        }
        //  $dataAtual = Carbon::today();
        //  $dataFormatada = $dataAtual->parse($dataAtual)->format('d-m-Y');

        // $agendamentos = Agendamento::get();

        // foreach ($agendamentos as $agendamento) {
        //     return view('admin.pages.agendamentos.index', [
        //         'agendamentos' => $agendamentos,
        //     ]);
        // }
    }

    public function agendamentosHoje()
    {
        $dataAtual = Carbon::today();
        $dataFormatada = $dataAtual->parse($dataAtual)->format('d-m-Y');

        $agendamentos = Agendamento::where('data', $dataFormatada)->paginate();
        foreach ($agendamentos as $agendamento) {
            return view('admin.pages.agendamentos.index', [
                'agendamentos' => $agendamentos,
            ]);
        }
    }

    // public function totalAgendamentosDia(){
    //     $dataAtual = Carbon::today();
    //     $dataFormatada = $dataAtual->parse($dataAtual)->format('d-m-Y');

    //     $totalAgendamentosDia = Agendamento::where('data', $dataFormatada)->count();
    //     //$agendamentosDia = Agendamento::get()->count();
    //     // return $agendamentosDia;
    //     return view('admin.pages.agendamentos.index', ['totalAgendamentosDia' => $totalAgendamentosDia]);
    // }

    // public function totalAgendamentos(){
    //     $totalAgendamentos = Agendamento::where('atendido', true)->count();
    //     return view('admin.pages.agendamentos.index', [
    //         'totalAgendamentos' => $totalAgendamentos,
    //     ]);
    // }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('admin.pages.agendamentos.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  App\Http\Requests\StoreUpdateAgendamentoRequest;  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $agendamentos = Agendamento::where('id', $this->request->id)
                                    ->first()
                                    ->update($request->only('atendido'));

       return redirect()->route('agendamentos.show', $this->request->id);
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        
        if (!$agendamentos = Agendamento::find($id)) {
            return redirect()->back();
        } else {
            return view('admin.pages.agendamentos.show', [
                'agendamentos' => $agendamentos,
            ]);
        }
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        if (!$agendamento = $this->repository->find($id)) {
            return redirect()->back();
        }

        return view('admin.pages.agendamentos.edit', compact('agendamento'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  App\Http\Requests\StoreUpdateAgendamentoRequest;  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        if (!$agendamento = $this->request->find($id)) {
            return redirect()->back();
        }
       
        //  $agendamento = Agendamento::where('id', $id)->first();
        //  if ($agendamento) {
        //      $agendamento->update($request->all());
        //  }

        // return redirect()->route('agendamentos.index');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $agendamento = Agendamento::findOrFail($id);
        $agendamento->condicao = '0';
        $agendamento->update();
        return redirect()->route('agendamentos.index');



        // if (!$agendamento = $this->repository->find($id)) {
        //     return redirect()->back();
        // }

        // $agendamento->delete();

        // return redirect()->route('agendamentos.index');
    }

    public function search(Request $request)
    {
        $filters = $request->except('_token');

        $agendamentos = $this->repository->search($request->filter);

        return view('admin.pages.agendamentos.index', [
            'agendamentos' => $agendamentos,
            'filters' => $filters,
        ]);

    }
}
