X-Git-Url: https://git.llucax.com/z.facultad/75.10/miklolife.git/blobdiff_plain/17758e264340c8e5114a9509a9d10f2aa185c091..8baeff9ed6b1027bc0b42eea4b322f32bfcf4e86:/demo/src/Reportes/InfoPrestacionesReport.cs
diff --git a/demo/src/Reportes/InfoPrestacionesReport.cs b/demo/src/Reportes/InfoPrestacionesReport.cs
index e612118..f454c70 100644
--- a/demo/src/Reportes/InfoPrestacionesReport.cs
+++ b/demo/src/Reportes/InfoPrestacionesReport.cs
@@ -1,5 +1,7 @@
using System;
using System.Collections;
+using System.Xml;
+using System.Globalization;
namespace Reportes
{
@@ -11,19 +13,22 @@ namespace Reportes
{
#region Constructores
- public InfoPrestacionesReport()
+ public InfoPrestacionesReport( string pathNombreArchivo )
{
+ this._pathArchivo = pathNombreArchivo;
}
#endregion Constructores
#region Campos Privados
- private string _pathArchivo = string.Empty;
+ private bool _esBienFormado = true;
- private string _cuit;
+ private string _pathArchivo = string.Empty;
+ private string _cuitPrestador;
+ private DateTime _fechaEnvio;
- private ArrayList _lineas = null;
+ private LineaInfoPrestacionesReport[] _lineas = null;
#endregion Campos Privados
@@ -35,13 +40,19 @@ namespace Reportes
set { this._pathArchivo = value; }
}
- public string Cuit
+ public string CuitPrestador
+ {
+ get { return this._cuitPrestador; }
+ set { this._cuitPrestador = value; }
+ }
+
+ public DateTime FechaEnvio
{
- get { return this._cuit; }
- set { this._cuit = value; }
+ get { return this._fechaEnvio; }
+ set { this._fechaEnvio = value; }
}
- public ArrayList Lineas
+ public LineaInfoPrestacionesReport[] Lineas
{
get { return this._lineas; }
set { this._lineas = value; }
@@ -53,6 +64,26 @@ namespace Reportes
public bool ValidarFormato()
{
+ XmlDocument xmlDoc = new System.Xml.XmlDocument();
+ try
+ {
+ xmlDoc.Load( this._pathArchivo );
+ }
+ catch ( XmlException xmlEx )
+ {
+ #warning Ver como mostrar los errores
+ return false;
+ }
+
+ if ( this.ValidarContraSchema( xmlDoc ) )
+ {
+ this.CargarXml( xmlDoc );
+ }
+ else
+ {
+ //Mostrar error y retornar
+ return false;
+ }
return true;
}
@@ -66,5 +97,58 @@ namespace Reportes
}
#endregion Métodos públicos
+
+ #region Métodos privados
+
+ private bool ValidarContraSchema( XmlDocument xmlDoc )
+ {
+ #warning Seguir acá
+ return true;
+ }
+
+ ///
+ /// Toma un xmlDoc valido contra el schema
+ ///
+ ///
+ private void CargarXml( XmlDocument xmlDoc )
+ {
+ XmlNode root = xmlDoc["infoPrestaciones"];
+
+ this.FechaEnvio = DateTime.Parse( root.Attributes["fechaEnvio"].InnerText );
+
+ XmlElement prestador = root["prestador"];
+ this.CuitPrestador = prestador["CUIT"].InnerText;
+
+ XmlElement lineasXml = root["lineas"];
+ if ( lineasXml.HasChildNodes )
+ {
+ this._lineas = new LineaInfoPrestacionesReport[ lineasXml.ChildNodes.Count ];
+
+ XmlNode node; int cod; string tipoAut; int codAfiliado; string codPrestacion;
+ DateTime fechaRealizacion; float porcentajeCobertura;
+
+ NumberFormatInfo nfi = new NumberFormatInfo();
+ nfi.NumberDecimalDigits = 2;
+ nfi.NumberDecimalSeparator = ".";
+ nfi.NumberGroupSeparator = ",";
+
+ for ( int i = 0; i < lineasXml.ChildNodes.Count; i++ )
+ {
+ node = lineasXml.ChildNodes[i];
+ cod = int.Parse( node.Attributes["codigoAutorizacion"].InnerText );
+ tipoAut = node["tipoAutorizacion"].InnerText;
+ codAfiliado = int.Parse( node["codigoAfiliado"].InnerText );
+ codPrestacion = node["codigoPrestacion"].InnerText;
+ fechaRealizacion = DateTime.Parse( node["fechaRealizacion"].InnerText );
+
+ porcentajeCobertura = float.Parse( node["porcentajeCobertura"].InnerText.Trim(), nfi );
+
+ this._lineas[i] = new LineaInfoPrestacionesReport( cod, tipoAut, codAfiliado, codPrestacion,
+ fechaRealizacion, porcentajeCobertura );
+ }
+ }
+ }
+
+ #endregion Métodos privados
}
}