\r
using Dominio;\r
using Dominio.Autorizaciones;\r
+using Reportes;\r
\r
#endregion Usings\r
\r
\r
public void procesarInfoRecibida()\r
{\r
- //1. Obtener todos los prestadores\r
- ArrayList prestadores = this.ObjectSetToArrayList( this.Db.get(new Prestador()) );\r
-\r
- //2. recorrer los prestadores\r
- foreach ( Prestador p in prestadores )\r
+ try\r
{\r
- //Obtener archivos enviados del prestador\r
+ //1. Obtener todos los prestadores\r
+ ArrayList prestadores = this.ObjectSetToArrayList( this.Db.get(new Prestador()) );\r
\r
- }\r
+ InfoPrestacionesAdmin ipAdmin = new InfoPrestacionesAdmin();\r
+\r
+ //2. recorrer los prestadores\r
+ foreach ( Prestador p in prestadores )\r
+ {\r
+ //Obtener archivos enviados del prestador\r
+ InfoPrestacionesReport[] informes = ipAdmin.ObtenerInfoPendiente( p );\r
\r
+ //Recorro archivo por archivo\r
+ foreach ( InfoPrestacionesReport ip in informes )\r
+ {\r
+ if ( (ip.ValidarFormato()) && ( ip.Cuit == p.Cuit ) )\r
+ {\r
+ //OK\r
+ }\r
+ else\r
+ {\r
+ //ERROR. \r
+ // 1. Mover el archivo a "rechazados"\r
+ // 2. Enviar mail\r
+ }\r
+ }\r
+ }\r
\r
+ /*\r
+ * string dir = System.Configuration.ConfigurationSettings.AppSettings["DirectorioPrestadores"];\r
+ * */\r
+ }\r
+ catch ( Exception e )\r
+ {\r
+ Console.WriteLine( e.Message );\r
+ }\r
}\r
\r
#endregion Métodos Públicos\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+\r
+ <xs:element name="infoPrestaciones" type="InfoPrestacionesType"/>\r
+\r
+ <xs:complexType name="InfoPrestacionesType">\r
+ <xs:sequence>\r
+ <xs:element name="prestador" type="PrestadorType"/>\r
+ <xs:element name="lineas" type="LineasType"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="fechaEnvio" type="xs:date"/>\r
+ </xs:complexType>\r
+\r
+ <xs:complexType name="PrestadorType">\r
+ <xs:sequence>\r
+ <xs:element name="CUIT" type="CUITType"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+\r
+ <xs:complexType name="LineasType">\r
+ <xs:sequence>\r
+ <xs:element name="linea" type="LineaType" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+\r
+ <xs:complexType name="LineaType">\r
+ <xs:sequence>\r
+ <xs:element name="tipoAutorizacion" type="TipoAutorizacionType"/>\r
+ <xs:element name="codigoAfiliado" type="xs:positiveInteger"/>\r
+ <xs:element name="codigoPrestacion" type="CodigoPrestacionType"/>\r
+ <xs:element name="fechaRealizacion" type="xs:date"/>\r
+ <xs:element name="porcentajeCobertura" type="PorcentajeCoberturaType"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="codigoAutorizacion" type="xs:positiveInteger"/>\r
+ </xs:complexType>\r
+\r
+ <xs:simpleType name="CUITType">\r
+ <xs:restriction base="xs:string">\r
+ <xs:pattern value="\d{2}-\d{8}-\d{1}"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+\r
+ <xs:simpleType name="TipoAutorizacionType">\r
+ <xs:restriction base="xs:normalizedString">\r
+ <xs:enumeration value="Manual"/>\r
+ <xs:enumeration value="Automatica"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ \r
+ <xs:simpleType name="CodigoPrestacionType">\r
+ <xs:restriction base="xs:normalizedString">\r
+ <xs:minLength value="1"/>\r
+ <xs:maxLength value="8"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+\r
+ <xs:simpleType name="PorcentajeCoberturaType">\r
+ <xs:restriction base="xs:decimal">\r
+ <xs:minInclusive value="0"/>\r
+ <xs:maxInclusive value="100"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+\r
+</xs:schema>\r
using System;\r
+using Dominio.Autorizaciones;\r
+using System.IO;\r
+using System.Configuration;\r
\r
namespace Reportes\r
{\r
}\r
\r
#endregion Constructores\r
+\r
+ #region Métodos Públicos\r
+\r
+ /// <summary>\r
+ /// Crea una lista de objetos InfoPrestacionesReport a partir de los archivos enviados por el\r
+ /// Prestador que están en su directorio asociado\r
+ /// </summary>\r
+ /// <param name="p">Prestador del cual se desea obtener sus informes enviados</param>\r
+ /// <returns>Lista de informes enviados por el prestador</returns>\r
+ public InfoPrestacionesReport[] ObtenerInfoPendiente( Prestador p )\r
+ {\r
+ InfoPrestacionesReport[] informes = null;\r
+\r
+ try\r
+ {\r
+ DirectoryInfo dir = this.ObtenerDirectorio( p );\r
+ \r
+ FileInfo[] archivos = dir.GetFiles( "*.xml" );\r
+ \r
+ foreach ( FileInfo arch in archivos )\r
+ {\r
+ \r
+ }\r
+ }\r
+ catch\r
+ {\r
+ throw;\r
+ }\r
+\r
+ return informes;\r
+ }\r
+\r
+\r
+ #endregion Métodos Públicos\r
+\r
+ private DirectoryInfo ObtenerDirectorio( Prestador p )\r
+ {\r
+ string currentDir = Directory.GetCurrentDirectory();\r
+ \r
+ string dirPrestadores = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioPrestadores"] );\r
+ if ( ! Directory.Exists(dirPrestadores) )\r
+ {\r
+ Directory.CreateDirectory( dirPrestadores );\r
+ }\r
+\r
+ string dirPrestador = Path.Combine( dirPrestadores, p.Cuit );\r
+ if ( ! Directory.Exists(dirPrestador) )\r
+ {\r
+ Directory.CreateDirectory( dirPrestador );\r
+ }\r
+\r
+ return new DirectoryInfo( dirPrestador );\r
+ }\r
+\r
}\r
}\r
}\r
\r
#endregion Constructores\r
+\r
+ #region Campos Privados\r
+\r
+ private string _cuit;\r
+\r
+ #endregion Campos Privados\r
+\r
+ #region Propiedades Públicas\r
+ \r
+ public string Cuit\r
+ {\r
+ get { return this._cuit; }\r
+ set { this._cuit = value; }\r
+ }\r
+\r
+ #endregion Propiedades Públicas\r
+\r
+ #region Métodos públicos\r
+\r
+ public bool ValidarFormato()\r
+ {\r
+\r
+ return true;\r
+ }\r
+\r
+ #endregion Métodos públicos\r
}\r
}\r
SubType = "Code"\r
BuildAction = "Compile"\r
/>\r
+ <File\r
+ RelPath = "Recursos\infoPrestaciones_schema.xsd"\r
+ BuildAction = "Content"\r
+ />\r
+ <File\r
+ RelPath = "Recursos\infoPrestaciones_schema.xsx"\r
+ DependentUpon = "infoPrestaciones_schema.xsd"\r
+ BuildAction = "None"\r
+ />\r
<File\r
RelPath = "Reportes\InfoPrestacionesAdmin.cs"\r
SubType = "Code"\r
son procesados -->\r
<add key="DirectorioProcesamiento" value="Procesamiento" /> <!-- Relativo al dir donde corre el exe -->\r
\r
+ <!-- Directorio donde se encuentran recursos utilizados por la aplicación, por ejemplo\r
+ los schemas de validación de los informes -->\r
+ <add key="DirectorioRecursos" value="Recursos" /> <!-- Relativo al dir donde corre el exe -->\r
+ \r
</appSettings>\r
\r
</configuration>\r