public function importarTerceroEmpleado() { $destinationPath = public_path() . '/imagenes/repositorio/temporal'; Excel::load($destinationPath . '/Plantilla Empleados.xlsx', function ($reader) { $datos = $reader->getActiveSheet(); $terceros = array(); $errores = array(); $fila = 5; $posTer = 0; $posErr = 0; while ($datos->getCellByColumnAndRow(0, $fila)->getValue() != '' and $datos->getCellByColumnAndRow(0, $fila)->getValue() != NULL) { // para cada registro de empleados recorremos las columnas desde la 0 hasta la 40 $terceros[$posTer]["idTercero"] = 0; $terceros[$posTer]["Compania_idCompania"] = 0; for ($columna = 0; $columna <= 40; $columna++) { // en la fila 4 del archivo de excel (oculta) estan los nombres de los campos de la tabla $campo = $datos->getCellByColumnAndRow($columna, 4)->getValue(); // si es una celda calculada, la ejecutamos, sino tomamos su valor if ($datos->getCellByColumnAndRow($columna, $fila)->getDataType() == 'f') { $terceros[$posTer][$campo] = $datos->getCellByColumnAndRow($columna, $fila)->getCalculatedValue(); } else { $terceros[$posTer][$campo] = $datos->getCellByColumnAndRow($columna, $fila)->getValue() == null ? '' : $datos->getCellByColumnAndRow($columna, $fila)->getValue(); } } // tomamos el tipo de identificacion que el usuario llena como codigo para convertirlo en id buscandolo en el modelo //***************************** // Tipo de identificacion //***************************** // si la celda esta en blanco, reportamos error de obligatoriedad if ($terceros[$posTer]["TipoIdentificacion_idTipoIdentificacion"] == '' or $terceros[$posTer]["TipoIdentificacion_idTipoIdentificacion"] == null) { $errores[$posErr]["linea"] = $fila; $errores[$posErr]["nombre"] = $terceros[$posTer]["nombreCompletoTercero"]; $errores[$posErr]["mensaje"] = 'Debe diligenciar el Tipo de identificacion'; $posErr++; } else { $consulta = \App\TipoIdentificacion::where('codigoTipoIdentificacion', '=', $terceros[$posTer]["TipoIdentificacion_idTipoIdentificacion"])->lists('idTipoIdentificacion'); // si se encuentra el id lo guardamos en el array if (isset($consulta[0])) { $terceros[$posTer]["TipoIdentificacion_idTipoIdentificacion"] = $consulta[0]; } else { $errores[$posErr]["linea"] = $fila; $errores[$posErr]["nombre"] = $terceros[$posTer]["nombreCompletoTercero"]; $errores[$posErr]["mensaje"] = 'Tipo de identificacion ' . $terceros[$posTer]["TipoIdentificacion_idTipoIdentificacion"] . ' no existe'; $posErr++; } } //***************************** // Número de documento //***************************** // si la celda esta en blanco, reportamos error de obligatoriedad if ($terceros[$posTer]["documentoTercero"] == '' or $terceros[$posTer]["documentoTercero"] == null) { $errores[$posErr]["linea"] = $fila; $errores[$posErr]["nombre"] = $terceros[$posTer]["nombreCompletoTercero"]; $errores[$posErr]["mensaje"] = 'Debe diligenciar el Número de Documento'; $posErr++; } else { //buscamos el id en el modelo correspondiente $consulta = \App\Tercero::where('Compania_idCompania', "=", \Session::get('idCompania'))->where('documentoTercero', '=', $terceros[$posTer]["documentoTercero"])->lists('idTercero'); // si se encuentra el id lo guardamos en el array if (isset($consulta[0])) { $terceros[$posTer]["idTercero"] = $consulta[0]; } } //***************************** // Primer Nombre //***************************** // si la celda esta en blanco, reportamos error de obligatoriedad if ($terceros[$posTer]["nombre1Tercero"] == '' or $terceros[$posTer]["nombre1Tercero"] == null) { $errores[$posErr]["linea"] = $fila; $errores[$posErr]["nombre"] = $terceros[$posTer]["nombreCompletoTercero"]; $errores[$posErr]["mensaje"] = 'Debe diligenciar el Primer Nombre'; $posErr++; } //***************************** // Primer Apellido //***************************** // si la celda esta en blanco, reportamos error de obligatoriedad if ($terceros[$posTer]["apellido1Tercero"] == '' or $terceros[$posTer]["apellido1Tercero"] == null) { $errores[$posErr]["linea"] = $fila; $errores[$posErr]["nombre"] = $terceros[$posTer]["nombreCompletoTercero"]; $errores[$posErr]["mensaje"] = 'Debe diligenciar el Primer Apellido'; $posErr++; } //***************************** // Nombre Completo //***************************** // si la celda esta en blanco, reportamos error de obligatoriedad if ($terceros[$posTer]["nombreCompletoTercero"] == '' or $terceros[$posTer]["nombreCompletoTercero"] == null) { $errores[$posErr]["linea"] = $fila; $errores[$posErr]["nombre"] = $terceros[$posTer]["nombreCompletoTercero"]; $errores[$posErr]["mensaje"] = 'Debe diligenciar el Nombre completo o Razon Social'; $posErr++; } //***************************** // Fecha de Creación //***************************** // si la celda esta en blanco, la llenamos con la fecha actual if ($terceros[$posTer]["fechaCreacionTercero"] == '' or $terceros[$posTer]["fechaCreacionTercero"] == null) { $terceros[$posTer]["fechaCreacionTercero"] = date("Y-m-d"); } //***************************** // Estado //***************************** // si la celda esta en blanco o no tiene una de las palabras válida, la llenamos con activo if ($terceros[$posTer]["estadoTercero"] == '' or $terceros[$posTer]["estadoTercero"] == null or $terceros[$posTer]["estadoTercero"] != 'ACTIVO' or $terceros[$posTer]["estadoTercero"] != 'INACTIVO') { $terceros[$posTer]["estadoTercero"] = 'ACTIVO'; } //***************************** // Ciudad //***************************** // si la celda esta en blanco, reportamos error de obligatoriedad if ($terceros[$posTer]["Ciudad_idCiudad"] == '' or $terceros[$posTer]["Ciudad_idCiudad"] == null) { $errores[$posErr]["linea"] = $fila; $errores[$posErr]["nombre"] = $terceros[$posTer]["nombreCompletoTercero"]; $errores[$posErr]["mensaje"] = 'Debe diligenciar el código de la ciudad'; $posErr++; } else { $consulta = \App\Ciudad::where('codigoCiudad', '=', $terceros[$posTer]["Ciudad_idCiudad"])->lists('idCiudad'); // si se encuentra el id lo guardamos en el array if (isset($consulta[0])) { $terceros[$posTer]["Ciudad_idCiudad"] = $consulta[0]; } else { $errores[$posErr]["linea"] = $fila; $errores[$posErr]["nombre"] = $terceros[$posTer]["nombreCompletoTercero"]; $errores[$posErr]["mensaje"] = 'Código de Ciudad ' . $terceros[$posTer]["Ciudad_idCiudad"] . ' no existe'; $posErr++; } } //***************************** // Cargo //***************************** // si la celda esta en blanco, reportamos error de obligatoriedad if ($terceros[$posTer]["Cargo_idCargo"] == '' or $terceros[$posTer]["Cargo_idCargo"] == null) { $errores[$posErr]["linea"] = $fila; $errores[$posErr]["nombre"] = $terceros[$posTer]["nombreCompletoTercero"]; $errores[$posErr]["mensaje"] = 'Debe diligenciar el código del Cargo'; $posErr++; } else { $consulta = \App\Cargo::where('Compania_idCompania', "=", \Session::get('idCompania'))->where('codigoCargo', '=', $terceros[$posTer]["Cargo_idCargo"])->lists('idCargo'); // si se encuentra el id lo guardamos en el array if (isset($consulta[0])) { $terceros[$posTer]["Cargo_idCargo"] = $consulta[0]; } else { $errores[$posErr]["linea"] = $fila; $errores[$posErr]["nombre"] = $terceros[$posTer]["nombreCompletoTercero"]; $errores[$posErr]["mensaje"] = 'Código de Cargo ' . $terceros[$posTer]["Cargo_idCargo"] . ' no existe'; $posErr++; } } //***************************** // Frecuencia de Medicion Licor //***************************** // si la celda esta en blanco, reportamos error de obligatoriedad if ($terceros[$posTer]["consumeLicorTerceroInformacion"] == 'SI') { if ($terceros[$posTer]["FrecuenciaMedicion_idConsumeLicor"] == '' or $terceros[$posTer]["FrecuenciaMedicion_idConsumeLicor"] == null) { $errores[$posErr]["linea"] = $fila; $errores[$posErr]["nombre"] = $terceros[$posTer]["nombreCompletoTercero"]; $errores[$posErr]["mensaje"] = 'Debe diligenciar el código de Frecuencia de Consumo de Licor'; $posErr++; } else { $consulta = \App\Cargo::where('codigoCargo', '=', $terceros[$posTer]["FrecuenciaMedicion_idConsumeLicor"])->lists('idCargo'); // si se encuentra el id lo guardamos en el array if (isset($consulta[0])) { $terceros[$posTer]["FrecuenciaMedicion_idConsumeLicor"] = $consulta[0]; } else { $errores[$posErr]["linea"] = $fila; $errores[$posErr]["nombre"] = $terceros[$posTer]["nombreCompletoTercero"]; $errores[$posErr]["mensaje"] = 'Código de Frecuencia de Consumo de Licor ' . $terceros[$posTer]["FrecuenciaMedicion_idConsumeLicor"] . ' no existe'; $posErr++; } } } $posTer++; $fila++; } $totalErrores = count($errores); if ($totalErrores > 0) { $mensaje = '<table cellspacing="0" cellpadding="1" style="width:100%;">' . '<tr>' . '<td colspan="3">' . '<h3>Informe de inconsistencias en Importacion de Empleados</h3>' . '</td>' . '</tr>' . '<tr>' . '<td >No. Línea</td>' . '<td >Nombre</td>' . '<td >Mensaje</td>' . '</tr>'; for ($regErr = 0; $regErr < $totalErrores; $regErr++) { $mensaje .= '<tr>' . '<td >' . $errores[$regErr]["linea"] . '</td>' . '<td >' . $errores[$regErr]["nombre"] . '</td>' . '<td >' . $errores[$regErr]["mensaje"] . '</td>' . '</tr>'; } $mensaje .= '</table>'; echo json_encode(array(false, $mensaje)); } else { // recorremos el array recibido para insertar o actualizar cada registro for ($reg = 0; $reg < count($terceros); $reg++) { $indice = array('idTercero' => $terceros[$reg]["idTercero"]); $data = array('TipoIdentificacion_idTipoIdentificacion' => $terceros[$reg]['TipoIdentificacion_idTipoIdentificacion'], 'documentoTercero' => $terceros[$reg]['documentoTercero'], 'nombre1Tercero' => $terceros[$reg]['nombre1Tercero'], 'nombre2Tercero' => $terceros[$reg]['nombre2Tercero'], 'apellido1Tercero' => $terceros[$reg]['apellido1Tercero'], 'apellido2Tercero' => $terceros[$reg]['apellido2Tercero'], 'nombreCompletoTercero' => $terceros[$reg]['nombreCompletoTercero'], 'fechaCreacionTercero' => $terceros[$reg]['fechaCreacionTercero'], 'estadoTercero' => $terceros[$reg]['estadoTercero'], 'imagenTercero' => $terceros[$reg]['imagenTercero'], 'tipoTercero' => $terceros[$reg]['tipoTercero'], 'direccionTercero' => $terceros[$reg]['direccionTercero'], 'Ciudad_idCiudad' => $terceros[$reg]['Ciudad_idCiudad'], 'telefonoTercero' => $terceros[$reg]['telefonoTercero'], 'faxTercero' => $terceros[$reg]['faxTercero'], 'movil1Tercero' => $terceros[$reg]['movil1Tercero'], 'movil2Tercero' => $terceros[$reg]['movil2Tercero'], 'sexoTercero' => $terceros[$reg]['sexoTercero'], 'fechaNacimientoTercero' => $terceros[$reg]['fechaNacimientoTercero'], 'correoElectronicoTercero' => $terceros[$reg]['correoElectronicoTercero'], 'paginaWebTercero' => $terceros[$reg]['paginaWebTercero'], 'Cargo_idCargo' => $terceros[$reg]['Cargo_idCargo'], 'Compania_idCompania' => \Session::get("idCompania")); $tercero = \App\Tercero::updateOrCreate($indice, $data); if ($terceros[$reg]["idTercero"] == 0) { $tercero = \App\Tercero::All()->last(); $idtercero = $tercero->idTercero; } else { $idtercero = $terceros[$reg]["idTercero"]; } $indice = array('idTerceroInformacion' => 0); $data = array('Tercero_idTercero' => $idtercero, 'fechaIngresoTerceroInformacion' => $terceros[$reg]['fechaIngresoTerceroInformacion'], 'fechaRetiroTerceroInformacion' => $terceros[$reg]['fechaRetiroTerceroInformacion'], 'tipoContratoTerceroInformacion' => $terceros[$reg]['tipoContratoTerceroInformacion'], 'aniosExperienciaTerceroInformacion' => $terceros[$reg]['aniosExperienciaTerceroInformacion'], 'educacionTerceroInformacion' => $terceros[$reg]['educacionTerceroInformacion'], 'experienciaTerceroInformacion' => $terceros[$reg]['experienciaTerceroInformacion'], 'formacionTerceroInformacion' => $terceros[$reg]['formacionTerceroInformacion'], 'estadoCivilTerceroInformacion' => $terceros[$reg]['estadoCivilTerceroInformacion'], 'numeroHijosTerceroInformacion' => $terceros[$reg]['numeroHijosTerceroInformacion'], 'composicionFamiliarTerceroInformacion' => $terceros[$reg]['composicionFamiliarTerceroInformacion'], 'estratoSocialTerceroInformacion' => $terceros[$reg]['estratoSocialTerceroInformacion'], 'tipoViviendaTerceroInformacion' => $terceros[$reg]['tipoViviendaTerceroInformacion'], 'tipoTransporteTerceroInformacion' => $terceros[$reg]['tipoTransporteTerceroInformacion'], 'HobbyTerceroInformacion' => $terceros[$reg]['HobbyTerceroInformacion'], 'actividadFisicaTerceroInformacion' => $terceros[$reg]['actividadFisicaTerceroInformacion'], 'consumeLicorTerceroInformacion' => $terceros[$reg]['consumeLicorTerceroInformacion'], 'FrecuenciaMedicion_idConsumeLicor' => $terceros[$reg]['FrecuenciaMedicion_idConsumeLicor'] == '' or $terceros[$reg]['FrecuenciaMedicion_idConsumeLicor'] == 0 ? null : $terceros[$reg]['FrecuenciaMedicion_idConsumeLicor'], 'consumeCigarrilloTerceroInformacion' => $terceros[$reg]['consumeCigarrilloTerceroInformacion']); $tercero = \App\TerceroInformacion::updateOrCreate($indice, $data); } echo json_encode(array(true, 'Importacion Exitosa, por favor verifique')); } }); unlink($destinationPath . '/Plantilla Empleados.xlsx'); }