Example #1
0
        private void ChangeStatus(AdminChangeStatusViewModel viewModel, long organisationId)
        {
            var  organisation = dataRepository.Get <Organisation>(organisationId);
            User currentUser  = ControllerHelper.GetGpgUserFromAspNetUser(User, dataRepository);

            OrganisationStatuses previousStatus = organisation.Status;
            OrganisationStatuses newStatus      = viewModel.NewStatus ?? OrganisationStatuses.Unknown;

            // Update the status
            organisation.SetStatus(
                newStatus,
                currentUser.UserId,
                viewModel.Reason);

            // [In]Activate users of the organisation
            if (newStatus == OrganisationStatuses.Active)
            {
                ActivateUsersOfOrganisation(organisation);
            }

            if (previousStatus == OrganisationStatuses.Active)
            {
                InactivateUsersOfOrganisation(organisation);
            }

            dataRepository.SaveChanges();

            // Audit log
            auditLogger.AuditChangeToOrganisation(
                AuditedAction.AdminChangeOrganisationStatus,
                organisation,
                new { PreviousStatus = previousStatus, NewStatus = newStatus, viewModel.Reason },
                User);
        }
Example #2
0
        private void UpdateAdminChangeStatusViewModelFromOrganisation(AdminChangeStatusViewModel viewModel, long organisationId)
        {
            viewModel.Organisation = dataRepository.Get <Organisation>(organisationId);

            viewModel.InactiveUserOrganisations = dataRepository.GetAll <InactiveUserOrganisation>()
                                                  .Where(m => m.OrganisationId == organisationId).ToList();
        }
Example #3
0
        public IActionResult ChangeStatusGet(long id)
        {
            var viewModel = new AdminChangeStatusViewModel();

            UpdateAdminChangeStatusViewModelFromOrganisation(viewModel, id);

            return(View("ChangeStatus", viewModel));
        }
Example #4
0
        private void ValidateAdminChangeStatusViewModel(AdminChangeStatusViewModel viewModel)
        {
            if (!viewModel.NewStatus.HasValue)
            {
                viewModel.AddErrorFor(m => m.NewStatus, "Please select a new status");
            }

            viewModel.ParseAndValidateParameters(Request, m => m.Reason);
        }
Example #5
0
        public IActionResult ChangeStatusPost(long id, AdminChangeStatusViewModel viewModel)
        {
            switch (viewModel.Action)
            {
            case ChangeOrganisationStatusViewModelActions.OfferNewStatusAndReason:
                UpdateAdminChangeStatusViewModelFromOrganisation(viewModel, id);
                ValidateAdminChangeStatusViewModel(viewModel);
                if (viewModel.HasAnyErrors())
                {
                    return(View("ChangeStatus", viewModel));
                }

                return(View("ConfirmStatusChange", viewModel));

            case ChangeOrganisationStatusViewModelActions.ConfirmStatusChange:
                ChangeStatus(viewModel, id);
                return(RedirectToAction("ViewStatusHistory", "AdminOrganisationStatus", new { id }));

            default:
                throw new ArgumentException("Unknown action in AdminOrganisationStatusController.ChangeStatusPost");
            }
        }