public IActionResult RemoveOrganisationFromUserPost( long organisationId, long userId, AdminRemoveUserViewModel viewModel) { return(UnlinkUserAndOrganisationPost(organisationId, userId, viewModel, true)); }
private IActionResult UnlinkUserAndOrganisationGet(long organisationId, long userId, bool fromViewUserPage) { var viewModel = new AdminRemoveUserViewModel(); UpdateAdminRemoveUserViewModelFromUserOrganisation(viewModel, organisationId, userId); viewModel.FromViewUserPage = fromViewUserPage; return(View("ConfirmRemoving", viewModel)); }
private void UpdateAdminRemoveUserViewModelFromUserOrganisation( AdminRemoveUserViewModel viewModel, long organisationId, long userId) { UserOrganisation userOrg = dataRepository.GetAll <UserOrganisation>() .Where(u => u.UserId == userId) .Where(u => u.OrganisationId == organisationId) .FirstOrDefault(); ValidateUserOrganisationForRemoval(userOrg); viewModel.OrganisationId = userOrg.OrganisationId; viewModel.OrganisationName = userOrg.Organisation.OrganisationName; viewModel.UserId = userOrg.UserId; viewModel.UserFullName = userOrg.User.Fullname; }
private IActionResult UnlinkUserAndOrganisationPost( long organisationId, long userId, AdminRemoveUserViewModel viewModel, bool fromViewUserPage) { UpdateAdminRemoveUserViewModelFromUserOrganisation(viewModel, organisationId, userId); viewModel.FromViewUserPage = fromViewUserPage; viewModel.ParseAndValidateParameters(Request, m => m.Reason); if (viewModel.HasAnyErrors()) { // If there are any errors, return the user back to the same page to correct the mistakes return(View("ConfirmRemoving", viewModel)); } var user = dataRepository.Get <User>(viewModel.UserId); var organisation = dataRepository.Get <Organisation>(viewModel.OrganisationId); // Remove user organisation UserOrganisation userOrg = dataRepository.GetAll <UserOrganisation>() .Where(u => u.UserId == viewModel.UserId) .Where(u => u.OrganisationId == viewModel.OrganisationId) .FirstOrDefault(); dataRepository.Delete(userOrg); dataRepository.SaveChanges(); // Email user that has been unregistered emailSendingService.SendRemovedUserFromOrganisationEmail( user.EmailAddress, organisation.OrganisationName, user.Fullname); // Email the other users of the organisation IEnumerable <string> emailAddressesForOrganisation = organisation.UserOrganisations.Select(uo => uo.User.EmailAddress); foreach (string emailAddress in emailAddressesForOrganisation) { emailSendingService.SendRemovedUserFromOrganisationEmail( emailAddress, organisation.OrganisationName, user.Fullname); } // Send the notification to GEO for each newly orphaned organisation if (organisation.GetIsOrphan()) { emailSendingService.SendGeoOrphanOrganisationEmail(organisation.OrganisationName); } // Audit log auditLogger.AuditChangeToOrganisation( AuditedAction.AdminRemoveUserFromOrganisation, organisation, new { RemovedUserId = user.UserId, viewModel.Reason }, User); return(View("SuccessfullyRemoved", viewModel)); }