<?php

namespace App\Http\Controllers\Password;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\Mail\CorreoEgreso;
use Illuminate\Support\Facades\Mail;
use App\{RF_Alumno,ConfiguracionEgreso,RegistroEgreso,Carreras};

class AlumnoControllerRespaldo extends Controller
{
    /*Modificada*/
    public function index(Request $request, $no_control){
        // dd($_COOKIE['new_pass']);
        //$data = $request->all();
        $new_pass = '';
        //dd($data);
        if ($no_control!="") {
            // dd($request->all());
            $new_pass = $no_control;
            if (isset($new_pass) && !isset($_COOKIE['new_pass'])) {
                //dd("hola");
                setcookie('new_pass',$new_pass,time()+60);
                //header("Refresh:1");
            }
            // return redirect('/?no_control='.$new_pass);
        }

        $timezone = 'America/Mexico_City';
        date_default_timezone_set($timezone);
        $fecha_actual = date('Y-m-d H:i:s');

        //$conf_egreso = ConfiguracionEgreso::first();
        // if ($conf_egreso->estado == 1) {
            
        // }
        /*$mostrar = -1;
        if ($fecha_actual >= $conf_egreso->inicio || $fecha_actual <= $conf_egreso->fin) {
            $mostrar = $conf_egreso->estado;
        }else{
            $conf_egreso->estado = 0;
            $conf_egreso->save();

            $mostrar = $conf_egreso->estado;
        }*/

        //$funcion = "closeModal();";
        //if ($conf_egreso->estado == 1){
            $funcion = "showModal();";

            if (isset($_COOKIE['new_pass'])) {
                $funcion = "showNewPass();";
            }else{
                unset($_COOKIE['new_pass']);
                $funcion = "showModal();";
                //return view('principal',compact('funcion','new_pass'));
            }
        //}

        
        // dd($funcion);
        return view('index_new', compact('funcion','new_pass'));
    }

    public function listar_registro_egresados(Request $request){
        $data = $request->all();
        if (count($data) > 0) {
            // dd($data);
            $registros = RegistroEgreso::with('alumno');
            if ($data['buscar'] != null) {
                $registros = $registros->where('id_alumno','like','%'.$data['buscar'].'%')->orWhere('generacion','like','%'.$data['buscar'].'%');
            }
            if ($data['carrera'] != null) {
                $ids_alumnos = array();
                foreach ($registros->get() as $r) {
                    // dd($r->alumno->id_carrera);
                    if($r->alumno->id_carrera == $data['carrera']){
                        array_push($ids_alumnos,$r->id_alumno);
                    }
                }
                // dd($ids_alumnos);
                if (empty($ids_alumnos)) {
                    $registros = RegistroEgreso::where('id_alumno','0');
                }else{
                    $registros = $registros->whereIn('id_alumno',$ids_alumnos);
                }
            }

            $registros = $registros->get();
        }else{
            $registros = RegistroEgreso::with('alumno')->get();
        }
        $carreras = Carreras::all();
        return view('egreso.listar_egresados',compact('registros','carreras','data'));
    }

    public function configuracion_egreso(){
        $conf_egreso = ConfiguracionEgreso::first();
        // dd($conf_egreso);
        return view('egreso.configuracion',compact('conf_egreso'));
    }

    public function update_conf_egreso(Request $request,$id){
        $data = $request->all();

        $update = ConfiguracionEgreso::find($id);
        $update->generacion = $data['generacion'];
        $update->inicio = $data['f_inicio'];
        $update->fin = $data['f_fin'];
        $update->estado = $data['estado'];
        $update->save();
        // dd($update);
        return response()->json([
            'mensaje'=>'La configuración se ha actualizado correctamente',
            'estado'=>'ok'
        ]);
    }

    public function login_egreso(Request $request,$id){
        $pass = md5($request->pass);
        // $pass = $request->pass;

        // $pass = Hash::make($pass);
        $alumno = Alumno::where('no_control',$id)->with('carrera')->first();
        // dd($alumno);
        if ($alumno != null) {
            // if (Hash::check($pass, $pass_personal) && $email == $user->correo ) {
            // } 
            
            // if ($pass == $alumno->password && $id == $alumno->no_control) {
            if (Hash::check($pass, $alumno->password) && $id == $alumno->no_control) {
                // dd('La contraseña es correcta');
                // setcookie("log_alumno", $value, time()+3600);
                $registro_egreso = RegistroEgreso::where('id_alumno',$alumno->no_control)->first();
                // dd($registro_egreso);
                $estado_registro = null;
                if ($registro_egreso != null) {
                    $estado_registro = $registro_egreso->estado; 
                }
                return response()->json([
                    'estado'=>'show_form',
                    // 'mensaje'=>'Mostrar el formulario',
                    'token_password'=>$alumno->token_password,
                    'change_formulario'=>$alumno->change_formulario,
                    'log'=>json_encode($alumno,JSON_UNESCAPED_UNICODE),
                    'estado_registro'=>$estado_registro
                ]);

            }else{
                return response()->json([
                    'estado'=>'error_pass',
                    'mensaje'=>'Tu contraseña es incorrecta'
                ]);
            } 
        }else{
            return response()->json([
                'estado'=>'error_control',
                'mensaje'=>'Tu numero de control es incorrecto'
            ]);
        }
    }

    /*Modificada*/
    public function correo_reset_pass(Request $request){
        $correo = $request->correo;
        if ($correo != null) {
            $alumno = RF_Alumno::where('correo_institucional',$correo)
                        //->with('carrera')
                        ->first();
            // dd($alumno);
            if ($alumno != null) {
                
                if ($alumno->correo_institucional != null) {
                    
                    $mensaje = array(
                        'nombre'            =>  $alumno->nombre,
                        'correo'            =>  $correo,
                        'no_control'        => $alumno->id,
                        'concepto'         => 'reset_pass'
                        // 'asunto'    =>  'Aviso Trámite de Título y Cédula - ITZ Servicios Escolares',
                        // 'mensaje'   =>  'Gusto en saludarlo, le notificamos que ya puede descargar su constancia desde el sistema.'
                        // 'archivo'   =>  $request->file('archivo')
                    );
                    
                    Mail::to($mensaje['correo'])->send(new CorreoEgreso($mensaje));
                    
                    return response()->json([
                        'mensaje'=>'Se ha enviado el correo para restablecer su contraseña.',
                        'estado'=>'ok_correo_reset'
                    ]);   

                }else{
                    return response()->json([
                        'estado'=>'error_pass',
                        'mensaje'=>'No cuentas con correo institucional, favor de comunicarse a las oficinas del ITZ'
                    ]);
                } 
            }else{
                return response()->json([
                    'estado'=>'error_control',
                    'mensaje'=>'Tu número de control es incorrecto'
                ]);
            }
        }
        // dd($correo);
    }

    /*Modificada*/
    public function form_reset_pass($no_control){
        $alumno = RF_Alumno::where('id',$no_control)->first();
        if (isset($alumno) && $alumno != null) {
            return redirect('/mrcs/'.$no_control);
            // return redirect('/');
            // return response()->json([
            //     'estado'=>'show_form_reset_pass'
            //     // 'mensaje'=>'Se restablecio correctamente tu contraseña.'
            // ]);
        }
    }

    /*Modificada*/
    public function update_new_pass(Request $request,$no_control){
        $new_pass = $request->new_pass;
        $confirmar_pass = $request->confirmar_pass;
        $expresion = "/^([A-Z])+(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{7}$/"; //Primero es una mayuscula
        // dd($no_control);
        if($new_pass != null || $new_pass != '' && $confirmar_pass != null || $confirmar_pass != ''){
            if ($new_pass == $confirmar_pass) {
                //$passEncryptada = md5($new_pass);
                //$passEncryptada = Hash::make($passEncryptada);
                $alumno = RF_Alumno::where('id',$no_control)->first();
                    
                if ($alumno->nip!="") {
                    $a = explode("-", $alumno->nip);
                    if (count($a)>1) {
                        $alumno->nip = $new_pass."-".$a['1'];    
                    } else {
                        $alumno->nip = $new_pass."-0";
                    }
                    
                } else {
                    $alumno->nip = $new_pass."-0";
                }

                //$alumno->password = $passEncryptada;
                $alumno->save();
                // dd('Son iguales');

                return response()->json([
                    'estado'=>'ok',
                    'mensaje'=>'La contraseña se ha actualizado con exito'
                ]);
            }else{
                return response()->json([
                    'estado'=>'error',
                    'mensaje'=>'La contraseña no coinciden'
                ]);
            }
        }else{
            return response()->json([
                'estado'=>'error_vacios',
                'mensaje'=>'Por favor, completa los campos'
            ]);
        }

    }

    public function reset_pass(Request $request,$no_control){
        // dd($no_control);
        $new_pass = $request->new_pass;
        $alumno = Alumno::where('no_control',$no_control)->first();
        $alumno->password = $new_pass;
        $alumno->save();

        return response()->json([
            'estado'=>'ok',
            'mensaje'=>'Se restablecio correctamente tu contraseña.'
        ]);
    }

    public function update_datos(Request $request,$id){
        $tel = $request->tel;
        $alumno = Alumno::where('no_control',$id)->first();

        if ($alumno != null) {
            if ($alumno->status_password == 0) {
                $alumno->telefono = $tel;
                $alumno->change_formulario = 1;
                $alumno->save();

                $correo = '';
                if ($alumno->correo_institucional === null || $alumno->correo_institucional === '') {
                    return response()->json([
                        'mensaje'=>'El estudiante no cuenta con correo institucional',
                        'estado'=>'error_email'
                    ]);
                }else{
                    $correo = $alumno->correo_institucional;
                }

                $mensaje = array(
                    'nombre'            =>  $alumno->nombre.' '.$alumno->ap_paterno.' '.$alumno->ap_materno,
                    'correo'            =>  $correo,
                    'concepto'         => 'update_confirmacion'
                    // 'asunto'    =>  'Aviso Trámite de Título y Cédula - ITZ Servicios Escolares',
                    // 'mensaje'   =>  'Gusto en saludarlo, le notificamos que ya puede descargar su constancia desde el sistema.'
                    // 'archivo'   =>  $request->file('archivo')
                );

                if ($alumno->change_formulario == 1) {
                    Mail::to($mensaje['correo'])->send(new CorreoEgreso($mensaje));
                    
                    // return response()->json([
                    //     'mensaje'=>'Se envio un correo de confirmación al correo institucional.',
                    //     'estado'=>'update_confirmacion'
                    // ]);   
                }

                return response()->json([
                    'estado'=>'ok',
                    'mensaje'=>'La información ha sido actualizada, se envio un correo de confirmación a tu correo institucional'
                ]);
            }
        }else{
            return response()->json([
                'estado'=>'error',
                'mensaje'=>'El estudiante no esta registrado en la BD'
            ]);
        }
        // dd($alumno);
    }

    public function registro_egreso(Request $request,$id){
        $no_control = $request->no_control;
        $generacion = $request->generacion;

        // dd($request->all());

        if ($no_control != null && $generacion != null) {
            $alumno = Alumno::where('no_control',$id)->first();

            if ($alumno != null) {

                RegistroEgreso::create([
                    'generacion'=>$generacion,
                    'estado' => 1,
                    'id_alumno'=>$alumno->no_control
                ]);

                if ($alumno->correo_institucional != null) {
                    
                    $mensaje = array(
                        'nombre'            =>  $alumno->nombre,
                        'correo'            =>  $alumno->correo_institucional,
                        'no_control'        => $alumno->no_control,
                        'concepto'          => 'registro_egreso'
                        // 'asunto'    =>  'Aviso Trámite de Título y Cédula - ITZ Servicios Escolares',
                        // 'mensaje'   =>  'Gusto en saludarlo, le notificamos que ya puede descargar su constancia desde el sistema.'
                        // 'archivo'   =>  $request->file('archivo')
                    );
                    
                    Mail::to($mensaje['correo'])->send(new CorreoEgreso($mensaje));
                    
                    return response()->json([
                        'mensaje'=>'Tu registro se completo con exito',
                        'estado'=>'ok_registro'
                    ]);   

                }else{
                    return response()->json([
                        'estado'=>'error_pass',
                        'mensaje'=>'No cuentas con correo institucional, favor de comunicarse a las oficinas del ITZ'
                    ]);
                } 
            }else{
                return response()->json([
                    'estado'=>'error_control',
                    'mensaje'=>'Tu numero de control es incorrecto'
                ]);
            }
        }else{
            return response()->json([
                'estado'=>'error',
                'mensaje'=>'Los datos estan vacios (Formulario Registro)'
            ]);
        }
        // dd($alumno);
    }
}
