public ActionResult SetPermissions(DocumentPermissionManageModel model, SubmitType submit) { if (ModelState.IsValid) { var response = _documentService.SaveDocumentPermissionManageModel(model); SetResponseMessage(response); if (response.Success) { switch (submit) { case SubmitType.PopupSave: return(View("CloseFancyBox", new CloseFancyBoxViewModel { IsReload = false })); default: return(RedirectToAction("SetPermissions", new { path = model.EncryptedPath })); } } } SetupPopupAction(); return(View(model)); }
/// <summary> /// Save document permissions /// </summary> /// <param name="model"></param> /// <returns></returns> public ResponseModel SaveDocumentPermissionManageModel(DocumentPermissionManageModel model) { var protectedDocument = GetByEncryptPath(model.EncryptedPath); if (protectedDocument != null) { #region User Groups if (model.GroupIds == null) { model.GroupIds = new List <int>(); } var currentGroups = protectedDocument.ProtectedDocumentGroups.Select(p => p.UserGroupId).ToList(); // Remove groups var removedGroupIds = currentGroups.Where(g => !model.GroupIds.Contains(g)).ToList(); _protectedDocumentGroupRepository.Delete(protectedDocument.Id, removedGroupIds); // Add new groups var addedGroupIds = model.GroupIds.Where(id => !currentGroups.Contains(id)).ToList(); _protectedDocumentGroupRepository.Insert(protectedDocument.Id, addedGroupIds); #endregion #region Company if (model.CompanyIds == null) { model.CompanyIds = new List <int>(); } var currentCompanies = protectedDocument.ProtectedDocumentCompanies.Select(p => p.CompanyId).ToList(); // Remove companies var removedCompanyIds = currentCompanies.Where(id => !model.CompanyIds.Contains(id)).ToList(); _protectedDocumentCompanyRepository.Delete(protectedDocument.Id, removedCompanyIds); // Add new companies var addedCompanyIds = model.CompanyIds.Where(id => !currentCompanies.Contains(id)).ToList(); _protectedDocumentCompanyRepository.Insert(protectedDocument.Id, addedCompanyIds); #endregion #region Company Types if (model.CompanyTypeIds == null) { model.CompanyTypeIds = new List <int>(); } var currentCompanyTypes = protectedDocument.ProtectedDocumentCompanyTypes.Select(p => p.CompanyTypeId).ToList(); // Remove company types var removedCompanyTypeIds = currentCompanyTypes.Where(id => !model.CompanyTypeIds.Contains(id)).ToList(); _protectedDocumentCompanyTypeRepository.Delete(protectedDocument.Id, removedCompanyTypeIds); // Add new company types var addedCompanyTypeIds = model.CompanyTypeIds.Where(id => !currentCompanyTypes.Contains(id)).ToList(); _protectedDocumentCompanyTypeRepository.Insert(protectedDocument.Id, addedCompanyTypeIds); #endregion return(new ResponseModel { Success = true, Message = T("ProtectedDocument_Message_UpdateSuccessfully") }); } protectedDocument = new ProtectedDocument { Path = model.EncryptedPath.GetUniqueLinkInput() }; var response = Insert(protectedDocument); if (response.Success) { #region User Groups if (model.GroupIds == null) { model.GroupIds = new List <int>(); } _protectedDocumentGroupRepository.Insert(protectedDocument.Id, model.GroupIds); #endregion #region Company if (model.CompanyIds == null) { model.CompanyIds = new List <int>(); } _protectedDocumentCompanyRepository.Insert(protectedDocument.Id, model.CompanyIds); #endregion #region Company Types if (model.CompanyTypeIds == null) { model.CompanyTypeIds = new List <int>(); } _protectedDocumentCompanyTypeRepository.Insert(protectedDocument.Id, model.CompanyTypeIds); #endregion return(response.SetMessage(response.Success ? T("ProtectedDocument_Message_UpdateSuccessfully") : T("ProtectedDocument_Message_UpdateFailure"))); } return(new ResponseModel { Success = false, Message = T("ProtectedDocument_Message_UpdateFailure") }); }