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); }
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); }
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); }
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); }
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); }