|
|
@@ -26,14 +26,28 @@ class TareasController extends Controller
|
|
|
|
|
|
public function getAllTareas()
|
|
|
{
|
|
|
- $tareas = DB::table('tareas')
|
|
|
- ->where('idEscuela', 'COlEGIOABC')
|
|
|
- ->orderBy('fechaPublicacion', 'desc')
|
|
|
- ->get();
|
|
|
+ try {
|
|
|
+ $tareas = DB::table('tareas as t')
|
|
|
+ ->join('materias as m', 't.idMateriaTarea', '=', 'm.idMateria')
|
|
|
+ ->join('tareas_tipos as tt', 't.idTipoTarea', '=', 'tt.idTareasTipos')
|
|
|
+ ->select(
|
|
|
+ 'm.nombreMateria as materia',
|
|
|
+ 'tt.nombreTareasTipos as tipo_tarea',
|
|
|
+ 't.*'
|
|
|
+ )
|
|
|
+ ->distinct()
|
|
|
+ ->orderBy('t.fechaPublicacion', 'desc')
|
|
|
+ ->get();
|
|
|
|
|
|
- return response()->json($tareas);
|
|
|
+ return response()->json($tareas);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return response()->json([
|
|
|
+ 'mensaje' => 'Error al obtener las tareas: ' . $e->getMessage()
|
|
|
+ ], 500);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
public function crear(Request $request)
|
|
|
{
|
|
|
|
|
|
@@ -112,6 +126,89 @@ class TareasController extends Controller
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public function actualizar(Request $request, $idTarea)
|
|
|
+ {
|
|
|
+ $carpetaBase = config('custom.s3_carpeta_base');
|
|
|
+
|
|
|
+ $periodoService = new PeriodoService();
|
|
|
+ $carpetaPeriodo = $periodoService->obtenerPeriodoActivoNombre();
|
|
|
+
|
|
|
+ $rutaBucket = 'tareas/';
|
|
|
+
|
|
|
+ try {
|
|
|
+ // Recuperar tarea existente
|
|
|
+ $tareaExistente = DB::table('tareas')->where('idTarea', $idTarea)->first();
|
|
|
+ if (!$tareaExistente) {
|
|
|
+ return response()->json(['mensaje' => 'Tarea no encontrada'], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Adjuntos (si vienen)
|
|
|
+ $adjuntos = json_decode($tareaExistente->adjuntoTarea ?? '[]', true);
|
|
|
+
|
|
|
+ if ($request->has('bases64')) {
|
|
|
+ foreach ($request->bases64 as $file) {
|
|
|
+ $fileInfo = explode(';', $file['base64'])[0];
|
|
|
+ $fileExtension = explode('/', $fileInfo)[1];
|
|
|
+
|
|
|
+ switch ($fileExtension) {
|
|
|
+ case 'vnd.openxmlformats-officedocument.wordprocessingml.document':
|
|
|
+ $fileExtension = 'docx';
|
|
|
+ break;
|
|
|
+ case 'vnd.openxmlformats-officedocument.spreadsheetml.sheet':
|
|
|
+ $fileExtension = 'xlsx';
|
|
|
+ break;
|
|
|
+ case 'vnd.openxmlformats-officedocument.presentationml.presentation':
|
|
|
+ $fileExtension = 'pptx';
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ $fileData = substr($file['base64'], strpos($file['base64'], ',') + 1);
|
|
|
+ $fileData = str_replace(' ', '+', $fileData);
|
|
|
+ $contenidoArchivo = base64_decode($fileData);
|
|
|
+
|
|
|
+ $fileName = $file['id'] . '-' . $file['nombre'] . '.' . $fileExtension;
|
|
|
+ $pathS3 = $carpetaBase . '/' . $carpetaPeriodo . '/' . $rutaBucket . $fileName;
|
|
|
+
|
|
|
+ Storage::disk('s3')->put($pathS3, $contenidoArchivo, 'public');
|
|
|
+
|
|
|
+ $adjuntos[] = [
|
|
|
+ 'id' => $file['id'],
|
|
|
+ 'nombre' => $file['nombre'],
|
|
|
+ 'ruta' => Storage::disk('s3')->url($pathS3)
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // Actualizar tarea en DB
|
|
|
+ DB::table('tareas')
|
|
|
+ ->where('idTarea', $idTarea)
|
|
|
+ ->update([
|
|
|
+ 'idMateriaTarea' => $request->idMateriaTarea ?? $tareaExistente->idMateriaTarea,
|
|
|
+ 'idTipoTarea' => $request->idTipoTarea ?? $tareaExistente->idTipoTarea,
|
|
|
+ 'tituloTarea' => $request->tituloTarea ?? $tareaExistente->tituloTarea,
|
|
|
+ 'descripcionTarea' => $request->descripcionTarea ?? $tareaExistente->descripcionTarea,
|
|
|
+ 'vinculoTarea' => $request->vinculoTarea ?? $tareaExistente->vinculoTarea,
|
|
|
+ 'adjuntoTarea' => json_encode($adjuntos),
|
|
|
+ 'fechaPublicacion' => $request->fechaPublicacion ?? $tareaExistente->fechaPublicacion,
|
|
|
+ 'fechaEntrega' => $request->fechaEntrega ?? $tareaExistente->fechaEntrega,
|
|
|
+ 'entregaDigital' => $request->entregaDigital ?? $tareaExistente->entregaDigital,
|
|
|
+ 'calificacion' => $request->calificacion ?? $tareaExistente->calificacion,
|
|
|
+ 'retroalimentacion' => $request->retroalimentacion ?? $tareaExistente->retroalimentacion,
|
|
|
+ 'descargarTareas' => $request->descargarTareas ?? $tareaExistente->descargarTareas,
|
|
|
+ 'estado' => $request->estado ?? $tareaExistente->estado,
|
|
|
+ 'idUsuario' => $request->idUsuario ?? $tareaExistente->idUsuario,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ return response()->json([
|
|
|
+ 'mensaje' => 'Tarea actualizada exitosamente',
|
|
|
+ 'idTarea' => $idTarea
|
|
|
+ ], 200);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return response()->json(['mensaje' => 'Error al actualizar la tarea: ' . $e->getMessage()], 500);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
public function obtenerAlumnosPorMateria($idMateria)
|
|
|
{
|
|
|
// Primero obtenemos el grado o grupo relacionado con la materia
|
|
|
@@ -185,5 +282,41 @@ class TareasController extends Controller
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public function habilitar($id)
|
|
|
+ {
|
|
|
+
|
|
|
+ try {
|
|
|
+ //code...
|
|
|
+ DB::table('tareas')
|
|
|
+ ->updateOrInsert(
|
|
|
+ ['idTarea' => $id],
|
|
|
+ ['estado' => 'Completa']
|
|
|
+ );
|
|
|
+
|
|
|
+ return response()->json(['mensaje' => 'Tarea habilitada exitosamente'], 201);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ //throw $th;
|
|
|
+ return response()->json(['mensaje' => 'Error al habilitar la tarea: ' . $e->getMessage()], 500);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ public function eliminar($id)
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ //code...
|
|
|
+ DB::table('tareas')
|
|
|
+ ->updateOrInsert(
|
|
|
+ ['idTarea' => $id],
|
|
|
+ ['estado' => 'Eliminada']
|
|
|
+ );
|
|
|
+
|
|
|
+ return response()->json(['mensaje' => 'Tarea eliminada exitosamente'], 201);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ //throw $th;
|
|
|
+ return response()->json(['mensaje' => 'Error al eliminar la tarea: ' . $e->getMessage()], 500);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|