示例#1
0
        public static List <NovedadCaratulada> Novedades_Caratuladas_Traer(ConsultaBatch.enum_ConsultaBatch_NombreConsulta nombreConsulta,
                                                                           long idPrestador, DateTime?Fecha_Recepcion_desde, DateTime?Fecha_Recepcion_hasta, enum_EstadoCaratulacion?idEstado,
                                                                           int conErrores, long?id_Beneficiario,
                                                                           bool generaArchivo, bool generadoAdmin, out string rutaArchivoSal)
        {
            string rutaArchivo   = string.Empty;
            string nombreArchivo = string.Empty;

            rutaArchivoSal = string.Empty;
            string        msgRta        = string.Empty;
            ConsultaBatch consultaBatch = new ConsultaBatch();

            consultaBatch.IDPrestador            = idPrestador;
            consultaBatch.NombreConsulta         = nombreConsulta;
            consultaBatch.NroBeneficio           = id_Beneficiario.HasValue ? id_Beneficiario.Value : 0;
            consultaBatch.FechaDesde             = Fecha_Recepcion_desde;
            consultaBatch.FechaHasta             = Fecha_Recepcion_hasta;
            consultaBatch.GeneradoAdmin          = generadoAdmin;
            consultaBatch.IdEstado_Documentacion = (int?)idEstado;

            try
            {
                if (generaArchivo == true)
                {
                    msgRta = ConsultasBatchDAO.ExisteConsulta(consultaBatch);
                    if (!string.IsNullOrEmpty(msgRta))
                    {
                        throw new ApplicationException("MSG_ERROR" + msgRta + "FIN_MSG_ERROR");
                    }
                }

                List <NovedadCaratulada> listNovedades = Traer_Caratulacion(idPrestador, Fecha_Recepcion_desde, Fecha_Recepcion_hasta, conErrores, id_Beneficiario, (int?)idEstado);

                if (listNovedades.Count > 0 && generaArchivo)
                {
                    int maxCantidad = Settings.MaxCantidadRegistros();

                    if (listNovedades.Count >= maxCantidad || generaArchivo)
                    {
                        nombreArchivo  = Utilidades.GeneraNombreArchivo(nombreConsulta.ToString(), idPrestador, out rutaArchivo);
                        rutaArchivoSal = Path.Combine(rutaArchivo, nombreArchivo);
                        StreamWriter sw        = new StreamWriter(rutaArchivoSal, false, Encoding.UTF8);
                        string       separador = Settings.DelimitadorCampo();

                        foreach (NovedadCaratulada oNovedad in listNovedades)
                        {
                            StringBuilder linea = new StringBuilder();

                            linea.Append(oNovedad.NroExpediente.ToString() + separador);
                            linea.Append(oNovedad.novedad.IdNovedad.ToString() + separador);
                            linea.Append(oNovedad.FInicioAfjp.ToString() + separador);
                            linea.Append(oNovedad.novedad.UnConceptoLiquidacion.CodConceptoLiq.ToString() + separador);
                            linea.Append(oNovedad.novedad.UnBeneficiario.IdBeneficiario.ToString() + separador);
                            linea.Append(oNovedad.novedad.UnBeneficiario.ApellidoNombre.ToString() + separador);
                            linea.Append(oNovedad.novedad.FechaNovedad.ToString() + separador);
                            linea.Append(oNovedad.Error.ToString() + separador);
                            linea.Append(oNovedad.idEstadoCaratulacion.ToString());

                            sw.WriteLine(linea.ToString());
                        }
                        sw.Close();

                        Utilidades.ComprimirArchivo(rutaArchivo, nombreArchivo);
                        Utilidades.BorrarArchivo(rutaArchivoSal);
                        nombreArchivo = nombreArchivo + ".zip";

                        consultaBatch.OpcionBusqueda   = byte.Parse(conErrores.ToString());
                        consultaBatch.RutaArchGenerado = rutaArchivo;
                        consultaBatch.NomArchGenerado  = nombreArchivo;
                        consultaBatch.FechaGenera      = DateTime.Now;
                        consultaBatch.Vigente          = true;

                        //  conErrores.HasValue? conErrores.Value ? 1 : 0 : 2 --> el valor=2 es para cuando seleccione todos en el combo 'Con errores'
                        msgRta = ConsultasBatchDAO.AltaNuevaConsulta(consultaBatch);
                        if (!string.IsNullOrEmpty(msgRta))
                        {
                            msgRta = "MSG_ERROR" + msgRta + "FIN_MSG_ERROR";
                            throw new ApplicationException(msgRta);
                        }

                        /* Se instacia el objeto para que no muestre los
                         * registros y pueda ver solo el archivo generado. */
                        listNovedades = new List <NovedadCaratulada>();
                    }
                }

                return(listNovedades);
            }
            catch (SqlException errsql)
            {
                if (errsql.Number == -2)
                {
                    // timeout
                    log.Error(string.Format("{0}->{1}-> Error:{2}->{3}", DateTime.Now, System.Reflection.MethodBase.GetCurrentMethod(), errsql.Source, errsql.Message));
                    nombreArchivo = Utilidades.GeneraNombreArchivo(nombreConsulta.ToString(), idPrestador, out rutaArchivo);
                    consultaBatch.OpcionBusqueda   = byte.Parse(conErrores.ToString());
                    consultaBatch.NomArchGenerado  = nombreArchivo;
                    consultaBatch.RutaArchGenerado = rutaArchivo;
                    consultaBatch.FechaGenera      = DateTime.MinValue;
                    consultaBatch.Vigente          = false;

                    msgRta = ConsultasBatchDAO.AltaNuevaConsulta(consultaBatch);

                    throw new ApplicationException("MSG_ERROR Generando el archivo. Reingrese a la consulta en unos minutos.FIN_MSG_ERROR");
                }
                else
                {
                    throw errsql;
                }
            }
            catch (ApplicationException apperr)
            {
                throw new ApplicationException(apperr.Message);
            }
            catch (Exception ex)
            {
                log.Error(string.Format("{0}->{1}-> Error:{2}->{3}", DateTime.Now, System.Reflection.MethodBase.GetCurrentMethod(), ex.Source, ex.Message));
                throw ex;
            }
        }