<?php

namespace App\Http\Controllers\Admin;

use App\Model\Alumno;
use App\Model\User;
use App\Http\Requests\AlumnoRequest;
use App\Model\Usuario;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Redirect;
use Mockery\Exception;
use function MongoDB\BSON\toJSON;
use SebastianBergmann\Environment\Console;
use Symfony\Component\Console\Output\ConsoleOutput;
use Yajra\Datatables\Datatables;

class AlumnoController extends Controller
{
    public function getAlumnos(){
        return view('pages.Alumno.index');
    }

    public function getEgresadosAlumnos(Request $request){
        try {
            $egresado = $request->input('test') == 1 ? 1 : 0;
            $especialidad = $request->input('especialidad');
            $alumnos = Alumno::join('usuario','alumno.id_usuario','=','usuario.id')
                ->join('especialidad','alumno.id_especialidad','=','especialidad.id')
                ->select('alumno.codigo', 'usuario.nombres', 'usuario.apellido_materno',
                    'usuario.apellido_paterno','especialidad.nombre as especialidad_nombre',
                    'alumno.id', 'usuario.dni', 'usuario.estado','alumno.egresado'
                    ,'usuario.id as idusuario')
                ->where('alumno.egresado','=',$egresado)
                ->where('especialidad.id','=',$especialidad)
                ->get();
            return Datatables::of($alumnos)->make(true);
        }catch (Exception $e){
            return Redirect('/');
        }
    }

    public function getEgresados(Request $request){
        try {
            $egresado = $request->input('test') == 1 ? 1 : 0;
            $especialidad = $request->input('especialidad');
            $alumnos = Alumno::join('usuario','alumno.id_usuario','=','usuario.id')
                ->join('especialidad','alumno.id_especialidad','=','especialidad.id')
                ->select('alumno.codigo', 'usuario.nombres', 'usuario.apellido_materno',
                    'usuario.apellido_paterno','especialidad.nombre as especialidad_nombre',
                    'alumno.id', 'usuario.dni', 'usuario.estado','alumno.egresado'
                    ,'usuario.id as idusuario')
                ->where('alumno.egresado','=',$egresado)
                ->get();
            return Datatables::of($alumnos)->make(true);
        }catch (Exception $e){
            return Redirect('/');
        }
    }

    public function editarForm($id){

        if(!is_numeric($id)){
            alert()->warning('Esta ingresando a un enlace no válido', '¡ Advertencia !');
            return redirect('alumno');
        }

        $aux = User::where('id','=',$id)->get()->toArray();

        if($aux == []){
            alert()->warning('Esta ingresando a un enlace no válido', '¡ Advertencia !');
            return redirect('alumno');
        }

        $Usuario = User::find($id);

        switch($Usuario->estado_civil){
                case 'Soltero':
                    $Usuario->estado_civil = '1';
                    break;
                case 'Casado':
                    $Usuario->estado_civil = '2';
                    break;
                case 'Viudo':
                    $Usuario->estado_civil = '3';
                    break;
                case 'Divorciado':
                    $Usuario->estado_civil = '4';
                    break;
        }

        $Usuario->password = '';

        if($Usuario->urlimagen == null){
            $Usuario->urlimagen = '/img/imagenotfound.gif';
        }

        return view('pages.Alumno.edit',compact('Usuario'));
    }

    public function editarSubmit(AlumnoRequest $request){

        try{
            $result = User::find($request['id']);
            $result->email = $request["email"];
            $result->telefono = $request["telefono"];
            $result->direccion = $request["direccion"];
            $result->estado_civil = $request["estado_civil"];
            if($result->password!=null){
                $result->password = bcrypt($request["password"]);
            }

            if($request["pathimagen"] !=null) {
                $file = $request["pathimagen"];
                $filename = $file->store(config('constants.IMAGEN_PERFIL'));

                $result->pathimagen = '/' . $filename;
                $result->urlimagen = '/storage/' . explode('/', $filename)[1].'/'.explode('/', $filename)[2];
            }

            $result->save();
            $Egresado = 'alumno';

            if($result->egresado) {
                $Egresado = 'egresado';
            }

            alert()->success('Se actualizo el '.$Egresado.' correctamente!', 'Actualizacion realizada!')->persistent('Cerrar');
            return view('pages.Alumno.index');

        }catch(\Exception $e){
            alert()->error('Ocurrió un error al intentar guardar el usuario.')->persistent('Cerrar');
            return view('pages.Alumno.index');
        }
    }

    public function eliminar(Request $request){

        $result = User::find($request->input('id'));
        $alumno = Alumno::where('id_usuario',$result->id);

        $Egresado = 'alumno';

        if($result->egresado) {
            $Egresado = 'egresado';
        }

        $result->delete();
        $alumno->delete();
        alert()->success('Se eliminó '.$Egresado.' seleccionado.', 'Éxito!');

        return redirect('/alumno/');
    }
}
