예제 #1
0
        public async Task <ActionResult <IImmutableList <BackpackItemModel> > > GetBackpackItemsAsync([FromRoute] Guid backpackId)
        {
            var sub    = User.Claims.FirstOrDefault(c => c.Type == "sub")?.Value;
            var query  = new GetBackpackItems(sub, backpackId);
            var result = await _mediator.Send(query);

            if (result.IsFailure)
            {
                return(BadRequest());
            }

            return(Ok(result.Value));
        }
예제 #2
0
        public async Task <Result <IImmutableList <BackpackItemModel> > > Handle(GetBackpackItems request, CancellationToken cancellationToken)
        {
            var isValid = await _validator.IsValidAsync(request);

            if (!isValid)
            {
                return(Result.Failure <IImmutableList <BackpackItemModel> >("Validation failed"));
            }

            var backpackItems = await _context.BackpackItems
                                .Where(item => item.Backpack.Id == request.BackpackId)
                                .Select(item => new BackpackItemModel
            {
                Id             = item.Id,
                Amount         = item.Amount,
                CategoryType   = item.BackpackCategory,
                ExpirationDate = item.ExpirationDate
            })
                                .ToListAsync(cancellationToken);

            return(backpackItems.ToImmutableList());
        }