/// <summary>
 /// 角色分配
 /// </summary>
 /// <param name="listInfo">用户角色关系实体集合</param>
 /// <returns>分配结果</returns>
 public byte RoleAssign(RoleAssignViewModel listInfo)
 {
     using (DataSubmittedEntities db = new DataSubmittedEntities())
     {
         using (TransactionScope transaction = new TransactionScope())
         {
             //删除用户角色关系
             var list = db.OT_UserRole.Where(a => listInfo.UserIdList.Contains(a.UserId)).ToList();
             db.OT_UserRole.RemoveRange(list);
             //构建并添加用户角色关系
             foreach (Guid uesrId in listInfo.UserIdList)
             {
                 foreach (Guid roleId in listInfo.RoleIdList)
                 {
                     if (roleId == null)
                     {
                         return (byte)EResult.IsNull3;
                     }
                     OT_UserRole userRoleInfo = new OT_UserRole();
                     userRoleInfo.Id = Guid.NewGuid();
                     userRoleInfo.IsDelete = (byte)EDataStatus.Normal;
                     userRoleInfo.RoleId = roleId;
                     userRoleInfo.UserId = uesrId;
                     db.OT_UserRole.Add(userRoleInfo);
                 }
             }
             return Result.SaveChangesResult(db, transaction).ResultKey;
         }
     }
 }
        /// <summary>
        /// 修改用户信息
        /// </summary>
        /// <param name="userInfo">修改用户信息实体</param>
        /// <returns>结果</returns>
        public CustomResult Update(UpdateUserInfoViewModel userInfo)
        {
            using (DataSubmittedEntities db = new DataSubmittedEntities())
            {
                using (TransactionScope transaction = new TransactionScope())
                {
                    CustomResult pReturnValue = new CustomResult();

                    //查找用户表中是否已经存在该用户
                    var user = db.OT_User.Where(a => a.Name == userInfo.UserName&a.Id!=userInfo.UserId).Select(a => new
                    {
                        UserId = a.Id,
                        IsDelete = a.IsDelete
                    }).ToList();

                    //有记录,则返回用户已存在
                    if (user != null && user.Count > 0)
                    {
                        if (user[0].IsDelete == (byte)EUserStatus.Normal)
                        {
                            pReturnValue.ResultKey = (byte)EResult.IsRepeat;
                            pReturnValue.ResultValue = Wttech.DataSubmitted.Common.Resources.TipInfo.AddFaileHasUser;
                        }
                        else
                        {
                            pReturnValue.ResultKey = (byte)EResult.IsRepeatDel;
                            pReturnValue.ResultValue = Wttech.DataSubmitted.Common.Resources.TipInfo.AddFaileHasDelUser;
                            
                        }
                        return pReturnValue;
                    }

                    //修改用户名
                    var listUserName = db.OT_User.Where(a => a.Id == userInfo.UserId).ToList();

                    //如果用户不存在,这返回,说明数据不是正常输入
                    if (!(listUserName != null && listUserName.Count > 0))
                    {
                        pReturnValue.ResultKey = (byte)EResult.IsNull4;
                    }

                    listUserName[0].Name = userInfo.UserName;

                    //获取用户角色关系
                    var list = db.OT_UserRole.Where(a => a.UserId == userInfo.UserId & a.IsDelete == (byte)EDataStatus.Normal).ToList();

                    //删除用户角色关系
                    foreach (var model in list)
                    {
                        model.IsDelete = (byte)EDataStatus.IsDelete;
                    }

                    //添加用户角色关系
                    foreach (Guid roleId in userInfo.RoleIdList)
                    {
                        OT_UserRole userRoleInfo = new OT_UserRole();
                        userRoleInfo.Id = Guid.NewGuid();
                        userRoleInfo.IsDelete = (byte)EDataStatus.Normal;
                        userRoleInfo.RoleId = roleId;
                        userRoleInfo.UserId = userInfo.UserId;
                        db.OT_UserRole.Add(userRoleInfo);
                    }
                    pReturnValue = Result.SaveChangesResult(db, transaction);
                    return pReturnValue;
                }
            }
        }
        /// <summary>
        /// 添加用户信息
        /// </summary>
        /// <param name="userInfo">添加用户信息实体</param>
        /// <returns>添加结果</returns>
        public byte Create(AddUserInfoViewModel userInfo)
        {
            using (DataSubmittedEntities db = new DataSubmittedEntities())
            {
                //查找用户表中是否已经存在该用户
                var user = db.OT_User.Where(a => a.Name == userInfo.UserName).Select(a => new
                {
                    UserId = a.Id,
                    IsDelete=a.IsDelete
                }).ToList();

                //有记录,则返回用户已存在
                if (user != null && user.Count > 0)
                {
                    if (user[0].IsDelete == (byte)EUserStatus.Normal)
                        return (byte)EResult.IsRepeat;
                    else
                        return (byte)EResult.IsRepeatDel; ;
                }
                using (TransactionScope transaction = new TransactionScope())
                {
                    //构建并添加用户信息
                    OT_User userModel = new OT_User();
                    userModel.Id = Guid.NewGuid();
                    userModel.IsDelete = (byte)EUserStatus.Normal;
                    userModel.Name = userInfo.UserName;
                    userModel.Password = ConfigurationManager.AppSettings["StartPassword"];
                    db.OT_User.Add(userModel);

                    //构建添加用户角色关系
                    foreach (Guid roleId in userInfo.RoleIdList)
                    {
                        OT_UserRole model = new OT_UserRole();
                        model.Id = Guid.NewGuid();
                        model.RoleId = roleId;
                        model.UserId = userModel.Id;
                        model.IsDelete = (byte)EDataStatus.Normal;
                        db.OT_UserRole.Add(model);
                    }
                    return Result.SaveChangesResult(db, transaction).ResultKey;
                }
            }
        }