X-Git-Url: https://git.llucax.com/z.facultad/75.10/miklolife.git/blobdiff_plain/ad14ee69cc0a9253f352b642dfd714edee438d9a..4214e95be71db8571cb43bdab43898b0b9c90b6d:/demo/src/Reportes/InfoPrestacionesReport.cs
diff --git a/demo/src/Reportes/InfoPrestacionesReport.cs b/demo/src/Reportes/InfoPrestacionesReport.cs
index 280249c..f454c70 100644
--- a/demo/src/Reportes/InfoPrestacionesReport.cs
+++ b/demo/src/Reportes/InfoPrestacionesReport.cs
@@ -1,4 +1,7 @@
using System;
+using System.Collections;
+using System.Xml;
+using System.Globalization;
namespace Reportes
{
@@ -10,24 +13,49 @@ namespace Reportes
{
#region Constructores
- public InfoPrestacionesReport()
+ public InfoPrestacionesReport( string pathNombreArchivo )
{
+ this._pathArchivo = pathNombreArchivo;
}
#endregion Constructores
#region Campos Privados
- private string _cuit;
+ private bool _esBienFormado = true;
+
+ private string _pathArchivo = string.Empty;
+ private string _cuitPrestador;
+ private DateTime _fechaEnvio;
+
+ private LineaInfoPrestacionesReport[] _lineas = null;
#endregion Campos Privados
#region Propiedades Públicas
- public string Cuit
+ public string PathArchivo
{
- get { return this._cuit; }
- set { this._cuit = value; }
+ get { return this._pathArchivo; }
+ set { this._pathArchivo = value; }
+ }
+
+ public string CuitPrestador
+ {
+ get { return this._cuitPrestador; }
+ set { this._cuitPrestador = value; }
+ }
+
+ public DateTime FechaEnvio
+ {
+ get { return this._fechaEnvio; }
+ set { this._fechaEnvio = value; }
+ }
+
+ public LineaInfoPrestacionesReport[] Lineas
+ {
+ get { return this._lineas; }
+ set { this._lineas = value; }
}
#endregion Propiedades Públicas
@@ -36,10 +64,91 @@ 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;
}
+ public void ValidarLineas( Dominio.Autorizaciones.Prestador prestador )
+ {
+ foreach ( LineaInfoPrestacionesReport linea in this._lineas )
+ {
+ linea.Validar( prestador );
+ }
+ }
+
#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
}
}