using System;\r
using System.Collections;\r
+using System.Xml;\r
+using System.Globalization;\r
\r
namespace Reportes\r
{\r
{\r
#region Constructores\r
\r
- public InfoPrestacionesReport()\r
+ public InfoPrestacionesReport( string pathNombreArchivo )\r
{\r
+ this._pathArchivo = pathNombreArchivo;\r
}\r
\r
#endregion Constructores\r
\r
#region Campos Privados\r
\r
- private string _pathArchivo = string.Empty;\r
+ private bool _esBienFormado = true;\r
\r
- private string _cuit;\r
+ private string _pathArchivo = string.Empty;\r
+ private string _cuitPrestador;\r
+ private DateTime _fechaEnvio;\r
\r
- private ArrayList _lineas = null;\r
+ private LineaInfoPrestacionesReport[] _lineas = null;\r
\r
#endregion Campos Privados\r
\r
set { this._pathArchivo = value; }\r
}\r
\r
- public string Cuit\r
+ public string CuitPrestador\r
+ {\r
+ get { return this._cuitPrestador; }\r
+ set { this._cuitPrestador = value; }\r
+ }\r
+\r
+ public DateTime FechaEnvio\r
{\r
- get { return this._cuit; }\r
- set { this._cuit = value; }\r
+ get { return this._fechaEnvio; }\r
+ set { this._fechaEnvio = value; }\r
}\r
\r
- public ArrayList Lineas\r
+ public LineaInfoPrestacionesReport[] Lineas\r
{\r
get { return this._lineas; }\r
set { this._lineas = value; }\r
\r
public bool ValidarFormato()\r
{\r
+ XmlDocument xmlDoc = new System.Xml.XmlDocument();\r
+ try\r
+ {\r
+ xmlDoc.Load( this._pathArchivo );\r
+ }\r
+ catch ( XmlException xmlEx )\r
+ {\r
+ #warning Ver como mostrar los errores\r
+ return false;\r
+ }\r
+ \r
+ if ( this.ValidarContraSchema( xmlDoc ) )\r
+ {\r
+ this.CargarXml( xmlDoc );\r
+ }\r
+ else\r
+ {\r
+ //Mostrar error y retornar\r
+ return false;\r
+ }\r
\r
return true;\r
}\r
}\r
\r
#endregion Métodos públicos\r
+\r
+ #region Métodos privados\r
+\r
+ private bool ValidarContraSchema( XmlDocument xmlDoc )\r
+ {\r
+ #warning Seguir acá\r
+ return true;\r
+ }\r
+\r
+ /// <summary>\r
+ /// Toma un xmlDoc valido contra el schema\r
+ /// </summary>\r
+ /// <param name="xmlDoc"></param>\r
+ private void CargarXml( XmlDocument xmlDoc )\r
+ {\r
+ XmlNode root = xmlDoc["infoPrestaciones"];\r
+ \r
+ this.FechaEnvio = DateTime.Parse( root.Attributes["fechaEnvio"].InnerText );\r
+ \r
+ XmlElement prestador = root["prestador"];\r
+ this.CuitPrestador = prestador["CUIT"].InnerText;\r
+ \r
+ XmlElement lineasXml = root["lineas"];\r
+ if ( lineasXml.HasChildNodes )\r
+ {\r
+ this._lineas = new LineaInfoPrestacionesReport[ lineasXml.ChildNodes.Count ];\r
+ \r
+ XmlNode node; int cod; string tipoAut; int codAfiliado; string codPrestacion;\r
+ DateTime fechaRealizacion; float porcentajeCobertura;\r
+\r
+ NumberFormatInfo nfi = new NumberFormatInfo();\r
+ nfi.NumberDecimalDigits = 2;\r
+ nfi.NumberDecimalSeparator = ".";\r
+ nfi.NumberGroupSeparator = ",";\r
+\r
+ for ( int i = 0; i < lineasXml.ChildNodes.Count; i++ )\r
+ {\r
+ node = lineasXml.ChildNodes[i];\r
+ cod = int.Parse( node.Attributes["codigoAutorizacion"].InnerText );\r
+ tipoAut = node["tipoAutorizacion"].InnerText;\r
+ codAfiliado = int.Parse( node["codigoAfiliado"].InnerText );\r
+ codPrestacion = node["codigoPrestacion"].InnerText;\r
+ fechaRealizacion = DateTime.Parse( node["fechaRealizacion"].InnerText );\r
+ \r
+ porcentajeCobertura = float.Parse( node["porcentajeCobertura"].InnerText.Trim(), nfi );\r
+ \r
+ this._lineas[i] = new LineaInfoPrestacionesReport( cod, tipoAut, codAfiliado, codPrestacion,\r
+ fechaRealizacion, porcentajeCobertura );\r
+ }\r
+ }\r
+ }\r
+\r
+ #endregion Métodos privados\r
}\r
}\r