get(); return response()->json([ 'mensaje' => 'Periodos obtenidos correctamente', 'data' => $periodos, ], 200); } catch (\Exception $e) { return response()->json([ 'mensaje' => 'Error al obtener los periodos: ' . $e->getMessage() ], 500); } } public function crearPeriodo(Request $request) { try { $validated = $request->validate([ 'idPeriodo' => 'required|string|max:10', 'nombrePeriodo' => 'required|string|max:100', 'fechaFinalizacion' => 'required|date', ]); DB::table('periodos')->insert([ 'idEscuela' => 'COLEGIOABC', 'idPeriodo' => $validated['idPeriodo'], 'nombrePeriodo' => $validated['nombrePeriodo'], 'fechaFinalizacion' => $validated['fechaFinalizacion'], 'estatus' => 'Inactivo', 'ulActualizacion' => now(), ]); // Crear carpeta en S3 (la carpeta se crea al subir un archivo vacío o establecer un "prefix") $folderPath = 'periodos/' . $validated['idPeriodo'] . '/'; Storage::disk('s3')->put($folderPath . 'readme.txt', 'Carpeta creada para el periodo ' . $validated['idPeriodo']); return response()->json([ 'mensaje' => 'Periodo creado correctamente', 'carpetaS3' => $folderPath, ], 201); } catch (\Exception $e) { return response()->json([ 'mensaje' => 'Error al crear el periodo: ' . $e->getMessage() ], 500); } } public function activarPeriodo(Request $request) { try { $validated = $request->validate([ 'idPeriodo' => 'required|string|max:10', ]); DB::table('periodos') ->where('estatus', '<>', 'Eliminado') ->update(['estatus' => 'Inactivo']); // Activar el periodo seleccionado DB::table('periodos') ->where('idPeriodo', $validated['idPeriodo']) ->update([ 'estatus' => 'Activo', 'ulActualizacion' => now(), ]); return response()->json([ 'mensaje' => 'Periodo activado correctamente', 'idPeriodo' => $validated['idPeriodo'] ], 200); } catch (\Exception $e) { return response()->json([ 'mensaje' => 'Error al activar el periodo: ' . $e->getMessage() ], 500); } } public function eliminarPeriodo(Request $request) { try { $validated = $request->validate([ 'idPeriodo' => 'required|string|max:10', ]); $updated = DB::table('periodos') ->where('idPeriodo', $validated['idPeriodo']) ->update([ 'estatus' => 'Eliminado', 'ulActualizacion' => now(), ]); if ($updated) { return response()->json([ 'mensaje' => 'Periodo eliminado correctamente', 'idPeriodo' => $validated['idPeriodo'] ], 200); } else { return response()->json([ 'mensaje' => 'No se encontró el periodo para eliminar' ], 404); } } catch (\Exception $e) { return response()->json([ 'mensaje' => 'Error al eliminar el periodo: ' . $e->getMessage() ], 500); } } public function habilitarPeriodo(Request $request) { try { $validated = $request->validate([ 'idPeriodo' => 'required|string|max:10', ]); $updated = DB::table('periodos') ->where('idPeriodo', $validated['idPeriodo']) ->update([ 'estatus' => 'Inactivo', 'ulActualizacion' => now(), ]); if ($updated) { return response()->json([ 'mensaje' => 'Periodo eliminado correctamente', 'idPeriodo' => $validated['idPeriodo'] ], 200); } else { return response()->json([ 'mensaje' => 'No se encontró el periodo para eliminar' ], 404); } } catch (\Exception $e) { return response()->json([ 'mensaje' => 'Error al eliminar el periodo: ' . $e->getMessage() ], 500); } } }