<?php

namespace App\Http\Controllers;

use App\User;
use App\Puesto;
use App\Departamento;
use App\{DepartamentoPuesto, Bitacora};
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Facades\Auth;
use Spatie\Permission\Traits\HasRoles;

class LoginController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        /*$personal = User::find('214');
        //$personal->password = Hash::make( md5('Colin2022.*') );
        $personal->password = Hash::make( md5('Davalos2017$TEME') );
        $personal->save();
        dd($personal);*/
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request) {
        
        $credentials = $request->only('usuario', 'password');
        $p = $credentials['password'];
        $credentials['password'] = md5($credentials['password']);
           
        if (Auth::attempt($credentials)) {
            $persona = User::where('usuario', $credentials['usuario'])->first();
            session(['persona' => $persona->toJson() ]);
            auth()->user()->getAllPermissions();
            /*$permissions = $persona->getAllPermissions();
            dd($permissions);*/
            Bitacora::create(['operacion'=>'Inicio de Sesión '.$p, 'idPersonal'=>$persona->id ]);
            return response()->json([ 'exito' => 'session creada oki' ]);
        } else { 
            Bitacora::create(['operacion'=>'Inicio fallido '.$credentials['usuario'], 'idPersonal'=>'302' ]); 
            return response()->json([ 'error' => 'Usuario y/o Contraseña incorrectos!!' ]); 
        }
            
    }

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

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {

        if ($id!="") {
            $dpuesto = DepartamentoPuesto::where('id', $id)->first();

            $depto = Departamento::where('id', $dpuesto->departamento_id)->where('estado', '1')->first();
            
            session(['departamento' => $depto->toJson() ]);
            session(['puesto' => $dpuesto->puesto->toJson() ]);
            
            return response()->json([ 'exito' => 'session creada oki' ]);
        
        } else { return response()->json([ 'error' => 'Inicia Sesión!!' ]); }
    }

    /**
     * funcion para crear cookie para que pueda acceder 
     *     a la pagina administrable de la escuela
     * @param  Request $request [description]
     * @return [type]           [description]
     */
    public function pagina_itz(Request $request){
        $data = $request->all();
        
        if ($data['id']!="") {

            $dpuesto = DepartamentoPuesto::where('id', $data['id'])->first();
            $dato = array(  'idDP'=> $dpuesto->id, 
                            'encargado' => $dpuesto->personal->titulo." ".$dpuesto->personal->nombre." ".$dpuesto->personal->apellido_paterno." ".$dpuesto->personal->apellido_materno, 
                            'imagen' => $dpuesto->personal->imagen,
                            'idDep' => $dpuesto->departamento_id,
                            'departamento' => $dpuesto->departamento->nombre );

            //el 5 en para q se hagan 15 minutos
            setcookie('log', json_encode($dato), time()+(60*15) , '/', 'zitacuaro.tecnm.mx' );
            return response()->json([ 'exito' => 'session creada oki' ]);

        } else {
            return response()->json(['error'=>"Error al iniciar Sesion"]);
        }
            
    }

    /**
     * funcion para crear cookie para que pueda acceder 
     *     a el sistema tramite de titulo y cedula profesional
     * @param  Request $request [description]
     * @return [type]           [description]
     */
    public function titulos(Request $request){
        $data = $request->all();
        
        if ($data['id']!="") {

            $dpuesto = DepartamentoPuesto::where('id', $data['id'])->first();
            $dato = array(  'idDP'=> $dpuesto->id, 
                            'encargado' => $dpuesto->personal->titulo." ".$dpuesto->personal->nombre." ".$dpuesto->personal->apellido_paterno." ".$dpuesto->personal->apellido_materno, 
                            'imagen' => $dpuesto->personal->imagen,
                            'idDep' => $dpuesto->departamento_id,
                            'idPer' => $dpuesto->personal_id,
                            'departamento' => $dpuesto->departamento->nombre,
                            'tipo' => $dpuesto->puesto->tipo );

            //el 5 en para q se hagan 15 minutos
            setcookie('ttl', json_encode($dato), time()+(60*15) , '/', 'zitacuaro.tecnm.mx' );
            return response()->json([ 'exito' => 'session creada oki' ]);

        } else {
            return response()->json(['error'=>"Error al iniciar Sesion"]);
        }
            
    }

    /**
     * funcion para crear cookie para que pueda acceder 
     *     a el sistema tramite de titulo y cedula profesional
     * @param  Request $request [description]
     * @return [type]           [description]
     */
    public function cursos(Request $request){
        $data = $request->all();
        
        if ($data['id']!="") {

            $dpuesto = DepartamentoPuesto::where('id', $data['id'])->first();
            
            $dato = array(  'idDP'=> $dpuesto->id, 
                            'encargado' => $dpuesto->personal->titulo." ".$dpuesto->personal->nombre." ".$dpuesto->personal->apellido_paterno." ".$dpuesto->personal->apellido_materno, 
                            'imagen' => $dpuesto->personal->imagen,
                            'idDep' => $dpuesto->departamento_id,
                            'departamento' => $dpuesto->departamento->nombre );

            //el 5 en para q se hagan 15 minutos
            setcookie('crs', json_encode($dato), time()+(60*15) , '/', 'zitacuaro.tecnm.mx' );
            return response()->json([ 'exito' => 'session creada oki' ]);

        } else {
            return response()->json(['error'=>"Error al iniciar Sesion"]);
        }
            
    }

    /**
     * funcion para crear cookie para que pueda acceder 
     *     a el sistema depi (Julio)
     * @param  Request $request [description]
     * @return [type]           [description]
     */
    public function depi(Request $request){
        $data = $request->all();
        
        if ($data['id']!="") {

            $dpuesto = DepartamentoPuesto::where('id', $data['id'])->first();
            
            $dato = array(  'idDP'=> $dpuesto->id, 
                            'encargado' => $dpuesto->personal->titulo." ".$dpuesto->personal->nombre." ".$dpuesto->personal->apellido_paterno." ".$dpuesto->personal->apellido_materno, 
                            'imagen' => $dpuesto->personal->imagen,
                            'idDep' => $dpuesto->departamento_id,
                            'departamento' => $dpuesto->departamento->nombre );

            //el 5 en para q se hagan 15 minutos
            setcookie('dip', json_encode($dato), time()+(60*15) , '/', 'zitacuaro.tecnm.mx' );
            return response()->json([ 'exito' => 'session creada oki' ]);

        } else {
            return response()->json(['error'=>"Error al iniciar Sesion"]);
        }
            
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }

    /**
    *
    * Carga los paneles para seleccionar el departamento al q desea ingresar
    *
    **/
    public function view_seleccion(){
        if (Auth::check()) {

            $persona = json_decode(session('persona'));
            return view('seleccion')->with('departamentos', DepartamentoPuesto::where('personal_id', $persona->id )->where('estado', '1')->with('puesto')->orderBy('puesto_id')->get() );
        } else {
            return view('index');
        }
    }
}
