Пример #1
0
        private ForecastTimeModel GetMonths(ForecastTimeModel model, int overlappedMonths, DateTime date)
        {
            model.MonthsRange.Add(new int[] { date.Month, date.Month });

            var monthsLeft = 12 - date.Month;

            if (monthsLeft + 1 < 12 && overlappedMonths > monthsLeft)
            {
                model.MonthsRange[model.MonthsRange.Count - 1][1] = 12;
            }
            else if (monthsLeft + 1 < 12 && overlappedMonths < monthsLeft)
            {
                model.MonthsRange[model.MonthsRange.Count - 1][1] += overlappedMonths;
            }

            overlappedMonths -= monthsLeft;

            if (overlappedMonths > 0)
            {
                while (overlappedMonths >= 12)
                {
                    model.MonthsRange.Add(new int[] { 1, 12 });
                    overlappedMonths -= 12;
                }

                model.MonthsRange.Add(new int[] { 1, overlappedMonths });
                overlappedMonths = 0;
            }

            return(model);
        }
Пример #2
0
        private ForecastTimeModel CreateForecastTimeModel(int maxForecastTime, DateTime date)
        {
            ForecastTimeModel model = new ForecastTimeModel();

            var daysInCurrentMonth = DateTime.DaysInMonth(date.Year, date.Month);

            model.Years.Add(date.Year.ToString());
            model.DaysRange.Add(new int[] { date.Day, date.Day + maxForecastTime > daysInCurrentMonth ? daysInCurrentMonth : date.Day + maxForecastTime });

            var forecastDate     = date.AddMonths(1);
            var overlappedDays   = maxForecastTime - (daysInCurrentMonth - date.Day) - 1;
            var overlappedMonths = 0;

            while (overlappedDays > 0)
            {
                daysInCurrentMonth = DateTime.DaysInMonth(forecastDate.Year, forecastDate.Month);
                model.DaysRange.Add(new int[] { 1, overlappedDays - daysInCurrentMonth > 0 ? daysInCurrentMonth : overlappedDays });
                overlappedDays -= daysInCurrentMonth;

                if (date.Year < forecastDate.Year && !model.Years.Contains(forecastDate.Year.ToString()))
                {
                    model.Years.Add(forecastDate.Year.ToString());
                }

                forecastDate = forecastDate.AddMonths(1);
                overlappedMonths++;
            }

            model = GetMonths(model, overlappedMonths, date);
            model = GetTime(model);

            return(model);
        }
Пример #3
0
        public void TestForecastTime(int forecastDays, ForecastTimeModel expectedModel)
        {
            var contactCreator = new Mock <IContactCreator>(MockBehavior.Strict).Object;
            InteractorCreatePost interactor = new InteractorCreatePost(new CreatePostController(contactCreator, s => It.IsAny <DataModelPost>(),
                                                                                                DataService.NotificationCenter, DataService.RepositoryController.RepoQc),
                                                                       DataService.RepositoryController.RepositoryCreatePost, DataService.RepositoryController.RepositoryUserAuth);

            MethodInfo dynMethod   = typeof(InteractorCreatePost).GetMethod("CreateForecastTimeModel", BindingFlags.NonPublic | BindingFlags.Instance);
            DateTime   currentDate = new DateTime(2017, 8, 7, 13, 0, 0);

            expectedModel = GetHoursMinutes(expectedModel);

            ForecastTimeModel actualModel = dynMethod.Invoke(interactor, new object[] { forecastDays, currentDate }) as ForecastTimeModel;

            Assert.AreEqual(expectedModel, actualModel);
        }
Пример #4
0
        private ForecastTimeModel GetHoursMinutes(ForecastTimeModel model)
        {
            model.Hours = SocialTrading.Locale.Localization.Lang.Hours;
            model.Minutes.AddRange(new Func <List <string> >(() =>
            {
                var minutes = new List <string>();

                for (int i = 0; i < 60; i++)
                {
                    minutes.Add((i < 10 ? "0" + i : i.ToString()) + " " + SocialTrading.Locale.Localization.Lang.MinutesEnding);
                }

                return(minutes);
            }).Invoke());

            return(model);
        }
Пример #5
0
        private ForecastTimeModel GetTime(ForecastTimeModel model)
        {
            model.Hours.AddRange(_repository.LangCreatePost.Hours);
            model.Minutes.AddRange(new Func <List <string> >(() =>
            {
                var minutes = new List <string>();

                for (int i = 0; i < 60; i++)
                {
                    minutes.Add((i < 10 ? "0" + i : i.ToString()) + " " + _repository.LangCreatePost.MinutesEnding);
                }

                return(minutes);
            }).Invoke());

            return(model);
        }