+#region Usings\r
+\r
using System;\r
using System.Collections;\r
using System.Xml;\r
+using System.Xml.Schema;\r
+using System.Globalization;\r
+using System.IO;\r
+using System.Configuration;\r
+\r
+using System.Reflection;\r
+\r
+#endregion Usings\r
\r
namespace Reportes\r
{\r
+ \r
/// <summary>\r
/// Clase que representa un archivo de Información de Prestaciones Realizadas enviado por el \r
/// Prestador.\r
\r
#region Campos Privados\r
\r
- private bool _esBienFormado = true;\r
-\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._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
#region Métodos privados\r
\r
+ private ArrayList _validationErrors = new ArrayList();\r
+\r
+ private void valReader_ValidationEventHandler(object sender, ValidationEventArgs e)\r
+ {\r
+ this._validationErrors.Add( e.Message );\r
+ }\r
+\r
+ private string _xsdPathNombre = null;\r
+ private string XsdPathNombre\r
+ {\r
+ get \r
+ { \r
+ if ( this._xsdPathNombre == null )\r
+ {\r
+ string currentDir = Directory.GetCurrentDirectory();\r
+ string xsdPath = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioRecursos"] );\r
+ if ( ! Directory.Exists(xsdPath) )\r
+ {\r
+ Directory.CreateDirectory( xsdPath );\r
+ }\r
+\r
+ return ( Path.Combine( xsdPath, "infoPrestaciones_schema.xsd" ) );\r
+ }\r
+ else\r
+ return this._xsdPathNombre;\r
+ }\r
+ }\r
+\r
private bool ValidarContraSchema( XmlDocument xmlDoc )\r
{\r
+ this._validationErrors.Clear();\r
\r
- return true;\r
+ NameTable nt = new NameTable();\r
+ XmlNamespaceManager nm = new XmlNamespaceManager( nt );\r
+ XmlParserContext pc = new XmlParserContext( null, nm, null, XmlSpace.None );\r
+\r
+ XmlValidatingReader valReader = new XmlValidatingReader( xmlDoc.OuterXml, XmlNodeType.Element, pc );\r
+\r
+ valReader.Schemas.Add( string.Empty, this.XsdPathNombre );\r
+ valReader.ValidationType = ValidationType.Schema;\r
+\r
+ valReader.ValidationEventHandler += new ValidationEventHandler(valReader_ValidationEventHandler);\r
+\r
+ while (valReader.Read()) { }\r
+\r
+ valReader.Close();\r
+\r
+ return (this._validationErrors.Count == 0) ;\r
}\r
\r
/// <summary>\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
- //lineasXml.ChildNodes[i].Attributes["codiogoAutorizacion"]\r
- #warning Guille --> Seguir aca\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
\r
#endregion Métodos privados\r