public void SaveCoordinator(CoordinatorCreated message) { bool trackingDataExists; using (var session = RavenDocStore.GetStore().OpenSession(Database)) { var coordinatorTrackingData = session.Load <CoordinatorTrackingData>(message.CoordinatorId.ToString()); trackingDataExists = coordinatorTrackingData != null; } if (trackingDataExists) { return; } using (var session = RavenDocStore.GetStore().BulkInsert(Database)) { var coordinatorTrackingData = new CoordinatorTrackingData { CoordinatorId = message.CoordinatorId, CreationDateUtc = message.CreationDateUtc, MetaData = message.MetaData, ConfirmationEmailAddress = String.Join(", ", message.ConfirmationEmailAddresses), UserOlsenTimeZone = message.UserOlsenTimeZone, CurrentStatus = CoordinatorStatusTracking.Started, MessageBody = message.MessageBody, MessageCount = message.MessageCount, Username = message.UserName }; session.Store(coordinatorTrackingData, message.CoordinatorId.ToString()); } }
public void Handle(CoordinatorCreated message) { Thread.Sleep(1000); var context = GlobalHost.ConnectionManager.GetHubContext <ScheduleStatus>(); context.Clients.All.coordinatorStarted(new { message.CoordinatorId }); }
public void CoordinatorCreatedNoEmailNoDefaultEmailForCoordinatorNoAction() { var ravenDocStore = MockRepository.GenerateMock <IRavenDocStore>(); var session = MockRepository.GenerateMock <IDocumentSession>(); ravenDocStore.Expect(r => r.GetStore().OpenSession("Configuration")) .Return(session); session.Expect(s => s.Load <EmailDefaultNotification>("EmailDefaultConfig")).Return(new EmailDefaultNotification()); var emailService = new EmailService { RavenDocStore = ravenDocStore }; var coordinatorComplete = new CoordinatorCreated(); emailService.Handle(new CoordinatorCreatedEmail(coordinatorComplete)); }
public void CoordinatorCreatedWithEmailWithDefaultEmailForCoordinatorSendEmail() { var ravenDocStore = MockRepository.GenerateMock <IRavenDocStore>(); var session = MockRepository.GenerateMock <IDocumentSession>(); var mailActioner = MockRepository.GenerateMock <IMailActioner>(); var dateTimeMapper = MockRepository.GenerateMock <IDateTimeOlsenFromUtcMapping>(); ravenDocStore.Expect(r => r.GetStore().OpenSession("Configuration")) .Return(session); var emailDefaultNotification = new EmailDefaultNotification { EmailAddresses = new List <string> { "*****@*****.**", "*****@*****.**" } }; session.Expect(s => s.Load <EmailDefaultNotification>("EmailDefaultConfig")).Return(emailDefaultNotification); var mailgunConfig = new MailgunConfiguration { ApiKey = "key", DomainName = "domain", DefaultFrom = "*****@*****.**" }; session.Expect(s => s.Load <MailgunConfiguration>("MailgunConfig")).Return(mailgunConfig); var message = new MailMessage(); mailActioner.Expect(m => m.Send(Arg <MailgunConfiguration> .Is.Equal(mailgunConfig), Arg <MailMessage> .Is.NotNull)).WhenCalled(a => message = (MailMessage)(a.Arguments[1])); dateTimeMapper.Expect(d => d.DateTimeUtcToLocalWithOlsenZone(Arg <DateTime> .Is.Anything, Arg <string> .Is.Anything)).Return(DateTime.Now).Repeat.Any(); var emailService = new EmailService { RavenDocStore = ravenDocStore, MailActioner = mailActioner, DateTimeOlsenFromUtcMapping = dateTimeMapper }; var coordinatorComplete = new CoordinatorCreated { ConfirmationEmailAddresses = new List <string> { "*****@*****.**" }, ScheduledMessages = new List <MessageSchedule> { new MessageSchedule { ScheduledTimeUtc = DateTime.Now } }, MetaData = new SmsMetaData() }; emailService.Handle(new CoordinatorCreatedEmail(coordinatorComplete)); Assert.That(message.From.ToString(), Is.EqualTo(mailgunConfig.DefaultFrom)); Assert.That(message.To[0].Address, Is.EqualTo(coordinatorComplete.ConfirmationEmailAddresses[0])); Assert.That(message.To[1].Address, Is.EqualTo(emailDefaultNotification.EmailAddresses[0])); Assert.That(message.To[2].Address, Is.EqualTo(emailDefaultNotification.EmailAddresses[1])); }
public void Handle(SendAllMessagesAtOnce message) { // TODO: make a timeout for this then just send the messsages directly to the sms actioner Data.CoordinatorId = message.CoordinatorId == Guid.Empty ? Data.Id : message.CoordinatorId; Data.OriginalScheduleStartTime = message.SendTimeUtc; Data.EmailAddresses = message.ConfirmationEmails; Data.UserOlsenTimeZone = message.UserOlsenTimeZone; Data.Topic = message.MetaData.Topic; var messageList = new List <ScheduleSmsForSendingLater>(); for (int i = 0; i < message.Messages.Count; i++) { var smsData = new SmsData(message.Messages[i].Mobile, message.Messages[i].Message); var smsForSendingLater = new ScheduleSmsForSendingLater(message.SendTimeUtc, smsData, message.MetaData, Data.CoordinatorId, message.Username) { CorrelationId = Data.CoordinatorId }; messageList.Add(smsForSendingLater); } messageList.ForEach(m => Bus.Send(m)); //Bus.Send(messageList.ToArray()); var coordinatorCreated = new CoordinatorCreated { CoordinatorId = Data.CoordinatorId, ScheduledMessages = messageList.Select(m => new MessageSchedule { Number = m.SmsData.Mobile, ScheduledTimeUtc = m.SendMessageAtUtc, ScheduleMessageId = m.ScheduleMessageId }).ToList(), CreationDateUtc = DateTime.UtcNow, MetaData = message.MetaData, ConfirmationEmailAddresses = message.ConfirmationEmails, UserOlsenTimeZone = message.UserOlsenTimeZone, MessageBody = message.Messages.First().Message, MessageCount = message.Messages.Count }; RequestUtcTimeout <CoordinatorTimeout>(message.SendTimeUtc.AddMinutes(2)); Bus.Publish(coordinatorCreated); Bus.SendLocal(new CoordinatorCreatedEmail(coordinatorCreated)); RavenScheduleDocuments.SaveCoordinator(coordinatorCreated); RavenScheduleDocuments.SaveSchedules(messageList, Data.CoordinatorId); }
public void Handle(TrickleSmsOverCalculatedIntervalsBetweenSetDates message) { Data.CoordinatorId = message.CoordinatorId == Guid.Empty ? Data.Id : message.CoordinatorId; Data.OriginalScheduleStartTime = message.StartTimeUtc; Data.EmailAddresses = message.ConfirmationEmails; Data.UserOlsenTimeZone = message.UserOlsenTimeZone; Data.Topic = message.MetaData.Topic; var messageTiming = TimingManager.CalculateTiming(message.StartTimeUtc, message.Duration, message.Messages.Count); var lastScheduledMessageTime = message.StartTimeUtc.Add(message.Duration); var messageList = new List <ScheduleSmsForSendingLater>(); for (int i = 0; i < message.Messages.Count; i++) { var smsData = new SmsData(message.Messages[i].Mobile, message.Messages[i].Message); var smsForSendingLater = new ScheduleSmsForSendingLater(messageTiming[i], smsData, message.MetaData, Data.CoordinatorId, message.Username); messageList.Add(smsForSendingLater); } messageList.ForEach(m => Bus.Send(m)); //Bus.Send(messageList.ToArray()); var coordinatorCreated = new CoordinatorCreated { CoordinatorId = Data.CoordinatorId, ScheduledMessages = messageList.Select(m => new MessageSchedule { Number = m.SmsData.Mobile, ScheduledTimeUtc = m.SendMessageAtUtc, ScheduleMessageId = m.ScheduleMessageId }).ToList(), CreationDateUtc = DateTime.UtcNow, MetaData = message.MetaData, ConfirmationEmailAddresses = message.ConfirmationEmails, UserOlsenTimeZone = message.UserOlsenTimeZone, MessageBody = message.Messages.First().Message, MessageCount = message.Messages.Count }; RavenScheduleDocuments.SaveCoordinator(coordinatorCreated); RavenScheduleDocuments.SaveSchedules(messageList, Data.CoordinatorId); RequestUtcTimeout <CoordinatorTimeout>(lastScheduledMessageTime.AddMinutes(2)); Bus.Publish(coordinatorCreated); Bus.SendLocal(new CoordinatorCreatedEmail(coordinatorCreated)); }
public CoordinatorCreatedEmail(CoordinatorCreated coordinatorCreated) { CoordinatorCreated = coordinatorCreated; }
public CoordinatorCreatedEmail() { CoordinatorCreated = new CoordinatorCreated(); }