@extends('layouts.basedashboard') @section('titulo', 'Calificaciones - ' . $materia->nombre) @push('CSS') @endpush @section('contenido')

Calificaciones

Usuario: {{ $usuario->username }} {{ ucfirst($usuario->tipo->tipo) }}
Materia: {{ $materia->nombre }} Promedio: {{ $promedio }}

@if(auth()->user()->tipo->tipo === 'admin' || auth()->user()->tipo->tipo === 'profesor') @endif Volver a Materias
Historial de Calificaciones ({{ $calificaciones->count() }})
@if($calificaciones->count() > 0)
@if(auth()->user()->tipo->tipo === 'admin' || auth()->user()->tipo->tipo === 'profesor') @endif @foreach($calificaciones as $calificacion) @if(auth()->user()->tipo->tipo === 'admin' || auth()->user()->tipo->tipo === 'profesor') @endif @endforeach
Calificación Nivel de AprobaciónAcciones
{{ $calificacion->calificacion }}/10 @if($calificacion->calificacion >= 8) Excelente @elseif($calificacion->calificacion >= 6) Medio @else Baja @endif
@else

No hay calificaciones registradas

Este usuario no tiene calificaciones en esta materia aún.

@if(auth()->user()->tipo->tipo === 'admin' || auth()->user()->tipo->tipo === 'profesor') @endif
@endif
@if(auth()->user()->tipo->tipo === 'admin' || auth()->user()->tipo->tipo === 'profesor') @endif @endsection @push('JS') @endpush @push('JSOR') // Inicializar DataTables si hay calificaciones @if($calificaciones->count() > 0) $("#tablaCalificaciones").DataTable({ language: { url: "https://cdn.datatables.net/plug-ins/1.13.6/i18n/es-ES.json" }, responsive: true, pageLength: 10, lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "Todos"]], order: [[0, "desc"]], // Ordenar por calificación descendente columnDefs: [ @if(auth()->user()->tipo->tipo === 'admin' || auth()->user()->tipo->tipo === 'profesor') { targets: [2], // Columna de acciones orderable: false, searchable: false } @endif ] }); @endif // Preview en tiempo real para agregar $("#calificacion").on("input", function(){ actualizarPreviewNivel($(this).val()); }); // Preview en tiempo real para editar $("#edit_calificacion").on("input", function(){ actualizarPreviewNivel($(this).val(), "edit"); }); // Manejo del formulario de agregar $("#formAgregarCalificacion").on("submit", function(e){ e.preventDefault(); cambiarEstadoBoton("agregar", true); $.ajax({ url: `{{ route('calificaciones.store', [$usuario->id, $materia->id]) }}`, method: "POST", data: $(this).serialize(), success: function(response){ $("#modalAgregarCalificacion").modal("hide"); Swal.fire({ icon: "success", title: "¡Calificación agregada!", text: "La calificación se ha agregado correctamente", timer: 1500, showConfirmButton: false, timerProgressBar: true }).then(() => { location.reload(); }); }, error: function(xhr){ cambiarEstadoBoton("agregar", false); if( xhr.status === 422 ){ const errors = xhr.responseJSON.errors; Object.keys(errors).forEach(function(key) { $(`#${key}`).addClass("is-invalid"); $(`#${key}`).siblings(".invalid-feedback").text(errors[key][0]); }); } else{ Swal.fire({ icon: "error", title: "Error", text: xhr.responseJSON?.message || "Ocurrió un problema al agregar la calificación", confirmButtonText: "Aceptar" }); } } }); }); // Manejo del formulario de editar $("#formEditarCalificacion").on("submit", function(e){ e.preventDefault(); const id = $("#edit_calificacion_id").val(); cambiarEstadoBoton("editar", true); $.ajax({ url: `{{ url('calificaciones') }}/${id}`, method: "POST", data: $(this).serialize(), success: function(response) { $("#modalEditarCalificacion").modal("hide"); Swal.fire({ icon: "success", title: "¡Calificación actualizada!", text: "La calificación se ha actualizado correctamente", timer: 1500, showConfirmButton: false, timerProgressBar: true }).then(() => { location.reload(); }); }, error: function(xhr) { cambiarEstadoBoton("editar", false); if (xhr.status === 422) { const errors = xhr.responseJSON.errors; Object.keys(errors).forEach(function(key) { const field = key === "calificacion" ? "edit_calificacion" : `edit_${key}`; $(`#${field}`).addClass("is-invalid"); $(`#${field}`).siblings(".invalid-feedback").text(errors[key][0]); }); } else{ Swal.fire({ icon: "error", title: "Error", text: xhr.responseJSON?.message || "Ocurrió un problema al actualizar la calificación", confirmButtonText: "Aceptar" }); } } }); }); // Limpiar errores al cerrar modales $(".modal").on("hidden.bs.modal", function(){ $(this).find("form")[0].reset(); $(this).find(".is-invalid").removeClass("is-invalid"); $(this).find(".invalid-feedback").text(""); $("#previewNivel, #editPreviewNivel").slideUp(); cambiarEstadoBoton("agregar", false); cambiarEstadoBoton("editar", false); }); console.log("Vista calificaciones con modales cargada"); @endpush