Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }