<?php

namespace Predial\Http\Controllers;

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

use Predial\PropietarioPredio;
use Predial\Predio;
use Predial\Tercero;
use Predial\Propietario;

class PropietarioPredioController extends Controller{

    private $path = "propietarioPredio";

    public function index($predio){
        $id_predio   = decrypt($predio);
        $data_predio = Predio::find($id_predio);
        $terceros    = DB::table('gr_propietarios as pro')
                            ->groupBy('pro.id_unico')
                            ->orderBy('pro.id_unico')
                            ->get();
        $predios = DB::select(
                                "SELECT     terp.tercero id_tercero,
                                            ter.nombres tercero,
                                            ter.numero as doc,
                                            terp.propietario,
                                            terp.porcentaje,
                                            terp.orden
                                FROM        gp_tercero_predio terp
                                LEFT JOIN   gr_propietarios ter ON terp.tercero = ter.id_unico
                                LEFT JOIN   gf_tipo_identificacion ti ON ter.tipoidentificacion = ti.id_unico
                                WHERE       terp.predio = $id_predio"
                                );
        return view($this->path.'.index')
               ->with('predio',   $data_predio)
               ->with('terceros', $terceros)
               ->with('predios',  $predios);
    }

    public function store(Request $request){
        try {
            $data = DB::table("gp_tercero_predio")
                    ->select("tercero", "predio")
                    ->where("tercero", "=", "$request->sltTercero")
                    ->where("predio", "=", decrypt($request->txtPredio))
                    ->first();

            if(empty($data->tercero) && empty($data->predio)){
                $pro              = new PropietarioPredio();

                $pro->timestamps  = false;
                $pro->tercero     = $request->sltTercero;
                $pro->predio      = decrypt($request->txtPredio);
                $pro->propietario = $request->optPropietario;
                $pro->porcentaje  = $request->txtParticipacion;
                $pro->orden       = $request->txtOrden;
                $pro->save();

                flash()->overlay('Información guardada correctamente', 'Información');
            }else{
                flash()->overlay('Información existente en la base de datos', 'Información');
            }

            return redirect(route('AsignarTercero', $request->txtPredio));
        } catch (Exception $e) {
            return "Fatal Error = ".$e->getMessage();
        }
    }

    public function destroy($predio, $tercero){
        try {
            $res = DB::table('gp_tercero_predio')
                    ->where("predio", "=", decrypt($predio))
                    ->where("tercero" ,"=", decrypt($tercero))
                    ->delete();

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

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

    public function edit(Request $request){
        try {
            $res = DB::table('gp_tercero_predio')
                    ->where("predio", "=", $request->txtP)
                    ->where("tercero","=", $request->txtCer)
                    ->update(
                        [
                            'propietario' => $request->optPro,
                            'porcentaje'  => $request->txtPart,
                            'orden'  => $request->txtOrden
                        ]
                    );

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

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