<?php

namespace App\Http\Controllers;

use App\Model\Alumno;
use App\Model\Profesor;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Jenssegers\Date\Date;

class HorarioController extends Controller{

    public function getHorarioDictado(){
        return view('pages.Horario.horarioprofesor');
    }

    public function getCursosDictado(){

        if(strcmp(Carbon::now()->format('l'),"Monday") !== 0){
            $DT = new Carbon('last Monday');
        }else{
            $DT = new Carbon('Monday');
        }

        $Semana = [
            'Lunes' => $DT->startOfWeek()->addDays(0)->toDateString(),
            'Martes' => $DT->startOfWeek()->addDays(1)->toDateString(),
            'Miercoles' => $DT->startOfWeek()->addDays(2)->toDateString(),
            'Jueves' => $DT->startOfWeek()->addDays(3)->toDateString(),
            'Viernes' => $DT->startOfWeek()->addDays(4)->toDateString(),
            'Sabado' => $DT->startOfWeek()->addDays(5)->toDateString(),
            'Domingo' => $DT->startOfWeek()->addDays(6)->toDateString()
        ];

        $idp= Profesor::where('id_usuario',Auth::user()->id)->get()->pluck('id')[0];

        $Recup = DB::table('reprogramacion')
            ->join('asistencia_profesor','asistencia_profesor.id','=','reprogramacion.id_asistencia_profesor')
            ->join('seccion_curso','seccion_curso.id','=','asistencia_profesor.id_seccion_curso')
            ->join('curso','curso.id','=','seccion_curso.id_curso')
            ->where('seccion_curso.id_profesor','=',$idp)
            ->where('reprogramacion.estado','=',1)
            ->select('reprogramacion.id',
                'reprogramacion.aula',
                'reprogramacion.fecha_asignada',
                'reprogramacion.hora_ini as ini',
                'reprogramacion.hora_fin as fin',
                'seccion_curso.nombre_seccion as seccion',
                'curso.nombre as curso')->get()->toArray();

        $Reprog = DB::table('reprogramacion')
            ->join('horario','horario.id','=','reprogramacion.id_horario')
            ->join('seccion_curso','seccion_curso.id','=','horario.id_seccion_curso')
            ->join('curso','curso.id','=','seccion_curso.id_curso')
            ->where('seccion_curso.id_profesor','=',$idp)
            ->where('reprogramacion.estado','=',1)
            ->select('reprogramacion.id',
                'reprogramacion.aula',
                'reprogramacion.fecha_asignada',
                'reprogramacion.hora_ini as ini',
                'reprogramacion.hora_fin as fin',
                'seccion_curso.nombre_seccion as seccion',
                'curso.nombre as curso')->get()->toArray();


        $Arr = DB::table('profesor')
            ->join('seccion_curso','seccion_curso.id_profesor','=','profesor.id')
            ->join('horario','horario.id_seccion_curso','=','seccion_curso.id')
            ->join('usuario','usuario.id','=','profesor.id_usuario')
            ->join('curso','curso.id','=','seccion_curso.id_curso')
            ->join('periodo','periodo.id','=','seccion_curso.id_periodo')
            ->where('profesor.id','=',$idp)
            ->where('periodo.estado','=',1)
            ->select('seccion_curso.id as id_seccion',
                'horario.dia',
                'horario.aula as aula',
                'seccion_curso.nombre_seccion as seccion',
                'curso.nombre as curso',
                'periodo.nombre as periodo',
                'horario.hora_ini as ini',
                'horario.hora_fin as fin')->get()->toArray();


        $T = [
            'Semanas' => $Semana,
            'Datos' => $Arr,
            'Recup' => $Recup,
            'Reprog' => $Reprog
        ];
        return response()->json($T);


    }

    public function getHorarioClases(){
        return view('pages.Horario.horarioalumno');
    }

    public function getCursosClases(){
        if(strcmp(Carbon::now()->format('l'),"Monday") !== 0){
            $DT = new Carbon('last Monday');
        }else{
            $DT = new Carbon('Monday');
        }

        $Semana = [
            'Lunes' => $DT->startOfWeek()->addDays(0)->toDateString(),
            'Martes' => $DT->startOfWeek()->addDays(1)->toDateString(),
            'Miercoles' => $DT->startOfWeek()->addDays(2)->toDateString(),
            'Jueves' => $DT->startOfWeek()->addDays(3)->toDateString(),
            'Viernes' => $DT->startOfWeek()->addDays(4)->toDateString(),
            'Sabado' => $DT->startOfWeek()->addDays(5)->toDateString(),
            'Domingo' => $DT->startOfWeek()->addDays(6)->toDateString()
        ];


        $ida = Alumno::where('id_usuario',Auth::user()->id)->get()->pluck('id')[0];

        $Recup = DB::table('reprogramacion')
            ->join('asistencia_profesor','asistencia_profesor.id','=','reprogramacion.id_asistencia_profesor')
            ->join('seccion_curso','seccion_curso.id','=','asistencia_profesor.id_seccion_curso')
            ->join('curso','curso.id','=','seccion_curso.id_curso')
            ->join('alumno_seccion','alumno_seccion.id_seccion_curso','=','seccion_curso.id')
            ->join('alumno','alumno.id','=','alumno_seccion.id_alumno')
            ->where('alumno.id','=',$ida)
            ->select('reprogramacion.id',
                'reprogramacion.aula',
                'reprogramacion.fecha_asignada',
                'reprogramacion.hora_ini as ini',
                'reprogramacion.hora_fin as fin',
                'seccion_curso.nombre_seccion as seccion',
                'curso.nombre as curso')->get()->toArray();

        $Reprog = DB::table('reprogramacion')
            ->join('horario','horario.id','=','reprogramacion.id_horario')
            ->join('seccion_curso','seccion_curso.id','=','horario.id_seccion_curso')
            ->join('curso','curso.id','=','seccion_curso.id_curso')
            ->join('alumno_seccion','alumno_seccion.id_seccion_curso','=','seccion_curso.id')
            ->join('alumno','alumno.id','=','alumno_seccion.id_alumno')
            ->where('alumno.id','=',$ida)
            ->select('reprogramacion.id',
                'reprogramacion.aula',
                'reprogramacion.fecha_asignada',
                'reprogramacion.hora_ini as ini',
                'reprogramacion.hora_fin as fin',
                'seccion_curso.nombre_seccion as seccion',
                'curso.nombre as curso')->get()->toArray();


        $Arr = DB::table('alumno_seccion')
            ->join('seccion_curso','seccion_curso.id','=','alumno_seccion.id_seccion_curso')
            ->join('alumno','alumno.id','=','alumno_seccion.id_alumno')
            ->join('horario','horario.id_seccion_curso','=','seccion_curso.id')
            ->join('usuario','usuario.id','=','alumno.id_usuario')
            ->join('periodo','periodo.id','=','seccion_curso.id_periodo')
            ->join('curso','curso.id','=','seccion_curso.id_curso')
            ->where('alumno.id','=',$ida)
            ->where('periodo.estado','=',1)
            ->select('seccion_curso.id as id_seccion',
                'horario.dia',
                'horario.aula as aula',
                'seccion_curso.nombre_seccion as seccion',
                'curso.nombre as curso',
                'periodo.nombre as periodo',
                'horario.hora_ini as ini',
                'horario.hora_fin as fin')->get()->toArray();

        $T = [
            'Semanas' => $Semana,
            'Datos' => $Arr,
            'Recup' => $Recup,
            'Reprog' => $Reprog
        ];
        return response()->json($T);
    }

}
