コード例 #1
0
        private ActivitySummeryViewModel CreateActivity(RandomizeActivitySummeriesViewModel randomActivitySummeryViewModel, string userId)
        {
            ActivitySummeryViewModel activitySummeryViewModel = InitiateActivitySummeryStandardProperties(randomActivitySummeryViewModel, userId);

            activitySummeryViewModel.WeekDayId = CreateActivityWeekDayId(activitySummeryViewModel, randomActivitySummeryViewModel);
            CreateActivityTimeSpan(activitySummeryViewModel, randomActivitySummeryViewModel);


            return(activitySummeryViewModel);
        }
コード例 #2
0
        private ActivitySummeryViewModel InitiateActivitySummeryStandardProperties(RandomizeActivitySummeriesViewModel randomActivitySummeryViewModel, string userId)
        {
            ActivitySummeryViewModel activitySummeryViewModel = new ActivitySummeryViewModel()
            {
                ActivityId        = randomActivitySummeryViewModel.ActivityId,
                ActivitySummeryId = 0,
                UserId            = userId,
                Name        = randomActivitySummeryViewModel.ActivityName,
                Description = randomActivitySummeryViewModel.Description
            };

            return(activitySummeryViewModel);
        }
コード例 #3
0
        public RandomizeActivitySummeriesViewModel GetRandomizeActivitySummeryViewModel(int id, int counter)
        {
            try
            {
                var activity = _schemaRepository.GetSpecificActivity(id);
                RandomizeActivitySummeriesViewModel activitySummeryViewModel = new RandomizeActivitySummeriesViewModel()
                {
                    ActivityId   = activity.ActivityId,
                    ActivityName = activity.ActivityName,
                    CountIndex   = counter
                };

                return(activitySummeryViewModel);
            }
            catch (Exception)
            {
                throw new Exception("Something went wrong when trying to get the activity summery");
            }
        }
コード例 #4
0
        private void CreateActivitiesForStudy(RandomizeActivitySummeriesViewModel randomActivitySummeryViewModel, string userId)
        {
            ActivitySummeryViewModel activitySummeryViewModel = InitiateActivitySummeryStandardProperties(randomActivitySummeryViewModel, userId);

            activitySummeryViewModel.WeekDayId = CreateActivityWeekDayId(activitySummeryViewModel, randomActivitySummeryViewModel);

            List <ActivitySummeryViewModel> newlist = new List <ActivitySummeryViewModel>(100)
            {
                new ActivitySummeryViewModel()
            };
            List <ActivitySummeryViewModel> specificDayList = new List <ActivitySummeryViewModel>(100);

            ActivitySummeries.ForEach(delegate(List <ActivitySummeryViewModel> activityList)
            {
                newlist.AddRange(activityList);
            });

            _userWeekDay.ForEach(delegate(WeekDayViewModel weekDay)
            {
                newlist.AddRange(weekDay.ActivitiySummeries);
            });

            specificDayList = newlist.Where(x => x.WeekDayId == activitySummeryViewModel.WeekDayId).OrderBy(y => y.StartTime).ToList();

            if (specificDayList.Count == 0 || specificDayList[0].StartTime >= new TimeSpan(9, 20, 0))
            {
                activitySummeryViewModel.StartTime = new TimeSpan(8, 0, 0);
                activitySummeryViewModel.EndTime   = activitySummeryViewModel.StartTime + new TimeSpan(1, 0, 0);
            }
            else
            {
                bool isActivityNotAdded = false;
                for (int i = 0; i < specificDayList.Count(); i++)
                {
                    if (isActivityNotAdded && specificDayList.Count() == 1 || i == (specificDayList.Count() - 1))
                    {
                        activitySummeryViewModel.StartTime = specificDayList[i].EndTime;
                        activitySummeryViewModel.EndTime   = activitySummeryViewModel.StartTime + new TimeSpan(1, 0, 0);
                        isActivityNotAdded = true;
                    }
                    else if (isActivityNotAdded && (specificDayList[i + 1].StartTime - specificDayList[i].EndTime) >= new TimeSpan(1, 20, 0))
                    {
                        activitySummeryViewModel.StartTime = specificDayList[i].EndTime;
                        activitySummeryViewModel.EndTime   = activitySummeryViewModel.StartTime + new TimeSpan(1, 0, 0);
                        isActivityNotAdded = true;
                    }
                }
            }
            ActivitySummeryViewModel firstBreak = CreateBreak(activitySummeryViewModel.EndTime, activitySummeryViewModel.WeekDayId, userId);

            _activitySummeries.Last().Add(activitySummeryViewModel);
            _activitySummeries.Last().Add(firstBreak);

            specificDayList.Add(activitySummeryViewModel);
            specificDayList.Add(firstBreak);
            specificDayList = specificDayList.OrderBy(y => y.StartTime).ToList();

            for (int i = 1; i < randomActivitySummeryViewModel.ActivityTime; i++)
            {
                ActivitySummeryViewModel activitySummeryViewModelNew = InitiateActivitySummeryStandardProperties(randomActivitySummeryViewModel, userId);
                bool isActivityNotAdded = true;

                activitySummeryViewModelNew.WeekDayId = activitySummeryViewModel.WeekDayId;

                for (int j = 0; j < specificDayList.Count(); j++)
                {
                    if (isActivityNotAdded && j == specificDayList.Count() - 1 || isActivityNotAdded && (specificDayList[j + 1].StartTime - specificDayList[j].EndTime) >= new TimeSpan(1, 20, 0))
                    {
                        activitySummeryViewModelNew.StartTime = specificDayList[j].EndTime;
                        activitySummeryViewModelNew.EndTime   = activitySummeryViewModelNew.StartTime + new TimeSpan(1, 0, 0);
                        _activitySummeries.Last().Add(activitySummeryViewModelNew);

                        ActivitySummeryViewModel secondBreak = CreateBreak(activitySummeryViewModelNew.EndTime, activitySummeryViewModel.WeekDayId, userId);
                        _activitySummeries.Last().Add(secondBreak);

                        specificDayList.Add(activitySummeryViewModelNew);
                        specificDayList.Add(secondBreak);
                        specificDayList    = specificDayList.OrderBy(y => y.StartTime).ToList();
                        isActivityNotAdded = false;
                    }
                }
            }
        }
コード例 #5
0
        private void CreateActivityTimeSpan(ActivitySummeryViewModel activitySummeryViewModel, RandomizeActivitySummeriesViewModel randomActivitySummeryViewModel)
        {
            bool isActivityTimeSpanNotGood = false;

            do
            {
                int activityStartTime = RandomNumber(6, 22);
                activitySummeryViewModel.StartTime = new TimeSpan(activityStartTime, 0, 0);
                activitySummeryViewModel.EndTime   = new TimeSpan(activityStartTime + randomActivitySummeryViewModel.ActivityTime, 0, 0);

                var allActivitySummeries = ActivitySummeries.Concat(_userWeekDay.Select(x => x.ActivitiySummeries));

                foreach (var activityList in allActivitySummeries)
                {
                    foreach (var activity in activityList.FindAll(x => x.WeekDayId == activitySummeryViewModel.WeekDayId))
                    {
                        //Check if the new activity starts after previous activity

                        if (activitySummeryViewModel.StartTime < activitySummeryViewModel.EndTime)
                        {
                            if (activitySummeryViewModel.StartTime >= activity.EndTime)
                            {
                                isActivityTimeSpanNotGood = false;
                            }
                            // Check if the new activity starts earlier and do not overlap the other acitivity starttime
                            else if (activitySummeryViewModel.StartTime < activity.StartTime && activitySummeryViewModel.EndTime <= activity.StartTime)
                            {
                                isActivityTimeSpanNotGood = false;
                            }
                            else
                            {
                                isActivityTimeSpanNotGood = true;
                            }
                        }
                        else
                        {
                            isActivityTimeSpanNotGood = true;
                        }
                    }
                }
            } while (isActivityTimeSpanNotGood);
        }
コード例 #6
0
        private int CreateActivityWeekDayId(ActivitySummeryViewModel activitySummeryViewModel, RandomizeActivitySummeriesViewModel randomActivitySummeryViewModel)
        {
            int weekDayId;

            do
            {
                weekDayId = 0;
                if (randomActivitySummeryViewModel.WeekDayId != null)
                {
                    if (randomActivitySummeryViewModel.ActivityTimesCountsInWeek < randomActivitySummeryViewModel.WeekDayId.Count())
                    {
                        weekDayId = randomActivitySummeryViewModel.WeekDayId[RandomNumber(0, randomActivitySummeryViewModel.WeekDayId.Count())];
                    }
                    else
                    {
                        foreach (int id in randomActivitySummeryViewModel.WeekDayId)
                        {
                            if (!ActivitySummeries.Last().FindAll(x => x.ActivityId == activitySummeryViewModel.ActivityId).
                                Exists(x => x.WeekDayId == id) && weekDayId == 0)
                            {
                                weekDayId = id;
                            }
                        }
                    }
                }
                if (weekDayId == 0)
                {
                    weekDayId = RandomNumber(1, 8);
                }
            } while (ActivitySummeries.Last().FindAll(x => x.ActivityId == activitySummeryViewModel.ActivityId).
                     Exists(x => x.WeekDayId == weekDayId));

            return(weekDayId);
        }