Ejemplo n.º 1
0
        public int LeeArchivo(string tipoArchivo, StringCollection tipoLinea, int contratoId)
        {
            var text         = LineaArchivo();
            var eContratoSis = new nContratoSis().listContratoByID(new CONTRATO_SYS()
            {
                IDE_CONTRATO = contratoId
            });

            //Consultar en tabla el estado del archivo
            //entregara 0 si no existe
            //using (var context = new DISEntities())
            //{
            //    var estadoArchivo = context.pa_file_ConsultaEstadoArchivo(NombreArchivo).FirstOrDefault();
            //    if (estadoArchivo != null) Estado = estadoArchivo.Value;
            //}
            //InsertaAuditoria(Convert.ToInt32(UsuarioModificacion), "Consulta estado archivo",
            //    "pa_file_ConsultaEstadoArchivo '" + NombreArchivo + "'", 0);

            //valor anterior = 3
            //Si el valor es menor que 2, significa 2 cosas:
            //1.- que la nomina no esta aprobada y puede ser cargado nuevos archivos.
            //2.- que no hay checklist sobre el o los cuspp de la liquidacion
            //if (Estado < 2)
            //{
            //Insertar en tabla
            //if (Estado == 1)
            //{
            //    MensageError = "Archivo ya cargado previamente";
            //}
            using (var context = new DISEntities())
            {
                var archivo = context.pa_file_InsertaReferenciaArchivo(NombreArchivo, UsuarioModificacion).FirstOrDefault();
                if (archivo != null)
                {
                    IdArchivo = archivo.Value;
                }
            }
            //InsertaAuditoria(Me.UsuarioModificacion, "Inserta Referencia Archivo", "pa_file_InsertaReferenciaArchivo '" + Me.NombreArchivo + "'", Me.idArchivo)

            for (var indexLinea = 0; indexLinea <= text.Length - 1; indexLinea++)
            {
                var caracterInicial    = Mid(text[indexLinea].Trim(), 0, 1);
                var carterInicialNumer = 0;
                if (int.TryParse(caracterInicial, out carterInicialNumer))
                {
                    caracterInicial = "*";
                }
                if (tipoLinea.Contains(caracterInicial))
                {
                    using (var context = new DISEntities())
                    {
                        if (!_reglasLineaPorTipo.ContainsKey(caracterInicial))
                        {
                            _reglasLineaPorTipo.Add(caracterInicial,
                                                    ObtieneReglaLinea(context.pa_file_ObtieneReglasArchivoPorLinea(tipoArchivo, caracterInicial, Convert.ToInt32(eContratoSis.NRO_CONTRATO))));
                        }
                    }
                    //InsertaAuditoria(Me.UsuarioModificacion, "Obtiene Regla de archivo por línea", "pa_file_ObtieneReglasArchivoPorLinea '" + tipoLinea + "', " + CaracterInicial, Me.idArchivo)
                    try
                    {
                        var propertyValues = new Dictionary <string, object>();
                        var exitoLinea     = 1;
                        //if (!caracterInicial.Equals("T"))
                        //{
                        foreach (var regla in _reglasLineaPorTipo[caracterInicial])
                        {
                            try
                            {
                                exitoLinea &= EvaluarRegla(tipoArchivo, regla, text, indexLinea, propertyValues);
                            }
                            catch (Exception ex)
                            {
                                throw ex;
                            }
                        }
                        //}
                        GrabarFilaArchivo(caracterInicial, IdArchivo, indexLinea + 1, propertyValues, contratoId, exitoLinea, tipoArchivo);
                    }
                    catch (Exception ex)
                    {
                        MensajeExcepcion = ex.Message;
                        return(0);
                    }
                }
                else
                {
                    if (text[indexLinea].Trim().Any())
                    {
                        using (var context = new DISEntities())
                        {
                            context.pa_file_InsertaHistorialCarga(IdArchivo, 451, "#", indexLinea + 1, 1, text[indexLinea].Trim().Count(), text[indexLinea], 0);
                        }
                        //InsertaAuditoria(Me.UsuarioModificacion, "Inserta Historial de CargaLogica", "pa_file_InsertaHistorialCarga 451" + ", " + "'#'" + ", " + (x + 1).ToString() + ", " + "1" + ", " + text[x].Trim()().Count().ToString() + ", '" + Me.campoActual + "', " + "0", Me.idArchivo)
                        ContadorErrores = ContadorErrores + 1;
                    }
                }
            }

            //aca se debe realizar el bolcado de archivo sin errores
            try
            {
                //Antes de traspasar el archivo si verifica que  todas las filas se hayan cargado ccorrectamente
                if (ContadorErrores > 0 && tipoArchivo != "NOMINA")
                {
                    new dPagoCargado().setAatualizarEstadoArchivo(CodigoCabecera);
                }
                ;
                //actualizar la cabecera con el archivo id de la  nomina (NOMINA)
                if (tipoArchivo == "NOMINA")
                {
                    var archivo = new nArchivo().getArchivoByNombre(new Archivo()
                    {
                        NombreArchivo = NombreArchivo
                    });
                    //new dAprobacionCa
                    archivo.ArchivoId = IdArchivo;
                    new nAprobacionCarga().actulaizarArchivoIdNomina(archivo);
                    if (ContadorErrores > 0)
                    {
                        new nNomina().actualizarEstadoFallido(IdArchivo, contratoId);
                    }
                }

                TraspasaArchivo(tipoArchivo);
                ProcesarErrores(tipoArchivo);
                ContadorErrores = ContadorErrores > 0 ? ContadorErrores : 0;
            }
            catch (Exception ex)
            {
                Observacion = ex.Message + "// TraspasaArchivo...!";
            }
            //}
            //else
            //{
            //    Observacion = "Ya está aprobado";
            //    return Estado;
            //}
            return(0);
        }