private TramaMO MapearCadenaHaciaModelo(String nombreArchivo, String rutaArchivo, String cadenaParametros) { TramaMO tramaMO = null; try { tramaMO = new TramaMO(); String carpetaDestino = ConfigurationManager.AppSettings[Constante.CARPETA_CORRECTO]; String[] parametros = cadenaParametros.Split(Constante.AMPERSON); tramaMO.IdBanco = parametros[Constante._0]; tramaMO.Usuario = parametros[Constante._1]; tramaMO.TipoOrden = parametros[Constante._2]; tramaMO.IdSociedad = parametros[Constante._3]; tramaMO.IdSap = parametros[Constante._4]; tramaMO.Anio = parametros[Constante._5]; tramaMO.MomentoOrden = parametros[Constante._6]; tramaMO.Propietario = parametros[Constante._7]; tramaMO.NombreArchivo = nombreArchivo; tramaMO.RutaArchivo = String.Format("{0}{1}", carpetaDestino, tramaMO.NombreArchivo); tramaMO.Parametros = cadenaParametros; } catch (Exception e) { throw e; } return(tramaMO); }
public async Task <RespuestaMO> ProcesarTrama(CancellationToken cancelToken) { RespuestaMO respuestaMO = new RespuestaMO(); Int32 contador = 0; String rutaOrigen = String.Empty, nombreArchivo = String.Empty; try { String[] listaArchivosPendientes = Directory.GetFiles(_carpetaOrigen, Constante.PATRON_TXT, SearchOption.TopDirectoryOnly); if (listaArchivosPendientes.Length == Constante._0) { String mensaje = String.Format("{0} | {1}", Constante.MENSAJE_CARPETA_ORIGEN_VACIA, _carpetaOrigen); await _bitacora.RegistrarEventoAsync(cancelToken, Constante.BITACORA_NOTIFICACION, Constante.PROYECTO_NEGOCIO, Constante.CLASE_TRAMA_NE, Constante.METODO_PROCESAR_TRAMA_ASYNC, String.Empty, mensaje); respuestaMO.Codigo = Constante.CODIGO_OK; respuestaMO.Mensaje = mensaje; TramaNE.esProcesado = true; } else { foreach (String archivo in listaArchivosPendientes) { rutaOrigen = archivo; String mensajeValidacion = _util.ValidarNombreArchivo(archivo, out nombreArchivo); respuestaMO.NombreArchivo = nombreArchivo; if (mensajeValidacion != String.Empty) { await _util.MoverArchivos(cancelToken, archivo, _carpetaIncorrecto, nombreArchivo); await _bitacora.RegistrarEventoAsync(cancelToken, Constante.BITACORA_NOTIFICACION, Constante.PROYECTO_NEGOCIO, Constante.CLASE_TRAMA_NE, Constante.METODO_PROCESAR_TRAMA_ASYNC, nombreArchivo, mensajeValidacion); } else { String nombreArchivoConExtension = archivo.Substring(archivo.LastIndexOf(Constante.BACK_SLASH) + 1); String nombreArchivoSinExtension = nombreArchivoConExtension.Split(Constante.DOT)[Constante._0]; String parametros = nombreArchivoSinExtension.Substring(nombreArchivoSinExtension.IndexOf(Constante.AMPERSON) + 1); nombreArchivoConExtension = String.Format("{0}{1}", nombreArchivoSinExtension.Split(Constante.AMPERSON)[Constante._0], Constante.EXTENSION_TXT); TramaMO tramaMO = MapearCadenaHaciaModelo(nombreArchivoConExtension, archivo, parametros); String cadenaXml = await _util.ConvertirCadenaHaciaXml(cancelToken, archivo, nombreArchivo); if (cadenaXml != String.Empty) { RespuestaMO respuestaMO2 = await _tramaRE.ProcesarTramaAsync(cancelToken, tramaMO, cadenaXml, nombreArchivo); Boolean esMovido = false; if (respuestaMO2 != null && respuestaMO2.Codigo == Constante.CODIGO_OK) { esMovido = await _util.MoverArchivos(cancelToken, archivo, _carpetaCorrecto, nombreArchivo); } else { respuestaMO.Mensaje = respuestaMO2.Mensaje; if (respuestaMO2.Codigo == Constante.CODIGO_ERROR) { await _util.MoverArchivos(cancelToken, archivo, _carpetaIncorrecto, nombreArchivo); } } String mensaje = esMovido == true ? Constante.MENSAJE_PROCESAR_TRAMA_ASYNC_OK : Constante.MENSAJE_PROCESAR_TRAMA_ASYNC_NO_OK; mensaje = String.Format("{0} | {1}", mensaje, respuestaMO2.Mensaje); await _bitacora.RegistrarEventoAsync(cancelToken, Constante.BITACORA_NOTIFICACION, Constante.PROYECTO_NEGOCIO, Constante.CLASE_TRAMA_NE, Constante.METODO_PROCESAR_TRAMA_ASYNC, nombreArchivo, mensaje); } } contador++; } if (contador == listaArchivosPendientes.Length) { respuestaMO.Mensaje = String.Format("{0} | {1}", Constante.MENSAJE_PROCESAR_TRAMAS_ASYNC_OK, contador); TramaNE.esProcesado = true; } } } catch (Exception e) { TramaNE.esProcesado = true; await _util.MoverArchivos(cancelToken, rutaOrigen, _carpetaIncorrecto, nombreArchivo); await _bitacora.RegistrarEventoAsync(cancelToken, Constante.BITACORA_ERROR, Constante.PROYECTO_NEGOCIO, Constante.CLASE_TRAMA_NE, Constante.METODO_PROCESAR_TRAMA_ASYNC, nombreArchivo, Constante.MENSAJE_PROCESAR_TRAMA_ASYNC_NO_OK, e.Message); respuestaMO.Codigo = Constante.CODIGO_ERROR; respuestaMO.Mensaje = String.Format("{0} | {1}", nombreArchivo, e.Message); } return(respuestaMO); }
public async Task <RespuestaMO> ProcesarTramaAsync(CancellationToken cancelToken, TramaMO tramaMO, String tramaDetalle, String nombreArchivo) { RespuestaMO respuestaMO = new RespuestaMO(); try { using (_con = new SqlConnection(_conexion)) { using (_cmd = new SqlCommand(Constante.SPS_HTH_PROCESAR_TRAMA, _con)) { _cmd.CommandType = System.Data.CommandType.StoredProcedure; SqlParameter par1 = _cmd.Parameters.Add(Constante.ID_BANCO, System.Data.SqlDbType.NChar, Constante._5); par1.Direction = System.Data.ParameterDirection.Input; par1.Value = tramaMO.IdBanco; SqlParameter par2 = _cmd.Parameters.Add(Constante.USUARIO, System.Data.SqlDbType.NVarChar, Constante._20); par2.Direction = System.Data.ParameterDirection.Input; par2.Value = tramaMO.Usuario; SqlParameter par3 = _cmd.Parameters.Add(Constante.TIPO_ORDEN, System.Data.SqlDbType.NChar, Constante._3); par3.Direction = System.Data.ParameterDirection.Input; par3.Value = tramaMO.TipoOrden; SqlParameter par4 = _cmd.Parameters.Add(Constante.ID_SOCIEDAD, System.Data.SqlDbType.NChar, Constante._4); par4.Direction = System.Data.ParameterDirection.Input; par4.Value = tramaMO.IdSociedad; SqlParameter par5 = _cmd.Parameters.Add(Constante.ID_SAP, System.Data.SqlDbType.NVarChar, Constante._10); par5.Direction = System.Data.ParameterDirection.Input; par5.Value = tramaMO.IdSap; SqlParameter par6 = _cmd.Parameters.Add(Constante.ANIO, System.Data.SqlDbType.NChar, Constante._4); par6.Direction = System.Data.ParameterDirection.Input; par6.Value = tramaMO.Anio; SqlParameter par7 = _cmd.Parameters.Add(Constante.MOMENTO_ORDEN, System.Data.SqlDbType.NChar, Constante._8); par7.Direction = System.Data.ParameterDirection.Input; par7.Value = tramaMO.MomentoOrden; SqlParameter par8 = _cmd.Parameters.Add(Constante.PROPIETARIO, System.Data.SqlDbType.NVarChar, Constante._20); par8.Direction = System.Data.ParameterDirection.Input; par8.Value = tramaMO.Propietario; SqlParameter par9 = _cmd.Parameters.Add(Constante.NOMBRE_ARCHIVO, System.Data.SqlDbType.NVarChar, Constante._100); par9.Direction = System.Data.ParameterDirection.Input; par9.Value = tramaMO.NombreArchivo; SqlParameter par10 = _cmd.Parameters.Add(Constante.RUTA_ARCHIVO, System.Data.SqlDbType.NVarChar, Constante._200); par10.Direction = System.Data.ParameterDirection.Input; par10.Value = tramaMO.RutaArchivo; SqlParameter par11 = _cmd.Parameters.Add(Constante.PARAMETROS, System.Data.SqlDbType.NVarChar, Constante._100); par11.Direction = System.Data.ParameterDirection.Input; par11.Value = tramaMO.Parametros; SqlParameter par12 = _cmd.Parameters.Add(Constante.TRAMA_DETALLE, System.Data.SqlDbType.Xml); par12.Direction = System.Data.ParameterDirection.Input; par12.Value = tramaDetalle; _con.Open(); _reader = _cmd.ExecuteReader(System.Data.CommandBehavior.SingleRow); if (_reader != null && _reader.HasRows) { if (_reader.Read()) { respuestaMO.Codigo = _reader.IsDBNull(Constante._0) ? 0 : _reader.GetInt32(Constante._0); respuestaMO.Mensaje = _reader.IsDBNull(Constante._1) ? String.Empty : _reader.GetString(Constante._1); } } _reader.Close(); _con.Close(); String mensaje = respuestaMO.Codigo == Constante.CODIGO_OK ? Constante.MENSAJE_PROCESAR_TRAMA_ASYNC_OK : Constante.MENSAJE_PROCESAR_TRAMA_ASYNC_NO_OK; await _bitacora.RegistrarEventoAsync(cancelToken, Constante.BITACORA_NOTIFICACION, Constante.PROYECTO_REPOSITORIO, Constante.CLASE_TRAMA_RE, Constante.METODO_PROCESAR_TRAMA_ASYNC, nombreArchivo, mensaje); } } } catch (Exception e) { await _bitacora.RegistrarEventoAsync(cancelToken, Constante.BITACORA_ERROR, Constante.PROYECTO_REPOSITORIO, Constante.CLASE_TRAMA_RE, Constante.METODO_PROCESAR_TRAMA_ASYNC, nombreArchivo, Constante.MENSAJE_PROCESAR_TRAMA_ASYNC_NO_OK, e.Message); throw e; } return(respuestaMO); }