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
/// </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