<?php

namespace Predial\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

use Predial\InteresDescuento;
use Predial\TipoDI;
use Predial\Mes;

class InteresDescuentoController extends Controller{

    public $path = "interes.";

    public function index(){
        if(!empty(session()->get('usuario'))){
            $data = DB::table('gr_interes_descuento as int')
                        ->select(
                            'int.id_unico',
                            'int.anio',
                            'int.valor',
                            'int.interes',
                            'int.financiacion',
                            'int.tipo',
                            'tip.nombre as nomtip',
                            'int.mes',
                            'mes.mes as mesNom',
                            'mes.numero'
                        )
                        ->leftJoin('gf_mes as  mes', 'int.mes', '=', 'mes.id_unico')
                        ->leftJoin('gr_tipo_di as tip', 'int.tipo', '=', 'tip.id_unico')
                        ->whereIn('tip.id_unico', [1, 2])
                        ->orderBy('int.anio', 'DESC')
                        ->orderBy('int.mes', 'ASC')
                        ->get();
            return view($this->path."index")->with('data', $data);
        }else{
            return redirect("CerrarSesion");
        }
    }

    public function create(){
        if(!empty(session()->get('usuario'))){
            $param = session()->get('anno');
            $tipos = DB::table('gr_tipo_di')->whereIn('id_unico', [1, 2])->get();
            $meses = DB::table('gf_mes')->where('parametrizacionanno', '=', $param)->get();
            return view($this->path."create")->with('tipos', $tipos)->with('meses', $meses);
        }else{
            return redirect("CerrarSesion");
        }
    }

    public function store(Request $request){
        try {
            $new = new InteresDescuento();
            $new->anio         = $request->txtAnio;
            $new->valor        = $request->txtValor;
            $new->interes      = $request->optInteres;
            $new->financiacion = $request->optFinanciacion;
            $new->tipo         = $request->sltTipo;
            $new->mes          = $request->sltMes;
            $new->save();

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

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

    public function edit($id_unico){
        if(!empty(session()->get('usuario'))){
            $param = session()->get('anno');
            $id   = decrypt($id_unico);
            $data = DB::table('gr_interes_descuento as int')
                      ->select(
                            'int.id_unico',
                            'int.anio',
                            'int.valor',
                            'int.interes',
                            'int.financiacion',
                            'int.tipo',
                            'tip.nombre as nomtip',
                            'int.mes',
                            'mes.mes as mesNom',
                            'mes.numero'
                            )
                      ->leftJoin('gf_mes as  mes', 'int.mes', '=', 'mes.id_unico')
                      ->leftJoin('gr_tipo_di as tip', 'int.tipo', '=', 'tip.id_unico')
                      ->where('int.id_unico', '=', $id)
                      ->first();
            $tipos = DB::table('gr_tipo_di')->select('id_unico', 'nombre')->where('id_unico', '!=', $data->tipo)->whereIn('id_unico', [1,2])->get();
            $mes   = DB::table('gf_mes')->select('id_unico', 'mes', 'numero')->where('id_unico', '!=', $data->mes)->where('parametrizacionanno', '=', $param)->get();
            return view($this->path."edit")->with('data', $data)->with('mes', $mes)->with('tipos', $tipos);
        }else{
            return redirect("CerrarSesion");
        }
    }

    public function update(Request $request){
        try {
            $upd = InteresDescuento::find($request->id_unico);
            $upd->anio          = $request->txtAnio;
            $upd->valor         = $request->txtValor;
            $upd->interes       = $request->optInteres;
            $upd->financiacion  = $request->optFinanciacion;
            $upd->tipo          = $request->sltTipo;
            $upd->mes           = $request->sltMes;
            $upd->save();

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

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

    public function show(){

    }

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

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

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