public CoordinatorOverview(CoordinatorTrackingData coordinatorTrackingData, List <ScheduledMessagesStatusCountInCoordinatorIndex.ReduceResult> coordinatorSummary) { var sentSummary = coordinatorSummary.FirstOrDefault(s => s.Status == MessageStatus.Sent.ToString()); var failedSummary = coordinatorSummary.FirstOrDefault(s => s.Status == MessageStatus.Failed.ToString()); var scheduledSummary = coordinatorSummary.FirstOrDefault(s => s.Status == MessageStatus.Scheduled.ToString()); var cancelledSummary = coordinatorSummary.FirstOrDefault(s => s.Status == MessageStatus.Cancelled.ToString()); var waitingForSchedulingSummary = coordinatorSummary.FirstOrDefault(s => s.Status == MessageStatus.WaitingForScheduling.ToString()); var pausedSummary = coordinatorSummary.FirstOrDefault(s => s.Status == MessageStatus.Paused.ToString()); CoordinatorId = coordinatorTrackingData.CoordinatorId; CreationDateUtc = coordinatorTrackingData.CreationDateUtc; CompletionDateUtc = coordinatorTrackingData.CompletionDateUtc; CurrentStatus = coordinatorTrackingData.CurrentStatus; Topic = coordinatorTrackingData.MetaData.Topic; Tags = coordinatorTrackingData.MetaData.Tags; MessageCount = coordinatorTrackingData.MessageCount; MessageStatusCounter = new MessageStatusCounters { SentCount = sentSummary == null ? 0 : sentSummary.Count, ScheduledCount = scheduledSummary == null ? 0 : scheduledSummary.Count, FailedCount = failedSummary == null ? 0 : failedSummary.Count, CancelledCount = cancelledSummary == null ? 0 : cancelledSummary.Count, WaitingForSchedulingCount = waitingForSchedulingSummary == null ? 0 : waitingForSchedulingSummary.Count, PausedCount = pausedSummary == null ? 0 : pausedSummary.Count, }; MessageBody = coordinatorTrackingData.MessageBody; CoordinatorSummary = coordinatorSummary; EmailBody = coordinatorTrackingData.EmailData != null ? coordinatorTrackingData.EmailData.BodyHtml : string.Empty; SmsBody = coordinatorTrackingData.SmsBody ?? string.Empty; }
public void Setup() { using (var session = base.DocumentStore.OpenSession()) { var coordinatorTrackingData = new CoordinatorTrackingData { CoordinatorId = _coordinatorId, CurrentStatus = CoordinatorStatusTracking.Started }; var message1 = new ScheduleTrackingData { SmsData = new SmsData("12313", "message"), CoordinatorId = _coordinatorId, MessageStatus = MessageStatus.Sent }; var message2 = new ScheduleTrackingData { SmsData = new SmsData("434039", "message"), CoordinatorId = _coordinatorId, MessageStatus = MessageStatus.Scheduled }; session.Store(coordinatorTrackingData, _coordinatorId.ToString()); session.Store(message1, Guid.NewGuid().ToString()); session.Store(message2, Guid.NewGuid().ToString()); session.SaveChanges(); } }
public void SaveCoordinator(CoordinatorCreatedWithEmailAndSms 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.SmsMessage, MessageCount = message.SmsCount + message.EmailCount, EmailData = message.EmailData, EmailCount = message.EmailCount, Username = message.UserName }; session.Store(coordinatorTrackingData, message.CoordinatorId.ToString()); } }
private string CoordinatorToExcludeText(CoordinatorTrackingData coordinatorTrackingData) { return(string.Format( "'{0}', {1} Sent, Started {2}", coordinatorTrackingData.MetaData.Topic, coordinatorTrackingData.GetListOfCoordinatedSchedules(RavenDocStore.GetStore()).Count(c => c.Status == MessageStatusTracking.CompletedSuccess).ToString(), coordinatorTrackingData.CreationDateUtc.ToLocalTime().ToShortDateString())); }
public void CreateExcludeMultiplePreviousCoordinatorMessagesRemovesMatchingNumbers_TrickleMessageSpaceDefined() { var CoordinatorToExclude1 = Guid.NewGuid(); var CoordinatorToExclude2 = Guid.NewGuid(); var model = new CoordinatedSharedMessageModel { Numbers = "04040404040, 1, 2, 3, 7, 12", Message = "asfdkjadfskl asflkj;faskjf;aslkjf;lasdkjfaslkfjas;lkfjslkfjas;lkfjsalkfjas;fklasj;flksdjf;lkasjflskdjflkasjflksjlk lskaf jlsk fdaskl dflksjfalk sflkj sfkl jlkjs flkj skjkj sadflkjsaflj", StartTime = DateTime.Now.AddHours(2), SendAllBy = DateTime.Now.AddHours(3), CoordinatorsToExclude = new List <Guid> { CoordinatorToExclude1, CoordinatorToExclude2 }, Topic = "frank", UserTimeZone = "Australia/Sydney" }; var bus = MockRepository.GenerateMock <IBus>(); var mapper = MockRepository.GenerateMock <ICoordinatorModelToMessageMapping>(); var ravenDocStore = MockRepository.GenerateMock <IRavenDocStore>(); var docStore = MockRepository.GenerateMock <IDocumentStore>(); var docSession = MockRepository.GenerateMock <IDocumentSession>(); var trackingSession = MockRepository.GenerateMock <IDocumentSession>(); var currentUser = MockRepository.GenerateStub <ICurrentUser>(); ravenDocStore.Expect(r => r.GetStore()).Return(docStore); docStore.Expect(d => d.OpenSession("Configuration")).Return(docSession); docStore.Expect(d => d.OpenSession("SmsTracking")).Return(trackingSession); docSession.Expect(d => d.Load <CountryCodeReplacement>("CountryCodeConfig")).Return(new CountryCodeReplacement()); var previousCoordinatorToExclude1 = new CoordinatorTrackingData(new List <MessageSendingStatus> { new MessageSendingStatus { Number = "04040404040" }, new MessageSendingStatus { Number = "1" } }); trackingSession.Expect(d => d.Load <CoordinatorTrackingData>(CoordinatorToExclude1.ToString())).Return(previousCoordinatorToExclude1); var previousCoordinatorToExclude2 = new CoordinatorTrackingData(new List <MessageSendingStatus> { new MessageSendingStatus { Number = "7" } }); trackingSession.Expect(d => d.Load <CoordinatorTrackingData>(CoordinatorToExclude2.ToString())).Return(previousCoordinatorToExclude2); var coordinatorMessage = new CoordinatedSharedMessageModel(); var excludeList1 = previousCoordinatorToExclude1.GetListOfCoordinatedSchedules(ravenDocStore.GetStore()).Select(s => s.Number).ToList(); var excludeList2 = previousCoordinatorToExclude2.GetListOfCoordinatedSchedules(ravenDocStore.GetStore()).Select(s => s.Number).ToList(); List <string> excludeList = null; mapper .Expect(m => m.MapToTrickleOverPeriod(Arg <CoordinatedSharedMessageModel> .Is.Anything, Arg <CountryCodeReplacement> .Is.Anything, Arg <List <string> > .Is.Anything, Arg <string> .Is.Anything)) .Return(new TrickleSmsOverCalculatedIntervalsBetweenSetDates()) .WhenCalled(t => coordinatorMessage = (CoordinatedSharedMessageModel)(t.Arguments[0])) .WhenCalled(t => excludeList = (List <string>)(t.Arguments[2])); bus.Expect(b => b.Send(Arg <TrickleSmsOverCalculatedIntervalsBetweenSetDates> .Is.NotNull)); var controller = new CoordinatorController { ControllerContext = new ControllerContext(), Bus = bus, Mapper = mapper, RavenDocStore = ravenDocStore, CurrentUser = currentUser }; var actionResult = (RedirectToRouteResult)controller.Create(model); Assert.That(actionResult.RouteValues["action"], Is.EqualTo("Details")); Assert.That(coordinatorMessage.Message, Is.EqualTo(model.Message.Substring(0, 160))); Assert.That(excludeList.ToList(), Is.EqualTo(excludeList1.Union(excludeList2).Distinct().ToList())); bus.VerifyAllExpectations(); mapper.VerifyAllExpectations(); docSession.VerifyAllExpectations(); trackingSession.VerifyAllExpectations(); }