private async Task ManageRoleRelationships(RoleSetupViewModel roleSetup, Role role)
        {
            await ManageUserRoles(roleSetup, role);
            await ManageFolderRoles(roleSetup, role);

            await _unitOfWork.CompleteAsync();
        }
        private async Task ManageFolderRoles(RoleSetupViewModel roleSetup, Role role)
        {
            //null string list throws exception
            var existingFolderRoles = await _unitOfWork.AuthorizationRepo.GetExistingFolderRoles(role.RoleId);

            roleSetup.AssignedFolerRoles = roleSetup.AssignedFolerRoles == null ? "" : roleSetup.AssignedFolerRoles;
            List <int> assignedFolderRoleId = JsonConvert.DeserializeObject <List <int> >(roleSetup.AssignedFolerRoles);

            if (existingFolderRoles.Count() > 0 && roleSetup.AssignedFolerRoles != "")
            {
                _unitOfWork.AuthorizationRepo.DeleteFolderRoles(existingFolderRoles);
                await _unitOfWork.CompleteAsync();
            }
            //create list of User role OBjects to insert into FolderRoles_Matrix
            if (assignedFolderRoleId != null)
            {
                var assignedFolderRoles = assignedFolderRoleId
                                          .Select(fr => new FolderRole
                {
                    Role           = role,
                    FolderId       = fr,
                    CreateDateTime = DateTime.Now,
                    CreateUserId   = _userSession.Id
                });
                await _unitOfWork.AuthorizationRepo.CreateFolderRoles(assignedFolderRoles);
            }
        }
        private async Task <Role> SaveRole(RoleSetupViewModel roleSetup)
        {
            var role = new Role();

            if (roleSetup.Id != null)
            {
                role = await _unitOfWork.AuthorizationRepo.GetRoleByIdAsync(Convert.ToInt32(roleSetup.Id));
            }

            role.CreateDateTime = DateTime.Now;
            role.CreateUserId   = _userSession.Id;
            role.Name           = roleSetup.Name;
            role.Description    = roleSetup.Description;

            if (roleSetup.Id != null)
            {
                _unitOfWork.AuthorizationRepo.UpdateRole(role);
            }
            else
            {
                await _unitOfWork.AuthorizationRepo.CreateRole(role);
            }

            await _unitOfWork.CompleteAsync();

            return(role);
        }
        private async Task ManageUserRoles(RoleSetupViewModel roleSetup, Role role)
        {
            var existingUserroles = await _unitOfWork.AuthorizationRepo.GetExistingUserRoles(role.RoleId);                          //-> 199

            roleSetup.AssignedUsersStringList = roleSetup.AssignedUsersStringList == null ? "" : roleSetup.AssignedUsersStringList; //empty s
            List <RentUser> assignedUsers = JsonConvert.DeserializeObject <List <RentUser> >(roleSetup.AssignedUsersStringList);    //null

            //Delete old user roles only when the assigned user list has been changed meaning AssignedUsersStringList will not be empty
            if (existingUserroles.Count() > 0 && roleSetup.AssignedUsersStringList != "")
            {
                _unitOfWork.AuthorizationRepo.DeleteUserRoles(existingUserroles);
                await _unitOfWork.CompleteAsync();
            }

            if (assignedUsers != null)
            {
                List <UserRole> userRoles = assignedUsers
                                            .Select(u => new UserRole
                {
                    UserId         = u.UserId,
                    Role           = role,
                    CreateDateTime = DateTime.Now,
                    CreateUserId   = _userSession.Id
                }).ToList();

                await _unitOfWork.AuthorizationRepo.CreateUserRoles(userRoles);
            }
        }
コード例 #5
0
        public ActionResult RoleSetup(RoleSetupViewModel model, ServiceResult msgresult)
        {
            var uService = new UserService();
            var prole    = uService.ValidatePageRole(User.Identity.GetUserId(), Page_Code.P0000);

            if (prole == null)
            {
                return(RedirectToAction("ErrorPage", "Account", new ErrorViewModel()
                {
                    Message = Resource.Message_Access_Denied
                }));
            }
            if (prole.View == null || prole.View == false)
            {
                return(RedirectToAction("ErrorPage", "Account", new ErrorViewModel()
                {
                    Message = Resource.Message_Access_Denied
                }));
            }

            ModelState.Clear();
            if (model.operation == Operation.D)
            {
                return(RoleSetup(model));
            }

            model.result = msgresult;
            model.Modify = prole.Modify;
            model.View   = prole.View;

            var cbService = new ComboService();
            var rService  = new RoleService();

            model.cPageList = cbService.LstPage();
            model.cRoleList = cbService.LstRole(true);

            var rcri = new RoleCriteria();

            rcri.Role_ID = model.sRole_ID;
            var result = rService.GetPageRole(rcri);

            if (result.Code == ReturnCode.SUCCESS)
            {
                model.PageRoleList = result.Object as List <Page_Role>;
            }

            return(View(model));
        }
コード例 #6
0
        public RoleSetupView(RoleSetupViewModel viewModel)
        {
            InitializeComponent();
            DataContext = viewModel;

            this.Loaded += (s, e) =>
            {
                int count = tcRoleSetupTab.Items.Count;
                if (count > 0)
                {
                    TabItem rolesUnderSupervisorTab = (TabItem)tcRoleSetupTab.Items[0];
                    rolesUnderSupervisorTab.IsEnabled = viewModel.LoggedInUser.Role.UserRight.CanAssignRolesUnderSupervisor;

                    TabItem rolesUnderHodTab = (TabItem)tcRoleSetupTab.Items[1];
                    rolesUnderHodTab.IsEnabled = viewModel.LoggedInUser.Role.UserRight.CanAssignRolesUnderHod;
                }
            };
        }
        public async Task <IActionResult> CreateRole(RoleSetupViewModel roleSetup)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    Role role = await SaveRole(roleSetup);
                    await ManageRoleRelationships(roleSetup, role);

                    return(Redirect(Request.Headers["Referer"].ToString()));
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            return(Redirect(Request.Headers["Referer"].ToString()));
        }
コード例 #8
0
        private async Task <RoleSetupViewModel> BuildRoleSetupViewModel(int?roleId)
        {
            ViewBag.ButtonText = roleId != null ? "Save" : "Create";
            RoleSetupViewModel roleSetupVM = new RoleSetupViewModel();

            if (roleId != null) //pass Role Id and Name if Editing
            {
                Role role = new Role();
                role = await _unitOfWork.AuthorizationRepo.GetRoleByIdAsync(Convert.ToInt32(roleId));

                roleSetupVM.Id          = role.RoleId;
                roleSetupVM.Name        = role.Name;
                roleSetupVM.Description = role.Description;
            }

            //filter out all assigned users if role exists and is being edited.
            var users = roleId != null ? await _unitOfWork.Users.GetActiveUsersNotAssignedToRole(Convert.ToInt32(roleId)) :
                        await _unitOfWork.Users.GetAllActiveUsers();

            var assignedUsers = await _unitOfWork.AuthorizationRepo.GetRoleAssignedUsers(roleId);

            var folderRoles = await _unitOfWork.AuthorizationRepo.GetAllFolderRoles(roleId);

            roleSetupVM.AllUsers      = users.ToList();
            roleSetupVM.AssignedUsers = assignedUsers.ToList();
            roleSetupVM.FolderRoles   = folderRoles.ToList();
            //roleSetupVM.AssignedUsersStringList = JsonConvert.SerializeObject(assignedUsers);
            //roleSetupVM.AssignedFolerRoles = JsonConvert.SerializeObject(folderRoles.Select(fr=> fr.FolderId));
            roleSetupVM.AssignedUsersStringList = "";
            roleSetupVM.AssignedFolerRoles      = "";

            ViewBag.checkedNodes = GetAssignedFolderIds(folderRoles);


            return(roleSetupVM);
        }
コード例 #9
0
        public ActionResult RoleSetup(RoleSetupViewModel model)
        {
            var rService = new RoleService();

            if (model.tabAction == "pagerole")
            {
                if (model.Role_ID.HasValue && model.Page_ID.HasValue)
                {
                    var cri = new RoleCriteria();
                    cri.Role_ID = model.Role_ID;
                    cri.Page_ID = model.Page_ID;
                    var result = rService.GetPageRole(cri);
                    if (result.Code == ReturnCode.SUCCESS)
                    {
                        var dup  = new Page_Role();
                        var dups = result.Object as List <Page_Role>;
                        if (dups != null && dups.Count() != 0)
                        {
                            if (model.operation == Operation.C)
                            {
                                ModelState.AddModelError("Page_ID", Resource.The + " " + Resource.Page + " " + Resource.Field + " " + Resource.Is_Duplicated);
                            }
                            else if (model.operation == Operation.U)
                            {
                                dup = dups.FirstOrDefault();
                                if (dup.Page_Role_ID != model.Page_Role_ID)
                                {
                                    ModelState.AddModelError("Page_ID", Resource.The + " " + Resource.Page + " " + Resource.Field + " " + Resource.Is_Duplicated);
                                }
                            }
                        }
                    }
                }

                if (ModelState.IsValid)
                {
                    var prole = new Page_Role();
                    if (model.operation == Operation.U || model.operation == Operation.D)
                    {
                        var cri = new RoleCriteria();
                        cri.Page_Role_ID = model.Page_Role_ID;
                        var result = rService.GetPageRole(cri);
                        if (result.Code == ReturnCode.SUCCESS)
                        {
                            var proles = result.Object as List <Page_Role>;
                            if (proles != null && proles.Count() == 1)
                            {
                                prole = proles.FirstOrDefault();
                            }
                        }
                    }

                    if (model.operation != Operation.D)
                    {
                        prole.Role_ID = model.Role_ID;
                        prole.Page_ID = model.Page_ID;
                        prole.Modify  = (model.Modify.HasValue && model.Modify.Value ? true : false);
                        prole.View    = (model.View.HasValue && model.View.Value ? true : false);
                        prole.Close   = (model.Close.HasValue && model.Close.Value ? true : false);

                        if (prole.Modify.HasValue && prole.Modify.Value)
                        {
                            prole.View = true;
                        }

                        if (prole.Page_ID == 9 && prole.Role_ID == 5)
                        {
                            prole.View   = true;
                            prole.Modify = true;
                        }
                    }

                    if (model.operation == Operation.C)
                    {
                        model.result = rService.InsertPageRole(prole);
                    }

                    else if (model.operation == Operation.U)
                    {
                        model.result = rService.UpdatePageRole(prole);
                    }

                    else if (model.operation == Operation.D)
                    {
                        prole.Record_Status = Record_Status.Delete;
                        model.result        = rService.UpdatePageRole(prole);
                        if (model.result.Code == ReturnCode.SUCCESS)
                        {
                            model.result = new ServiceResult()
                            {
                                Code = ReturnCode.SUCCESS, Msg = Success.GetMessage(ReturnCode.SUCCESS_DELETE), Field = Resource.Page_Role
                            }
                        }
                        ;
                        else
                        {
                            model.result = new ServiceResult()
                            {
                                Code = ReturnCode.ERROR_DELETE, Msg = Error.GetMessage(ReturnCode.ERROR_DELETE), Field = Resource.Page_Role
                            }
                        };

                        return(RedirectToAction("RoleSetup", new AppRouteValueDictionary(model)));
                    }

                    if (model.result.Code == ReturnCode.SUCCESS)
                    {
                        return(RedirectToAction("RoleSetup", new AppRouteValueDictionary(model)));
                    }
                }
            }

            var cbService = new ComboService();

            model.cPageList = cbService.LstPage();
            model.cRoleList = cbService.LstRole(true);

            var rcri = new RoleCriteria();

            rcri.Role_ID = model.Role_ID;
            var result2 = rService.GetPageRole(rcri);

            if (result2.Code == ReturnCode.SUCCESS)
            {
                model.PageRoleList = result2.Object as List <Page_Role>;
            }
            return(View(model));
        }
    }
コード例 #10
0
        public async Task <IViewComponentResult> InvokeAsync(int?roleId)
        {
            RoleSetupViewModel roleSetupVM = await BuildRoleSetupViewModel(roleId);

            return(View("CreateRole", roleSetupVM));
        }