public async Task OnPostNhsNumberDuplicates_ReturnsExpectedResponseForGroupedDuplicateNhsNumber()
        {
            // Arrange
            const int    id          = Utilities.PATIENT_GROUPED_NOTIFIED_NOTIFICATION_1_SHARED_NHS_NUMBER_1;
            const string nhsNumber   = Utilities.NHS_NUMBER_SHARED_1;
            var          initialPage = await Client.GetAsync(GetCurrentPathForId(id));

            var initialDocument = await GetDocumentAsync(initialPage);

            var request = new NhsNumberValidationModel
            {
                NotificationId = id,
                NhsNumber      = nhsNumber
            };
            const int expectedWarningNotificationId = Utilities.PATIENT_NOTIFIED_NOTIFICATION_SHARED_NHS_NUMBER_1;
            var       expectedWarningUrl            = RouteHelper.GetNotificationPath(expectedWarningNotificationId, NotificationSubPaths.Overview);

            // Act
            var response = await Client.SendVerificationPostAsync(
                initialPage,
                initialDocument,
                GetHandlerPath(null, "NhsNumberDuplicates", Utilities.NOTIFIED_ID),
                request);

            // Assert
            var result = await response.Content.ReadAsStringAsync();

            Assert.Contains($"\"{expectedWarningNotificationId}\":\"{expectedWarningUrl}\"", result);
        }
        public async Task OnPostNhsNumberDuplicates_ReturnsEmptyResponseForDenotifiedDuplicateNhsNumber()
        {
            // Arrange
            const int    id          = Utilities.PATIENT_NOTIFIED_NOTIFICATION_1_SHARED_NHS_NUMBER_2;
            const string nhsNumber   = Utilities.NHS_NUMBER_SHARED_2;
            var          initialPage = await Client.GetAsync(GetCurrentPathForId(id));

            var initialDocument = await GetDocumentAsync(initialPage);

            var request = new NhsNumberValidationModel
            {
                NotificationId = id,
                NhsNumber      = nhsNumber
            };

            // Act
            var response = await Client.SendVerificationPostAsync(
                initialPage,
                initialDocument,
                GetHandlerPath(null, "NhsNumberDuplicates", id),
                request);

            // Assert
            var result = await response.Content.ReadAsStringAsync();

            Assert.Equal("{}", result);
        }
        public async Task OnPostNhsNumberDuplicates_ReturnsResponseWithLegacyDuplicate()
        {
            // Arrange
            const int id          = Utilities.NOTIFIED_ID;
            string    nhsNumber   = Utilities.NHS_NUMBER_LEGACY_DUPLICATE;
            var       initialPage = await Client.GetAsync(GetCurrentPathForId(id));

            var initialDocument = await GetDocumentAsync(initialPage);

            var request = new NhsNumberValidationModel
            {
                NotificationId = id,
                NhsNumber      = nhsNumber
            };

            // Act
            var response = await Client.SendVerificationPostAsync(
                initialPage,
                initialDocument,
                GetHandlerPath(null, "NhsNumberDuplicates", id),
                request);

            // Assert
            var result = await response.Content.ReadAsStringAsync();

            Assert.Contains(Utilities.NHS_NUMBER_LEGACY_DUPLICATE_SOURCE
                            + ": " + Utilities.NHS_NUMBER_LEGACY_DUPLICATE_ID, result);
        }
        public async Task OnPostNhsNumberDuplicates_ReturnsExpectedEmptyResponseForNonDuplicate()
        {
            // Arrange
            const int    id = Utilities.DRAFT_ID;
            const string nonDuplicateNhsNumber = "9876543219";
            var          initialPage           = await Client.GetAsync(GetCurrentPathForId(id));

            var initialDocument = await GetDocumentAsync(initialPage);

            var request = new NhsNumberValidationModel
            {
                NotificationId = id,
                NhsNumber      = nonDuplicateNhsNumber
            };

            // Act
            var response = await Client.SendVerificationPostAsync(
                initialPage,
                initialDocument,
                GetHandlerPath(null, "NhsNumberDuplicates", id),
                request);

            // Assert
            var result = await response.Content.ReadAsStringAsync();

            Assert.Equal("{}", result);
        }
        public async Task <JsonResult> OnPostNhsNumberDuplicates([FromBody] NhsNumberValidationModel validationData)
        {
            var group = await NotificationRepository.GetNotificationGroupAsync(validationData.NotificationId);

            return(new JsonResult(await GenerateDuplicateNhsNumberNotificationUrlsAsync(NotificationFieldFormattingHelper.FormatNhsNumberForModel(validationData.NhsNumber), group)));
        }