public void Should_have_state_OnTime_at_12_00()
        {
            var stateResolver = new StateResolver();

            Assert.Equal(TeamDailyStatus.Issue, stateResolver.StateAt(new TeamStatusListItemIHoldTeamStatusWrapper(_teamStatusListItem), new DateTime(2013, 7, 31, 12, 00, 00)));
        }
        public void Should_have_state_Completed_at_14_00()
        {
            var stateResolver = new StateResolver();

            Assert.Equal(TeamDailyStatus.Completed, stateResolver.StateAt(new TeamStatusListItemIHoldTeamStatusWrapper(_teamStatusListItem), new DateTime(2013, 7, 31, 14, 00, 00)));
        }
Пример #3
0
        private void UpdateScheduledStatuses(object state)
        {
            var date = DateTime.Today.ToString("yyyyMMdd");

            var todaysSchedules = new List<ScheduleItem>();

            using (var session = _sessionProvider.GetSession())
            {
                todaysSchedules = session.Query<ScheduleItem>()
                                         .Where(x => x.Date == date)
                                         .ToList();
            }

            foreach (IGrouping<string, ScheduleItem> teamItemsGroup in todaysSchedules.GroupBy(x => x.TeamId))
            {
                var teamItems = teamItemsGroup.ToArray();

                if (teamItems.Any() == false)
                    return;

                var scheduleItem = teamItems.First();

                var stateResolver = new StateResolver();

                var currentState = stateResolver.StateAt(new ScheduleItemsListIHoldTeamStatusWrapper(Date.Create(date), TeamDailyStatus.OnTime, teamItems), _clientSettings.Now(scheduleItem.ClientId));

                switch (currentState)
                {
                    case TeamDailyStatus.OnTime:
                        _eventDispatcher.Dispatch(new ScheduleItemOnTime
                            {
                                ClientId = scheduleItem.ClientId,
                                Date = scheduleItem.Date,
                                TeamId = scheduleItem.TeamId,
                                TeamName = scheduleItem.TeamName,
                            });
                        break;

                    case TeamDailyStatus.Issue:
                        _eventDispatcher.Dispatch(new ScheduleItemIssue
                            {
                                ClientId = scheduleItem.ClientId,
                                Date = scheduleItem.Date,
                                TeamId = scheduleItem.TeamId,
                                TeamName = scheduleItem.TeamName,
                            });
                        break;

                    case TeamDailyStatus.Risk:
                        _eventDispatcher.Dispatch(new ScheduleItemRisk
                            {
                                ClientId = scheduleItem.ClientId,
                                Date = scheduleItem.Date,
                                TeamId = scheduleItem.TeamId,
                                TeamName = scheduleItem.TeamName,
                            });
                        break;

                    case TeamDailyStatus.Completed:
                        _eventDispatcher.Dispatch(new ScheduleItemCompleted
                            {
                                ClientId = scheduleItem.ClientId,
                                Date = scheduleItem.Date,
                                TeamId = scheduleItem.TeamId,
                                TeamName = scheduleItem.TeamName,
                            });
                        break;
                }
            }
        }
        public void Should_have_state_Risk_at_11_44()
        {
            var stateResolver = new StateResolver();

            Assert.Equal(TeamDailyStatus.Risk, stateResolver.StateAt(new TeamStatusListItemIHoldTeamStatusWrapper(_teamStatusListItem), new DateTime(2013, 7, 31, 11, 44, 00)));
        }