private async Task <BidResponse> ValidateBid(BidRequestDto bidRequestDto) { var auctionItem = await _auctionRepository.GetAsync(bidRequestDto.AuctionItemId); var lastBidItem = _bidRepository.GetLastBidByAuctionItemId(bidRequestDto.AuctionItemId); if (auctionItem == null) { return(new BidResponse { Success = false, Message = "Cannot find auction item." }); } if (bidRequestDto.Amount == 0) { return(new BidResponse { Success = false, Message = "Bid amount is required." }); } if (lastBidItem != null && bidRequestDto.Amount <= lastBidItem.Amount) { return(new BidResponse { Success = false, Message = $"Last bid amount is ${lastBidItem.Amount}. Please bid higher." }); } if (bidRequestDto.Amount <= auctionItem.StartPrice) { return(new BidResponse { Success = false, Message = $"Start price for this item is ${auctionItem.StartPrice}." }); } if (auctionItem.EndTime < bidRequestDto.BidTime) { return(new BidResponse { Success = false, Message = "This auction is closed." }); } return(new BidResponse { Success = true }); }