private void SendMessage(AppMessage appMessage, MessageTypeConfiguration messageConfiguration) { switch ((MessageHandlers)messageConfiguration.MessageHandlerId) { case MessageHandlers.Trace: //TODO: ENUM TO DESCRIPTION ((MessageTypes)messageConfiguration.MessageTypeId).ToString() AppTraceHelper.Current.TraceMessage(appMessage.TraceLevel, appMessage.Message, appMessage.Subject, EnumHelper.Current.GetName((MessageTypes)messageConfiguration.MessageTypeId), appMessage.StackTrace); break; case MessageHandlers.ApplicationLog: ApplicationLogBusinessManager.Current.Log(appMessage.TraceLevel, appMessage.Message, appMessage.Subject, (MessageTypes)messageConfiguration.MessageTypeId, appMessage.StackTrace); break; case MessageHandlers.Email: if (!String.IsNullOrEmpty(appMessage.StackTrace)) { appMessage.Message += String.Format("<h6>Stack Trace</h6><p>{0}</p>", appMessage.StackTrace); } EmailHelper.Current.Send(EmailTypes.AppMessage, appMessage, messageConfiguration.EmailAddresses); break; default: break; } }
private void BuildRollupAppMessageAndSend(object messageConfigurationObject) { MessageTypeConfiguration messageConfiguration = (MessageTypeConfiguration)messageConfigurationObject; //Sleep for the Rollup Period Thread.Sleep(new TimeSpan(0, messageConfiguration.RollupMessageDelayMinutes ?? 0, 0)); //Build the Rollup Message List <AppMessage> messageParts = rollupMessageCache[messageConfiguration.MessageTypeConfigurationId]; AppMessage rollupMessage = new AppMessage(); rollupMessage.MessageType = (MessageTypes)messageConfiguration.MessageTypeId; rollupMessage.Subject = String.Format("({0}) {1}", messageParts.Count, messageParts.First().Subject); rollupMessage.Message = String.Join("", messageParts.Select(mp => mp.Message)); //Send the Rollup Message SendMessage(rollupMessage, messageConfiguration); //Clear the Cache of the Sent Message rollupMessageCache.Remove(messageConfiguration.MessageTypeConfigurationId); }
private void AddMessageToMessageCache(AppMessage appMessage, MessageTypeConfiguration messageConfiguration) { if (rollupMessageCache == null) { rollupMessageCache = new Dictionary <int, List <AppMessage> >(); } if (rollupMessageCache.ContainsKey(messageConfiguration.MessageTypeConfigurationId)) { rollupMessageCache[messageConfiguration.MessageTypeConfigurationId].Add(appMessage); } else { rollupMessageCache.Add(messageConfiguration.MessageTypeConfigurationId, new List <AppMessage>() { appMessage }); Thread thread = new Thread(new ParameterizedThreadStart(BuildRollupAppMessageAndSend)); thread.Start(messageConfiguration); } }
///// <summary> ///// Update ///// </summary> ///// <param name="connectionInfo">The connection information.</param> ///// <param name="MessageTypeConfiguration">The entity.</param> ///// <returns></returns> //public IProcessResult Update(IConnectionInfo connectionInfo, MessageTypeConfiguration entity) //{ // return UpdateInternal(connectionInfo, entity).Result; //} /// <summary> /// Update Async. /// </summary> /// <param name="connectionInfo">The connection information.</param> /// <param name="entity">The entity.</param> /// <returns></returns> public async Task <IProcessResult> UpdateAsync(IConnectionInfo connectionInfo, MessageTypeConfiguration entity) { return(await UpdateInternal(connectionInfo, entity)); }
///// <summary> ///// Select ///// </summary> ///// <param name="connectionInfo">The connection information.</param> ///// <param name="filter">The filter.</param> ///// <returns></returns> //public List<MessageTypeConfiguration> Select(IConnectionInfo connectionInfo, MessageTypeConfiguration filter) //{ // return SelectInternal(connectionInfo, filter).Result; //} /// <summary> /// Select Async /// </summary> /// <param name="connectionInfo">The connection information.</param> /// <param name="filter">The filter.</param> /// <returns></returns> public async Task <List <MessageTypeConfiguration> > SelectAsync(IConnectionInfo connectionInfo, MessageTypeConfiguration filter) { return(await SelectInternal(connectionInfo, filter)); }
///// <summary> ///// Update ///// </summary> ///// <param name="connectionInfo">The connection information.</param> ///// <param name="MessageTypeConfiguration">The entity.</param> ///// <returns></returns> //public IProcessResult Update(IConnectionInfo connectionInfo, MessageTypeConfiguration entity) //{ // return MessageTypeConfigurationManager.Current.Update(connectionInfo, entity); //} /// <summary> /// Update Async /// </summary> /// <param name="connectionInfo">The connection information.</param> /// <param name="entity">The entity.</param> /// <returns></returns> public async Task <IProcessResult> UpdateAsync(IConnectionInfo connectionInfo, MessageTypeConfiguration entity) { return(await MessageTypeConfigurationManager.Current.UpdateAsync(connectionInfo, entity)); }
///// <summary> ///// Select ///// </summary> ///// <param name="connectionInfo">The connection information.</param> ///// <param name="filter">The filter.</param> ///// <returns></returns> //public List<MessageTypeConfiguration> Select(IConnectionInfo connectionInfo, MessageTypeConfiguration filter) //{ // return MessageTypeConfigurationManager.Current.Select(connectionInfo, filter); //} /// <summary> /// Select Async /// </summary> /// <param name="connectionInfo">The connection information.</param> /// <param name="filter">The filter.</param> /// <returns></returns> public async Task <List <MessageTypeConfiguration> > SelectAsync(IConnectionInfo connectionInfo, MessageTypeConfiguration filter) { return(await MessageTypeConfigurationManager.Current.SelectAsync(connectionInfo, filter)); }