using System; using System.IO; using System.Configuration; using Dominio.Autorizaciones; namespace Reportes { /// /// Clase que contiene la funcionalidad para generar y enviar notificaciones /// public sealed class NotificacionesAdmin { #region Constructores private NotificacionesAdmin() { } private static NotificacionesAdmin _instancia = new NotificacionesAdmin(); public static NotificacionesAdmin Instancia { get { return NotificacionesAdmin._instancia; } } #endregion Constructores #region Métodos Públicos public void EnviarAlPrestador( Prestador p, NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip ) { string currentDir = Directory.GetCurrentDirectory(); string dirMails = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioMails"] ); if ( ! Directory.Exists(dirMails) ) { Directory.CreateDirectory( dirMails ); } string pathName = Path.Combine( dirMails, "prestadores.txt" ); string subject = string.Empty; string extra = string.Empty; switch ( tipoNotif ) { case NotificacionPrestador.Tipo.ProcesoExitoso: subject = "OK " + ip.NombreArchivo; break; case NotificacionPrestador.Tipo.InfoNoRecibida: subject = "NORECIBIDO " + DateTime.Now.ToString("yyyy-MM-dd"); break; case NotificacionPrestador.Tipo.ErrorGrave: subject = "ERROR " + ip.NombreArchivo; if ( ip.ErroresValidacion.Count == 0 ) extra = @"--> El numero de Cuit informado en el archivo no se corresponde con el del Prestador"; else { foreach ( string s in ip.ErroresValidacion ) { extra += ( @"--> " + s + System.Environment.NewLine ); } } break; } this.EscribirArchivo( pathName, subject, "Prestador: " + p.Cuit, extra ); } public void EnviarAPagos( string mensaje ) { string currentDir = Directory.GetCurrentDirectory(); string dirMails = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioMails"] ); if ( ! Directory.Exists(dirMails) ) { Directory.CreateDirectory( dirMails ); } string pathName = Path.Combine( dirMails, "pagos.txt" ); string subject = mensaje; this.EscribirArchivo( pathName, subject, string.Empty, string.Empty ); } #endregion Métodos Públicos #region Métodos privados private void EscribirArchivo( string pathName, string subject, string titulo, string extra ) { StreamWriter w = null; if ( File.Exists(pathName) ) w = File.AppendText( pathName ); else w = File.CreateText( pathName ); w.WriteLine( @"*** " + titulo + "**************************************************" ); w.WriteLine( @"*** " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + " ******************************************************" ); w.WriteLine( @"******************************************************************************" ); w.WriteLine( @"Subject: " + subject ); w.WriteLine(); if ( extra.Trim() != string.Empty ) { w.WriteLine( "Detalle: " ); w.WriteLine(extra); w.WriteLine(); } w.WriteLine( @"------------------------------------------------------------------------------" ); w.WriteLine(); w.Close(); } #endregion Métodos privados } }