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); }
//[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); }
//[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); }
//[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); }
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)); }