File: /var/www/dtw.bradford/app/Imports/ColegiumEnrollmentsImport.php
<?php
namespace App\Imports;
use Exception;
use PhpOffice\PhpSpreadsheet\Shared\Date;
class ColegiumEnrollmentsImport extends AbstractChunksImport
{
protected function getExpectedHeaders(): array
{
return [
'id_nacional',
'id_nacional_apoderado_cuentas',
'nombres',
'primer_apellido',
'segundo_apellido',
'nombre_nuevo_nivel',
'total_pagado_alumno',
'total_pagado_matricula_alumno',
'total_pagado_colegiatura_alumno',
'estado_proceso',
'medio_pago_matricula',
'medio_pago_colegiatura',
'total_matricula',
'total_colegiatura',
'fecha_proceso_reinscripcion',
'estado_matricula',
'nombre_familia',
'fecha_ingreso_en_act',
'nombre_nivel_actual',
'ano_de_matricula',
];
}
protected function getTableName(): string
{
return 'colegium_enrollments';
}
protected function getSheetName()
{
return 0;
}
protected function normalizeRow(array $row, int $numRow): ?array
{
try {
$validation_errors = 0;
$validation_messages = '';
if (!empty($row['id_nacional'])) {
if (!validateRut(trim($row['id_nacional']))) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': id_nacional inválido. ';
} else {
$id_nacional = formateaRut($row['id_nacional']);
}
} else {
$id_nacional = null;
}
if (!empty($row['id_nacional_apoderado_cuentas'])) {
if (!validateRut(trim($row['id_nacional_apoderado_cuentas']))) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': id_nacional_apoderado_cuentas inválido. ';
} else {
$id_nacional_apoderado_cuentas = formateaRut($row['id_nacional_apoderado_cuentas']);
}
} else {
$id_nacional_apoderado_cuentas = null;
}
if (!empty($row['nombres'])) {
$nombres = $row['nombres'];
} else {
$nombres = null;
}
if (!empty($row['primer_apellido'])) {
$primer_apellido = $row['primer_apellido'];
} else {
$primer_apellido = null;
}
if (!empty($row['segundo_apellido'])) {
$segundo_apellido = $row['segundo_apellido'];
} else {
$segundo_apellido = null;
}
if (!empty($row['nombre_nuevo_nivel'])) {
$nombre_nuevo_nivel = $row['nombre_nuevo_nivel'];
} else {
$nombre_nuevo_nivel = null;
}
if (!empty($row['total_pagado_alumno'])) {
if (!is_float(limpiaMonedaDecimal($row['total_pagado_alumno']))) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': total_pagado_alumno inválido. ';
} else {
$total_pagado_alumno = limpiaMonedaDecimal($row['total_pagado_alumno']);
}
} else {
$total_pagado_alumno = 0;
}
if (!empty($row['total_pagado_matricula_alumno'])) {
if (!is_float(limpiaMonedaDecimal($row['total_pagado_matricula_alumno']))) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': total_pagado_matricula_alumno inválido. ';
} else {
$total_pagado_matricula_alumno = limpiaMonedaDecimal($row['total_pagado_matricula_alumno']);
}
} else {
$total_pagado_matricula_alumno = 0;
}
if (!empty($row['total_pagado_colegiatura_alumno'])) {
if (!is_float(limpiaMonedaDecimal($row['total_pagado_colegiatura_alumno']))) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': total_pagado_colegiatura_alumno inválido. ';
} else {
$total_pagado_colegiatura_alumno = limpiaMonedaDecimal($row['total_pagado_colegiatura_alumno']);
}
} else {
$total_pagado_colegiatura_alumno = 0;
}
if (!empty($row['estado_proceso'])) {
$estado_proceso = $row['estado_proceso'];
} else {
$estado_proceso = null;
}
if (!empty($row['medio_pago_matricula'])) {
$medio_pago_matricula = $row['medio_pago_matricula'];
} else {
$medio_pago_matricula = null;
}
if (!empty($row['medio_pago_colegiatura'])) {
$medio_pago_colegiatura = $row['medio_pago_colegiatura'];
} else {
$medio_pago_colegiatura = null;
}
if (!empty($row['total_matricula'])) {
if (!is_float(limpiaMonedaDecimal($row['total_matricula']))) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': total_matricula inválido. ';
} else {
$total_matricula = limpiaMonedaDecimal($row['total_matricula']);
}
} else {
$total_matricula = 0;
}
if (!empty($row['total_colegiatura'])) {
if (!is_float(limpiaMonedaDecimal($row['total_colegiatura']))) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': total_colegiatura inválido. ';
} else {
$total_colegiatura = limpiaMonedaDecimal($row['total_colegiatura']);
}
} else {
$total_colegiatura = 0;
}
if (!empty($row['fecha_proceso_reinscripcion'])) {
try {
$date = Date::excelToDateTimeObject($row['fecha_proceso_reinscripcion']);
$fecha_proceso_reinscripcion = $date->format('Y-m-d');
} catch (\Throwable $th) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': fecha_proceso_reinscripcion inválida. ';
}
} else {
$fecha_proceso_reinscripcion = null;
}
if (!empty($row['estado_matricula'])) {
$estado_matricula = $row['estado_matricula'];
} else {
$estado_matricula = null;
}
if (!empty($row['nombre_familia'])) {
$nombre_familia = $row['nombre_familia'];
} else {
$nombre_familia = null;
}
if (!empty($row['ano_de_matricula'])) {
try {
$ano_de_matricula = intval($row['ano_de_matricula']);
} catch (\Throwable $th) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': ano_de_matricula inválida. ';
}
} else {
$ano_de_matricula = null;
}
// if (!empty($row['fecha_ingreso_en_act'])) {
// try {
// $excelDate = (float)$row['fecha_ingreso_en_act'];
// $date = Date::excelToDateTimeObject($excelDate);
// $fecha_ingreso_en_act = $date->format('Y-m-d H:i:s');
// } catch (Exception $e) {
// $validation_errors++;
// $validation_messages .= ($validation_errors) . ': fecha_ingreso_en_act inválida: ' . $e->getMessage() . ' ';
// }
// } else {
// $fecha_ingreso_en_act = null;
// }
if (!empty($row['fecha_ingreso_en_act'])) {
try {
// Verificar si el valor es numérico y está dentro del rango válido
if (trim(strtolower($row['fecha_ingreso_en_act'])) == 'null') {
$fecha_ingreso_en_act = null;
} else {
$excelDate = (float)$row['fecha_ingreso_en_act'];
if ($excelDate >= 1 && $excelDate <= 2958465) { // Rango válido para fechas en Excel
$date = Date::excelToDateTimeObject($excelDate);
$fecha_ingreso_en_act = $date->format('Y-m-d H:i:s');
} else {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': fecha_ingreso_en_act fuera de rango. ';
}
}
} catch (Exception $e) {
$validation_errors++;
$validation_messages .= ($validation_errors) . ': fecha_ingreso_en_act inválida: ' . $e->getMessage() . ' ';
}
} else {
// Si el valor está vacío, asignar null
$fecha_ingreso_en_act = null;
}
if (!empty($row['nombre_nivel_actual'])) {
$nombre_nivel_actual = $row['nombre_nivel_actual'];
} else {
$nombre_nivel_actual = null;
}
if ($validation_errors > 0) {
$this->error_data[] = [
'numero_de_linea' => $numRow,
'errores' => $validation_messages,
'fecha_de_carga' => date('d-m-Y H:i'),
];
return null;
}
return [
'national_id' => $id_nacional,
'parent_national_id' => $id_nacional_apoderado_cuentas,
'names' => $nombres,
'first_surname' => $primer_apellido,
'second_surname' => $segundo_apellido,
'new_level_name' => $nombre_nuevo_nivel,
'total_paid_student' => $total_pagado_alumno,
'total_enrollment_paid_student' => $total_pagado_matricula_alumno,
'total_tuition_paid_student' => $total_pagado_colegiatura_alumno,
'process_status' => $estado_proceso,
'enrollment_payment_method' => $medio_pago_matricula,
'tuition_payment_method' => $medio_pago_colegiatura,
'total_enrollment' => $total_matricula,
'total_tuition' => $total_colegiatura,
're_enrollment_process_date' => $fecha_proceso_reinscripcion,
'enrollment_status' => $estado_matricula,
'family_name' => $nombre_familia,
'entry_date_act' => $fecha_ingreso_en_act,
'actual_level_name' => $nombre_nivel_actual,
'year' => $ano_de_matricula,
'created_at' => ahoraServidor()
];
} catch (\Throwable $e) {
$this->error_data[] = [
'numero_de_linea' => $numRow,
'errores' => 'Excepción: ' . $e->getMessage(),
'fecha_de_carga' => date('d-m-Y H:i'),
];
return null;
}
}
}