<?php

namespace App\Http\Controllers;

use App\ContinuacionProyectos;
use App\EmpresasProyectos;
use App\Personal;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;

class ContinuacionProyectosController 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('continuacion_proyectos')
            ->join('empresas_proyectos', 'empresas_proyectos.id_proyecto', '=', 'continuacion_proyectos.id_proyecto')
            ->join('personals', 'personals.id_personal', '=', 'continuacion_proyectos.id_personal')
            ->select(['continuacion_proyectos.id_contproy', 'continuacion_proyectos.descripcion',
            'personals.id_personal','personals.nombre', 'personals.apellidos',
            'empresas_proyectos.id_proyecto', 'empresas_proyectos.nombre_proy',
            'continuacion_proyectos.folio_n'])->paginate(30);

            return view('ContinuacionProyectos.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('continuacion_proyectos')
            ->join('empresas_proyectos', 'empresas_proyectos.id_proyecto', '=', 'continuacion_proyectos.id_proyecto')
            ->join('personals', 'personals.id_personal', '=', 'continuacion_proyectos.id_personal')
            ->select(['continuacion_proyectos.id_contproy', 'continuacion_proyectos.descripcion',
            'personals.id_personal','personals.nombre', 'personals.apellidos',
            'empresas_proyectos.id_proyecto', 'empresas_proyectos.nombre_proy',
            'continuacion_proyectos.folio_n'])
            ->where('continuacion_proyectos.descripcion', 'LIKE', '%'.$search.'%')
            ->orWhere('empresas_proyectos.nombre_proy', 'LIKE', '%'.$search.'%')
            ->orderBy('continuacion_proyectos.id_contproy', '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->descripcion.'</td>
                                        <td>'.$dato->nombre. $dato->apellidos.'</td>
                                        <td>'.$dato->nombre_proy.'</td>
                                        <td>'.$dato->folio_n.'</td>
                                        <td>
                                            <a href="ContinuacionProyectos/'.$dato->id_contproy.'/edit" class="btn btn-warning">
                                                <span class="far fa-edit"></span> Editar</a>

                                            <form action="ContinuacionProyectos/'.$dato->id_contproy.'" 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="5" 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->descripcion.'</td>
                                        <td>'.$dato->nombre. $dato->apellidos.'</td>
                                        <td>'.$dato->nombre_proy.'</td>
                                        <td>'.$dato->folio_n.'</td>
                                        <td>
                                            <a href="ContinuacionProyectos/'.$dato->id_contproy.'/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="5" 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($id_proyecto)
    {
        //
        if(Auth::user()->user_tipe == 'Admin' || Auth::user()->user_tipe == 'Jefe_Proyecto')
        {
            $proyecto = EmpresasProyectos::findOrFail($id_proyecto);
            $personales = Personal::all();
            return view('ContinuacionProyectos.create', compact('proyecto', 'personales'));
        }
        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 = [
            'descripcion' => 'required|string|max:191',
            'id_personal' => 'required',
            'id_proyecto' => 'required',
            'folio_n' => 'required|string|max:50'
        ];

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

        $datosCont = request()->except('_token');
        ContinuacionProyectos::insert($datosCont);
        //return response()->json($datosCont);
        return redirect('ContinuacionProyectos')->with('Mensaje', '¡Continuacion de Proyecto Agregado Con Éxito!');
    }

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

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\ContinuacionProyectos  $continuacionProyectos
     * @return \Illuminate\Http\Response
     */
    public function edit($id_contproy)
    {
        //
        if(Auth::user()->user_tipe == 'Admin' || Auth::user()->user_tipe == 'Jefe_Proyecto')
        {
            $contproy = ContinuacionProyectos::findOrFail($id_contproy);
            $personales = Personal::all();
            return view('ContinuacionProyectos.edit', compact('personales'))->with('contproy', $contproy);
        }
        else
        {
            abort(403, 'Acceso Prohibido');
        }
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\ContinuacionProyectos  $continuacionProyectos
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id_contproy)
    {
        $campos = [
            'descripcion' => 'required|string|max:191',
            'id_personal' => 'required',
            'id_proyecto' => 'required',
            'folio_n' => 'required|string|max:50'
        ];

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

        $datosContProy = request()->except(['_token', '_method']);
        ContinuacionProyectos::where('id_contproy', '=', $id_contproy)->update($datosContProy);
        /*$contproy = ContinuacionProyectos::findOrFail($id_contproy);
        return view('ContinuacionProyectos.edit', compact('contproy'));*/
        return redirect('ContinuacionProyectos')->with('Mensaje', '¡Proyecto Editado con Éxito!');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\ContinuacionProyectos  $continuacionProyectos
     * @return \Illuminate\Http\Response
     */
    public function destroy($id_contproy)
    {
        ContinuacionProyectos::destroy($id_contproy);
        return redirect('ContinuacionProyectos')->with('Mensaje', '¡Continuación de Proyecto Eliminado con Éxito!');
    }
}
