|
|
@@ -356,37 +356,52 @@ public function ActualizarRegistroAca(Request $request, $id){
|
|
|
|
|
|
|
|
|
|
|
|
-public function registroAdministrativo(Request $request){
|
|
|
+public function registroAdministrativo(Request $request) {
|
|
|
$message = '';
|
|
|
$status = 0;
|
|
|
+ $nombreArchivo = '';
|
|
|
|
|
|
try {
|
|
|
- // Validar el archivo si se envió
|
|
|
- if ($request->hasFile('constanciaFiscal')) {
|
|
|
- $request->validate([
|
|
|
- 'constanciaFiscal' => 'required|file|mimes:pdf|max:5120',
|
|
|
+ // Validar campos requeridos mínimos
|
|
|
+ $request->validate([
|
|
|
+ 'idAlumno' => 'required',
|
|
|
+ 'usuarioRegistro' => 'required',
|
|
|
+ ]);
|
|
|
|
|
|
- ]);
|
|
|
- }
|
|
|
+ // Procesar archivo si se recibió como base64
|
|
|
+ if ($request->has('constanciaFiscalBase64') && $request->has('nombreArchivo')) {
|
|
|
+ $base64 = $request->constanciaFiscalBase64;
|
|
|
+ $nombreArchivo = time() . '_' . $request->idAlumno . '_' . preg_replace('/[^a-zA-Z0-9._-]/', '', $request->nombreArchivo);
|
|
|
+
|
|
|
+ // Limpiar encabezado si viene con "data:..."
|
|
|
+ if (preg_match('/^data:application\/pdf;base64,/', $base64)) {
|
|
|
+ $base64 = substr($base64, strpos($base64, ',') + 1);
|
|
|
+ }
|
|
|
|
|
|
- // Procesar el archivo
|
|
|
- $nombreArchivo = null;
|
|
|
- if ($request->hasFile('constanciaFiscal')) {
|
|
|
- $archivo = $request->file('constanciaFiscal');
|
|
|
- $nombreArchivo = time() . '_' . $request->idAlumno . '_' . $archivo->getClientOriginalName();
|
|
|
+ $contenido = base64_decode($base64);
|
|
|
+
|
|
|
+ if ($contenido === false) {
|
|
|
+ throw new \Exception('No se pudo decodificar el archivo PDF');
|
|
|
+ }
|
|
|
|
|
|
- // Crear directorio si no existe
|
|
|
$rutaDestino = public_path('uploads/constancias_fiscales');
|
|
|
if (!file_exists($rutaDestino)) {
|
|
|
- mkdir($rutaDestino, 0755, true);
|
|
|
+ if (!mkdir($rutaDestino, 0755, true)) {
|
|
|
+ throw new \Exception('No se pudo crear el directorio para guardar el archivo');
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- // Mover el archivo
|
|
|
- $archivo->move($rutaDestino, $nombreArchivo);
|
|
|
+ file_put_contents($rutaDestino . '/' . $nombreArchivo, $contenido);
|
|
|
+
|
|
|
+ // Verificar que el archivo se haya guardado
|
|
|
+ if (!file_exists($rutaDestino . '/' . $nombreArchivo)) {
|
|
|
+ throw new \Exception('El archivo no se guardó correctamente desde base64');
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- $registroAdministrativo = DB::table('registroadministrativo')->insert([
|
|
|
- 'idEscuela' => 'COLEGIOABC',
|
|
|
+ // Preparar datos para la inserción
|
|
|
+ $registro = [
|
|
|
+ 'idEscuela' => $request->idEscuela ?? 'COLEGIOABC',
|
|
|
'idAlumno' => $request->idAlumno,
|
|
|
'RegA_MesInscripcion' => $request->mesInscripcion ?? '',
|
|
|
'RegA_GradoCursar' => $request->gradoCursar ?? '',
|
|
|
@@ -394,7 +409,7 @@ public function registroAdministrativo(Request $request){
|
|
|
'RegA_BecaPorcentaje' => $request->becaPorcentaje ?? '',
|
|
|
'RegA_PlanPagos' => $request->planPago ?? '',
|
|
|
'RegA_RequiereFactura' => $request->factura ?? '',
|
|
|
- 'RegA_MetodoPago' => $request->metedoPago ?? '',
|
|
|
+ 'RegA_MetodoPago' => $request->metodoPago ?? $request->metedoPago ?? '',
|
|
|
'RegA_RfcFactura' => $request->RFCFactura ?? '',
|
|
|
'RegA_NombreFactura' => $request->razonSocial ?? '',
|
|
|
'RegA_DireccionFactura' => $request->domicilioFactura ?? 'NA',
|
|
|
@@ -405,166 +420,178 @@ public function registroAdministrativo(Request $request){
|
|
|
'usuarioRegistro' => $request->usuarioRegistro,
|
|
|
'created_at' => now(),
|
|
|
'updated_at' => now(),
|
|
|
- ]);
|
|
|
+ ];
|
|
|
+
|
|
|
+ // Insertar en la base de datos
|
|
|
+ $insertado = DB::table('registroadministrativo')->insert($registro);
|
|
|
+
|
|
|
+ if (!$insertado) {
|
|
|
+ throw new \Exception('No se pudo insertar el registro en la base de datos');
|
|
|
+ }
|
|
|
|
|
|
$message = 'Registro exitoso';
|
|
|
$status = 200;
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
- // Si hay error y se subió un archivo, eliminarlo
|
|
|
- if (isset($nombreArchivo) && $nombreArchivo) {
|
|
|
- $rutaArchivo = public_path('uploads/constancias_fiscales/' . $nombreArchivo);
|
|
|
- if (file_exists($rutaArchivo)) {
|
|
|
- unlink($rutaArchivo);
|
|
|
- }
|
|
|
+ // Eliminar el archivo si algo falló
|
|
|
+ if ($nombreArchivo && file_exists(public_path('uploads/constancias_fiscales/' . $nombreArchivo))) {
|
|
|
+ @unlink(public_path('uploads/constancias_fiscales/' . $nombreArchivo));
|
|
|
}
|
|
|
|
|
|
- $message = $e->getMessage();
|
|
|
+ $message = 'Error: ' . $e->getMessage();
|
|
|
$status = 500;
|
|
|
}
|
|
|
|
|
|
- return response()->json(['mensaje' => $message], $status);
|
|
|
+ return response()->json([
|
|
|
+ 'mensaje' => $message,
|
|
|
+ 'archivo' => $nombreArchivo
|
|
|
+ ], $status);
|
|
|
}
|
|
|
|
|
|
public function editarRegistroAdmin(Request $request, $id)
|
|
|
- {
|
|
|
- $message = '';
|
|
|
- $status = 0;
|
|
|
-
|
|
|
- try {
|
|
|
- $idAlumno = base64_decode($id);
|
|
|
+{
|
|
|
+ $message = '';
|
|
|
+ $status = 0;
|
|
|
|
|
|
+ try {
|
|
|
+ $idAlumno = base64_decode($id);
|
|
|
|
|
|
+ // Buscar el registro existente
|
|
|
+ $registroExistente = DB::table('registroadministrativo')
|
|
|
+ ->where('idEscuela', 'COLEGIOABC')
|
|
|
+ ->where('idAlumno', $idAlumno)
|
|
|
+ ->first();
|
|
|
|
|
|
- // Buscar el registro existente
|
|
|
- $registroExistente = DB::table('registroadministrativo')
|
|
|
- ->where('idEscuela', 'COLEGIOABC')
|
|
|
- ->where('idAlumno', $idAlumno)
|
|
|
- ->first();
|
|
|
+ if (!$registroExistente) {
|
|
|
+ error_log('ERROR: Registro no encontrado para idAlumno: ' . $idAlumno);
|
|
|
+ return response()->json(['mensaje' => 'Registro no encontrado'], 404);
|
|
|
+ }
|
|
|
|
|
|
- if (!$registroExistente) {
|
|
|
- error_log('ERROR: Registro no encontrado para idAlumno: ' . $idAlumno);
|
|
|
- return response()->json(['mensaje' => 'Registro no encontrado'], 404);
|
|
|
+ // Preparar datos para actualizar
|
|
|
+ $datosActualizar = [
|
|
|
+ 'updated_at' => now(),
|
|
|
+ ];
|
|
|
+
|
|
|
+ // Mapeo de campos del frontend al backend
|
|
|
+ $camposMapeo = [
|
|
|
+ 'mesInscripcion' => 'RegA_MesInscripcion',
|
|
|
+ 'gradoCursar' => 'RegA_GradoCursar',
|
|
|
+ 'becaCurso' => 'RegA_BecaCurso',
|
|
|
+ 'becaPorcentaje' => 'RegA_BecaPorcentaje',
|
|
|
+ 'planPago' => 'RegA_PlanPagos',
|
|
|
+ 'factura' => 'RegA_RequiereFactura',
|
|
|
+ 'metodoPago' => 'RegA_MetodoPago',
|
|
|
+ 'RFCFactura' => 'RegA_RfcFactura',
|
|
|
+ 'razonSocial' => 'RegA_NombreFactura',
|
|
|
+ 'domicilioFactura' => 'RegA_DireccionFactura',
|
|
|
+ 'correoFactura' => 'RegA_CorreoFactura',
|
|
|
+ 'cuentaPago' => 'RegA_CuentaPago',
|
|
|
+ 'usuarioRegistro' => 'usuarioRegistro',
|
|
|
+ ];
|
|
|
+
|
|
|
+ // Procesar cada campo
|
|
|
+ foreach ($camposMapeo as $campoRequest => $campoBD) {
|
|
|
+ if ($request->has($campoRequest)) {
|
|
|
+ $valor = $request->input($campoRequest);
|
|
|
+ if ($valor !== null && $valor !== '') {
|
|
|
+ $datosActualizar[$campoBD] = $valor;
|
|
|
+ error_log("Campo {$campoRequest} -> {$campoBD}: {$valor}");
|
|
|
+ }
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
+ // Procesar archivo en Base64 si existe
|
|
|
+ if ($request->has('constanciaFiscalBase64') && $request->has('nombreArchivo')) {
|
|
|
+ $base64 = $request->input('constanciaFiscalBase64');
|
|
|
+ $nombreOriginal = $request->input('nombreArchivo');
|
|
|
+ $extension = pathinfo($nombreOriginal, PATHINFO_EXTENSION);
|
|
|
|
|
|
-
|
|
|
- if ($request->hasFile('constanciaFiscal')) {
|
|
|
- $request->validate([
|
|
|
- 'constanciaFiscal' => 'required|file|mimes:pdf|max:5120',
|
|
|
- ]);
|
|
|
+ // Validar que sea un PDF
|
|
|
+ if (strtolower($extension) !== 'pdf') {
|
|
|
+ return response()->json(['mensaje' => 'El archivo debe ser PDF'], 400);
|
|
|
}
|
|
|
|
|
|
- $nombreArchivo = $registroExistente->RegA_ConstanciaFiscal;
|
|
|
+ // Generar nombre único para el archivo
|
|
|
+ $nombreArchivo = time() . '_' . $idAlumno . '_' . $nombreOriginal;
|
|
|
|
|
|
- if ($request->hasFile('constanciaFiscal')) {
|
|
|
- $archivo = $request->file('constanciaFiscal');
|
|
|
- $nombreArchivo = time() . '_' . $idAlumno . '_' . $archivo->getClientOriginalName();
|
|
|
+ // Extraer el contenido Base64 (eliminar el prefijo data:application/pdf;base64,)
|
|
|
+ $base64Str = substr($base64, strpos($base64, ',') + 1);
|
|
|
+ $contenidoArchivo = base64_decode($base64Str);
|
|
|
|
|
|
- $rutaDestino = public_path('uploads/constancias_fiscales');
|
|
|
- if (!file_exists($rutaDestino)) {
|
|
|
- mkdir($rutaDestino, 0755, true);
|
|
|
- }
|
|
|
-
|
|
|
- // Eliminar archivo anterior
|
|
|
- if ($registroExistente->RegA_ConstanciaFiscal) {
|
|
|
- $rutaArchivoAnterior = public_path('uploads/constancias_fiscales/' . $registroExistente->RegA_ConstanciaFiscal);
|
|
|
- if (file_exists($rutaArchivoAnterior)) {
|
|
|
- unlink($rutaArchivoAnterior);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- $archivo->move($rutaDestino, $nombreArchivo);
|
|
|
+ // Validar tamaño del archivo (5MB máximo)
|
|
|
+ if (strlen($contenidoArchivo) > (5 * 1024 * 1024)) {
|
|
|
+ return response()->json(['mensaje' => 'El archivo es demasiado grande (máximo 5MB)'], 400);
|
|
|
}
|
|
|
|
|
|
- // Preparar datos para actualizar
|
|
|
- $datosActualizar = [
|
|
|
- 'updated_at' => now(),
|
|
|
- 'RegA_ConstanciaFiscal' => $nombreArchivo,
|
|
|
- ];
|
|
|
-
|
|
|
- // Mapeo de campos del frontend al backend
|
|
|
- $camposMapeo = [
|
|
|
- 'mesInscripcion' => 'RegA_MesInscripcion',
|
|
|
- 'gradoCursar' => 'RegA_GradoCursar',
|
|
|
- 'becaCurso' => 'RegA_BecaCurso',
|
|
|
- 'becaPorcentaje' => 'RegA_BecaPorcentaje',
|
|
|
- 'planPago' => 'RegA_PlanPagos',
|
|
|
- 'factura' => 'RegA_RequiereFactura',
|
|
|
- 'metodoPago' => 'RegA_MetodoPago',
|
|
|
- 'RFCFactura' => 'RegA_RfcFactura',
|
|
|
- 'razonSocial' => 'RegA_NombreFactura',
|
|
|
- 'domicilioFactura' => 'RegA_DireccionFactura',
|
|
|
- 'correoFactura' => 'RegA_CorreoFactura',
|
|
|
- 'cuentaPago' => 'RegA_CuentaPago',
|
|
|
- 'usuarioRegistro' => 'usuarioRegistro',
|
|
|
- ];
|
|
|
-
|
|
|
- // Procesar cada campo
|
|
|
- foreach ($camposMapeo as $campoRequest => $campoBD) {
|
|
|
- if ($request->has($campoRequest)) {
|
|
|
- $valor = $request->input($campoRequest);
|
|
|
- if ($valor !== null && $valor !== '') {
|
|
|
- $datosActualizar[$campoBD] = $valor;
|
|
|
- error_log("Campo {$campoRequest} -> {$campoBD}: {$valor}");
|
|
|
- }
|
|
|
- }
|
|
|
+ $rutaDestino = public_path('uploads/constancias_fiscales');
|
|
|
+ if (!file_exists($rutaDestino)) {
|
|
|
+ mkdir($rutaDestino, 0755, true);
|
|
|
}
|
|
|
|
|
|
- if ($request->has('idEscuela')) {
|
|
|
- $datosActualizar['idEscuela'] = $request->input('idEscuela', 'COLEGIOABC');
|
|
|
+ // Eliminar archivo anterior si existe
|
|
|
+ if ($registroExistente->RegA_ConstanciaFiscal) {
|
|
|
+ $rutaArchivoAnterior = public_path('uploads/constancias_fiscales/' . $registroExistente->RegA_ConstanciaFiscal);
|
|
|
+ if (file_exists($rutaArchivoAnterior)) {
|
|
|
+ unlink($rutaArchivoAnterior);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- if ($request->has('lastUpdate')) {
|
|
|
- $datosActualizar['lastUpdate'] = $request->input('lastUpdate');
|
|
|
- }
|
|
|
+ // Guardar el nuevo archivo
|
|
|
+ file_put_contents($rutaDestino . '/' . $nombreArchivo, $contenidoArchivo);
|
|
|
+ $datosActualizar['RegA_ConstanciaFiscal'] = $nombreArchivo;
|
|
|
+ }
|
|
|
|
|
|
- error_log('Datos finales para actualizar: ' . json_encode($datosActualizar));
|
|
|
+ // Campos adicionales
|
|
|
+ if ($request->has('idEscuela')) {
|
|
|
+ $datosActualizar['idEscuela'] = $request->input('idEscuela', 'COLEGIOABC');
|
|
|
+ }
|
|
|
|
|
|
- $actualizado = DB::table('registroadministrativo')
|
|
|
- ->where('idEscuela', 'COLEGIOABC')
|
|
|
- ->where('idAlumno', $idAlumno)
|
|
|
- ->update($datosActualizar);
|
|
|
+ if ($request->has('lastUpdate')) {
|
|
|
+ $datosActualizar['lastUpdate'] = $request->input('lastUpdate');
|
|
|
+ }
|
|
|
|
|
|
- error_log('Filas afectadas por la actualización: ' . $actualizado);
|
|
|
+ error_log('Datos finales para actualizar: ' . json_encode($datosActualizar));
|
|
|
|
|
|
- if ($actualizado > 0) {
|
|
|
- $message = 'Actualización exitosa';
|
|
|
- $status = 200;
|
|
|
+ $actualizado = DB::table('registroadministrativo')
|
|
|
+ ->where('idEscuela', 'COLEGIOABC')
|
|
|
+ ->where('idAlumno', $idAlumno)
|
|
|
+ ->update($datosActualizar);
|
|
|
|
|
|
- $registroActualizado = DB::table('registroadministrativo')
|
|
|
- ->where('idEscuela', 'COLEGIOABC')
|
|
|
- ->where('idAlumno', $idAlumno)
|
|
|
- ->first();
|
|
|
+ error_log('Filas afectadas por la actualización: ' . $actualizado);
|
|
|
|
|
|
- error_log('Registro después de actualización: ' . json_encode($registroActualizado));
|
|
|
+ if ($actualizado > 0) {
|
|
|
+ $message = 'Actualización exitosa';
|
|
|
+ $status = 200;
|
|
|
|
|
|
- } else {
|
|
|
- $message = 'No se detectaron cambios en el registro';
|
|
|
- $status = 200;
|
|
|
- error_log('ADVERTENCIA: No se detectaron cambios');
|
|
|
- }
|
|
|
+ $registroActualizado = DB::table('registroadministrativo')
|
|
|
+ ->where('idEscuela', 'COLEGIOABC')
|
|
|
+ ->where('idAlumno', $idAlumno)
|
|
|
+ ->first();
|
|
|
|
|
|
- error_log('=== FIN DEBUG editarRegistroAdmin ===');
|
|
|
+ error_log('Registro después de actualización: ' . json_encode($registroActualizado));
|
|
|
+ } else {
|
|
|
+ $message = 'No se detectaron cambios en el registro';
|
|
|
+ $status = 200;
|
|
|
+ error_log('ADVERTENCIA: No se detectaron cambios');
|
|
|
+ }
|
|
|
|
|
|
- } catch (\Exception $e) {
|
|
|
- error_log('ERROR en editarRegistroAdmin: ' . $e->getMessage());
|
|
|
- error_log('Stack trace: ' . $e->getTraceAsString());
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ error_log('ERROR en editarRegistroAdmin: ' . $e->getMessage());
|
|
|
+ error_log('Stack trace: ' . $e->getTraceAsString());
|
|
|
|
|
|
- if (isset($nombreArchivo) && $nombreArchivo && isset($registroExistente) && $nombreArchivo !== $registroExistente->RegA_ConstanciaFiscal) {
|
|
|
- $rutaArchivo = public_path('uploads/constancias_fiscales/' . $nombreArchivo);
|
|
|
- if (file_exists($rutaArchivo)) {
|
|
|
- unlink($rutaArchivo);
|
|
|
- }
|
|
|
+ if (isset($nombreArchivo) && $nombreArchivo && isset($registroExistente) && $nombreArchivo !== $registroExistente->RegA_ConstanciaFiscal) {
|
|
|
+ $rutaArchivo = public_path('uploads/constancias_fiscales/' . $nombreArchivo);
|
|
|
+ if (file_exists($rutaArchivo)) {
|
|
|
+ unlink($rutaArchivo);
|
|
|
}
|
|
|
-
|
|
|
- $message = 'Error interno del servidor: ' . $e->getMessage();
|
|
|
- $status = 500;
|
|
|
}
|
|
|
|
|
|
- return response()->json(['mensaje' => $message], $status);
|
|
|
+ $message = 'Error interno del servidor: ' . $e->getMessage();
|
|
|
+ $status = 500;
|
|
|
}
|
|
|
|
|
|
+ return response()->json(['mensaje' => $message], $status);
|
|
|
+}
|
|
|
public function getOneRegistroAdmi($id){
|
|
|
$id = base64_decode($id);
|
|
|
$registro = DB::table('registroadministrativo')
|