Exemple #1
0
        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
            });
        }