<?php

namespace App\Http\Controllers;

use App\Http\Requests\StoreUpdateTituloRequest;
use App\Models\Agendamento;
use App\Models\DocumentoPessoa;
use App\Models\Lote;
use App\Models\LoteTramite;
use App\Models\Pessoa;
use App\Models\PessoaLote;
use App\Models\Titulo;
use App\Models\Tramite;
use Illuminate\Http\Request;

class TituloController extends Controller
{
    protected $request;
    //Injeção de dependência
    public function __construct(Request $request)
    {
        $this->request = $request;
    }

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $documentoPessoa = DocumentoPessoa::where('cpf', $this->request->cpf)->with('pessoa')->first();
        $docPessoa = Lote::where('cpf', $this->request->cpf)->first();
        if ($documentoPessoa) {
            $pessoas = Pessoa::where('id', $documentoPessoa->pessoa_id)->with('documentoPessoa', 'pessoaLote')->get();
            foreach ($pessoas as $pessoa) {
                // echo "{$pessoa}<hr>";
                $pessoasLote = PessoaLote::where('pessoa_id', $documentoPessoa->pessoa_id)->with('lote', 'pessoa')->get();
                $lotes = Lote::where('cpf', $this->request->cpf)->with('municipio', 'lotesTramites')->get();
                foreach ($lotes as $lote) {
                    $titulos = Titulo::where('lote_id', $lote->id)->where('flag_cancelamento', '<>', 'S')->get();
                    foreach ($titulos as $titulo) {
                        //  echo "{------------>$titulo->numero_titulo}<hr>";
                    }
                    if ($loteTramite = LoteTramite::where('lote_id', $lote->id)
                        ->where('tramite_id', 20)->orWhere('tramite_id', 27)
                        ->orWhere('tramite_id', 60)->orWhere('tramite_id', 61)
                        ->orWhere('tramite_id', 62)->orWhere('tramite_id', 63)
                        ->orWhere('tramite_id', 64)->orWhere('tramite_id', 65)
                        ->orWhere('tramite_id', 66)->orWhere('tramite_id', 67)
                        ->orWhere('tramite_id', 68)->orWhere('tramite_id', 69)
                        ->orWhere('tramite_id', 70)->orWhere('tramite_id', 71)
                        ->orWhere('tramite_id', 72)->orWhere('tramite_id', 73)
                        ->orWhere('tramite_id', 74)->orWhere('tramite_id', 75)
                        ->orWhere('tramite_id', 76)->orWhere('tramite_id', 77)
                        ->orWhere('tramite_id', 78)->orWhere('tramite_id', 79)
                        ->orWhere('tramite_id', 80)
                        ->exists()) {
                        $loteTramite = LoteTramite::where('lote_id', $lote->id)->max('id');
                        $lotesTramites = LoteTramite::where('id', $loteTramite)->where('lote_id', $lote->id)->get();
                        foreach ($lotesTramites as $loteTramite) {}
                        $tramites = Tramite::where('id', $loteTramite->tramite_id)->where('documento_tipo', 'TITULO DO IMOVEL')
                            ->get();
                        foreach ($tramites as $tramite) {
                            if ($tramite->id === 67) {
                                // echo "{------------>$tramites}<hr>";
                                $agendamento = Agendamento::get()->last();
                                return view('admin.pages.titulos.index')->with([
                                    'cpf' => $this->request->cpf,
                                    'nome' => $tramite->nome,
                                    'lotesTramites' => $lotesTramites,
                                    // 'tramites' => $tramites,
                                    'pessoasLote' => $pessoasLote,
                                    'lotes' => $lotes,
                                    'pessoa' => $pessoa,
                                    'documentoPessoa' => $documentoPessoa,
                                    'agendamento' => $agendamento,
                                    'titulos' => $titulo,
                                ]);
                            } else {
                                return view('cpfValidoSemTitulo')->with(['cpf' => $this->request->cpf, 'nome' => $tramite->nome]);
                            }
                        }

                    }
                }
                return view(
                    'admin.pages.titulos.index',
                    [
                        'pessoa' => $pessoa,
                        'pessoasLote' => $pessoasLote,
                        'lotes' => $lotes,
                        'titulos' => $titulos,
                        'documentoPessoa' => $documentoPessoa,
                    ]
                );
            }
        } else if(  $docPessoa){
            return view('cpfSemPessoa')->with(['cpf' => $this->request->cpf]);
        }
        else {
            return view('cpfInvalido')->with(['cpf' => $this->request->cpf]);
        }
    }

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

    /**
     * Store a newly created resource in storage.
     *
     * @param  App\Http\Requests\StoreUpdateTituloRequest  $request
     * @return \Illuminate\Http\Response
     */
    // public function store(StoreUpdateTituloRequest $request)
    // {
    //     $data = $request->all();
    //     $this->repository->create($data);
    //     return redirect()->route('titulos.index');

    // }

    //guardar data
    public function store(Request $request)
    {
        return $request->name;
    }

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

        if (!$titulos = Titulo::where('lote_id', $id)->get()) {
            return redirect()->back();
        } else {
            return view('admin.pages.titulos.show', [
                'titulos' => $titulos,
            ]);
        }

        if (!$agendamentos = Agendamento::get()->last()) {
            return redirect()->back();
        } else {
            return view('admin.pages.titulos.show', [
                'agendamentos' => $agendamentos,
            ]);
        }
    }

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

        //dd($titulo);
        // return view('admin.pages.titulos.edit', [
        //     'titulos' => $titulo
        // ]);
        return view('admin.pages.titulos.edit', compact('titulo'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(StoreUpdateTituloRequest $request, $id)
    {
        if (!$titulo = $this->repository->find($id)) {
            return redirect()->back();
        }

        $titulo->update($request->all());
        return redirect()->route('titulos.index');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        if (!$titulo = $this->repository->find($id)) {
            return redirect()->back();
        }

        $titulo->delete();

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

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

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

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

    }

}
