|
|
@@ -7,17 +7,29 @@ use App\Http\Controllers\Controller;
|
|
|
use App\Models\PersonaAutorizada;
|
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
use Illuminate\Support\Str;
|
|
|
-
|
|
|
+use App\Services\PeriodoService;
|
|
|
|
|
|
class RegistroAcademico extends Controller
|
|
|
{
|
|
|
+
|
|
|
+
|
|
|
+ protected $nombrePeriodoActivo;
|
|
|
+
|
|
|
+ public function __construct(PeriodoService $periodoService)
|
|
|
+{
|
|
|
+ try {
|
|
|
+ $this->nombrePeriodoActivo = $periodoService->obtenerPeriodoActivoNombre();
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ $this->nombrePeriodoActivo = null;
|
|
|
+ }
|
|
|
+}
|
|
|
public function registroAca(Request $request)
|
|
|
{
|
|
|
$message = '';
|
|
|
$status = 0;
|
|
|
|
|
|
try {
|
|
|
- // Codificar personas autorizadas a JSON
|
|
|
+
|
|
|
$personasJson = json_encode($request->personasAutorizadas ?? []);
|
|
|
|
|
|
// Insertar en registroacademico incluyendo personasAutorizadas como JSON
|
|
|
@@ -365,6 +377,9 @@ public function registroAdministrativo(Request $request)
|
|
|
$uuidArchivo = Str::uuid()->toString();
|
|
|
|
|
|
try {
|
|
|
+ $periodoService = new PeriodoService();
|
|
|
+ $carpetaPeriodo = $periodoService->obtenerPeriodoActivoNombre();
|
|
|
+
|
|
|
$request->validate([
|
|
|
'idAlumno' => 'required',
|
|
|
'usuarioRegistro' => 'required',
|
|
|
@@ -379,13 +394,16 @@ public function registroAdministrativo(Request $request)
|
|
|
throw new \Exception('Archivo inválido');
|
|
|
}
|
|
|
|
|
|
+ if (!$carpetaPeriodo) {
|
|
|
+ throw new \Exception('No hay un período activo configurado. No se puede subir archivos.');
|
|
|
+ }
|
|
|
+
|
|
|
$originalName = $archivo->getClientOriginalName();
|
|
|
|
|
|
if (strlen($originalName) > 250) {
|
|
|
throw new \Exception('El nombre del archivo excede los 250 caracteres permitidos.');
|
|
|
}
|
|
|
|
|
|
- // Regex actualizado: letras, números, espacios, paréntesis, puntos, guiones, acentos
|
|
|
if (!preg_match('/^[a-zA-Z0-9\s._\-\(\)ñÑáéíóúÁÉÍÓÚ]+$/u', $originalName)) {
|
|
|
throw new \Exception('El nombre del archivo contiene caracteres no permitidos.');
|
|
|
}
|
|
|
@@ -399,8 +417,8 @@ public function registroAdministrativo(Request $request)
|
|
|
}
|
|
|
|
|
|
$nombreArchivo = $uuidArchivo . '-' . $request->idAlumno . '-' . $originalName;
|
|
|
+ $rutaS3 = $carpetaPeriodo . '/constancias_fiscales/' . $nombreArchivo;
|
|
|
|
|
|
- $rutaS3 = 'constancias_fiscales/' . $nombreArchivo;
|
|
|
Storage::disk('s3')->put($rutaS3, file_get_contents($archivo), 'public');
|
|
|
}
|
|
|
|
|
|
@@ -500,7 +518,6 @@ public function editarRegistroAdmin(Request $request, $id)
|
|
|
$rutaS3 = '';
|
|
|
$uuidArchivo = Str::uuid()->toString();
|
|
|
|
|
|
-
|
|
|
try {
|
|
|
$idAlumno = base64_decode($id);
|
|
|
|
|
|
@@ -516,6 +533,13 @@ public function editarRegistroAdmin(Request $request, $id)
|
|
|
$datosActualizar = ['updated_at' => now()];
|
|
|
|
|
|
if ($request->hasFile('constanciaFiscal')) {
|
|
|
+ $periodoService = new PeriodoService();
|
|
|
+ $carpetaPeriodo = $periodoService->obtenerPeriodoActivoNombre();
|
|
|
+
|
|
|
+ if (!$carpetaPeriodo) {
|
|
|
+ throw new \Exception('No hay un período activo configurado. No se puede subir archivos.');
|
|
|
+ }
|
|
|
+
|
|
|
$archivo = $request->file('constanciaFiscal');
|
|
|
|
|
|
if (!$archivo->isValid()) {
|
|
|
@@ -542,7 +566,7 @@ public function editarRegistroAdmin(Request $request, $id)
|
|
|
|
|
|
$nombreArchivo = $uuidArchivo . '-' . $idAlumno . '-' . $originalName;
|
|
|
|
|
|
- $rutaS3 = 'constancias_fiscales/' . $nombreArchivo;
|
|
|
+ $rutaS3 = $carpetaPeriodo . '/constancias_fiscales/' . $nombreArchivo;
|
|
|
|
|
|
Storage::disk('s3')->put($rutaS3, file_get_contents($archivo), 'public');
|
|
|
|