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

Pendiente subida de csv

parent 6166bbd8
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Storage;
use Maatwebsite\Excel\Facades\Excel;

class ContactoController extends Controller
{
@@ -444,4 +445,15 @@ private function correoDataPresent($correosData)

        return false;
    }

    public function upload(Request $request)
    {
        $request->validate([
            'excel_file' => 'required|mimes:xlsx,xls',
        ]);

        Excel::import(new ContactosImport, $request->file('excel_file'));

        return redirect()->back()->with('success', 'Archivo Excel subido y procesado correctamente.');
    }
}
+74 −0
Original line number Diff line number Diff line
<?php
namespace App\Imports;

use App\Models\Contacto;
use App\Models\Telefono;
use App\Models\RedesSociales;
use App\Models\CorreoContactos;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\ToCollection;

class ContactosImport implements ToCollection
{
    public function model(array $row)
    {
        $contacto = Contacto::create([
            'nombre' => $row['nombre'],
            // otros campos de contacto
        ]);

        // Procesar teléfonos
        $prefijos = explode(';', $row['prefijo']);
        $ladas = explode(';', $row['lada']);
        $numeros = explode(';', $row['numero']);
        $tipos = explode(';', $row['tipo']);
        $estatuses = explode(';', $row['estatus']);
        $exts = explode(';', $row['ext']);
        $id_radios = explode(';', $row['id_radio']);
        $observaciones = explode(';', $row['observaciones']);

        for ($i = 0; $i < count($prefijos); $i++) {
            if ($prefijos[$i] != 'null' || $ladas[$i] != 'null' || $numeros[$i] != 'null') {
                Telefono::create([
                    'contacto_id' => $contacto->id,
                    'prefijo' => $prefijos[$i],
                    'lada' => $ladas[$i],
                    'numero' => $numeros[$i],
                    'tipo' => $tipos[$i],
                    'estatus' => $estatuses[$i],
                    'ext' => $exts[$i],
                    'id_radio' => $id_radios[$i],
                    'observaciones' => $observaciones[$i],
                ]);
            }
        }

        // Procesar redes sociales
        $redes_sociales = explode(';', $row['red_social']);
        $tipos_redes_sociales = explode(';', $row['tipo_red_social']);

        for ($i = 0; $i < count($redes_sociales); $i++) {
            if ($redes_sociales[$i] != 'null' || $tipos_redes_sociales[$i] != 'null') {
                RedesSociales::create([
                    'contacto_id' => $contacto->id,
                    'red_social' => $redes_sociales[$i],
                    'tipo' => $tipos_redes_sociales[$i],
                ]);
            }
        }

        // Procesar correos electrónicos
        $correos = explode(';', $row['correo_electronico']);
        $tipos_correos = explode(';', $row['tipo_correo_electronico']);

        for ($i = 0; $i < count($correos); $i++) {
            if ($correos[$i] != 'null' || $tipos_correos[$i] != 'null') {
                CorreoContactos::create([
                    'contacto_id' => $contacto->id,
                    'correo_electronico' => $correos[$i],
                    'tipo' => $tipos_correos[$i],
                ]);
            }
        }
    }
}
 No newline at end of file