using System; using System.Collections; using System.Xml; using Dominio.Autorizaciones; using Dominio.Afiliados; using com.db4o; using System.Configuration; using System.IO; namespace Reportes { /// /// /// public class PrestacionesRealizadasReport { #region Constructores public PrestacionesRealizadasReport() { XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null); xmlDoc.AppendChild(xmlDeclaration); XmlElement root = this.xmlDoc.CreateElement( "informeAprRechazos" ); root.SetAttribute( "fechaGeneracion", DateTime.Now.ToString( "yyyy-MM-dd" ) ); root.AppendChild( xmlDoc.CreateElement( "lineas" ) ); xmlDoc.AppendChild( root ); } #endregion Constructores private XmlDocument xmlDoc = new XmlDocument(); #region Metodos publicos public void AgregarInfo( Prestador p, DateTime fechaRecepcionInfo, LineaInfoPrestacionesReport lineaIp ) { //LINEA XmlElement elemLinea = this.xmlDoc.CreateElement( "linea" ); elemLinea.SetAttribute( "codigoAutorizacion", lineaIp.CodigoAutorizacion.ToString() ); elemLinea.SetAttribute( "aprobada", lineaIp.Aprobada.ToString().ToLower() ); //tipoAutorizacion XmlElement elemTipoAut = this.xmlDoc.CreateElement( "tipoAutorizacion" ); elemTipoAut.InnerText = lineaIp.TipoAutorizacion; elemLinea.AppendChild( elemTipoAut ); //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.ToString().Trim(); elemPrestador.AppendChild( elemNombrePrestador ); elemLinea.AppendChild( elemPrestador ); //codigoPrestacion XmlElement elemCodPrestacion = this.xmlDoc.CreateElement( "codigoPrestacion" ); elemCodPrestacion.InnerText = lineaIp.CodigoPrestacion.Trim(); elemLinea.AppendChild( elemCodPrestacion ); //codigoAfiliado XmlElement elemCodAfiliado = this.xmlDoc.CreateElement( "codigoAfiliado" ); elemCodAfiliado.InnerText = lineaIp.CodigoAfiliado.ToString().Trim(); elemLinea.AppendChild( elemCodAfiliado ); //porcentajeCoberturaReclamado XmlElement elemPorcentajeReclamado = this.xmlDoc.CreateElement( "porcentajeCoberturaReclamado" ); elemPorcentajeReclamado.InnerText = lineaIp.PorcentajeCobertura.ToString().Trim(); elemLinea.AppendChild( elemPorcentajeReclamado ); //Campos a completar si es que la autorizacion existe en el sistema if ( lineaIp.ExisteAutorizacion ) { Autorizacion a = this.getAutorizacion( lineaIp.CodigoAutorizacion ); //porcentajeCoberturaReal XmlElement elemPorcentajeReal = this.xmlDoc.CreateElement( "porcentajeCoberturaReal" ); elemPorcentajeReal.InnerText = a.PorcentajeCobertura.ToString().Trim(); elemLinea.AppendChild( elemPorcentajeReal ); //fechaAprobacion XmlElement elemFechaAprobacion = this.xmlDoc.CreateElement( "fechaAprobacion" ); elemFechaAprobacion.InnerText = a.FechaSolicitud.ToString( "yyyy-MM-dd" ); elemLinea.AppendChild( elemFechaAprobacion ); //fechaVencimiento XmlElement elemFechaVencimiento = this.xmlDoc.CreateElement( "fechaVencimiento" ); elemFechaVencimiento.InnerText = a.FechaVencimiento.ToString( "yyyy-MM-dd" ); elemLinea.AppendChild( elemFechaVencimiento ); } //fechaRealizacion XmlElement elemFechaRealizacion = this.xmlDoc.CreateElement( "fechaRealizacion" ); elemFechaRealizacion.InnerText = lineaIp.FechaRealizacion.ToString( "yyyy-MM-dd" ); elemLinea.AppendChild( elemFechaRealizacion ); //fechaRecepcionInfo XmlElement elemFechaRecepcionInfo = this.xmlDoc.CreateElement( "fechaRecepcionInfo" ); elemFechaRecepcionInfo.InnerText = fechaRecepcionInfo.ToString( "yyyy-MM-dd" ); elemLinea.AppendChild( elemFechaRecepcionInfo ); if ( ! lineaIp.Aprobada ) { //motivoRechazo XmlElement elemMotivoRechazo = this.xmlDoc.CreateElement( "motivoRechazo" ); elemMotivoRechazo.InnerText = lineaIp.MotivoRechazo.Trim(); elemLinea.AppendChild( elemMotivoRechazo ); } //AgregoLINEA XmlElement lineas = xmlDoc.DocumentElement["lineas"]; lineas.AppendChild( elemLinea ); } 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 = "rp_" + 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 Metodos privados 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 Metodos 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 } }