PeriodoController.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\DB;
  6. use Illuminate\Support\Facades\Storage;
  7. class PeriodoController extends Controller
  8. {
  9. public function getAllPeriodos(Request $request)
  10. {
  11. try {
  12. $periodos = DB::table('periodos')->get();
  13. return response()->json([
  14. 'mensaje' => 'Periodos obtenidos correctamente',
  15. 'data' => $periodos,
  16. ], 200);
  17. } catch (\Exception $e) {
  18. return response()->json([
  19. 'mensaje' => 'Error al obtener los periodos: ' . $e->getMessage()
  20. ], 500);
  21. }
  22. }
  23. public function crearPeriodo(Request $request)
  24. {
  25. try {
  26. $validated = $request->validate([
  27. 'idPeriodo' => 'required|string|max:10',
  28. 'nombrePeriodo' => 'required|string|max:100',
  29. 'fechaFinalizacion' => 'required|date',
  30. ]);
  31. DB::table('periodos')->insert([
  32. 'idEscuela' => 'COLEGIOABC',
  33. 'idPeriodo' => $validated['idPeriodo'],
  34. 'nombrePeriodo' => $validated['nombrePeriodo'],
  35. 'fechaFinalizacion' => $validated['fechaFinalizacion'],
  36. 'estatus' => 'Inactivo',
  37. 'ulActualizacion' => now(),
  38. ]);
  39. // Crear carpeta en S3 (la carpeta se crea al subir un archivo vacío o establecer un "prefix")
  40. $folderPath = 'periodos/' . $validated['idPeriodo'] . '/';
  41. Storage::disk('s3')->put($folderPath . 'readme.txt', 'Carpeta creada para el periodo ' . $validated['idPeriodo']);
  42. return response()->json([
  43. 'mensaje' => 'Periodo creado correctamente',
  44. 'carpetaS3' => $folderPath,
  45. ], 201);
  46. } catch (\Exception $e) {
  47. return response()->json([
  48. 'mensaje' => 'Error al crear el periodo: ' . $e->getMessage()
  49. ], 500);
  50. }
  51. }
  52. public function activarPeriodo(Request $request)
  53. {
  54. try {
  55. $validated = $request->validate([
  56. 'idPeriodo' => 'required|string|max:10',
  57. ]);
  58. DB::table('periodos')
  59. ->where('estatus', '<>', 'Eliminado')
  60. ->update(['estatus' => 'Inactivo']);
  61. // Activar el periodo seleccionado
  62. DB::table('periodos')
  63. ->where('idPeriodo', $validated['idPeriodo'])
  64. ->update([
  65. 'estatus' => 'Activo',
  66. 'ulActualizacion' => now(),
  67. ]);
  68. return response()->json([
  69. 'mensaje' => 'Periodo activado correctamente',
  70. 'idPeriodo' => $validated['idPeriodo']
  71. ], 200);
  72. } catch (\Exception $e) {
  73. return response()->json([
  74. 'mensaje' => 'Error al activar el periodo: ' . $e->getMessage()
  75. ], 500);
  76. }
  77. }
  78. public function eliminarPeriodo(Request $request)
  79. {
  80. try {
  81. $validated = $request->validate([
  82. 'idPeriodo' => 'required|string|max:10',
  83. ]);
  84. $updated = DB::table('periodos')
  85. ->where('idPeriodo', $validated['idPeriodo'])
  86. ->update([
  87. 'estatus' => 'Eliminado',
  88. 'ulActualizacion' => now(),
  89. ]);
  90. if ($updated) {
  91. return response()->json([
  92. 'mensaje' => 'Periodo eliminado correctamente',
  93. 'idPeriodo' => $validated['idPeriodo']
  94. ], 200);
  95. } else {
  96. return response()->json([
  97. 'mensaje' => 'No se encontró el periodo para eliminar'
  98. ], 404);
  99. }
  100. } catch (\Exception $e) {
  101. return response()->json([
  102. 'mensaje' => 'Error al eliminar el periodo: ' . $e->getMessage()
  103. ], 500);
  104. }
  105. }
  106. public function habilitarPeriodo(Request $request)
  107. {
  108. try {
  109. $validated = $request->validate([
  110. 'idPeriodo' => 'required|string|max:10',
  111. ]);
  112. $updated = DB::table('periodos')
  113. ->where('idPeriodo', $validated['idPeriodo'])
  114. ->update([
  115. 'estatus' => 'Inactivo',
  116. 'ulActualizacion' => now(),
  117. ]);
  118. if ($updated) {
  119. return response()->json([
  120. 'mensaje' => 'Periodo eliminado correctamente',
  121. 'idPeriodo' => $validated['idPeriodo']
  122. ], 200);
  123. } else {
  124. return response()->json([
  125. 'mensaje' => 'No se encontró el periodo para eliminar'
  126. ], 404);
  127. }
  128. } catch (\Exception $e) {
  129. return response()->json([
  130. 'mensaje' => 'Error al eliminar el periodo: ' . $e->getMessage()
  131. ], 500);
  132. }
  133. }
  134. }