Ejemplo n.º 1
0
        public IActionResult UpdateUsers([FromBody] IList <User> users)
        {
            var cmd    = new UpdateUsersCommand(users);
            var result = commandProcessor.Process(cmd);

            if (!result.Success)
            {
                return(BadRequest()); //TODO: Not accurate
            }

            return(Ok(result.Response));
        }
Ejemplo n.º 2
0
        public CommandResult <List <User> > Handle(UpdateUsersCommand command)
        {
            var response = new CommandResult <List <User> >();

            try
            {
                var validUsers = ValidateEntries(command.users);
                UpdateUsers(validUsers);

                ctx.SaveChanges();

                response.Response = validUsers;
                response.Success  = true;
            }
            catch (Exception e)
            {
                logger.LogError(e.Message);
            }

            return(response);
        }
Ejemplo n.º 3
0
 public async Task <IActionResult> UpdateUsersList([FromBody] UpdateUsersCommand command)
 {
     return(Ok(await Mediator.Send(command)));
 }
Ejemplo n.º 4
0
        // 同上,UpdateUsersCommand 的处理方法
        public Task <Unit> Handle(UpdateUsersCommand message, CancellationToken cancellationToken)
        {
            if (!message.IsValid())
            {
                NotifyValidationErrors(message);
                return(Task.FromResult(new Unit()));
            }
            var originuser = _UsersRepository.GetUserById(message.Id);

            var address = new Address(message.Province, message.City, message.County, message.Street, message.Detailed);
            var ip      = string.Empty;

            SystemHelper.GetLocalIP(ref ip);
            var userAuths = message.UserAuths != null && message.UserAuths.Count > 0 ? message.UserAuths : originuser.UserAuths;

            #region
            var user = new Users(
                message.Id,
                message.Type,
                message.MtypeId,
                message.NickName,
                message.Surname,
                message.Name,
                message.RealName,
                message.Phone,
                message.Email,
                message.BirthDate,
                message.Sex,
                message.Age,
                message.Gravatar,
                message.Avatar,
                message.Motto,
                message.Bio,
                message.Idcard,
                message.Major,
                message.Polity,
                message.NowState,
                message.State,
                address,
                message.Company,
                message.Website,
                message.Weibo,
                message.Blog,
                message.Url,
                message.RegisterTime,
                message.RegisterIp,
                message.LastLoginTime,
                message.LastLoginIp,
                DateTime.Now, //message.LastModifiedTime,
                ip,           //message.LastModifiedIp,
                userAuths,
                message.Sort
                );
            #endregion

            // 判断用户名是否存在
            // 这些业务逻辑,当然要在领域层中(领域命令处理程序中)进行处理
            var existingUsers = _UsersRepository.GetByName(user.Name);
            if (existingUsers != null && existingUsers.Id != user.Id)
            {
                //引发错误事件
                Bus.RaiseEvent(new DomainNotification("", "该用户名已经被使用!"));
                return(Task.FromResult(new Unit()));
            }
            // 判断邮箱是否存在
            existingUsers = _UsersRepository.GetByEmail(user.Email);
            if (existingUsers != null && existingUsers.Id != user.Id)
            {
                if (!existingUsers.Equals(user))
                {
                    Bus.RaiseEvent(new DomainNotification("", "该邮箱已经被使用!"));
                    return(Task.FromResult(new Unit()));
                }
            }

            _UsersRepository.Update(user);

            if (Commit())
            {
                // 提交成功后,这里需要发布领域事件
                // 比如欢迎用户注册邮件呀,短信呀等
                #region
                var usersupdatedevent = new UsersUpdatedEvent(
                    user.Id,
                    user.Type,
                    user.MtypeId,
                    user.NickName,
                    user.Surname,
                    user.Name,
                    user.RealName,
                    user.Phone,
                    user.Email,
                    user.BirthDate,
                    user.Sex,
                    user.Age,
                    user.Gravatar,
                    user.Avatar,
                    user.Motto,
                    user.Bio,
                    user.Idcard,
                    user.Major,
                    user.Polity,
                    user.NowState,
                    user.State,
                    user.Address.Province, user.Address.City, user.Address.County, user.Address.Street, user.Address.Detailed,
                    user.Company,
                    user.Website,
                    user.Weibo,
                    user.Blog,
                    user.Url,
                    user.RegisterTime,
                    user.RegisterIp,
                    user.LastLoginTime,
                    user.LastLoginIp,
                    user.LastModifiedTime,
                    user.LastModifiedIp,
                    user.UserAuths,
                    user.Sort
                    );
                #endregion
                Bus.RaiseEvent(usersupdatedevent);
            }

            return(Task.FromResult(new Unit()));
        }