X-Git-Url: https://git.llucax.com/z.facultad/75.10/miklolife.git/blobdiff_plain/b674f20b66a5a72d55c80bb6d14bd3b673013442..e3ef49aebf88034b0185f8c8a67b5e1fe7b1241c:/demo/src/Reportes/ConsumoAfiliadosReport.cs diff --git a/demo/src/Reportes/ConsumoAfiliadosReport.cs b/demo/src/Reportes/ConsumoAfiliadosReport.cs index ddf781c..945a246 100644 --- a/demo/src/Reportes/ConsumoAfiliadosReport.cs +++ b/demo/src/Reportes/ConsumoAfiliadosReport.cs @@ -1,9 +1,11 @@ using System; using System.Collections; +using System.Configuration; using System.Xml; using Dominio.Autorizaciones; using Dominio.Afiliados; using com.db4o; +using System.IO; namespace Reportes @@ -31,18 +33,147 @@ namespace Reportes #endregion Constructores private XmlDocument xmlDoc = new XmlDocument(); + private ArrayList _listaCodigosAfiliado = new ArrayList(); #region Metodos Publicos public void AgregarInfo( Prestador p, LineaInfoPrestacionesReport lineaIp ) { + XmlElement lineas = xmlDoc.DocumentElement["lineas"]; + XmlElement elemLinea = null; + + #region Datos propios de Afiliado + if ( this._listaCodigosAfiliado.Contains(lineaIp.CodigoAfiliado) ) + { //Ya está el afiliado en el xml + elemLinea = lineas.SelectSingleNode( @"//linea[@codigoAfiliado='" + lineaIp.CodigoAfiliado.ToString().Trim() + "']" ) as XmlElement; + } + else + { + Afiliado a = this.getAfiliado( lineaIp.CodigoAfiliado ); + + //El nodo afiliado todavía no está en el xml + elemLinea = this.xmlDoc.CreateElement("linea"); + elemLinea.SetAttribute( "codigoAfiliado", lineaIp.CodigoAfiliado.ToString().Trim() ); + lineas.AppendChild( elemLinea ); + + //nombreAfiliado + XmlElement elemNombreAfiliado = this.xmlDoc.CreateElement("nombreAfiliado"); + elemNombreAfiliado.InnerText = ( (a.Nombre == null)? string.Empty : a.Nombre.Trim() ); + elemLinea.AppendChild( elemNombreAfiliado ); + + //apellidoAfiliado + XmlElement elemApellidoAfiliado = this.xmlDoc.CreateElement("apellidoAfiliado"); + elemApellidoAfiliado.InnerText = ( (a.Apellido == null)? string.Empty : a.Apellido.Trim() ); + elemLinea.AppendChild( elemApellidoAfiliado ); + + //codigoPlanAfiliado + XmlElement elemCodigoPlanAfiliado = this.xmlDoc.CreateElement("codigoPlanAfiliado"); + elemCodigoPlanAfiliado.InnerText = ( (a.PlanActual == null)? string.Empty : a.PlanActual.Codigo.ToString().Trim() ); + elemLinea.AppendChild( elemCodigoPlanAfiliado ); + + this._listaCodigosAfiliado.Add(lineaIp.CodigoAfiliado); + } + #endregion Datos propios de Afiliado + + #region Autorizacion Realizada + + //autorizacionRealizada + XmlElement elemAutorizacion = this.xmlDoc.CreateElement( "autorizacionRealizada" ); + elemAutorizacion.SetAttribute( "codigo", lineaIp.CodigoAutorizacion.ToString().Trim() ); + + //prestador + XmlElement elemPrestador = this.xmlDoc.CreateElement( "prestador" ); + XmlElement elemCuit = this.xmlDoc.CreateElement( "CUIT" ); + elemCuit.InnerText = p.Cuit.ToString().Trim(); + elemPrestador.AppendChild( elemCuit ); + XmlElement elemNombrePrestador = this.xmlDoc.CreateElement( "nombre" ); + elemNombrePrestador.InnerText = ((p.Nombre == null)? string.Empty : p.Nombre.ToString().Trim()); + elemPrestador.AppendChild( elemNombrePrestador ); + elemAutorizacion.AppendChild( elemPrestador ); + + //codigoPrestacion + XmlElement elemCodPrestacion = this.xmlDoc.CreateElement( "codigoPrestacion" ); + elemCodPrestacion.InnerText = lineaIp.CodigoPrestacion.Trim(); + elemAutorizacion.AppendChild( elemCodPrestacion ); + + //nombrePrestacion + Prestacion prestacion = this.getPrestacion( lineaIp.CodigoPrestacion ); + XmlElement elemNombrePrestacion = this.xmlDoc.CreateElement( "nombrePrestacion" ); + elemNombrePrestacion.InnerText = ( (prestacion.Nombre == null)? string.Empty : prestacion.Nombre.Trim() ); + elemAutorizacion.AppendChild( elemNombrePrestacion ); + + //fechaRealizacion + XmlElement elemFechaRealizacion = this.xmlDoc.CreateElement( "fechaRealizacion" ); + elemFechaRealizacion.InnerText = lineaIp.FechaRealizacion.ToString( "yyyy-MM-dd" ); + elemAutorizacion.AppendChild( elemFechaRealizacion ); + + //porcentajeCobertura + XmlElement elemPorcentaje = this.xmlDoc.CreateElement( "porcentajeCobertura" ); + elemPorcentaje.InnerText = lineaIp.PorcentajeCobertura.ToString().Trim(); + elemAutorizacion.AppendChild( elemPorcentaje ); + + elemLinea.AppendChild( elemAutorizacion ); + + #endregion Autorizacion Realizada + } + + public override string ToString() + { + return xmlDoc.OuterXml; + } + + public void Serializar() + { + string currentDir = Directory.GetCurrentDirectory(); + string dirPagos = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioPagos"] ); + if ( ! Directory.Exists(dirPagos) ) + { + Directory.CreateDirectory( dirPagos ); + } + + int secuencia = 0; + string baseFileName = "rc_" + DateTime.Now.ToString("yyyy-MM-dd") + "_"; + string pathName = Path.Combine( dirPagos, baseFileName + secuencia.ToString("00") + ".xml" ); + + while ( File.Exists(pathName) ) + { + secuencia += 1; + pathName = Path.Combine( dirPagos, baseFileName + secuencia.ToString("00") + ".xml"); + } + + XmlTextWriter writer = new XmlTextWriter( pathName, null ); + writer.Formatting = Formatting.Indented; + this.xmlDoc.Save(writer); } #endregion Metodos Publicos + #region Métodos Privados - #region Metodos privados + private Afiliado getAfiliado( int codigo ) + { + this.db = com.db4o.Db4o.openFile("os.yap"); + ArrayList al = this.ObjectSetToArrayList( db.get( new Afiliado( codigo ) ) ); + + Afiliado a = ( (al.Count == 0)? null : al[0] ) as Afiliado; + this.db.close(); + this.db = null; + + return a; + } + + private Prestacion getPrestacion( string codigo ) + { + this.db = com.db4o.Db4o.openFile("os.yap"); + ArrayList al = this.ObjectSetToArrayList( db.get( new Prestacion( codigo ) ) ); + + Prestacion p = ( (al.Count == 0)? null : al[0] ) as Prestacion; + this.db.close(); + this.db = null; + + return p; + } private Autorizacion getAutorizacion( int codigo ) { @@ -65,7 +196,7 @@ namespace Reportes return a; } - #endregion Metodos privados + #endregion Métodos Privados #region DB private com.db4o.ObjectContainer db = null;