public static void ImportarFicheroDeProvincias(EntornoDeTrabajo entorno, int idArchivo) { var gestorProceso = GestorDeProvincias.Gestor(entorno.contextoDelProceso, entorno.contextoDelProceso.Mapeador); var rutaFichero = GestorDocumental.DescargarArchivo(entorno.contextoDelProceso, idArchivo, entorno.ProcesoIniciadoPorLaCola); var fichero = new FicheroCsv(rutaFichero); var linea = 0; entorno.CrearTraza($"Inicio del proceso"); var trazaPrcDtm = entorno.CrearTraza($"Procesando la fila {linea}"); var trazaInfDtm = entorno.CrearTraza($"Traza informativa del proceso"); foreach (var fila in fichero) { var tran = gestorProceso.IniciarTransaccion(); try { linea++; if (fila.EnBlanco) { continue; } if (fila.Columnas != 5) { throw new Exception($"la fila {linea} solo debe tener 5 columnas"); } if (fila["A"].IsNullOrEmpty() || fila["B"].IsNullOrEmpty() || fila["C"].IsNullOrEmpty() || fila["D"].IsNullOrEmpty() || fila["E"].IsNullOrEmpty()) { throw new Exception($"El contenido de la fila {linea} debe ser: nombre de la provincia, nombre en ingles, iso de 2 iso de 3 y prefijo telefónico"); } ProcesarProvinciaLeida(entorno, gestorProceso, iso2Pais: fila["E"], nombreProvincia: fila["C"], sigla: fila["A"], codigo: fila["B"], prefijoTelefono: fila["D"], trazaInfDtm); gestorProceso.Commit(tran); } catch (Exception e) { gestorProceso.Rollback(tran); entorno.AnotarError(e); } finally { entorno.ActualizarTraza(trazaPrcDtm, $"Procesando la fila {linea}"); } } entorno.CrearTraza($"Procesadas un total de {linea} filas"); }
protected override void DespuesDePersistir(CodigoPostalDtm registro, ParametrosDeNegocio parametros) { base.DespuesDePersistir(registro, parametros); if (parametros.Operacion == enumTipoOperacion.Insertar) { //relacionar con la provincia usando los dos primeros caractéres var gestorProvincias = GestorDeProvincias.Gestor(Contexto, Contexto.Mapeador); var provinciaDtm = gestorProvincias.LeerRegistro(nameof(ProvinciaDtm.Codigo), registro.Codigo.PadLeft(5, '0').Substring(0, 2), errorSiNoHay: true, errorSiHayMasDeUno: true, traqueado: false, conBloqueo: false, aplicarJoin: false); GestorDeCpsDeUnaProvincia.CrearRelacion(Contexto, registro, provinciaDtm); //relacionar con el municipio usando lo indicado en los parámetros if (parametros.Parametros.ContainsKey(nameof(MunicipioDtm))) { var municipioDtm = (MunicipioDtm)parametros.Parametros[nameof(MunicipioDtm)]; GestorDeCpsDeUnMunicipio.CrearRelacion(Contexto, registro, municipioDtm); } } }