using Dominio.Planes;\r
using Reportes;\r
\r
+using System.IO;\r
+\r
using com.db4o;\r
\r
#endregion Usings\r
Solicitante sol = new Solicitante( ETipoDocumento.DNI, 28123456, "Jorge", "Drexler" );\r
Plan plan = new Plan( 10F ); plan.Codigo = 3; \r
Afiliado afil = new Afiliado( sol, plan, new DateTime(2004, 4, 30 ) );\r
- a.Afiliado = new Dominio.Afiliados.Afiliado( 987 );\r
- a.Prestacion = new Prestacion( "B01AC06" );\r
+ afil.Codigo = 987;\r
+ a.Afiliado = afil;\r
+ a.Prestacion = new Prestacion( "B01AC06", "Acido acetilsalicílico" );\r
a.Prestador = pre;\r
a.FechaSolicitud = new DateTime( 2005, 5, 20 ); // 20 de mayo\r
a.FechaRealizacion = DateTime.MinValue;\r
\r
if ( informes.Length <= 0 )\r
{\r
- this.NotificarPrestador( NotificacionPrestador.Tipo.InfoNoRecibida, null );\r
- this.NotificarPagos( "Archivos no recibidos", "Prestador=" + p.Nombre + "\n" + "CUIT=" + p.Cuit );\r
+ this.NotificarPrestador( p, NotificacionPrestador.Tipo.InfoNoRecibida, null );\r
+ this.NotificarPagos( "NORECIBIDO " + p.Cuit.Trim() + " " + DateTime.Now.ToString("yyyy-MM-dd") );\r
}\r
else\r
{\r
ip.ValidarLineas( p ); //Las marca como aprobadas/rechazadas\r
this.ProcesarLineas( p, ip );\r
ipAdmin.MoverArchivoAceptado( ip );\r
- this.NotificarPrestador( NotificacionPrestador.Tipo.ProcesoExitoso, ip );\r
+ this.NotificarPrestador( p, NotificacionPrestador.Tipo.ProcesoExitoso, ip );\r
}\r
else\r
{\r
// 1. Mover el archivo a "rechazados"\r
ipAdmin.MoverArchivoRechazado( ip );\r
// 2. Enviar mail al Prestador y a Pagos\r
- this.NotificarPrestador( NotificacionPrestador.Tipo.ErrorGrave, ip );\r
- this.NotificarPagos( "Error al procesar archivo", "Nombre=" + ip.PathArchivo );\r
+ this.NotificarPrestador( p, NotificacionPrestador.Tipo.ErrorGrave, ip );\r
+ this.NotificarPagos( "ERROR " + p.Cuit.Trim() + " " + ip.NombreArchivo );\r
}\r
} //foreach informes\r
} //else\r
/// Si está aprobada, la registra en el sistema y la agrega al reporte de Consumo de los Afiliados. \r
/// A todas las lineas las agrega al Informe de Aprobaciones/rechazos de Prestaciones Realizadas.\r
/// </summary>\r
- /// <param name="ip">Reporte del cual se porcesarán las lineas</param>\r
private void ProcesarLineas( Prestador p, InfoPrestacionesReport ip )\r
{\r
foreach ( LineaInfoPrestacionesReport linea in ip.Lineas )\r
}\r
}\r
\r
- private void NotificarPrestador( NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip )\r
+ private void NotificarPrestador( Prestador p, NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip )\r
{\r
- //NotificacionesAdmin.\r
+ NotificacionesAdmin.Instancia.EnviarAlPrestador( p, tipoNotif, ip );\r
}\r
\r
- private void NotificarPagos( string titulo, string contenido )\r
+ private void NotificarPagos( string mensaje )\r
{\r
- \r
+ NotificacionesAdmin.Instancia.EnviarAPagos( mensaje );\r
}\r
\r
\r
using System;\r
using System.Collections;\r
+using System.Configuration;\r
using System.Xml;\r
using Dominio.Autorizaciones;\r
using Dominio.Afiliados;\r
using com.db4o;\r
+using System.IO;\r
\r
\r
namespace Reportes\r
\r
public void Serializar()\r
{\r
- XmlTextWriter writer = new XmlTextWriter("c:\\rc_borrame.xml",null);\r
+ string currentDir = Directory.GetCurrentDirectory();\r
+ string dirPagos = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioPagos"] );\r
+ if ( ! Directory.Exists(dirPagos) )\r
+ {\r
+ Directory.CreateDirectory( dirPagos );\r
+ }\r
+ \r
+ int secuencia = 0;\r
+ \r
+ string baseFileName = "rc_" + DateTime.Now.ToString("yyyy-MM-dd") + "_"; \r
+ string pathName = Path.Combine( dirPagos, baseFileName + secuencia.ToString("00") + ".xml" );\r
+ \r
+ while ( File.Exists(pathName) )\r
+ {\r
+ secuencia += 1;\r
+ pathName = Path.Combine( dirPagos, baseFileName + secuencia.ToString("00") + ".xml");\r
+ }\r
+\r
+ XmlTextWriter writer = new XmlTextWriter( pathName, null );\r
writer.Formatting = Formatting.Indented;\r
this.xmlDoc.Save(writer);\r
}\r
return;\r
else\r
informeAprobaciones.Serializar();\r
-\r
}\r
\r
public void MoverArchivoAceptado( InfoPrestacionesReport ip )\r
{\r
+ string currentDir = Directory.GetCurrentDirectory();\r
+ \r
+ string dirAceptados = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioInformesAceptados"] );\r
+ if ( ! Directory.Exists(dirAceptados) )\r
+ {\r
+ Directory.CreateDirectory( dirAceptados );\r
+ }\r
\r
+ File.Move( ip.PathArchivo, Path.Combine( dirAceptados, ip.NombreArchivo ) );\r
+ \r
}\r
\r
public void MoverArchivoRechazado( InfoPrestacionesReport ip )\r
{\r
+ string currentDir = Directory.GetCurrentDirectory();\r
+ \r
+ string dirRechazados = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioInformesRechazados"] );\r
+ if ( ! Directory.Exists(dirRechazados) )\r
+ {\r
+ Directory.CreateDirectory( dirRechazados );\r
+ }\r
+\r
+ File.Move( ip.PathArchivo, Path.Combine( dirRechazados, ip.NombreArchivo ) );\r
\r
}\r
\r
set { this._pathArchivo = value; }\r
}\r
\r
+ public string NombreArchivo\r
+ {\r
+ get { return this.PathArchivo.Substring(this.PathArchivo.LastIndexOf(Path.DirectorySeparatorChar) + 1); }\r
+ }\r
+\r
public string CuitPrestador\r
{\r
get { return this._cuitPrestador; }\r
using System;\r
+using System.IO;\r
+using System.Configuration;\r
+using Dominio.Autorizaciones;\r
+\r
\r
namespace Reportes\r
{\r
/// <summary>\r
/// Clase que contiene la funcionalidad para generar y enviar notificaciones\r
/// </summary>\r
- public class NotificacionesAdmin\r
+ public sealed class NotificacionesAdmin\r
{\r
#region Constructores\r
\r
- public NotificacionesAdmin()\r
+ private NotificacionesAdmin()\r
+ {\r
+ }\r
+\r
+ private static NotificacionesAdmin _instancia = new NotificacionesAdmin();\r
+ public static NotificacionesAdmin Instancia\r
{\r
+ get { return NotificacionesAdmin._instancia; }\r
}\r
\r
#endregion Constructores\r
\r
#region Métodos Públicos\r
\r
- public void EnviarAlPrestador( NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip )\r
+ public void EnviarAlPrestador( Prestador p, NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip )\r
{\r
+ string currentDir = Directory.GetCurrentDirectory();\r
+ \r
+ string dirMails = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioMails"] );\r
+ if ( ! Directory.Exists(dirMails) )\r
+ {\r
+ Directory.CreateDirectory( dirMails );\r
+ }\r
+\r
+ string pathName = Path.Combine( dirMails, "prestadores.txt" );\r
+ string subject = string.Empty;\r
+ \r
+ switch ( tipoNotif )\r
+ {\r
+ case NotificacionPrestador.Tipo.ProcesoExitoso:\r
+ subject = "OK " + ip.NombreArchivo;\r
+ break;\r
+ case NotificacionPrestador.Tipo.InfoNoRecibida:\r
+ subject = "NORECIBIDO " + DateTime.Now.ToString("yyyy-MM-dd");\r
+ break;\r
+ case NotificacionPrestador.Tipo.ErrorGrave:\r
+ subject = "ERROR " + ip.NombreArchivo;\r
+ break;\r
+ }\r
\r
+ this.EscribirArchivo( pathName, subject, "Prestador: " + p.Cuit );\r
}\r
\r
- public void EnviarAPagos( string titulo, string contenido )\r
+ public void EnviarAPagos( string mensaje )\r
{\r
+ string currentDir = Directory.GetCurrentDirectory();\r
+ \r
+ string dirMails = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioMails"] );\r
+ if ( ! Directory.Exists(dirMails) )\r
+ {\r
+ Directory.CreateDirectory( dirMails );\r
+ }\r
\r
+ string pathName = Path.Combine( dirMails, "pagos.txt" );\r
+ string subject = mensaje;\r
+ \r
+ this.EscribirArchivo( pathName, subject, string.Empty );\r
}\r
\r
#endregion Métodos Públicos\r
+\r
+ #region Métodos privados\r
+\r
+\r
+ private void EscribirArchivo( string pathName, string subject, string titulo )\r
+ {\r
+ StreamWriter w = null;\r
+ if ( File.Exists(pathName) )\r
+ w = File.AppendText( pathName );\r
+ else\r
+ w = File.CreateText( pathName );\r
+\r
+ w.WriteLine( @"*** " + titulo + "**************************************************" );\r
+ w.WriteLine( @"*** " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + " ******************************************************" );\r
+ w.WriteLine( @"******************************************************************************" );\r
+ w.WriteLine( @"Subject: " + subject );\r
+ w.WriteLine();\r
+ w.WriteLine( @"------------------------------------------------------------------------------" );\r
+ w.WriteLine();\r
+\r
+ w.Close();\r
+ }\r
+\r
+ #endregion Métodos privados\r
}\r
}\r
+\r
using Dominio.Autorizaciones;\r
using Dominio.Afiliados;\r
using com.db4o;\r
+using System.Configuration;\r
+using System.IO;\r
+\r
\r
namespace Reportes\r
{\r
\r
public void Serializar()\r
{\r
- XmlTextWriter writer = new XmlTextWriter("c:\\borrame.xml",null);\r
+ string currentDir = Directory.GetCurrentDirectory();\r
+ string dirPagos = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioPagos"] );\r
+ if ( ! Directory.Exists(dirPagos) )\r
+ {\r
+ Directory.CreateDirectory( dirPagos );\r
+ }\r
+ \r
+ int secuencia = 0;\r
+ \r
+ string baseFileName = "rp_" + DateTime.Now.ToString("yyyy-MM-dd") + "_"; \r
+ string pathName = Path.Combine( dirPagos, baseFileName + secuencia.ToString("00") + ".xml" );\r
+ \r
+ while ( File.Exists(pathName) )\r
+ {\r
+ secuencia += 1;\r
+ pathName = Path.Combine( dirPagos, baseFileName + secuencia.ToString("00") + ".xml");\r
+ }\r
+\r
+ XmlTextWriter writer = new XmlTextWriter( pathName, null );\r
writer.Formatting = Formatting.Indented;\r
this.xmlDoc.Save(writer);\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
+ <!-- Directorio donde se graban los mails -->\r
+ <add key="DirectorioMails" value="Mails" /> <!-- Relativo al dir donde corre el exe -->\r
\r
</appSettings>\r
\r