Loading app/Http/Controllers/ContactoController.php +12 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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.'); } } app/Imports/ContactosImport.php 0 → 100644 +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 Loading
app/Http/Controllers/ContactoController.php +12 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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.'); } }
app/Imports/ContactosImport.php 0 → 100644 +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