internal static async Task InsertBulkMessagePayload(MessagePayload messagePayload) { try { DB_MessagePayload dB_MessagePayload = new DB_MessagePayload(messagePayload); await Resources.GetInstance().BulkMessagePayloadCollection.InsertOneAsync(dB_MessagePayload); } catch (Exception ex) { await FlushLogs(new List <LogEvent> { CreateLogEvent(null, IRDLM.InternalException(ex)) }); } }
public async Task ProcessSingleMessage(QueueData queueData) { MessagePayload messagePayload = new MessagePayload(queueData); try { messagePayload.Validate(); if (!messagePayload.IsProcessable) { return; } messagePayload.ConfigureChannel(); if (messagePayload.IsEmailDelivery == null) { return; } await messagePayload.ConfigureUserData(); if (!messagePayload.IsUserDataLogEventConfigured) { return; } try { messagePayload.PrepareForHashLookUps(); messagePayload.ConfigureVendor(); if (!messagePayload.IsVendorConfigured) { return; } messagePayload.ConfigureVendorFlag(); if (messagePayload.Vendor.IsBulkVendor) { await Utils.InsertBulkMessagePayload(messagePayload); return; } SingleDispatch singleDispatch = new SingleDispatch(); singleDispatch = new SingleDispatch { MessagePayload = messagePayload }; singleDispatch.ConfigureDispatchVendor(); if (!singleDispatch.IsDispatcConfigured) { return; } await singleDispatch.DispatchReadyVendor.RunAsync(singleDispatch.MessagePayload); } catch (Exception ex) { messagePayload.LogEvents.Add(Utils.CreateLogEvent(messagePayload.QueueData, IRDLM.InternalException(ex))); messagePayload.InvitationLogEvents.Add(Utils.CreateInvitationLogEvent(EventAction.DispatchUnsuccessful, messagePayload.IsEmailDelivery.Value ? EventChannel.Email : EventChannel.SMS, messagePayload.QueueData, IRDLM.InternalException(ex))); } } catch (Exception ex) { messagePayload.LogEvents.Add(Utils.CreateLogEvent(queueData, IRDLM.InternalException(ex))); } finally { await Utils.FlushLogs(new List <MessagePayload> { messagePayload }); } }
public async Task ProcessMultipleMessage(bool isLate) { List <LogEvent> logEvents = new List <LogEvent>(); logEvents.Add(Utils.CreateLogEvent(null, IRDLM.TimeTriggerStart)); if (isLate) { logEvents.Add(Utils.CreateLogEvent(null, IRDLM.TimeTriggerRunningLate)); } List <MessagePayload> messagePayloads = new List <MessagePayload>(); List <DB_MessagePayload> dB_MessagePayloads = await Utils.ReadBulkMessagePayloads(); if (dB_MessagePayloads.Count > 0) { try { await Utils.UpdateBulkMessagePayloads(dB_MessagePayloads); Dictionary <string, List <MessagePayload> > ListOfMessagePayloadsByTemplateId = new Dictionary <string, List <MessagePayload> >(); foreach (DB_MessagePayload dB_MessagePayload in dB_MessagePayloads) { MessagePayload messagePayload = JsonConvert.DeserializeObject <MessagePayload>(dB_MessagePayload.MessagePayload); messagePayloads.Add(messagePayload); messagePayload.LogEvents.Add(Utils.CreateLogEvent(messagePayload.QueueData, IRDLM.ReadFromDB)); if (!ListOfMessagePayloadsByTemplateId.ContainsKey(messagePayload.QueueData.TemplateId)) { ListOfMessagePayloadsByTemplateId.Add(messagePayload.QueueData.TemplateId, new List <MessagePayload>()); } ListOfMessagePayloadsByTemplateId[messagePayload.QueueData.TemplateId].Add(messagePayload); } foreach (KeyValuePair <string, List <MessagePayload> > messagePayloadsByTemplateId in ListOfMessagePayloadsByTemplateId) { BulkDispatch bulkDispatch = null; try { bulkDispatch = new BulkDispatch { MessagePayloads = messagePayloadsByTemplateId.Value }; bulkDispatch.ConfigureDispatchVendor(); if (!bulkDispatch.IsDispatchConfigured) { continue; } await bulkDispatch.DispatchReadyVendor.RunAsync(bulkDispatch.MessagePayloads); } catch (Exception ex) { bulkDispatch.MessagePayloads.ForEach(x => x.LogEvents.Add(Utils.CreateLogEvent(x.QueueData, IRDLM.InternalException(ex)))); bulkDispatch.MessagePayloads.ForEach(x => x.InvitationLogEvents.Add(Utils.CreateInvitationLogEvent(EventAction.DispatchUnsuccessful, x.IsEmailDelivery.Value ? EventChannel.Email : EventChannel.SMS, x.QueueData, IRDLM.InternalException(ex)))); } } } catch (Exception ex) { logEvents.Add(Utils.CreateLogEvent(null, IRDLM.InternalException(ex))); } finally { await Utils.DeleteBulkMessagePayloads(dB_MessagePayloads); await Utils.FlushLogs(messagePayloads); } } logEvents.Add(Utils.CreateLogEvent(null, IRDLM.TimeTriggerEnd(dB_MessagePayloads.Count))); await Utils.FlushLogs(logEvents); }