public async Task <IActionResult> OnGetAsync()
        {
            Notification = await NotificationRepository.GetNotificationAsync(NotificationId);
            await AuthorizeAndSetBannerAsync();

            // Check edit permission and redirect if not allowed
            if (PermissionLevel != PermissionLevel.Edit)
            {
                return(RedirectToPage("/Notifications/Overview", new { NotificationId }));
            }

            var pendingTransferAlert =
                await _alertRepository.GetOpenAlertByNotificationId <TransferAlert>(NotificationId);

            if (pendingTransferAlert != null)
            {
                TransferAlert = pendingTransferAlert;
                return(Partial("_TransferPendingPartial", this));
            }

            TransferRequest = new TransferRequestViewModel();
            await SetDropdownsAsync();

            return(Page());
        }
示例#2
0
        public async Task AutoDismissAlertAsync <T>(Notification notification) where T : Alert
        {
            var alert = await _alertRepository.GetOpenAlertByNotificationId <T>(notification.NotificationId);

            if (alert == null)
            {
                return;
            }

            Func <Notification, bool> notificationQualifiesCheck;

            switch (alert)
            {
            case DataQualityBirthCountryAlert _:
                notificationQualifiesCheck = DataQualityBirthCountryAlert.NotificationQualifies;
                break;

            case DataQualityDraftAlert _:
                notificationQualifiesCheck = DataQualityDraftAlert.NotificationQualifies;
                break;

            case DataQualityClinicalDatesAlert _:
                notificationQualifiesCheck = DataQualityClinicalDatesAlert.NotificationQualifies;
                break;

            case DataQualityClusterAlert _:
                notificationQualifiesCheck = DataQualityClusterAlert.NotificationQualifies;
                break;

            case DataQualityTreatmentOutcome12 _:
                notificationQualifiesCheck = DataQualityTreatmentOutcome12.NotificationQualifies;
                break;

            case DataQualityTreatmentOutcome24 _:
                notificationQualifiesCheck = DataQualityTreatmentOutcome24.NotificationQualifies;
                break;

            case DataQualityTreatmentOutcome36 _:
                notificationQualifiesCheck = DataQualityTreatmentOutcome36.NotificationQualifies;
                break;

            case DataQualityDotVotAlert _:
                notificationQualifiesCheck = DataQualityDotVotAlert.NotificationQualifies;
                break;

            case DataQualityChildECMLevel _:
                notificationQualifiesCheck = DataQualityChildECMLevel.NotificationQualifies;
                break;

            default: throw new ArgumentException("Unexpected alert type passed for automatic closing");
            }

            if (!notificationQualifiesCheck(notification))
            {
                await DismissAlertAsync(alert.AlertId, null);
            }
        }
        public async Task <IActionResult> OnGetAsync()
        {
            Notification = await NotificationRepository.GetNotificationAsync(NotificationId);

            TransferRejectedAlert =
                await _alertRepository.GetOpenAlertByNotificationId <TransferRejectedAlert>(NotificationId);

            await AuthorizeAndSetBannerAsync();

            // Check edit permission of user and redirect if they don't have permission or the alert does not exist
            var(permissionLevel, _) = await _authorizationService.GetPermissionLevelAsync(User, Notification);

            if (permissionLevel != PermissionLevel.Edit || TransferRejectedAlert == null)
            {
                return(RedirectToPage("/Notifications/Overview", new { NotificationId }));
            }

            return(Page());
        }
        public async Task <IActionResult> OnGetAsync()
        {
            Notification = await NotificationRepository.GetNotificationAsync(NotificationId);

            TransferAlert = await _alertRepository.GetOpenAlertByNotificationId <TransferAlert>(NotificationId);
            await AuthorizeAndSetBannerAsync();

            // Check edit permission of user and redirect if not allowed
            if (!await _authorizationService.IsUserAuthorizedToManageAlert(User, TransferAlert))
            {
                return(RedirectToPage("/Notifications/Overview", new { NotificationId }));
            }

            if (TransferAlert == null)
            {
                return(RedirectToPage("/Notifications/Overview", new { NotificationId }));
            }

            var hospitals = await _referenceDataRepository.GetHospitalsByTbServiceCodesAsync(
                new List <string> {
                TransferAlert.TbServiceCode
            });

            Hospitals = new SelectList(hospitals,
                                       nameof(Hospital.HospitalId),
                                       nameof(Hospital.Name));
            var caseManagers = await _referenceDataRepository.GetCaseManagersByTbServiceCodesAsync(
                new List <string> {
                TransferAlert.TbServiceCode
            });

            CaseManagers = new SelectList(caseManagers,
                                          nameof(Models.Entities.User.Username),
                                          nameof(Models.Entities.User.DisplayName));
            TargetCaseManagerUsername = TransferAlert.CaseManagerUsername;
            return(Page());
        }
        public async Task RejectTransferAndDismissAlertAsync()
        {
            var user = await _referenceDataRepository.GetUserByUsernameAsync(User.Username());

            var transferRejectedAlert = new TransferRejectedAlert
            {
                NotificationId  = NotificationId,
                RejectionReason = TransferRequest.DeclineTransferReason ?? "No reason was given when declining this transfer.",
                DecliningUserAndTbServiceString = $"{user.DisplayName}, {TransferRequest.TransferAlert.TbService.Name}"
            };

            // Dismiss any existing transfer rejected alert so that the new one can be created
            var pendingTransferRejectedAlert =
                await _alertRepository.GetOpenAlertByNotificationId <TransferRejectedAlert>(NotificationId);

            if (pendingTransferRejectedAlert != null)
            {
                await _alertService.DismissAlertAsync(pendingTransferRejectedAlert.AlertId, User.Username());
            }
            await _alertService.AddUniqueOpenAlertAsync(transferRejectedAlert);

            await _alertService.DismissAlertAsync(TransferRequest.TransferAlert.AlertId, User.Username());
        }