HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux Bradford-Sitios 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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;
        }
    }
}