<?php

namespace App\Http\Controllers;

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

class EmpresasMatrizController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        if(Auth::user()->user_tipe == 'Admin' || Auth::user()->user_tipe == 'Jefe_Proyecto')
        {
            $datos = DB::table('empresas_matrizs')->join('comunas', 'comunas.id_comuna', '=', 'empresas_matrizs.id_comuna')
            ->select('empresas_matrizs.logo', 'empresas_matrizs.id_empresa', 'empresas_matrizs.razon_socialM', 'empresas_matrizs.rut',
            'empresas_matrizs.calle', 'empresas_matrizs.enumeracion',
            'comunas.comuna',
            'empresas_matrizs.ciudad', 'empresas_matrizs.giro', 'empresas_matrizs.giro2',
            'empresas_matrizs.giro3', 'empresas_matrizs.giro4', 'empresas_matrizs.representante_leg',
            'empresas_matrizs.rut_rep_leg')->paginate(4);
            
            return view('EmpresasMatriz.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('empresas_matrizs')->join('comunas', 'comunas.id_comuna', '=', 'empresas_matrizs.id_comuna')
            ->select('empresas_matrizs.logo', 'empresas_matrizs.id_empresa', 'empresas_matrizs.razon_socialM', 'empresas_matrizs.rut',
            'empresas_matrizs.calle', 'empresas_matrizs.enumeracion',
            'comunas.comuna',
            'empresas_matrizs.ciudad', 'empresas_matrizs.giro', 'empresas_matrizs.giro2',
            'empresas_matrizs.giro3', 'empresas_matrizs.giro4', 'empresas_matrizs.representante_leg',
            'empresas_matrizs.rut_rep_leg')
            ->where('razon_socialM', 'LIKE', '%'.$search.'%')
            ->orWhere('rut', 'LIKE', '%'.$search.'%')
            ->orWhere('calle', 'LIKE', '%'.$search.'%')
            ->orWhere('comuna', 'LIKE', '%'.$search.'%')
            ->orWhere('ciudad', 'LIKE', '%'.$search.'%')
            ->orWhere('giro', 'LIKE', '%'.$search.'%')
            ->orWhere('representante_leg', 'LIKE', '%'.$search.'%')
            ->orderBy('id_empresa', '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>
                                            <img class="rounded img-fliud" src="'.asset("storage")."/".$dato->logo.'" alt="" width="100">
                                        </td>

                                        <td>'.$dato->razon_socialM.'</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>'.$dato->giro2.'</td>
                                        <td>'.$dato->giro3.'</td>
                                        <td>'.$dato->giro4.'</td>
                                        <td>'.$dato->representante_leg.'</td>
                                        <td>'.$dato->rut_rep_leg.'</td>
                                        <td>
                                            <div class="align-items-center btn-group">
                                                <a style="border-radius: 5px; width: 92px; height: 60px;" href="EmpresasMatriz/'.$dato->id_empresa.'/edit" class="btn btn-warning">
                                                    <span class="far fa-edit"></span> Editar</a>

                                                <form action="EmpresasMatriz/'.$dato->id_empresa.'" 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>
                                            </div>
                                        </td>
                                    </tr>';
                        $contador = $contador + 1; 
                    }
                    return response($output);
                }
                else
                {
                    $output .= '<tr><td colspan="14" 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>
                                            <img class="rounded img-fliud" src="'.asset("storage")."/".$dato->logo.'" alt="" width="100">
                                        </td>

                                        <td>'.$dato->razon_socialM.'</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>'.$dato->giro2.'</td>
                                        <td>'.$dato->giro3.'</td>
                                        <td>'.$dato->giro4.'</td>
                                        <td>'.$dato->representante_leg.'</td>
                                        <td>'.$dato->rut_rep_leg.'</td>
                                        <td>
                                            <a href="EmpresasMatriz/'.$dato->id_empresa.'/edit" class="btn btn-warning">
                                                <span class="far fa-edit"></span> Editar</a>

                                            <form action="EmpresasMatriz/'.$dato->id_empresa.'" 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="14" 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('EmpresasMatriz.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 = [
            'logo' => 'required|max:10000|mimes:jpeg,png,jpg',
            'razon_socialM' => 'required|string|max:50',
            'rut' => 'required|string|max:20',
            'calle' => 'required|string|max:100',
            'enumeracion' => 'required|numeric',
            'id_comuna' => 'required',
            'ciudad' => 'required|string|max:50',
            'giro' => 'required|string|max:100',
            'representante_leg' => 'required|string|max:100',
            'rut_rep_leg' => 'required|string|max:20'
        ];

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

        $datosEmpresasM = request()->except('_token');

        if($request->hasFile('logo')) //condicion si el campo es un archivo (la foto)
        {
            /*se modifica el campo 'foto' de la info recolectada y se almacenará ésta imagen en la carpeta
            uploads que esta en la carpeta public*/
            $datosEmpresasM['logo'] = $request->file('logo')->store('uploads', 'public');
        }

        EmpresasMatriz::insert($datosEmpresasM);
        return redirect('EmpresasMatriz')->with('Mensaje', '¡Empresa Matriz Agregada con Éxito!');
    }

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

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

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\EmpresasMatriz  $empresasMatriz
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id_empresa)
    {
        $campos = [
            'razon_socialM' => 'required|string|max:50',
            'rut' => 'required|string|max:20',
            'calle' => 'required|string|max:100',
            'enumeracion' => 'required|numeric',
            'id_comuna' => 'required',
            'ciudad' => 'required|string|max:50',
            'giro' => 'required|string|max:100',
            'representante_leg' => 'required|string|max:100',
            'rut_rep_leg' => 'required|string|max:20'
        ];

        if($request->hasFile('logo'))
        {
            $campos += ['logo' => 'required|max:10000|mimes:jpeg,png,jpg'];
        }

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

        if($request->hasFile('logo')) //condicion si el campo es un archivo (la foto)
        {
            $empresa = EmpresasMatriz::findOrFail($id_empresa);
            Storage::delete('public/'.$empresa->logo);
            /*se modifica el campo 'foto' de la info recolectada y se almacenará ésta imagen en la carpeta
            uploads que esta en la carpeta public*/
            $datosEmpresasM['logo'] = $request->file('logo')->store('uploads', 'public');
        }
        
        EmpresasMatriz::where('id_empresa', '=', $id_empresa)->update($datosEmpresasM);
        return redirect('EmpresasMatriz')->with('Mensaje', '¡Empresa Matriz Editada con Éxito!');
    }

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