Example #1
0
        private static void InsertarDatos(SqlTransaction trx, SqlConnection cnn,
                                          DateTime fecha, List <PagoDiarioTdp> lista, StringBuilder log)
        {
            PagoDiarioTdp pagoDiarioTdp = lista.FirstOrDefault();

            var procesoPagoDiario = new ProcesoPagoDiario();

            procesoPagoDiario.IncentivoId       = pagoDiarioTdp.NumeroIncentivoTdp;
            procesoPagoDiario.Fecha             = fecha;
            procesoPagoDiario.FechaHoraCreacion = DateTime.Now;


            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Transaction = trx;
                cmd.Connection  = cnn;
                cmd.CommandText = "insert into ProcesoPagaDiario(Fecha, FechaHoraCreacion, IncentivoId) values (@Fecha, @FechaHoraCreacion, @IncentivoId); select SCOPE_IDENTITY();";
                cmd.Parameters.Add("@Fecha", SqlDbType.DateTime).Value             = procesoPagoDiario.Fecha;
                cmd.Parameters.Add("@FechaHoraCreacion", SqlDbType.DateTime).Value = procesoPagoDiario.FechaHoraCreacion;
                cmd.Parameters.Add("@IncentivoId", SqlDbType.Int).Value            = procesoPagoDiario.IncentivoId;

                procesoPagoDiario.ProcesoPagoDiarioId = Convert.ToInt32(cmd.ExecuteScalar());
            }
            lista.ForEach(x => x.ProcesoPagoDiarioId = procesoPagoDiario.ProcesoPagoDiarioId);
            var tabla = ConvertirADataTable(lista);

            using (SqlBulkCopy sbc = new SqlBulkCopy(cnn, SqlBulkCopyOptions.Default, trx))
            {
                sbc.BulkCopyTimeout      = 200000;
                sbc.DestinationTableName = "PagaDiarioTDP";
                sbc.WriteToServer(tabla);

                log.AppendLine("Registros insertados a tabla PagaDiarioTDP: " + tabla.Rows.Count);
            }
        }
Example #2
0
        private static List <PagoDiarioTdp> ValidarArchivo(string rutaArchivo, StringBuilder log)
        {
            List <PagoDiarioTdp> listaPagoDiario = new List <PagoDiarioTdp>();
            StringBuilder        error           = new StringBuilder();

            try
            {
                int numeroLinea = 1,
                    cabIdentificarIncetivo,
                    identificadorIncetivo;
                string lineaCabecera,
                       linea,
                       cabCodigoDistribuidor,
                       cabDescripcionIncentivo;
                bool          exito;
                DateTime      cabFechaIncioIncentivo, cabFechaFinIncentivo;
                decimal       monto;
                PagoDiarioTdp pagoDiario;

                if (!File.Exists(rutaArchivo))
                {
                    log.AppendLine("Archivo no existe " + rutaArchivo);
                    return(null);
                }

                log.AppendLine("Inicio validacion archivo: " + rutaArchivo);
                using (StreamReader sr = new StreamReader(rutaArchivo))
                {
                    lineaCabecera = sr.ReadLine();
                    lineaCabecera = lineaCabecera.Trim();
                    string[] cabeceras = lineaCabecera.Split(Constantes.CARACTER_SEPARACION);
                    exito = true;

                    if (cabeceras.Length != Constantes.NUMERO_CAMPOS_CABECERA)
                    {
                        error.Append(string.Format(Constantes.MENSAJE_ERROR_NUMERO_CAMPOS_INCORRECTO,
                                                   numeroLinea, Constantes.NUMERO_CAMPOS_CABECERA));
                        exito = false;
                    }

                    if (exito)
                    {
                        cabCodigoDistribuidor = cabeceras[Constantes.INDICE_CABECERA_CODIGO_DISTRIBUIDOR];
                        if (string.IsNullOrWhiteSpace(cabCodigoDistribuidor))
                        {
                            error.Append(string.Format(Constantes.MENSAJE_ERROR_CAMPO_VACIO,
                                                       Constantes.NOMBRE_CABECERA_CODIGO_DISTRIBUIDOR));
                        }

                        if (!int.TryParse(cabeceras[Constantes.INDICE_CABECERA_IDENTIFICADOR_INCENTIVO],
                                          out cabIdentificarIncetivo))
                        {
                            error.Append(string.Format(Constantes.MENSAJE_ERROR_CAMPO_FORMATO,
                                                       Constantes.NOMBRE_CABECERA_IDENTIFICADOR_INCENTIVO));
                        }

                        cabDescripcionIncentivo = cabeceras[Constantes.INDICE_CABECERA_DESCRIPCION_INCENTIVO];
                        if (string.IsNullOrWhiteSpace(cabDescripcionIncentivo))
                        {
                            error.Append(string.Format(Constantes.MENSAJE_ERROR_CAMPO_VACIO,
                                                       Constantes.NOMBRE_CABECERA_DESCRIPCION_INCENTIVO));
                        }

                        if (!DateTime.TryParse(cabeceras[Constantes.INDICE_CABECERA_FECHA_INICIO_INCENTIVO],
                                               out cabFechaIncioIncentivo))
                        {
                            //error.Append(string.Format(Constantes.MENSAJE_ERROR_CAMPO_FORMATO,
                            //    Constantes.NOMBRE_CABECERA_FECHA_INICIO_INCENTIVO));
                        }

                        if (!DateTime.TryParse(cabeceras[Constantes.INDICE_CABECERA_FECHA_FIN_INCENTIVO],
                                               out cabFechaFinIncentivo))
                        {
                            //error.Append(string.Format(Constantes.MENSAJE_ERROR_CAMPO_FORMATO,
                            //    Constantes.NOMBRE_CABECERA_FECHA_FIN_INCENTIVO));
                        }
                    }

                    while (!sr.EndOfStream)
                    {
                        numeroLinea++;
                        exito = true;

                        linea = sr.ReadLine();
                        linea = linea.Trim();
                        string[] campos = linea.Split(Constantes.CARACTER_SEPARACION);
                        if (campos.Length != Constantes.NUMERO_CAMPOS)
                        {
                            error.Append(string.Format(Constantes.MENSAJE_ERROR_NUMERO_CAMPOS_INCORRECTO,
                                                       numeroLinea, Constantes.NUMERO_CAMPOS));
                            exito = false;
                            continue;
                        }

                        pagoDiario = new PagoDiarioTdp();

                        if (!int.TryParse(campos[Constantes.INDICE_CAMPO_IDENTIFICADOR_INCENTIVO],
                                          out identificadorIncetivo))
                        {
                            error.Append(string.Format(Constantes.MENSAJE_ERROR_CAMPO_FORMATO,
                                                       Constantes.NOMBRE_CAMPO_IDENTIFICADOR_INCENTIVO));
                            exito = false;
                        }
                        pagoDiario.NumeroIncentivoTdp = identificadorIncetivo;

                        pagoDiario.DistribuidorTdp = campos[Constantes.INDICE_CAMPO_CODIGO_DISTRIBUIDOR];
                        if (string.IsNullOrWhiteSpace(pagoDiario.DistribuidorTdp))
                        {
                            error.Append(string.Format(Constantes.MENSAJE_ERROR_CAMPO_VACIO,
                                                       Constantes.NOMBRE_CAMPO_CODIGO_DISTRIBUIDOR));
                            exito = false;
                        }

                        pagoDiario.CodigoPdvTdp = campos[Constantes.INDICE_CAMPO_CODIGO_PDV];
                        if (string.IsNullOrWhiteSpace(pagoDiario.CodigoPdvTdp))
                        {
                            error.Append(string.Format(Constantes.MENSAJE_ERROR_CAMPO_VACIO,
                                                       Constantes.NOMBRE_CAMPO_CODIGO_PDV));
                            exito = false;
                        }

                        pagoDiario.NumeroCelular = campos[Constantes.INDICE_CAMPO_CODIGO_CELULAR];
                        if (string.IsNullOrWhiteSpace(pagoDiario.NumeroCelular))
                        {
                            error.Append(string.Format(Constantes.MENSAJE_ERROR_CAMPO_VACIO,
                                                       Constantes.NOMBRE_CAMPO_CODIGO_CELULAR));
                            exito = false;
                        }

                        if (!decimal.TryParse(campos[Constantes.INDICE_CAMPO_MONTO],
                                              out monto))
                        {
                            error.Append(string.Format(Constantes.MENSAJE_ERROR_CAMPO_FORMATO,
                                                       Constantes.NOMBRE_CAMPO_MONTO));
                            exito = false;
                        }
                        pagoDiario.Monto = monto;

                        if (exito)
                        {
                            listaPagoDiario.Add(pagoDiario);
                        }
                    }
                    log.AppendLine("Filas procesadas: " + numeroLinea);
                }
                log.AppendLine("Fin validacion archivo:" + rutaArchivo);
            }
            catch (Exception)
            {
                log.AppendLine("Error en ValidarArchivo");
            }

            if (error.Length > 0)
            {
                string rutaError = ConfigurationManager.AppSettings["rutaErrores"];
                if (Directory.Exists(rutaError))
                {
                    string archivoError = Path.Combine(rutaError, Path.GetFileNameWithoutExtension(rutaArchivo) + "_error.csv");
                    log.AppendLine("Hubo un error de validación en archivo y se encuentra en la siguiente dirección: " + archivoError);
                    log.AppendLine("");
                    File.WriteAllText(archivoError, error.ToString());
                }
                return(null);
            }

            return(listaPagoDiario);
        }