Commit 85a66217 authored by Alfonso Rafael Solis Rangel's avatar Alfonso Rafael Solis Rangel
Browse files

Correcciones en las filas

parent 61ae9ca4
Loading
Loading
Loading
Loading
+17 −16
Original line number Diff line number Diff line
@@ -563,13 +563,13 @@ public function upload(Request $request)
    
            $data = array_map('str_getcsv', explode("\n", $content));
            $header = array_shift($data);
            $cont = 1;
    
            foreach ($data as $row) {
                if (count($header) !== count($row)) {
                    continue;
                }
                $row = array_combine($header, $row);
    
                //TODO: Implementar lo mismo para los demas catalogos
    
                $existProfesion = $profesiones->firstWhere('nombre', $row['profesion']);
@@ -610,19 +610,20 @@ public function upload(Request $request)
                $exts = explode(';', $row['ext']);
                $observaciones = explode(';', $row['observaciones']);
    
                $this->validateAndCreateTelefonos($contacto->id, $numeros, $tipos, $estatuses, $exts, $observaciones);
                $this->validateAndCreateTelefonos($contacto->id, $numeros, $tipos, $estatuses, $exts, $observaciones, $cont);
    
                // Procesar redes sociales
                $redes_sociales = explode(';', $row['red_social']);
                $tipos_redes_sociales = explode(';', $row['tipo_red_social']);
    
                $this->validateAndCreateRS($contacto->id, $redes_sociales, $tipos_redes_sociales);
                $this->validateAndCreateRS($contacto->id, $redes_sociales, $tipos_redes_sociales, $cont);
    
                // Procesar correos electrónicos
                $correos = explode(';', $row['correo_electronico']);
                $tipos_correos = explode(';', $row['tipo_correo_electronico']);
    
                $this->validateAndCreateEmails($contacto->id, $correos, $tipos_correos);
                $this->validateAndCreateEmails($contacto->id, $correos, $tipos_correos, $cont);
                $cont++;
            }
    
            return redirect()->route('contacto.get')->with('success', 'Importación de contactos almacenada correctamente');
@@ -675,24 +676,24 @@ public function obtenerEventos(Request $request){
        return response()->json($eventos);
    }

    private function validateAndCreateTelefonos($contactoId, $numeros, $tipos, $estatuses, $exts, $observaciones)
    private function validateAndCreateTelefonos($contactoId, $numeros, $tipos, $estatuses, $exts, $observaciones, $cont)
    {
        for ($i = 0; $i < count($numeros); $i++) {
            if ($numeros[$i] != 'null') {
                if(!filter_var($numeros[$i], FILTER_VALIDATE_INT)){
                    throw new \Exception('Error en la fila ' . $i+1 . ' del archivo CSV: El número de teléfono debe ser un número entero. Valor actual: ' . $numeros[$i]);
                    throw new \Exception('Error en la fila ' . $cont . ' del archivo CSV: El número de teléfono debe ser un número entero. Valor actual: ' . $numeros[$i]);
                }
                if(!in_array($tipos[$i], ['Directo', 'Particular', 'Celular', 'Conmutador'])){
                    throw new \Exception('Error en la fila ' . $i+1 . ' del archivo CSV: El tipo de teléfono debe ser "Directo", "Particular", "Celular" o "Conmutador". Valor actual: ' . $tipos[$i]);
                    throw new \Exception('Error en la fila ' . $cont . ' del archivo CSV: El tipo de teléfono debe ser "Directo", "Particular", "Celular" o "Conmutador". Valor actual: ' . $tipos[$i]);
                }
                if(!in_array($estatuses[$i], ['Público', 'Privado'])){
                    throw new \Exception('Error en la fila ' . $i+1 . ' del archivo CSV: El estatus del teléfono debe ser "Público" o "Privado". Valor actual: ' . $estatuses[$i]);
                    throw new \Exception('Error en la fila ' . $cont . ' del archivo CSV: El estatus del teléfono debe ser "Público" o "Privado". Valor actual: ' . $estatuses[$i]);
                }
                if(!is_string($exts[$i])){
                    throw new \Exception('Error en la fila ' . $i+1 . ' del archivo CSV: La extensión del teléfono debe ser una cadena de texto. Valor actual: ' . $exts[$i]);
                    throw new \Exception('Error en la fila ' . $cont . ' del archivo CSV: La extensión del teléfono debe ser una cadena de texto. Valor actual: ' . $exts[$i]);
                }
                if(!is_string($observaciones[$i])){
                    throw new \Exception('Error en la fila ' . $i+1 . ' del archivo CSV: Las observaciones del teléfono deben ser una cadena de texto. Valor actual: ' . $observaciones[$i]);
                    throw new \Exception('Error en la fila ' . $cont . ' del archivo CSV: Las observaciones del teléfono deben ser una cadena de texto. Valor actual: ' . $observaciones[$i]);
                }

                Telefono::create([
@@ -707,15 +708,15 @@ private function validateAndCreateTelefonos($contactoId, $numeros, $tipos, $esta
        }
    }

    private function validateAndCreateRS($contactoId, $redes_sociales, $tipos_redes_sociales)
    private function validateAndCreateRS($contactoId, $redes_sociales, $tipos_redes_sociales, $cont)
    {
        for ($i = 0; $i < count($redes_sociales); $i++) {
            if ($redes_sociales[$i] != 'null') {
                if(!filter_var($redes_sociales[$i], FILTER_VALIDATE_URL)){
                    throw new \Exception('Error en la fila ' . $i+1 . ' del archivo CSV: La red social debe ser una URL válida. Valor actual: ' . $redes_sociales[$i]);
                    throw new \Exception('Error en la fila ' . $cont . ' del archivo CSV: La red social debe ser una URL válida. Valor actual: ' . $redes_sociales[$i]);
                }
                if(!in_array($tipos_redes_sociales[$i], ['Facebook', 'Twitter', 'Instagram', 'LinkedIn', 'Página Web'])){
                    throw new \Exception('Error en la fila ' . $i+1 . ' del archivo CSV: El tipo de red social debe ser "Facebook", "Twitter", "Instagram", "LinkedIn" o "Página Web". Valor actual: ' . $tipos_redes_sociales[$i]);
                    throw new \Exception('Error en la fila ' . $cont . ' del archivo CSV: El tipo de red social debe ser "Facebook", "Twitter", "Instagram", "LinkedIn" o "Página Web". Valor actual: ' . $tipos_redes_sociales[$i]);
                }

                RedesSociales::create([
@@ -727,15 +728,15 @@ private function validateAndCreateRS($contactoId, $redes_sociales, $tipos_redes_
        }
    }

    private function validateAndCreateEmails($contactoId, $correos, $tipos_correos)
    private function validateAndCreateEmails($contactoId, $correos, $tipos_correos, $cont)
    {
        for ($i = 0; $i < count($correos); $i++) {
            if ($correos[$i] != 'null') {
                if(!filter_var($correos[$i], FILTER_VALIDATE_EMAIL)){
                    throw new \Exception('Error en la fila ' . $i+1 . ' del archivo CSV: El correo electrónico debe ser una dirección de correo válida. Valor actual: ' . $correos[$i]);
                    throw new \Exception('Error en la fila ' . $cont . ' del archivo CSV: El correo electrónico debe ser una dirección de correo válida. Valor actual: ' . $correos[$i]);
                }
                if(!in_array($tipos_correos[$i], ['Personal', 'Oficial'])){
                    throw new \Exception('Error en la fila ' . $i+1 . ' del archivo CSV: El tipo de correo electrónico debe ser "Personal" o "Oficial". Valor actual: ' . $tipos_correos[$i]);
                    throw new \Exception('Error en la fila ' . $cont . ' del archivo CSV: El tipo de correo electrónico debe ser "Personal" o "Oficial". Valor actual: ' . $tipos_correos[$i]);
                }

                CorreoContactos::create([