]> git.llucax.com Git - z.facultad/75.10/miklolife.git/blob - demo/src/Reportes/ConsumoAfiliadosReport.cs
- Valida contra el schema
[z.facultad/75.10/miklolife.git] / demo / src / Reportes / ConsumoAfiliadosReport.cs
1 using System;\r
2 using System.Collections;\r
3 using System.Configuration;\r
4 using System.Xml;\r
5 using Dominio.Autorizaciones;\r
6 using Dominio.Afiliados;\r
7 using com.db4o;\r
8 using System.IO;\r
9 \r
10 \r
11 namespace Reportes\r
12 {\r
13         /// <summary>\r
14         /// Summary description for ConsumoAfiliadosReport.\r
15         /// </summary>\r
16         public class ConsumoAfiliadosReport\r
17         {\r
18                 #region Constructores\r
19                 \r
20                 public ConsumoAfiliadosReport()\r
21                 {\r
22                         XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);\r
23                         xmlDoc.AppendChild(xmlDeclaration);\r
24 \r
25                         XmlElement root = this.xmlDoc.CreateElement( "reporteConsumo" );\r
26                         root.SetAttribute( "fechaGeneracion", DateTime.Now.ToString( "yyyy-MM-dd" ) );\r
27                         \r
28                         root.AppendChild( xmlDoc.CreateElement( "lineas" ) );\r
29 \r
30                         xmlDoc.AppendChild( root );\r
31                 }\r
32 \r
33                 #endregion Constructores\r
34 \r
35                 private XmlDocument xmlDoc = new XmlDocument(); \r
36                 private ArrayList _listaCodigosAfiliado = new ArrayList();\r
37 \r
38                 #region Metodos Publicos\r
39 \r
40                 public void AgregarInfo( Prestador p, LineaInfoPrestacionesReport lineaIp )\r
41                 {\r
42                         XmlElement lineas = xmlDoc.DocumentElement["lineas"];\r
43                         XmlElement elemLinea = null;\r
44 \r
45                         #region Datos propios de Afiliado\r
46                         if ( this._listaCodigosAfiliado.Contains(lineaIp.CodigoAfiliado) )\r
47                         { //Ya está el afiliado en el xml\r
48                                 elemLinea = lineas.SelectSingleNode( @"//linea[@codigoAfiliado='" + lineaIp.CodigoAfiliado.ToString().Trim() + "']" ) as XmlElement;\r
49                         }\r
50                         else\r
51                         {\r
52                                 Afiliado a = this.getAfiliado( lineaIp.CodigoAfiliado );\r
53 \r
54                                 //El nodo afiliado todavía no está en el xml\r
55                                 elemLinea = this.xmlDoc.CreateElement("linea");\r
56                                 elemLinea.SetAttribute( "codigoAfiliado", lineaIp.CodigoAfiliado.ToString().Trim() );\r
57                                 lineas.AppendChild( elemLinea );\r
58 \r
59                                 //nombreAfiliado\r
60                                 XmlElement elemNombreAfiliado = this.xmlDoc.CreateElement("nombreAfiliado");\r
61                                 elemNombreAfiliado.InnerText = ( (a.Nombre == null)? string.Empty : a.Nombre.Trim() );\r
62                                 elemLinea.AppendChild( elemNombreAfiliado );\r
63 \r
64                                 //apellidoAfiliado\r
65                                 XmlElement elemApellidoAfiliado = this.xmlDoc.CreateElement("apellidoAfiliado");\r
66                                 elemApellidoAfiliado.InnerText = ( (a.Apellido == null)? string.Empty : a.Apellido.Trim() );\r
67                                 elemLinea.AppendChild( elemApellidoAfiliado );\r
68                                 \r
69                                 //codigoPlanAfiliado\r
70                                 XmlElement elemCodigoPlanAfiliado = this.xmlDoc.CreateElement("codigoPlanAfiliado");\r
71                                 elemCodigoPlanAfiliado.InnerText = ( (a.PlanActual == null)? string.Empty : a.PlanActual.Codigo.ToString().Trim() );\r
72                                 elemLinea.AppendChild( elemCodigoPlanAfiliado );\r
73                                 \r
74                                 this._listaCodigosAfiliado.Add(lineaIp.CodigoAfiliado);\r
75                         }\r
76                         #endregion Datos propios de Afiliado\r
77 \r
78                         #region Autorizacion Realizada\r
79 \r
80                         //autorizacionRealizada\r
81                         XmlElement elemAutorizacion = this.xmlDoc.CreateElement( "autorizacionRealizada" );\r
82                         elemAutorizacion.SetAttribute( "codigo", lineaIp.CodigoAutorizacion.ToString().Trim() );\r
83 \r
84                         //prestador\r
85                         XmlElement elemPrestador = this.xmlDoc.CreateElement( "prestador" );\r
86                         XmlElement elemCuit = this.xmlDoc.CreateElement( "CUIT" );\r
87                         elemCuit.InnerText = p.Cuit.ToString().Trim();\r
88                         elemPrestador.AppendChild( elemCuit );\r
89                         XmlElement elemNombrePrestador = this.xmlDoc.CreateElement( "nombre" );\r
90                         elemNombrePrestador.InnerText = ((p.Nombre == null)? string.Empty : p.Nombre.ToString().Trim());\r
91                         elemPrestador.AppendChild( elemNombrePrestador );\r
92                         elemAutorizacion.AppendChild( elemPrestador );\r
93 \r
94                         //codigoPrestacion\r
95                         XmlElement elemCodPrestacion = this.xmlDoc.CreateElement( "codigoPrestacion" );\r
96                         elemCodPrestacion.InnerText = lineaIp.CodigoPrestacion.Trim();\r
97                         elemAutorizacion.AppendChild( elemCodPrestacion );\r
98 \r
99                         //nombrePrestacion\r
100                         Prestacion prestacion = this.getPrestacion( lineaIp.CodigoPrestacion );\r
101                         XmlElement elemNombrePrestacion = this.xmlDoc.CreateElement( "nombrePrestacion" );\r
102                         elemNombrePrestacion.InnerText = ( (prestacion.Nombre == null)? string.Empty : prestacion.Nombre.Trim() );\r
103                         elemAutorizacion.AppendChild( elemNombrePrestacion );\r
104 \r
105                         //fechaRealizacion\r
106                         XmlElement elemFechaRealizacion = this.xmlDoc.CreateElement( "fechaRealizacion" );\r
107                         elemFechaRealizacion.InnerText = lineaIp.FechaRealizacion.ToString( "yyyy-MM-dd" );\r
108                         elemAutorizacion.AppendChild( elemFechaRealizacion );\r
109         \r
110                         //porcentajeCobertura\r
111                         XmlElement elemPorcentaje = this.xmlDoc.CreateElement( "porcentajeCobertura" );\r
112                         elemPorcentaje.InnerText = lineaIp.PorcentajeCobertura.ToString().Trim();\r
113                         elemAutorizacion.AppendChild( elemPorcentaje );\r
114 \r
115                         elemLinea.AppendChild( elemAutorizacion );\r
116 \r
117                         #endregion Autorizacion Realizada\r
118                 }\r
119 \r
120                 public override string ToString()\r
121                 {\r
122                         return xmlDoc.OuterXml;\r
123                 }\r
124 \r
125                 public void Serializar()\r
126                 {\r
127                         string currentDir = Directory.GetCurrentDirectory();\r
128                         string dirPagos = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioPagos"] );\r
129                         if ( ! Directory.Exists(dirPagos) )\r
130                         {\r
131                                 Directory.CreateDirectory( dirPagos );\r
132                         }\r
133                         \r
134                         int secuencia = 0;\r
135                         \r
136                         string baseFileName = "rc_" + DateTime.Now.ToString("yyyy-MM-dd") + "_"; \r
137                         string pathName = Path.Combine( dirPagos, baseFileName + secuencia.ToString("00") + ".xml" );\r
138                         \r
139                         while ( File.Exists(pathName) )\r
140                         {\r
141                                 secuencia += 1;\r
142                                 pathName = Path.Combine( dirPagos, baseFileName + secuencia.ToString("00") + ".xml");\r
143                         }\r
144 \r
145                         XmlTextWriter writer = new XmlTextWriter( pathName, null );\r
146                         writer.Formatting = Formatting.Indented;\r
147                         this.xmlDoc.Save(writer);\r
148                 }\r
149 \r
150                 #endregion Metodos Publicos\r
151 \r
152                 #region Métodos Privados\r
153 \r
154                 private Afiliado getAfiliado( int codigo )\r
155                 {\r
156                         this.db = com.db4o.Db4o.openFile("os.yap");\r
157                         ArrayList al = this.ObjectSetToArrayList( db.get( new Afiliado( codigo ) ) );\r
158 \r
159                         Afiliado a = ( (al.Count == 0)? null : al[0] ) as Afiliado;\r
160                         this.db.close();\r
161                         this.db = null;\r
162 \r
163                         return a;\r
164                 }\r
165 \r
166                 private Prestacion getPrestacion( string codigo )\r
167                 {\r
168                         this.db = com.db4o.Db4o.openFile("os.yap");\r
169                         ArrayList al = this.ObjectSetToArrayList( db.get( new Prestacion( codigo ) ) );\r
170 \r
171                         Prestacion p = ( (al.Count == 0)? null : al[0] ) as Prestacion;\r
172                         this.db.close();\r
173                         this.db = null;\r
174 \r
175                         return p;\r
176                 }\r
177 \r
178                 private Autorizacion getAutorizacion( int codigo )\r
179                 {\r
180                         this.db = com.db4o.Db4o.openFile("os.yap");\r
181                         \r
182                         ArrayList al = new ArrayList();\r
183 \r
184                         al = this.ObjectSetToArrayList( db.get( new AutorizacionManual(codigo) ) );\r
185                         Autorizacion a = ( (al.Count == 0)? null : al[0] ) as AutorizacionManual;\r
186 \r
187                         if ( a == null )\r
188                         {\r
189                                 al = this.ObjectSetToArrayList( db.get( new AutorizacionAutomatica(codigo) ) );\r
190                                 a = ( (al.Count == 0)? null : al[0] ) as AutorizacionAutomatica;\r
191                         }\r
192 \r
193                         this.db.close();\r
194                         this.db = null;\r
195 \r
196                         return a;\r
197                 }\r
198 \r
199                 #endregion Métodos Privados\r
200 \r
201                 #region DB\r
202                 private com.db4o.ObjectContainer db = null;
203
204                 private ArrayList ObjectSetToArrayList (ObjectSet result)
205                 {
206                         ArrayList lst = new ArrayList ();
207                         Object s;
208                         if (result == null)
209                                 return lst;
210         
211                         while ((s = result.next ()) != null)    \r
212                         {
213                                 lst.Add (s);
214                         }
215                         return lst;
216                 }
217
218                 #endregion DB\r
219 \r
220                 \r
221         }\r
222 }\r