Loading app/Http/Controllers/ContactoController.php +98 −4 Original line number Diff line number Diff line Loading @@ -15,7 +15,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Str; use Illuminate\Support\Facades\Storage; use Maatwebsite\Excel\Facades\Excel; use Illuminate\Support\Facades\Log; class ContactoController extends Controller { Loading Loading @@ -446,14 +446,108 @@ private function correoDataPresent($correosData) return false; } public function viewUpload() { return view('adminGen.contactos.upload'); } public function upload(Request $request) { $request->validate([ 'excel_file' => 'required|mimes:xlsx,xls', 'csv_file' => 'required|mimes:csv,txt', ]); $path = $request->file('csv_file')->getRealPath(); $content = file_get_contents($path); $content = str_replace("\xEF\xBB\xBF", '', $content); $data = array_map('str_getcsv', explode("\n", $content)); $header = array_shift($data); foreach ($data as $row) { if (count($header) !== count($row)) { continue; } $row = array_combine($header, $row); $contacto = Contacto::create([ 'nombre' => $row['nombre'], 'ap_paterno' => $row['ap_paterno'], 'ap_materno' => $row['ap_materno'], 'cargo_desc' => $row['cargo_desc'], 'mes_cump' => $row['mes_cump'], 'dia_cump' => $row['dia_cump'], 'domicilio_oficial' => $row['domicilio_oficial'], 'codigo_postal' => $row['codigo_postal'], 'localidad_oficial' => $row['localidad_oficial'], 'municipio_oficial' => $row['municipio_oficial'], 'estado' => $row['estado'], 'pais' => $row['pais'], 'domicilio_par' => $row['domicilio_par'], 'codigo_postal_par' => $row['codigo_postal_par'], 'localidad_par' => $row['localidad_par'], 'municipio_par' => $row['municipio_par'], 'estado_par' => $row['estado_par'], 'pais_par' => $row['pais_par'], 'finado' => $row['finado'], 'foto_perfil' => 'assets/images/profile-icon.webp' ]); Excel::import(new ContactosImport, $request->file('excel_file')); // 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_red_social' => $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_correo_electronico' => $tipos_correos[$i], ]); } } } return redirect()->back()->with('success', 'Archivo Excel subido y procesado correctamente.'); return redirect()->back()->with('success', 'Archivo CSV subido y procesado correctamente.'); } } Loading
app/Http/Controllers/ContactoController.php +98 −4 Original line number Diff line number Diff line Loading @@ -15,7 +15,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Str; use Illuminate\Support\Facades\Storage; use Maatwebsite\Excel\Facades\Excel; use Illuminate\Support\Facades\Log; class ContactoController extends Controller { Loading Loading @@ -446,14 +446,108 @@ private function correoDataPresent($correosData) return false; } public function viewUpload() { return view('adminGen.contactos.upload'); } public function upload(Request $request) { $request->validate([ 'excel_file' => 'required|mimes:xlsx,xls', 'csv_file' => 'required|mimes:csv,txt', ]); $path = $request->file('csv_file')->getRealPath(); $content = file_get_contents($path); $content = str_replace("\xEF\xBB\xBF", '', $content); $data = array_map('str_getcsv', explode("\n", $content)); $header = array_shift($data); foreach ($data as $row) { if (count($header) !== count($row)) { continue; } $row = array_combine($header, $row); $contacto = Contacto::create([ 'nombre' => $row['nombre'], 'ap_paterno' => $row['ap_paterno'], 'ap_materno' => $row['ap_materno'], 'cargo_desc' => $row['cargo_desc'], 'mes_cump' => $row['mes_cump'], 'dia_cump' => $row['dia_cump'], 'domicilio_oficial' => $row['domicilio_oficial'], 'codigo_postal' => $row['codigo_postal'], 'localidad_oficial' => $row['localidad_oficial'], 'municipio_oficial' => $row['municipio_oficial'], 'estado' => $row['estado'], 'pais' => $row['pais'], 'domicilio_par' => $row['domicilio_par'], 'codigo_postal_par' => $row['codigo_postal_par'], 'localidad_par' => $row['localidad_par'], 'municipio_par' => $row['municipio_par'], 'estado_par' => $row['estado_par'], 'pais_par' => $row['pais_par'], 'finado' => $row['finado'], 'foto_perfil' => 'assets/images/profile-icon.webp' ]); Excel::import(new ContactosImport, $request->file('excel_file')); // 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_red_social' => $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_correo_electronico' => $tipos_correos[$i], ]); } } } return redirect()->back()->with('success', 'Archivo Excel subido y procesado correctamente.'); return redirect()->back()->with('success', 'Archivo CSV subido y procesado correctamente.'); } }