]> git.llucax.com Git - z.facultad/75.10/miklolife.git/blobdiff - demo/src/Reportes/ConsumoAfiliadosReport.cs
(no commit message)
[z.facultad/75.10/miklolife.git] / demo / src / Reportes / ConsumoAfiliadosReport.cs
index 83e278b4113d8c0325a96e55d34601e3f98a3be5..945a246b59eec19d648253bd1ecd66b46a95c3b5 100644 (file)
@@ -1,4 +1,12 @@
 using System;\r
+using System.Collections;\r
+using System.Configuration;\r
+using System.Xml;\r
+using Dominio.Autorizaciones;\r
+using Dominio.Afiliados;\r
+using com.db4o;\r
+using System.IO;\r
+\r
 \r
 namespace Reportes\r
 {\r
@@ -7,8 +15,208 @@ namespace Reportes
        /// </summary>\r
        public class ConsumoAfiliadosReport\r
        {\r
+               #region Constructores\r
+               \r
                public ConsumoAfiliadosReport()\r
                {\r
+                       XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);\r
+                       xmlDoc.AppendChild(xmlDeclaration);\r
+\r
+                       XmlElement root = this.xmlDoc.CreateElement( "reporteConsumo" );\r
+                       root.SetAttribute( "fechaGeneracion", DateTime.Now.ToString( "yyyy-MM-dd" ) );\r
+                       \r
+                       root.AppendChild( xmlDoc.CreateElement( "lineas" ) );\r
+\r
+                       xmlDoc.AppendChild( root );\r
+               }\r
+\r
+               #endregion Constructores\r
+\r
+               private XmlDocument xmlDoc = new XmlDocument(); \r
+               private ArrayList _listaCodigosAfiliado = new ArrayList();\r
+\r
+               #region Metodos Publicos\r
+\r
+               public void AgregarInfo( Prestador p, LineaInfoPrestacionesReport lineaIp )\r
+               {\r
+                       XmlElement lineas = xmlDoc.DocumentElement["lineas"];\r
+                       XmlElement elemLinea = null;\r
+\r
+                       #region Datos propios de Afiliado\r
+                       if ( this._listaCodigosAfiliado.Contains(lineaIp.CodigoAfiliado) )\r
+                       { //Ya está el afiliado en el xml\r
+                               elemLinea = lineas.SelectSingleNode( @"//linea[@codigoAfiliado='" + lineaIp.CodigoAfiliado.ToString().Trim() + "']" ) as XmlElement;\r
+                       }\r
+                       else\r
+                       {\r
+                               Afiliado a = this.getAfiliado( lineaIp.CodigoAfiliado );\r
+\r
+                               //El nodo afiliado todavía no está en el xml\r
+                               elemLinea = this.xmlDoc.CreateElement("linea");\r
+                               elemLinea.SetAttribute( "codigoAfiliado", lineaIp.CodigoAfiliado.ToString().Trim() );\r
+                               lineas.AppendChild( elemLinea );\r
+\r
+                               //nombreAfiliado\r
+                               XmlElement elemNombreAfiliado = this.xmlDoc.CreateElement("nombreAfiliado");\r
+                               elemNombreAfiliado.InnerText = ( (a.Nombre == null)? string.Empty : a.Nombre.Trim() );\r
+                               elemLinea.AppendChild( elemNombreAfiliado );\r
+\r
+                               //apellidoAfiliado\r
+                               XmlElement elemApellidoAfiliado = this.xmlDoc.CreateElement("apellidoAfiliado");\r
+                               elemApellidoAfiliado.InnerText = ( (a.Apellido == null)? string.Empty : a.Apellido.Trim() );\r
+                               elemLinea.AppendChild( elemApellidoAfiliado );\r
+                               \r
+                               //codigoPlanAfiliado\r
+                               XmlElement elemCodigoPlanAfiliado = this.xmlDoc.CreateElement("codigoPlanAfiliado");\r
+                               elemCodigoPlanAfiliado.InnerText = ( (a.PlanActual == null)? string.Empty : a.PlanActual.Codigo.ToString().Trim() );\r
+                               elemLinea.AppendChild( elemCodigoPlanAfiliado );\r
+                               \r
+                               this._listaCodigosAfiliado.Add(lineaIp.CodigoAfiliado);\r
+                       }\r
+                       #endregion Datos propios de Afiliado\r
+\r
+                       #region Autorizacion Realizada\r
+\r
+                       //autorizacionRealizada\r
+                       XmlElement elemAutorizacion = this.xmlDoc.CreateElement( "autorizacionRealizada" );\r
+                       elemAutorizacion.SetAttribute( "codigo", lineaIp.CodigoAutorizacion.ToString().Trim() );\r
+\r
+                       //prestador\r
+                       XmlElement elemPrestador = this.xmlDoc.CreateElement( "prestador" );\r
+                       XmlElement elemCuit = this.xmlDoc.CreateElement( "CUIT" );\r
+                       elemCuit.InnerText = p.Cuit.ToString().Trim();\r
+                       elemPrestador.AppendChild( elemCuit );\r
+                       XmlElement elemNombrePrestador = this.xmlDoc.CreateElement( "nombre" );\r
+                       elemNombrePrestador.InnerText = ((p.Nombre == null)? string.Empty : p.Nombre.ToString().Trim());\r
+                       elemPrestador.AppendChild( elemNombrePrestador );\r
+                       elemAutorizacion.AppendChild( elemPrestador );\r
+\r
+                       //codigoPrestacion\r
+                       XmlElement elemCodPrestacion = this.xmlDoc.CreateElement( "codigoPrestacion" );\r
+                       elemCodPrestacion.InnerText = lineaIp.CodigoPrestacion.Trim();\r
+                       elemAutorizacion.AppendChild( elemCodPrestacion );\r
+\r
+                       //nombrePrestacion\r
+                       Prestacion prestacion = this.getPrestacion( lineaIp.CodigoPrestacion );\r
+                       XmlElement elemNombrePrestacion = this.xmlDoc.CreateElement( "nombrePrestacion" );\r
+                       elemNombrePrestacion.InnerText = ( (prestacion.Nombre == null)? string.Empty : prestacion.Nombre.Trim() );\r
+                       elemAutorizacion.AppendChild( elemNombrePrestacion );\r
+\r
+                       //fechaRealizacion\r
+                       XmlElement elemFechaRealizacion = this.xmlDoc.CreateElement( "fechaRealizacion" );\r
+                       elemFechaRealizacion.InnerText = lineaIp.FechaRealizacion.ToString( "yyyy-MM-dd" );\r
+                       elemAutorizacion.AppendChild( elemFechaRealizacion );\r
+       \r
+                       //porcentajeCobertura\r
+                       XmlElement elemPorcentaje = this.xmlDoc.CreateElement( "porcentajeCobertura" );\r
+                       elemPorcentaje.InnerText = lineaIp.PorcentajeCobertura.ToString().Trim();\r
+                       elemAutorizacion.AppendChild( elemPorcentaje );\r
+\r
+                       elemLinea.AppendChild( elemAutorizacion );\r
+\r
+                       #endregion Autorizacion Realizada\r
+               }\r
+\r
+               public override string ToString()\r
+               {\r
+                       return xmlDoc.OuterXml;\r
+               }\r
+\r
+               public void Serializar()\r
+               {\r
+                       string currentDir = Directory.GetCurrentDirectory();\r
+                       string dirPagos = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioPagos"] );\r
+                       if ( ! Directory.Exists(dirPagos) )\r
+                       {\r
+                               Directory.CreateDirectory( dirPagos );\r
+                       }\r
+                       \r
+                       int secuencia = 0;\r
+                       \r
+                       string baseFileName = "rc_" + DateTime.Now.ToString("yyyy-MM-dd") + "_"; \r
+                       string pathName = Path.Combine( dirPagos, baseFileName + secuencia.ToString("00") + ".xml" );\r
+                       \r
+                       while ( File.Exists(pathName) )\r
+                       {\r
+                               secuencia += 1;\r
+                               pathName = Path.Combine( dirPagos, baseFileName + secuencia.ToString("00") + ".xml");\r
+                       }\r
+\r
+                       XmlTextWriter writer = new XmlTextWriter( pathName, null );\r
+                       writer.Formatting = Formatting.Indented;\r
+                       this.xmlDoc.Save(writer);\r
                }\r
+\r
+               #endregion Metodos Publicos\r
+\r
+               #region Métodos Privados\r
+\r
+               private Afiliado getAfiliado( int codigo )\r
+               {\r
+                       this.db = com.db4o.Db4o.openFile("os.yap");\r
+                       ArrayList al = this.ObjectSetToArrayList( db.get( new Afiliado( codigo ) ) );\r
+\r
+                       Afiliado a = ( (al.Count == 0)? null : al[0] ) as Afiliado;\r
+                       this.db.close();\r
+                       this.db = null;\r
+\r
+                       return a;\r
+               }\r
+\r
+               private Prestacion getPrestacion( string codigo )\r
+               {\r
+                       this.db = com.db4o.Db4o.openFile("os.yap");\r
+                       ArrayList al = this.ObjectSetToArrayList( db.get( new Prestacion( codigo ) ) );\r
+\r
+                       Prestacion p = ( (al.Count == 0)? null : al[0] ) as Prestacion;\r
+                       this.db.close();\r
+                       this.db = null;\r
+\r
+                       return p;\r
+               }\r
+\r
+               private Autorizacion getAutorizacion( int codigo )\r
+               {\r
+                       this.db = com.db4o.Db4o.openFile("os.yap");\r
+                       \r
+                       ArrayList al = new ArrayList();\r
+\r
+                       al = this.ObjectSetToArrayList( db.get( new AutorizacionManual(codigo) ) );\r
+                       Autorizacion a = ( (al.Count == 0)? null : al[0] ) as AutorizacionManual;\r
+\r
+                       if ( a == null )\r
+                       {\r
+                               al = this.ObjectSetToArrayList( db.get( new AutorizacionAutomatica(codigo) ) );\r
+                               a = ( (al.Count == 0)? null : al[0] ) as AutorizacionAutomatica;\r
+                       }\r
+\r
+                       this.db.close();\r
+                       this.db = null;\r
+\r
+                       return a;\r
+               }\r
+\r
+               #endregion Métodos Privados\r
+\r
+               #region DB\r
+               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)    \r
+                       {
+                               lst.Add (s);
+                       }
+                       return lst;
+               }
+
+               #endregion DB\r
+\r
+               \r
        }\r
 }\r