2 using System.Collections;
\r
4 using System.Globalization;
\r
9 /// Clase que representa un archivo de Información de Prestaciones Realizadas enviado por el
\r
12 public class InfoPrestacionesReport
\r
14 #region Constructores
\r
16 public InfoPrestacionesReport( string pathNombreArchivo )
\r
18 this._pathArchivo = pathNombreArchivo;
\r
21 #endregion Constructores
\r
23 #region Campos Privados
\r
25 private bool _esBienFormado = true;
\r
27 private string _pathArchivo = string.Empty;
\r
28 private string _cuitPrestador;
\r
29 private DateTime _fechaEnvio;
\r
31 private LineaInfoPrestacionesReport[] _lineas = null;
\r
33 #endregion Campos Privados
\r
35 #region Propiedades Públicas
\r
37 public string PathArchivo
\r
39 get { return this._pathArchivo; }
\r
40 set { this._pathArchivo = value; }
\r
43 public string CuitPrestador
\r
45 get { return this._cuitPrestador; }
\r
46 set { this._cuitPrestador = value; }
\r
49 public DateTime FechaEnvio
\r
51 get { return this._fechaEnvio; }
\r
52 set { this._fechaEnvio = value; }
\r
55 public LineaInfoPrestacionesReport[] Lineas
\r
57 get { return this._lineas; }
\r
58 set { this._lineas = value; }
\r
61 #endregion Propiedades Públicas
\r
63 #region Métodos públicos
\r
65 public bool ValidarFormato()
\r
67 XmlDocument xmlDoc = new System.Xml.XmlDocument();
\r
70 xmlDoc.Load( this._pathArchivo );
\r
72 catch ( XmlException xmlEx )
\r
74 #warning Ver como mostrar los errores
\r
78 if ( this.ValidarContraSchema( xmlDoc ) )
\r
80 this.CargarXml( xmlDoc );
\r
84 //Mostrar error y retornar
\r
91 public void ValidarLineas( Dominio.Autorizaciones.Prestador prestador )
\r
93 foreach ( LineaInfoPrestacionesReport linea in this._lineas )
\r
95 linea.Validar( prestador );
\r
99 #endregion Métodos públicos
\r
101 #region Métodos privados
\r
103 private bool ValidarContraSchema( XmlDocument xmlDoc )
\r
105 #warning Seguir acá
\r
110 /// Toma un xmlDoc valido contra el schema
\r
112 /// <param name="xmlDoc"></param>
\r
113 private void CargarXml( XmlDocument xmlDoc )
\r
115 XmlNode root = xmlDoc["infoPrestaciones"];
\r
117 this.FechaEnvio = DateTime.Parse( root.Attributes["fechaEnvio"].InnerText );
\r
119 XmlElement prestador = root["prestador"];
\r
120 this.CuitPrestador = prestador["CUIT"].InnerText;
\r
122 XmlElement lineasXml = root["lineas"];
\r
123 if ( lineasXml.HasChildNodes )
\r
125 this._lineas = new LineaInfoPrestacionesReport[ lineasXml.ChildNodes.Count ];
\r
127 XmlNode node; int cod; string tipoAut; int codAfiliado; string codPrestacion;
\r
128 DateTime fechaRealizacion; float porcentajeCobertura;
\r
130 NumberFormatInfo nfi = new NumberFormatInfo();
\r
131 nfi.NumberDecimalDigits = 2;
\r
132 nfi.NumberDecimalSeparator = ".";
\r
133 nfi.NumberGroupSeparator = ",";
\r
135 for ( int i = 0; i < lineasXml.ChildNodes.Count; i++ )
\r
137 node = lineasXml.ChildNodes[i];
\r
138 cod = int.Parse( node.Attributes["codigoAutorizacion"].InnerText );
\r
139 tipoAut = node["tipoAutorizacion"].InnerText;
\r
140 codAfiliado = int.Parse( node["codigoAfiliado"].InnerText );
\r
141 codPrestacion = node["codigoPrestacion"].InnerText;
\r
142 fechaRealizacion = DateTime.Parse( node["fechaRealizacion"].InnerText );
\r
144 porcentajeCobertura = float.Parse( node["porcentajeCobertura"].InnerText.Trim(), nfi );
\r
146 this._lineas[i] = new LineaInfoPrestacionesReport( cod, tipoAut, codAfiliado, codPrestacion,
\r
147 fechaRealizacion, porcentajeCobertura );
\r
152 #endregion Métodos privados
\r