public void OnBidResponse(BidResponse resp)
 {
     if (null != m_OnBuyBidRespCallBack)
     {
         m_OnBuyBidRespCallBack(resp);
     }
 }
 private void OnBidCallBack(BidResponse res)
 {
     if (res.Success)
     {
         m_bIsWaitingBid = true;
         m_SpriteOtherIcon.gameObject.SetActive(true);
         m_SpriteOtherIcon.spriteName = MessageTreeLogic.ConvertIdToName(m_iCurrentSellItemId);
     }
     else
     {
         TipManager.Instance.Alert("", "你已经掉线", "OK", (res2) => { MessageTreeLogic.Instance.ClearSale(); });
     }
 }
        public override async Task <BidResponse> Bid(BidRequest request, ServerCallContext context)
        {
            Guid auctionId;

            if (!Guid.TryParse(request.AuctionId, out auctionId))
            {
                throw new RpcException(new Status(StatusCode.InvalidArgument, "auctionid is not a guid"));
            }
            var auction = _auctionService.GetAuction(auctionId);

            if (auction == null)
            {
                throw new RpcException(new Status(StatusCode.InvalidArgument, "auction not found"));
            }

            var expiry = (auction.Duration + auction.StartedAt) - Utility.Utility.DateTimeToUnix(DateTime.UtcNow);

            if (auction.FinishedAt != 0 || expiry < 5)
            {
                throw new RpcException(new Status(StatusCode.InvalidArgument, "auction is already finished"));
            }
            if (request.Amount < 1)
            {
                throw new RpcException(new Status(StatusCode.InvalidArgument, "amount must be larger than 0"));
            }
            if (request.Message.Length > 140)
            {
                throw new RpcException(new Status(StatusCode.InvalidArgument, "message must be smaller than 140 characters"));
            }
            var entry = await _auctionService.RequestAuctionEntryInvoice(auctionId, request.Amount, request.Message);

            if (entry == null)
            {
                throw new RpcException(new Status(StatusCode.Internal, "something went wrong..."));
            }
            var res = new BidResponse
            {
                Entry = new AuctionEntry
                {
                    Amount         = entry.Amount,
                    Description    = entry.Description,
                    Id             = entry.Id.ToString(),
                    Message        = entry.Message,
                    PaymentRequest = entry.PaymentRequest,
                    State          = (AuctionEntry.Types.State)((int)entry.State)
                }
            };

            return(res);
        }
        public async Task <IActionResult> PlaceBid(BidViewModel bidViewModel)
        {
            bidViewModel.BidTime = DateTime.Now;

            if (!ModelState.IsValid)
            {
                return(new JsonResult(new { success = false,
                                            message = ModelState.SelectMany(m => m.Value.Errors)
                                                      .Select(m => m.ErrorMessage)
                                                      .ToList() }));
            }

            BidResponse bidResponse = await _bidHelper.PlaceBid(bidViewModel);

            return(new JsonResult(new { success = bidResponse.Success, message = bidResponse.Message, bidCount = bidResponse.CurrentBidCount }));
        }
        private ItemResponse GetMockItemBid()
        {
            var bid  = new BidResponse();
            var item = new ItemResponse();

            item.Id               = 2;
            item.ItemNumber       = 2346;
            item.Description      = "Iphone X 512 GB White";
            item.CreatedDate      = DateTime.Now;
            item.AuctionStartDate = DateTime.Now;
            item.AuctionEndDate   = DateTime.Today.AddDays(1);

            item.Bids          = new List <BidResponse>();
            bid.Id             = 1;
            bid.BidAmount      = 450;
            bid.UserId         = 1;
            bid.ItemId         = 2;
            bid.BidCreatedDate = DateTime.Now;
            item.Bids.Add(bid);

            return(item);
        }