<?php

namespace App\Http\Controllers\CambioSeccion;

use App\Model\Horario;
use App\Model\Profesor;
use App\Model\SeccionCurso;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use League\Flysystem\Exception;
use Yajra\Datatables\Facades\Datatables;

class CambioDocenteController extends Controller
{
    public function index()
    {
        try
        {
            $profesores = DB::table('usuario')
                ->join('profesor','profesor.id_usuario','=','usuario.id')
                ->select('profesor.id',DB::raw('CONCAT(usuario.nombres, " ", usuario.apellido_paterno, " ", usuario.apellido_materno) AS completo'))
                ->get('profesor.id','completo')
                ->pluck('completo','id')->toArray();

            return view('pages.ReasignacionSeccion.index',compact('profesores'));
        }
        catch (Exception $e)
        {
            return null;
        }
    }

    public function getHorarios()
    {
        try
        {
            $result = DB::table('seccion_curso')
                        ->join('curso','seccion_curso.id_curso','=','curso.id')
                        ->join('periodo','periodo.id','=','seccion_curso.id_periodo')
                        ->join('profesor','profesor.id','=','seccion_curso.id_profesor')
                        ->join('usuario','usuario.id','=','profesor.id_usuario')
                        ->where('periodo.estado','=',1)
                        ->select('seccion_curso.id',
                            'curso.codigo',
                            'curso.nombre',
                            'seccion_curso.nombre_seccion',
                            DB::raw('CONCAT(usuario.nombres, " ", usuario.apellido_paterno, " ", usuario.apellido_materno) AS completo'))
                        ->get();

            return Datatables::of($result)->make(true);
        }
        catch (Exception $e)
        {
            return null;
        }
    }

    public function postViewHorario(Request $request)
    {
        try
        {
            $result = DB::table('seccion_curso')
                ->join('curso','seccion_curso.id_curso','=','curso.id')
                ->join('periodo','periodo.id','=','seccion_curso.id_periodo')
                ->where('periodo.estado','=',1)
                ->where('seccion_curso.id','=',$request['id'])
                ->select('seccion_curso.id',
                    'curso.codigo',
                    'curso.nombre',
                    'seccion_curso.nombre_seccion')
                ->first();


            return view('pages.ReasignacionSeccion.partials.detalle',compact('result'));
        }
        catch (\Exception $e)
        {
            return null;
        }
    }

    public function postDetalle(Request $request)
    {
        try
        {
            $data = Horario::where('id_seccion_curso','=',$request['id_c'])
                ->select('id','dia','aula','hora_ini','hora_fin')->get();


            return Datatables::of($data)->make(true);
        }
        catch (\Exception $e)
        {
            return null;
        }
    }

    public function postSolicitud(Request $request)
    {
        try
        {
            $profesor = $request['profesores'][0];

            if(is_null($request['horario_reasignacion']))
            {
                Alert()->warning('No se existe secciones para reasignación', 'Atención')->persistent('Ok');
                return redirect('reasignacion');
            }

            if(is_null($profesor))
            {
                Alert()->warning('Debe selecionar el docente para la reasignación de la sección', 'Atención')->persistent('Ok');
                return redirect('reasignacion');
            }

            $profesor = DB::table('usuario')
                ->join('profesor','profesor.id_usuario','=','usuario.id')
                ->where('profesor.id','=',$profesor)
                ->select('profesor.id',DB::raw('CONCAT(usuario.nombres, " ", usuario.apellido_paterno, " ", usuario.apellido_materno) AS completo'))
                ->get()[0];

            $horario = Horario::find($request['horario_reasignacion']);

            $seccion = SeccionCurso::find($horario->id_seccion_curso);


            $seccion->id_profesor = $profesor->id;
            $noms = $seccion->nombre_seccion;
            $seccion->save();

            return 200;

        }
        catch (\Exception $e)
        {
            return 500;
        }
    }

}
