Esempio n. 1
0
        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()));
 }
Esempio n. 5
0
        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();
        }