Пример #1
0
        public ObjectRequest NewUser(RegisterUsersCommand cmd)
        {
            if (_repository.IsUserExist(cmd.Email))
            {
                return(new ObjectRequest()
                       .CreateObjectRequest("Usuario ja esta Registrado no Sistema !", false));
            }

            Users user = new Users(cmd.Name, cmd.Email, cmd.Password);

            _repository.AddEntity(user);

            if (Commit(user))
            {
                return(new ObjectRequest()
                       .CreateObjectRequest($"Registro de {user.Name} Criado com Sucesso {user.ID} {user.Email}", true));
            }

            return(new ObjectRequest().CreateErrorNotification(user.ListErrors()));
        }
Пример #2
0
        public async Task <IActionResult> PostUser([FromBody] dynamic body)
        {
            try
            {
                var Cmd = new RegisterUsersCommand
                {
                    Name     = (string)body.name,
                    Email    = (string)body.email,
                    Password = (string)body.password
                };

                var result = _service.NewUser(Cmd);

                return(await CreateResponse(result));
            }
            catch (Exception ex)
            {
                return(await ServerErroApp(ex));
            }
        }
Пример #3
0
        // RegisterUsersCommand命令的处理程序
        // 整个命令处理程序的核心都在这里
        // 不仅包括命令验证的收集,持久化,还有领域事件和通知的添加
        public async Task <Response <Users> > Handle(RegisterUsersCommand request, CancellationToken cancellationToken)
        {
            if (!request.IsValid())
            {
                NotifyValidationErrors(request);
                //return new Response<Users>("Validation failed.");
                return(await Task.FromResult(new Response <Users>("Validation failed.")));
            }
            #region
            var user    = new Users();
            var address = new Address(request.Province, request.City, request.County, request.Street, request.Detailed);
            user.Type             = request.Type;
            user.MtypeId          = request.MtypeId;
            user.NickName         = request.NickName;
            user.Surname          = request.Surname;
            user.Name             = request.Name;
            user.RealName         = request.RealName;
            user.Phone            = request.Phone;
            user.Email            = request.Email;
            user.BirthDate        = request.BirthDate;
            user.Sex              = request.Sex;
            user.Age              = request.Age;
            user.Gravatar         = request.Gravatar;
            user.Avatar           = request.Avatar;
            user.Motto            = request.Motto;
            user.Bio              = request.Bio;
            user.Idcard           = request.Idcard;
            user.Major            = request.Major;
            user.Polity           = request.Polity;
            user.NowState         = request.NowState;
            user.State            = request.State;
            user.Address          = address;
            user.Company          = request.Company;
            user.Website          = request.Website;
            user.Weibo            = request.Weibo;
            user.Blog             = request.Blog;
            user.Url              = request.Url;
            user.RegisterTime     = request.RegisterTime;
            user.RegisterIp       = request.RegisterIp;
            user.LastLoginTime    = request.LastLoginTime;
            user.LastLoginIp      = request.LastLoginIp;
            user.LastModifiedTime = request.LastModifiedTime;
            user.LastModifiedIp   = request.LastModifiedIp;
            user.UserAuths        = request.UserAuths;
            user.Sort             = request.Sort;
            //user.IsSuperMan = request.IsSuperMan;
            #endregion

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

                    return(await Task.FromResult(new Response <Users>("该邮箱已经被使用.")));
                }
            }
            #endregion

            await _UsersRepository.AddAsync(user);

            //var result = await CommitAsync();
            if (await CommitAsync())
            {
                #region
                var usersregisteredevent = new UsersRegisteredEvent(
                    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
                await Bus.RaiseEvent(usersregisteredevent);
            }

            //return new Response<Users>(user);
            return(await Task.FromResult(new Response <Users>(user)));
        }