<?php

namespace App\Http\Controllers;

use App\Models\AsignacionMateria;
use App\Models\Calificacion;
use App\Models\Grupos_academico;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class NotaController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index()
    {
        $rol = Auth::user()->roles->pluck('name')->implode(', ');
        
        /*if( $rol === "ADMINISTRADOR"){
             $grupos = Grupos_academico::all();
             return view('admin.calificaciones.index_administrador',compact('grupos'));
         }
             */
             
 
         if( $rol === "DOCENTE"){
             $docente = Auth::user()->docente;
             $grupos = Grupos_academico::where('docente_id', $docente->id)->get();
             return view('admin.notas.index_docente',compact('grupos'));
         }
 
         if( $rol === "ESTUDIANTE"){
             $estudiante = Auth::user()->estudiante;
             $matriculas = $estudiante->matriculaciones()->with(['asignacionMaterias.grupo_academico.materia'
             ,'asignacionMaterias.grupo_academico.docente.usuario'])->get();
             return view('admin.notas.index_estudiante',compact('estudiante','matriculas'));
         }
             

    }

    /**
     * Show the form for creating a new resource.
     */
    public function create($id)
    {
        $grupo = Grupos_academico::find($id);
        $calificaciones = Calificacion::with('grupoAcademico','detalleCalificaciones.estudiante')->where('grupo_academico_id', $id)->get();
        $asignaciones =  AsignacionMateria::with('matriculacion.estudiante')
            ->where('grupo_academico_id', $id)
            ->get();
        return view('admin.notas.create', compact('calificaciones','asignaciones','id','grupo')); 
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        
    }

    /**
     * Display the specified resource.
     */
    public function show(string $id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(string $id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, $id)
    {
       // $datos = request()->all();
        //return response()->json($datos);
        $request->validate([
            'nota_final'      => 'required',
            'matriculacion'      => 'required',
        ]);

        foreach($request->matriculacion as $index => $matriculacionId){

            $asignacionMateria = AsignacionMateria::where('matriculacion_id', $matriculacionId)
            ->where('grupo_academico_id', $id)
            ->first();

            if($asignacionMateria){
                $asignacionMateria->nota_final = $request->nota_final[$index];
                if($request->nota_final[$index] >= 51){
                    $asignacionMateria->estado = 'aprobo';
                }else{
                    $asignacionMateria->estado = 'reprobo';
                }
                $asignacionMateria->save();
            }
        }

        return redirect()->back()
        ->with('mensaje', 'Se cargo las notas de la manera correctamente')
        ->with('icono', 'success');
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(string $id)
    {
        //
    }
}
