<?php

namespace Predial\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Predial\Vencimiento;
use Predial\Mes;
use Predial\TipoDI;
use Carbon\Carbon;

class VencimientoController extends Controller{

    public function index(){
        if(!empty(session()->get('usuario'))){
            $param = session()->get('anno');
            $data = DB::table('gr_vencimiento as ven')
                    ->select('ven.anno', 'mss.numero as numero', 'mss.mes', DB::raw('DATE_FORMAT(ven.fecha, "%d/%m/%Y") as fecha'), 'ven.id_unico', 'mss.id_unico as mesid', 'tpo.nombre as tipo', 'tpo.id_unico as tpoDI')
                    ->leftJoin('gf_mes as mss', 'ven.mes', '=', 'mss.id_unico')
                    ->leftJoin('gr_tipo_di as tpo', 'tpo.id_unico', '=', 'ven.tipo')
                    ->whereIn('tpo.id_unico', [1, 2])
                    ->get();
            $mes  = DB::table('gf_mes')->where('parametrizacionanno', '=', $param)->get();
            $tipo = DB::table('gr_tipo_di')->whereIn('id_unico', [1, 2])->get();
            return view('vencimiento.index', compact('data', 'mes', 'tipo'));
        }else{
            return redirect("CerrarSesion");
        }
    }

    public function show(){}

    public function create(){}

    public function store(Request $request){
        try {
            $ff = explode("/", $request->txtFecha);

            $fecha = Carbon::createFromDate($ff[2], $ff[1], $ff[0]);
            $new = new Vencimiento();
            $new->anno  = $request->txtAnno;
            $new->mes   = $request->sltMes;
            $new->fecha = $fecha->format('Y-m-d');
            $new->tipo  = $request->sltTipo;
            $new->save();

            flash()->overlay('Información guardada correctamente.', 'Información');

            return redirect("ListarVencimientos");
        } catch (Exception $e) {
            return "Fatal error = ".$e->getMessage();
        }
    }

    public function edit($id_unico){
        if(!empty(session()->get('usuario'))){
            $id   = decrypt($id_unico);
            $data = Vencimiento::find($id_unico);
            return redirect("ListarVencimientos");
        }else{
            return redirect("CerrarSesion");
        }
    }

    public function update(Request $request){
        try {
            $ff = explode("/", $request->txtDate);
            $fecha =Carbon::createFromDate($ff[2], $ff[1], $ff[0]);

            $upd = Vencimiento::findOrFail($request->txtId_unico);
            $upd->anno  = $request->txtAnio;
            $upd->mes   = $request->sltMesM;
            $upd->fecha = $fecha->format('Y-m-d');
            $upd->tipo  = $request->sltTipoD;
            $upd->save();

            flash()->overlay('Información modificada correctamente.', 'Información');

            return redirect('ListarVencimientos');
        } catch (Exception $e) {
            return "Fatal error = ".$e->getMessage();
        }
    }

    public function destroy($id_unico){
        try {
            $id  = decrypt($id_unico);
            $del = Vencimiento::findOrFail($id);
            $del->delete();

            flash()->overlay('Información eliminada correctamente.', 'Información');

            return redirect('ListarVencimientos');
        } catch (Exception $e) {
            return "Fatal error = ".$e->getMessage();
        }
    }
}
