Esempio n. 1
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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"));
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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"));
        }
Esempio n. 13
0
        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");
        }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
        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);
        }
Esempio n. 18
0
        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"));
        }
Esempio n. 26
0
 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);
        }