<?php

namespace Predial\Http\Controllers;

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

use Predial\TipoBase;

class TipoBaseController extends Controller{

    public $path = "tipoBase";

    public function index(){
        $data = DB::table('gr_tipo_base as tpb')
                ->select('tpb.id_unico', 'tpb.nombre', 'cls.nombre as clase')
                ->leftJoin('gr_clase_tipo_base as cls', 'tpb.clase_tipo_base', '=', 'cls.id_unico')
                ->get();

        return view($this->path.".index")->with('data', $data);
    }

    public function create(){
        $clase = DB::table('gr_clase_tipo_base')->get();
        return view($this->path.'.create', compact('clase'));
    }

    public function store(Request $request){
        try {
            $new = new TipoBase();

            $new->timestamps      = false;
            $new->nombre          = $request->txtNombre;
            $new->clase_tipo_base = $request->sltClase;
            $new->save();

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

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

    public function show($id_unico){
        $id   = decrypt($id_unico);

        $data = TipoBase::find($id);
        $dtc  = DB::table('gr_clase_tipo_base')->where('id_unico', '=', $data->clase_tipo_base)->first();
        $clase = DB::table('gr_clase_tipo_base')->where('id_unico', '!=', $data->clase_tipo_base)->get();
        return view($this->path.'.edit')->with('data', $data)->with('clase', $clase)->with('dtc', $dtc);
    }

    public function update(Request $request){
        try {
            $upd = TipoBase::findOrFail($request->id_unico);

            $upd->nombre          = $request->txtNombre;
            $upd->clase_tipo_base = $request->sltClase;
            $upd->timestamps      = false;
            $upd->save();

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

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

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

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

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