[InlineData("1", "4", "2018", "20", "4", "2019")] //BST public async Task PostCreateViewModelAsync_ShouldUseCustomTimespan(string fromDay, string fromMonth, string fromYear, string toDay, string toMonth, string toYear) { var model = new ApplicationsReportCreateEditModel { DateRange = DateRangeType.Custom, FromDay = fromDay, FromMonth = fromMonth, FromYear = fromYear, ToDay = toDay, ToMonth = toMonth, ToYear = toYear, }; var user = new VacancyUser(); var mockClient = new Mock <IQaVacancyClient>(); var orchestrator = GetOrchestrator(mockClient.Object, "2019-12-05Z"); var fromDateUtc = DateTimeOffset.Parse($"{fromYear}-{fromMonth}-{fromDay}Z").UtcDateTime; var toDateUtc = DateTimeOffset.Parse($"{toYear}-{toMonth}-{toDay}Z").UtcDateTime; await orchestrator.PostCreateViewModelAsync(model, user); string expectedReportName = $"{fromDateUtc.AsGdsDate()} to {toDateUtc.AsGdsDate()}"; mockClient.Verify(c => c.CreateApplicationsReportAsync( fromDateUtc, toDateUtc.AddDays(1).AddTicks(-1), user, expectedReportName), Times.Once); }
[InlineData(DateRangeType.Last30Days, "2019-04-01Z", "2019-05-01Z")] //BST public async Task PostCreateViewModelAsync_ShouldUseCorrectTimespan(DateRangeType dateRangeType, string fromDate, string toDate) { var mockClient = new Mock <IQaVacancyClient>(); var orchestrator = GetOrchestrator(mockClient.Object, $"{toDate}"); var fromDateUtc = DateTimeOffset.Parse(fromDate).UtcDateTime; var toDateUtc = DateTimeOffset.Parse(toDate).UtcDateTime; var model = new ApplicationsReportCreateEditModel { DateRange = dateRangeType }; var user = new VacancyUser(); await orchestrator.PostCreateViewModelAsync(model, user); string expectedReportName = $"{fromDateUtc.AsGdsDate()} to {toDateUtc.AsGdsDate()}"; mockClient.Verify(c => c.CreateApplicationsReportAsync( fromDateUtc, toDateUtc.AddDays(1).AddTicks(-1), user, expectedReportName), Times.Once); }
public Task <Guid> PostCreateViewModelAsync(ApplicationsReportCreateEditModel model, VacancyUser user) { DateTime fromDate; DateTime toDate = _timeProvider.Today; switch (model.DateRange) { case DateRangeType.Last7Days: fromDate = _timeProvider.Today.AddDays(-7); break; case DateRangeType.Last14Days: fromDate = _timeProvider.Today.AddDays(-14); break; case DateRangeType.Last30Days: fromDate = _timeProvider.Today.AddDays(-30); break; case DateRangeType.Custom: fromDate = model.FromDate.AsDateTimeUk().Value.ToUniversalTime(); toDate = model.ToDate.AsDateTimeUk().Value.ToUniversalTime(); break; default: throw new NotImplementedException($"Cannot handle this date range type:{model.DateRange.ToString()}"); } var reportName = $"{fromDate.ToUkTime().AsGdsDate()} to {toDate.ToUkTime().AsGdsDate()}"; DateTime toDateInclusive = toDate.AddDays(1).AddTicks(-1); return(_client.CreateApplicationsReportAsync(fromDate, toDateInclusive, user, reportName)); }
public async Task<IActionResult> Create(ApplicationsReportCreateEditModel m) { if (ModelState.IsValid == false) { var vm = _orchestrator.GetCreateViewModel(m); return View(vm); } var reportId = await _orchestrator.PostCreateViewModelAsync(m, User.GetVacancyUser()); return RedirectToRoute(RouteNames.ReportConfirmation_Get, new ReportRouteModel { ReportId = reportId }); }
public ApplicationsReportCreateViewModel GetCreateViewModel(ApplicationsReportCreateEditModel model) { var vm = GetCreateViewModel(); vm.DateRange = model.DateRange; vm.FromDay = model.FromDay; vm.FromMonth = model.FromMonth; vm.FromYear = model.FromYear; vm.ToDay = model.ToDay; vm.ToMonth = model.ToMonth; vm.ToYear = model.ToYear; return(vm); }