public async Task <ActionResult <SlotLatestBidResponse> > LatestBid([FromQuery] SlotLatestBidRequest request, CancellationToken cancellationToken) { var bidsSpecification = new BidSpecification(request.SlotId, true); var highestBid = await _bidRepository.LastOfDefaultAsync(bidsSpecification, cancellationToken); var response = new SlotLatestBidResponse(request.CorrelationId()); response.Bid = Mapper.Map <Bid, BidDto>(highestBid); return(Ok(response)); }
public async Task <ActionResult <GetBidsBySlotIdResponse> > Get([FromQuery] GetBidsBySlotIdRequest request, CancellationToken cancellationToken) { var bidsSpecification = new BidSpecification(request.SlotId); var bids = await _bidRepository.ListAsync(bidsSpecification, cancellationToken); var response = new GetBidsBySlotIdResponse(request.CorrelationId()); var responseBids = bids.Select(Mapper.Map <BidDto>).ToList(); response.Bids = responseBids; response.ItemsFetched = responseBids.Count; return(Ok(response)); }
public async Task <ActionResult <CreateBidResponse> > Post([FromForm] CreateBidRequest request, CancellationToken cancellationToken) { var bid = new Bid(request.TraderId, request.SlotId, request.Amount, request.Date); // append layer in infrastructure for bidding (generate idea) await _bidRepository.AddAsync(bid, cancellationToken); var bidsSpecification = new BidSpecification(request.SlotId); var bids = await _bidRepository.ListAsync(bidsSpecification, cancellationToken); var response = new CreateBidResponse(request.CorrelationId()); response.Bids = bids.Select(Mapper.Map <BidDto>).ToList(); return(Ok(response)); }