コード例 #1
0
        public async Task <OperationResult <UserAddCommandResponse> > Handle(UserAddCommandRequest request, CancellationToken cancellationToken)
        {
            var response = new UserAddCommandResponse(request.MessageId);
            OperationResult <UserAddCommandResponse> result;

            var userAccount = await _dbContext.UserAccount.SingleOrDefaultAsync(u => u.Email == request.TransferObject.Email || u.ContactNumber == request.TransferObject.ContactNumber, cancellationToken : cancellationToken);

            if (userAccount.NotNull())
            {
                result = new OperationResult <UserAddCommandResponse>(EnumOperationResult.Duplicate,
                                                                      new List <ValidationError>
                {
                    new ValidationError(nameof(request.TransferObject.Email),
                                        "The User Email or Contact Number already exists")
                });
            }
            else
            {
                userAccount = new UserAccount
                {
                    Email           = request.TransferObject.Email,
                    FirstName       = request.TransferObject.FirstName,
                    LastName        = request.TransferObject.LastName,
                    UserStatusId    = (int)UserStatus.Disabled,
                    KnownAs         = request.TransferObject.KnownAs,
                    Username        = request.TransferObject.Email,
                    ContactNumber   = request.TransferObject.ContactNumber,
                    SystemProfileId = request.TransferObject.SystemProfileId
                };


                await _dbContext.UserAccount.AddAsync(userAccount, cancellationToken);

                await _dbContext.SaveChangesAsync(cancellationToken);

                var token = new Token
                {
                    Value       = Guid.NewGuid(),
                    CreatedDate = _clock.NowAsSouthAfrican,
                    ExpiryDate  = _clock.NowAsSouthAfrican.AddDays(1),
                    TokenTypeId = (int)TokenType.SetPassword,
                    UserId      = userAccount.UserAccountId
                };

                await _dbContext.Token.AddAsync(token, cancellationToken);

                await _dbContext.SaveChangesAsync(cancellationToken);

                response.UserAccountId = userAccount.UserAccountId;
                result = new OperationResult <UserAddCommandResponse>(EnumOperationResult.Ok, null, response);

                result.AddDomainEvent(new UserAddEvent
                {
                    UserAccountId = response.UserAccountId,
                });
            }

            return(result);
        }
コード例 #2
0
        //[Ignore]
        public async Task AddInvalidAUserEmail()
        {
            var userRequest = UserHelper.InvalidUserEmail();

            var model = new UserAddCommandRequest
            {
                TransferObject = userRequest
            };

            var result = await _mediator.Send(model);

            result.Status.ShouldBe(EnumOperationResult.Error);
        }
コード例 #3
0
        //[Ignore]
        public async Task AddValidAlreadyExistingUser()
        {
            var userRequest = UserHelper.ValidAlreadyExistingUser();

            var model = new UserAddCommandRequest
            {
                TransferObject = userRequest
            };

            var result = await _mediator.Send(model);

            result.Status.ShouldBe(EnumOperationResult.Duplicate);
        }
コード例 #4
0
        //[Ignore]
        public async Task TestAddUserLeapYearIdentityNumber()
        {
            var userRequest = UserHelper.AddUserBornOnLeapYear();

            var model = new UserAddCommandRequest
            {
                TransferObject = userRequest
            };

            var result = await _mediator.Send(model);

            result.Status.ShouldBe(EnumOperationResult.Ok);
        }
コード例 #5
0
        public async Task <IActionResult> AddUser([FromBody] AddUserRequest request)
        {
            if (request.IsNull())
            {
                return(ModelNullError());
            }
            var identityClaims = (ClaimsIdentity)User.Identity;
            var model          = new UserAddCommandRequest
            {
                TransferObject = request
            };
            var result = await Mediator.Send(model);

            return(HandleResponse(result, r => r));
        }