private async Task PostObjection(NotificationAssessmentDecisionViewModel model) { var date = new DateTime(model.ObjectionDate.Year.GetValueOrDefault(), model.ObjectionDate.Month.GetValueOrDefault(), model.ObjectionDate.Day.GetValueOrDefault()); var request = new ObjectNotificationApplication(model.NotificationId, date, model.ReasonForObjection); await mediator.SendAsync(request); }
public async Task ValidConsentData_Posts() { var model = new NotificationAssessmentDecisionViewModel(); model.SelectedDecision = DecisionType.Consent; await decisionController.Index(notificationId, model); A.CallTo(() => mediator.SendAsync(A<ConsentNotificationApplication>.Ignored)).MustHaveHappened(Repeated.Exactly.Once); }
public async Task InvalidModel_ReturnsView() { var model = new NotificationAssessmentDecisionViewModel(); model.DecisionTypes.Insert(0, DecisionType.Consent); decisionController.ModelState.AddModelError("Test", "Error"); var result = await decisionController.Index(notificationId, model) as ViewResult; Assert.Equal(string.Empty, result.ViewName); }
public async Task DecisionMadeDate_Today_Valid() { var model = new NotificationAssessmentDecisionViewModel(); model.SelectedDecision = DecisionType.Consent; model.ConsentedDate = new OptionalDateInputViewModel(Today); await decisionController.Index(notificationId, model); Assert.True(decisionController.ModelState.IsValid); }
public async Task ValidConsentData_Posts() { var model = new NotificationAssessmentDecisionViewModel(); model.SelectedDecision = DecisionType.Consent; await decisionController.Index(notificationId, model); A.CallTo(() => mediator.SendAsync(A <ConsentNotificationApplication> .Ignored)).MustHaveHappened(Repeated.Exactly.Once); }
public async Task DecisionMadeDate_InPastAfterAcknowledgedOnDate_Valid() { var model = new NotificationAssessmentDecisionViewModel(); model.SelectedDecision = DecisionType.Consent; model.ConsentedDate = new OptionalDateInputViewModel(acknowledgedOnDate.AddDays(1)); await decisionController.Index(notificationId, model); Assert.True(decisionController.ModelState.IsValid); }
private async Task PostConsent(NotificationAssessmentDecisionViewModel model) { var request = new ConsentNotificationApplication(model.NotificationId, model.ConsentValidFromDate.AsDateTime().GetValueOrDefault(), model.ConsentValidToDate.AsDateTime().GetValueOrDefault(), model.ConsentedDate.AsDateTime().GetValueOrDefault(), model.ConsentConditions); await mediator.SendAsync(request); }
public async Task DecisionMadeDate_InFuture_Invalid() { var model = new NotificationAssessmentDecisionViewModel(); model.SelectedDecision = DecisionType.Consent; model.ConsentedDate = new OptionalDateInputViewModel(Today.AddDays(1)); await decisionController.Index(notificationId, model); Assert.True(decisionController.ModelState.ContainsKey("ConsentedDate")); }
public async Task DecisionMadeDate_InPastAfterAcknowledgedOnDate_Valid() { var model = new NotificationAssessmentDecisionViewModel(); model.SelectedDecision = DecisionType.Consent; model.ConsentedDate = new OptionalDateInputViewModel(acknowledgedOnDate.AddDays(1)); await decisionController.Index(notificationId, model); Assert.True(decisionController.ModelState.IsValid); }
public async Task DecisionMadeDate_Today_Valid() { var model = new NotificationAssessmentDecisionViewModel(); model.SelectedDecision = DecisionType.Consent; model.ConsentedDate = new OptionalDateInputViewModel(Today); await decisionController.Index(notificationId, model); Assert.True(decisionController.ModelState.IsValid); }
public async Task InvalidModel_ReturnsView() { var model = new NotificationAssessmentDecisionViewModel(); model.DecisionTypes.Insert(0, DecisionType.Consent); decisionController.ModelState.AddModelError("Test", "Error"); var result = await decisionController.Index(notificationId, model) as ViewResult; Assert.Equal(string.Empty, result.ViewName); }
public async Task ValidFromDate_BeforeAcknowledgedOnDate_Invalid() { var model = new NotificationAssessmentDecisionViewModel(); model.SelectedDecision = DecisionType.Consent; model.ConsentValidFromDate = new OptionalDateInputViewModel(acknowledgedOnDate.AddDays(-1)); await decisionController.Index(notificationId, model); Assert.True(decisionController.ModelState.ContainsKey("ConsentValidFromDate")); }
public async Task <ActionResult> Index(Guid id, NotificationAssessmentDecisionViewModel model) { if (!ModelState.IsValid) { if (model.DecisionTypes.Count == 0) { return(RedirectToAction("Index", "KeyDates")); } return(View(model)); } switch (model.SelectedDecision) { case DecisionType.Consent: if (await ConsentDatesAreValid(model)) { await PostConsent(model); } else { return(View(model)); } break; case DecisionType.Withdraw: if (await WithdrawDateIsValid(model)) { await PostWithdrawn(model); } else { return(View(model)); } break; case DecisionType.Object: await PostObjection(model); break; case DecisionType.ConsentWithdraw: await PostConsentWithdrawn(model); break; default: break; } return(RedirectToAction("Index", "KeyDates")); }
public async Task<ActionResult> Index(Guid id, NotificationAssessmentDecisionViewModel model) { if (!ModelState.IsValid) { if (model.DecisionTypes.Count == 0) { return RedirectToAction("Index", "KeyDates"); } return View(model); } switch (model.SelectedDecision) { case DecisionType.Consent: if (await ConsentDatesAreValid(model)) { await PostConsent(model); } else { return View(model); } break; case DecisionType.Withdraw: if (await WithdrawDateIsValid(model)) { await PostWithdrawn(model); } else { return View(model); } break; case DecisionType.Object: await PostObjection(model); break; case DecisionType.ConsentWithdraw: await PostConsentWithdrawn(model); break; default: break; } return RedirectToAction("Index", "KeyDates"); }
private async Task <bool> ConsentDatesAreValid(NotificationAssessmentDecisionViewModel model) { bool areValid = true; var data = await mediator.SendAsync(new GetNotificationAssessmentDecisionData(model.NotificationId)); if (model.ConsentedDate.AsDateTime() > SystemTime.UtcNow) { ModelState.AddModelError("ConsentedDate", DecisionControllerResources.ConsentedNotInFuture); areValid = false; } if (model.ConsentedDate.AsDateTime() < data.AcknowledgedOnDate) { ModelState.AddModelError("ConsentedDate", DecisionControllerResources.ConsentedNotBeforeAcknowledged); areValid = false; } if (model.ConsentValidFromDate.AsDateTime() < data.AcknowledgedOnDate) { ModelState.AddModelError("ConsentValidFromDate", DecisionControllerResources.ValidFromNotBeforeAcknowledged); areValid = false; } if (model.ConsentValidToDate.AsDateTime() <= SystemTime.UtcNow.Date) { ModelState.AddModelError("ConsentValidToDate", DecisionControllerResources.ValidToMustBeInFuture); areValid = false; } DateTime validFromDate = model.ConsentValidFromDate.AsDateTime().GetValueOrDefault(); if (data.IsPreconsented && model.ConsentValidToDate.AsDateTime() >= validFromDate.AddYears(3)) { ModelState.AddModelError("ConsentValidToDate", DecisionControllerResources.ValidToPreconsented); areValid = false; } if ((!data.IsPreconsented) && model.ConsentValidToDate.AsDateTime() >= validFromDate.AddYears(1)) { ModelState.AddModelError("ConsentValidToDate", DecisionControllerResources.ValidToNotPreconsented); areValid = false; } return(areValid); }
public async Task ValidToDate_NotPreconsented_UpToOneYearFromValidFromDate_Valid() { var model = new NotificationAssessmentDecisionViewModel(); model.SelectedDecision = DecisionType.Consent; model.ConsentValidFromDate = new OptionalDateInputViewModel(Today); model.ConsentValidToDate = new OptionalDateInputViewModel(Today.AddYears(1).AddDays(-1)); A.CallTo(() => mediator.SendAsync(A <GetNotificationAssessmentDecisionData> .Ignored)) .Returns(new NotificationAssessmentDecisionData { AcknowledgedOnDate = acknowledgedOnDate, IsPreconsented = false }); await decisionController.Index(notificationId, model); Assert.True(decisionController.ModelState.IsValid); }
private async Task <bool> WithdrawDateIsValid(NotificationAssessmentDecisionViewModel model) { bool areValid = true; var data = await mediator.SendAsync(new GetNotificationAssessmentDecisionData(model.NotificationId)); if (model.WithdrawnDate.AsDateTime() > SystemTime.UtcNow) { ModelState.AddModelError("WithdrawnDate", DecisionControllerResources.WithdrawnNotInFuture); areValid = false; } if (model.WithdrawnDate.AsDateTime() < data.NotificationReceivedDate) { ModelState.AddModelError("WithdrawnDate", DecisionControllerResources.WithdrawnNotBeforeReceived); areValid = false; } return(areValid); }
public async Task ValidToDate_Preconsented_GreaterThanThreeYearsFromValidFromDate_Invalid() { var model = new NotificationAssessmentDecisionViewModel(); model.SelectedDecision = DecisionType.Consent; model.ConsentValidFromDate = new OptionalDateInputViewModel(Today); model.ConsentValidToDate = new OptionalDateInputViewModel(Today.AddYears(3)); A.CallTo(() => mediator.SendAsync(A <GetNotificationAssessmentDecisionData> .Ignored)) .Returns(new NotificationAssessmentDecisionData { AcknowledgedOnDate = acknowledgedOnDate, IsPreconsented = true }); await decisionController.Index(notificationId, model); Assert.True(decisionController.ModelState.ContainsKey("ConsentValidToDate")); }
public async Task DecisionMadeDate_InFuture_Invalid() { var model = new NotificationAssessmentDecisionViewModel(); model.SelectedDecision = DecisionType.Consent; model.ConsentedDate = new OptionalDateInputViewModel(Today.AddDays(1)); await decisionController.Index(notificationId, model); Assert.True(decisionController.ModelState.ContainsKey("ConsentedDate")); }
private async Task PostConsent(NotificationAssessmentDecisionViewModel model) { var request = new ConsentNotificationApplication(model.NotificationId, model.ConsentValidFromDate.AsDateTime().GetValueOrDefault(), model.ConsentValidToDate.AsDateTime().GetValueOrDefault(), model.ConsentedDate.AsDateTime().GetValueOrDefault(), model.ConsentConditions); await mediator.SendAsync(request); }
private async Task<bool> WithdrawDateIsValid(NotificationAssessmentDecisionViewModel model) { bool areValid = true; var data = await mediator.SendAsync(new GetNotificationAssessmentDecisionData(model.NotificationId)); if (model.WithdrawnDate.AsDateTime() > SystemTime.UtcNow) { ModelState.AddModelError("WithdrawnDate", DecisionControllerResources.WithdrawnNotInFuture); areValid = false; } if (model.WithdrawnDate.AsDateTime() < data.NotificationReceivedDate) { ModelState.AddModelError("WithdrawnDate", DecisionControllerResources.WithdrawnNotBeforeReceived); areValid = false; } return areValid; }
private async Task<bool> ConsentDatesAreValid(NotificationAssessmentDecisionViewModel model) { bool areValid = true; var data = await mediator.SendAsync(new GetNotificationAssessmentDecisionData(model.NotificationId)); if (model.ConsentedDate.AsDateTime() > SystemTime.UtcNow) { ModelState.AddModelError("ConsentedDate", DecisionControllerResources.ConsentedNotInFuture); areValid = false; } if (model.ConsentedDate.AsDateTime() < data.AcknowledgedOnDate) { ModelState.AddModelError("ConsentedDate", DecisionControllerResources.ConsentedNotBeforeAcknowledged); areValid = false; } if (model.ConsentValidFromDate.AsDateTime() < data.AcknowledgedOnDate) { ModelState.AddModelError("ConsentValidFromDate", DecisionControllerResources.ValidFromNotBeforeAcknowledged); areValid = false; } if (model.ConsentValidToDate.AsDateTime() <= SystemTime.UtcNow.Date) { ModelState.AddModelError("ConsentValidToDate", DecisionControllerResources.ValidToMustBeInFuture); areValid = false; } DateTime validFromDate = model.ConsentValidFromDate.AsDateTime().GetValueOrDefault(); if (data.IsPreconsented && model.ConsentValidToDate.AsDateTime() >= validFromDate.AddYears(3)) { ModelState.AddModelError("ConsentValidToDate", DecisionControllerResources.ValidToPreconsented); areValid = false; } if ((!data.IsPreconsented) && model.ConsentValidToDate.AsDateTime() >= validFromDate.AddYears(1)) { ModelState.AddModelError("ConsentValidToDate", DecisionControllerResources.ValidToNotPreconsented); areValid = false; } return areValid; }
public async Task ValidToDate_NotPreconsented_UpToOneYearFromValidFromDate_Valid() { var model = new NotificationAssessmentDecisionViewModel(); model.SelectedDecision = DecisionType.Consent; model.ConsentValidFromDate = new OptionalDateInputViewModel(Today); model.ConsentValidToDate = new OptionalDateInputViewModel(Today.AddYears(1).AddDays(-1)); A.CallTo(() => mediator.SendAsync(A<GetNotificationAssessmentDecisionData>.Ignored)) .Returns(new NotificationAssessmentDecisionData { AcknowledgedOnDate = acknowledgedOnDate, IsPreconsented = false }); await decisionController.Index(notificationId, model); Assert.True(decisionController.ModelState.IsValid); }
public async Task ValidToDate_Preconsented_GreaterThanThreeYearsFromValidFromDate_Invalid() { var model = new NotificationAssessmentDecisionViewModel(); model.SelectedDecision = DecisionType.Consent; model.ConsentValidFromDate = new OptionalDateInputViewModel(Today); model.ConsentValidToDate = new OptionalDateInputViewModel(Today.AddYears(3)); A.CallTo(() => mediator.SendAsync(A<GetNotificationAssessmentDecisionData>.Ignored)) .Returns(new NotificationAssessmentDecisionData { AcknowledgedOnDate = acknowledgedOnDate, IsPreconsented = true }); await decisionController.Index(notificationId, model); Assert.True(decisionController.ModelState.ContainsKey("ConsentValidToDate")); }
public async Task ValidFromDate_BeforeAcknowledgedOnDate_Invalid() { var model = new NotificationAssessmentDecisionViewModel(); model.SelectedDecision = DecisionType.Consent; model.ConsentValidFromDate = new OptionalDateInputViewModel(acknowledgedOnDate.AddDays(-1)); await decisionController.Index(notificationId, model); Assert.True(decisionController.ModelState.ContainsKey("ConsentValidFromDate")); }
private async Task PostConsentWithdrawn(NotificationAssessmentDecisionViewModel model) { var date = new DateTime(model.ConsentWithdrawnDate.Year.GetValueOrDefault(), model.ConsentWithdrawnDate.Month.GetValueOrDefault(), model.ConsentWithdrawnDate.Day.GetValueOrDefault()); var request = new WithdrawConsentForNotificationApplication(model.NotificationId, model.ReasonsForConsentWithdrawal, date); await mediator.SendAsync(request); }
private async Task PostWithdrawn(NotificationAssessmentDecisionViewModel model) { var date = new DateTime(model.WithdrawnDate.Year.GetValueOrDefault(), model.WithdrawnDate.Month.GetValueOrDefault(), model.WithdrawnDate.Day.GetValueOrDefault()); var request = new WithdrawNotificationApplication(model.NotificationId, date, model.ReasonForWithdrawal); await mediator.SendAsync(request); }