<?php

namespace App\Http\Controllers;

use App\Comunas;
use App\EmpProyectos;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;

class EmpProyectosController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        if(Auth::user()->user_tipe == 'Admin' || Auth::user()->user_tipe == 'Jefe_Proyecto')
        {
            $datos = DB::table('emp_proyectos')
            ->join('comunas', 'comunas.id_comuna', '=', 'emp_proyectos.id_comuna')
            ->select(['emp_proyectos.id_empresaProy', 'emp_proyectos.razon_s_ep', 'emp_proyectos.rut',
            'emp_proyectos.calle', 'emp_proyectos.enumeracion',
            'comunas.id_comuna', 'comunas.comuna',
            'emp_proyectos.ciudad', 'emp_proyectos.giro'])->paginate(30);

            return view('Emp_Proyectos.index', compact('datos'));
        }
        else
        {
            abort(403, 'Acceso Prohibido');
        }
    }

    public function search(Request $request)
    {
        if(Auth::user()->user_tipe == 'Admin' || Auth::user()->user_tipe == 'Jefe_Proyecto')
        {
            $search = trim($request->get('search'));
            
            $datos = DB::table('emp_proyectos')
            ->join('comunas', 'comunas.id_comuna', '=', 'emp_proyectos.id_comuna')
            ->select(['emp_proyectos.id_empresaProy', 'emp_proyectos.razon_s_ep', 'emp_proyectos.rut',
            'emp_proyectos.calle', 'emp_proyectos.enumeracion',
            'comunas.id_comuna', 'comunas.comuna',
            'emp_proyectos.ciudad', 'emp_proyectos.giro'])
            ->where('emp_Proyectos.razon_s_ep', 'LIKE', '%'.$search.'%')
            ->orWhere('emp_proyectos.rut', 'LIKE', '%'.$search.'%')
            ->orWhere('emp_proyectos.calle', 'LIKE', '%'.$search.'%')
            ->orWhere('emp_proyectos.giro', 'LIKE', '%'.$search.'%')
            ->orderBy('emp_proyectos.id_empresaProy', 'asc')->paginate();


            $output = '';

            if(Auth::user()->user_tipe == "Admin")
            {
                if(count($datos)>0)
                {
                    $contador = 1;
                    foreach($datos as $dato)
                    {
                        $output .= '<tr style="text-align: center">
                                        <td>'.$contador.'</td>
                                        <td>'.$dato->razon_s_ep.'</td>
                                        <td>'.$dato->rut.'</td>
                                        <td>'.$dato->calle.'</td>
                                        <td>'.$dato->enumeracion.'</td>
                                        <td>'.$dato->comuna.'</td>
                                        <td>'.$dato->ciudad.'</td>
                                        <td>'.$dato->giro.'</td>
                                        <td>
                                            <a href="EmpresasProyectos/'.$dato->id_empresaProy.'/edit" class="btn btn-warning">
                                                <span class="far fa-edit"></span> Editar</a>

                                            <form action="EmpresasProyectos/'.$dato->id_empresaProy.'" method="post" style="display: inline">
                                                '.csrf_field().'
                                                '.method_field('DELETE').'
                
                                                <button class="btn btn-danger" type="submit" onclick="return confirm(\'¿Estas Seguro que Deseas Eliminar Este Registro?\');" style="margin-left: 3px; border-radius:5px">
                                                <span class="fad fa-trash"></span> Eliminar</button>
                                            </form>
                                        </td>
                                    </tr>';
                        $contador = $contador + 1; 
                    }
                    return response($output);
                }
                else
                {
                    $output .= '<tr><td colspan="9" style="text-align: center">¡Ups..! No Se Encontraron Resultados</td></tr>';
                    return response($output);
                }
            }
            else
            {
                if(count($datos)>0)
                {
                    $contador = 1;
                    foreach($datos as $dato)
                    {
                        $output .= '<tr style="text-align: center">
                                        <td>'.$contador.'</td>
                                        <td>'.$dato->razon_s_ep.'</td>
                                        <td>'.$dato->rut.'</td>
                                        <td>'.$dato->calle.'</td>
                                        <td>'.$dato->enumeracion.'</td>
                                        <td>'.$dato->comuna.'</td>
                                        <td>'.$dato->ciudad.'</td>
                                        <td>'.$dato->giro.'</td>
                                        <td>
                                            <a href="EmpresasProyectos/'.$dato->id_empresaProy.'/edit" class="btn btn-warning">
                                                <span class="far fa-edit"></span> Editar</a>
                                        </td>
                                    </tr>';
                        $contador = $contador + 1; 
                    }
                    return response($output);
                }
                else
                {
                    $output .= '<tr><td colspan="9" style="text-align: center">¡Ups..! No Se Encontraron Resultados</td></tr>';
                    return response($output);
                }
            }
        }
        else
        {
            abort(403, 'Acceso Prohibido');
        }
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        if(Auth::user()->user_tipe == 'Admin' || Auth::user()->user_tipe == 'Jefe_Proyecto')
        {
            $id_comuna = Comunas::all();
            return view('Emp_Proyectos.create', compact('id_comuna'));
        }
        else
        {
            abort(403, 'Acceso Prohibido');
        }
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $campos = [
            'razon_s_ep' => 'required|string|max:100',
            'rut' => 'required|string|max:191',
            'calle' => 'required|string|max:191',
            'enumeracion' => 'required|numeric',
            'id_comuna' => 'required',
            'ciudad' => 'required|string|max:191',
            'giro' => 'required|string|max:191'
        ];

        $Mensaje = ["required" => 'El Campo :attribute Es Requerido'];
        $this->validate($request, $campos, $Mensaje);

        $datosEmpresa = request()->except('_token');
        EmpProyectos::insert($datosEmpresa);
        return redirect('EmpProyectos')->with('Mensaje', '!Empresa Proyecto Agregada con Éxito!');
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\EmpProyectos  $empProyectos
     * @return \Illuminate\Http\Response
     */
    public function show(EmpProyectos $empProyectos)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\EmpProyectos  $empProyectos
     * @return \Illuminate\Http\Response
     */
    public function edit($id_empresaProy)
    {
        if(Auth::user()->user_tipe == 'Admin' || Auth::user()->user_tipe == 'Jefe_Proyecto')
        {
            $id_comuna = Comunas::all();
            $empresasP = EmpProyectos::findOrFail($id_empresaProy);
            return view('Emp_Proyectos.edit', compact(['id_comuna','empresasP']));
        }
        else
        {
            abort(403, 'Acceso Prohibido');
        }
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\EmpProyectos  $empProyectos
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id_empresaProy)
    {
        $campos = [
            'razon_s_ep' => 'required|string|max:100',
            'rut' => 'required|string|max:191',
            'calle' => 'required|string|max:191',
            'enumeracion' => 'required|numeric',
            'id_comuna' => 'required',
            'ciudad' => 'required|string|max:191',
            'giro' => 'required|string|max:191'
        ];

        $Mensaje = ["required" => 'El Campo :attribute Es Requerido'];
        $this->validate($request, $campos, $Mensaje);
        
        $datosEmpresasP = request()->except(['_token', '_method']);
        EmpProyectos::where('id_empresaProy', '=', $id_empresaProy)->update($datosEmpresasP);
        
        return redirect('EmpProyectos')->with('Mensaje', '!Empresa Proyecto Editada con Éxito!');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\EmpProyectos  $empProyectos
     * @return \Illuminate\Http\Response
     */
    public function destroy($id_empresaProy)
    {
        EmpProyectos::destroy($id_empresaProy);
        return redirect('EmpProyectos')->with('Mensaje', '¡Empresa Proyecto Eliminada con Éxito!');
    }
}
