public async Task <Result <BackpackItemModel> > Handle(AddBackpackItem request, CancellationToken cancellationToken) { var isValid = await _validator.IsValidAsync(request); if (!isValid) { return(Result.Failure <BackpackItemModel>("Validation failed")); } var backpack = await _context.Backpacks.FirstAsync(x => x.Id == request.BackpackId, cancellationToken); var backpackItem = new BackpackItem { Name = request.BackpackItem.Name, BackpackCategory = (BackpackCategoryType)request.BackpackItem.CategoryType, Amount = request.BackpackItem.Amount, ExpirationDate = request.BackpackItem.ExpirationDate, Backpack = backpack }; await _context.AddAsync(backpackItem, cancellationToken); await _context.SaveChangesAsync(cancellationToken); return(new BackpackItemModel { Id = backpackItem.Id, Name = backpackItem.Name, Amount = backpackItem.Amount, CategoryType = backpackItem.BackpackCategory, ExpirationDate = backpackItem.ExpirationDate }); }
public async Task <ActionResult <BackpackItemModel> > CreateNewBackpackItemAsync([FromRoute] Guid backpackId, [FromBody] BackpackItemRequest backpackItem) { var sub = User.Claims.FirstOrDefault(c => c.Type == "sub")?.Value; var command = new AddBackpackItem(sub, backpackId, backpackItem); var result = await _mediator.Send(command); if (result.IsFailure) { return(BadRequest()); } return(Ok(result.Value)); }
public async Task Validate_request_when_backpack_exists_and_user_contributor() { // Arrange var sut = new AddBackpackItemValidator(_dbContext); var contributorSub = Guid.NewGuid().ToString(); var backpackId = Guid.NewGuid(); var contributor = new User { FirstName = "Contributor", LastName = "User", Sub = contributorSub }; var backpack = new Domain.Entities.Backpack { Id = backpackId, Name = "test-backpack", }; await _dbContext.Users.AddAsync(contributor); await _dbContext.Backpacks.AddAsync(backpack); await _dbContext.BackpacksToUsers.AddAsync(new BackpackToUser { Backpack = backpack, User = contributor }); await _dbContext.SaveChangesAsync(); var command = new AddBackpackItem(contributorSub, backpackId, new BackpackItemRequest()); // Act bool isValid = await sut.IsValidAsync(command); // Assert isValid.ShouldBeTrue(); }