X-Git-Url: https://git.llucax.com/z.facultad/75.10/miklolife.git/blobdiff_plain/5dcdc142187069476c648c3ee2dbb1a00aaf202e..HEAD:/demo/src/Reportes/ConsumoAfiliadosReport.cs diff --git a/demo/src/Reportes/ConsumoAfiliadosReport.cs b/demo/src/Reportes/ConsumoAfiliadosReport.cs index 83e278b..945a246 100644 --- a/demo/src/Reportes/ConsumoAfiliadosReport.cs +++ b/demo/src/Reportes/ConsumoAfiliadosReport.cs @@ -1,4 +1,12 @@ 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 { @@ -7,8 +15,208 @@ namespace Reportes /// public class ConsumoAfiliadosReport { + #region Constructores + public ConsumoAfiliadosReport() { + XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null); + xmlDoc.AppendChild(xmlDeclaration); + + XmlElement root = this.xmlDoc.CreateElement( "reporteConsumo" ); + root.SetAttribute( "fechaGeneracion", DateTime.Now.ToString( "yyyy-MM-dd" ) ); + + root.AppendChild( xmlDoc.CreateElement( "lineas" ) ); + + xmlDoc.AppendChild( root ); + } + + #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 + + 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 ) + { + this.db = com.db4o.Db4o.openFile("os.yap"); + + ArrayList al = new ArrayList(); + + al = this.ObjectSetToArrayList( db.get( new AutorizacionManual(codigo) ) ); + Autorizacion a = ( (al.Count == 0)? null : al[0] ) as AutorizacionManual; + + if ( a == null ) + { + al = this.ObjectSetToArrayList( db.get( new AutorizacionAutomatica(codigo) ) ); + a = ( (al.Count == 0)? null : al[0] ) as AutorizacionAutomatica; + } + + this.db.close(); + this.db = null; + + return a; + } + + #endregion Métodos Privados + + #region DB + private com.db4o.ObjectContainer db = null; + + private ArrayList ObjectSetToArrayList (ObjectSet result) + { + ArrayList lst = new ArrayList (); + Object s; + if (result == null) + return lst; + + while ((s = result.next ()) != null) + { + lst.Add (s); + } + return lst; + } + + #endregion DB + + } }