Beispiel #1
0
        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));
        }
Beispiel #2
0
        /// <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")
            });
        }