Ejemplo n.º 1
0
        public async Task <ActionResult <ApiResult> > Delete(string ids)
        {
            OrgUserView nodeView = new OrgUserView();

            nodeView.UpdatedBy   = _userId;
            nodeView.UpdatedTime = DateTime.Now;
            nodeView.UserIDs     = new List <int>();

            string[] idsArry = ids.Split(',');
            foreach (string item in idsArry)
            {
                int id = Convert.ToInt32(item);
                nodeView.UserIDs.Add(id);
            }
            if (nodeView.UserIDs.Count > 0)
            {
                var ret = await _orgService.DeleteOrgNodeUsers(nodeView);

                return(ret);
            }
            else
            {
                return(NotFound());
            }
        }
Ejemplo n.º 2
0
        public async Task <ActionResult <ApiResult> > BindOrgUser(OrgUserView nodeView)
        {
            nodeView.CreatedBy   = _userId;
            nodeView.CreatedTime = DateTime.Now;
            var ret = await _orgService.BindOrgNodeUsers(nodeView);

            return(ret);
        }
Ejemplo n.º 3
0
        // 获取所有顶级节点下所有用户,包括子级节点的用户
        public async Task <ApiResult> ListTopNodeWithUsers()
        {
            ApiResult ret = new ApiResult();

            try
            {
                List <OrgTree> nodes_all = await _orgRepo.ListAllOrgNode();

                List <OrgUser> users = await _orgRepo.ListAllOrgUser();

                Dictionary <int, OrgUserView> orgs = new Dictionary <int, OrgUserView>();
                foreach (OrgUser user in users)
                {
                    OrgTree topNode = _findTopNode(user.NodeID, nodes_all);
                    if (topNode != null)
                    {
                        if (orgs.ContainsKey(topNode.Id))
                        {
                            orgs[topNode.Id].UserIDs.Add(user.UserID);
                            UserCombo uc = new UserCombo()
                            {
                                ID       = user.UserID,
                                UserName = user.UserName
                            };
                            orgs[topNode.Id].Users.Add(uc);
                        }
                        else
                        {
                            OrgUserView org = new OrgUserView();
                            org.Id      = topNode.Id;
                            org.UserIDs = new List <int>();
                            org.UserIDs.Add(user.UserID);
                            org.Users = new List <UserCombo>();
                            UserCombo uc = new UserCombo()
                            {
                                ID       = user.UserID,
                                UserName = user.UserName
                            };
                            org.Users.Add(uc);
                            orgs.Add(org.Id, org);
                        }
                    }
                }
                List <OrgUserView> data = orgs.Select(c => c.Value).ToList();

                ret.code = Code.Success;
                ret.data = data;
            }
            catch (Exception ex)
            {
                ret.code = Code.Failure;
                ret.msg  = ex.Message;
            }
            return(ret);
        }
Ejemplo n.º 4
0
 public async Task <int> DeleteOrgNodeUsers(OrgUserView users)
 {
     return(await WithConnection(async c =>
     {
         string sql = "UPDATE org_user SET is_del = 1,"
                      + " updated_by = @UpdatedBy, updated_time = @UpdatedTime WHERE id = @ID and is_del != 1;";
         int affectedRows = await c.ExecuteAsync(sql,
                                                 new
         {
             ID = users.UserIDs,
             UpdatedBy = users.UpdatedBy,
             UpdatedTime = users.UpdatedTime
         });
         return affectedRows;
     }));
 }
Ejemplo n.º 5
0
        public async Task <ApiResult> DeleteOrgNodeUsers(OrgUserView nodeView)
        {
            ApiResult ret = new ApiResult();

            try
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    await _orgRepo.DeleteOrgNodeUsers(nodeView);

                    ret.code = Code.Success;

                    scope.Complete();
                }
            }
            catch (Exception ex)
            {
                ret.code = Code.Failure;
                ret.msg  = ex.Message;
            }

            return(ret);
        }
Ejemplo n.º 6
0
        public async Task <ApiResult> BindOrgNodeUsers(OrgUserView nodeView)
        {
            ApiResult ret = new ApiResult();

            try
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    // //取消bind当前的用户
                    // OrgTree node = new OrgTree();
                    // node.ID = nodeView.ID;
                    // node.UpdatedBy = nodeView.CreatedBy;
                    // node.UpdatedTime = nodeView.CreatedTime;
                    // await _orgRepo.UnbindOrgNodeUsers(node);

                    // 判断此节点是否可绑定人员
                    bool        canBind  = true;
                    OrgNodeType nodeType = await _getOrgNodeTypeByNodeID(nodeView.Id);

                    if (nodeType != null && !nodeType.HasUsers)
                    {
                        canBind = false;
                    }
                    if (nodeType != null && nodeType.HasUsers && nodeType.HasUsersLeafOnly)
                    {
                        // 假如该节点目前为叶子节点后期有可能添加子节点,要提示不能添加
                        bool hasChildren = await _orgRepo.hasChildren(nodeView.Id);

                        if (hasChildren)
                        {
                            canBind = false;
                        }
                    }
                    if (canBind)
                    {
                        // 绑定前检查用户是否已被绑定
                        List <OrgUser> selectedUsers = await _orgRepo.ListAllOrgUser();

                        List <OrgUser> conflictUsers = selectedUsers
                                                       .Where(c => nodeView.UserIDs.Contains(c.UserID)).ToList();
                        if (conflictUsers.Count == 0)
                        {
                            //bind新用户
                            List <OrgUser> users = new List <OrgUser>();
                            foreach (int id in nodeView.UserIDs)
                            {
                                OrgUser user = new OrgUser();
                                user.UserID      = id;
                                user.NodeID      = nodeView.Id;
                                user.CreatedBy   = nodeView.CreatedBy;
                                user.CreatedTime = nodeView.CreatedTime;

                                users.Add(user);
                            }
                            await _orgRepo.BindOrgNodeUsers(users);

                            ret.code = Code.Success;
                        }
                        else
                        {
                            ret.code = Code.BindUserConflict;
                        }
                    }
                    else
                    {
                        ret.code = Code.CheckDataRulesFail;
                    }
                    scope.Complete();
                }
            }
            catch (Exception ex)
            {
                ret.code = Code.Failure;
                ret.msg  = ex.Message;
            }

            return(ret);
        }