Example #1
0
        public async Task SetupAsync()
        {
            await TestHelpers.ResetAsync().ConfigureAwait(false);

            Broadcaster.Reset();
            _session = await TestHelpers.Instance.GenerateSessionAsync().ConfigureAwait(false);

            _bazaarHttpClient  = new Mock <IBazaarHttpClient>();
            _itemInstanceDao   = new Mock <IDao <IItemInstanceDto?, Guid> >();
            _itemProvider      = new Mock <IItemProvider>();
            _cbuyPacketHandler = new CBuyPacketHandler(_bazaarHttpClient.Object, _itemProvider.Object, Logger,
                                                       _itemInstanceDao.Object);

            _bazaarHttpClient.Setup(b => b.GetBazaarLinkAsync(0)).ReturnsAsync(
                new BazaarLink
            {
                SellerName = "test",
                BazaarItem = new BazaarItemDto {
                    Price = 50, Amount = 1
                },
                ItemInstance = new ItemInstanceDto {
                    ItemVNum = 1012, Amount = 1
                }
            });
            _bazaarHttpClient.Setup(b => b.GetBazaarLinkAsync(2)).ReturnsAsync(
                new BazaarLink
            {
                SellerName = _session !.Character.Name,
                BazaarItem = new BazaarItemDto {
                    Price = 60, Amount = 1
                },
                ItemInstance = new ItemInstanceDto {
                    ItemVNum = 1012
                }
            });
Example #2
0
        public LanguageKey AddBazaar([FromBody] BazaarRequest bazaarRequest)
        {
            var items = _holder.BazaarItems.Values.Where(o => o.BazaarItem !.SellerId == bazaarRequest.CharacterId);

            if (items.Count() > 10 * (bazaarRequest.HasMedal ? 10 : 1) - 1)
            {
                return(LanguageKey.LIMIT_EXCEEDED);
            }

            var item = _itemInstanceDao.FirstOrDefault(s => s.Id == bazaarRequest.ItemInstanceId);

            if ((item == null) || (item.Amount < bazaarRequest.Amount) || (bazaarRequest.Amount < 0) ||
                (bazaarRequest.Price < 0))
            {
                throw new ArgumentException();
            }

            Guid itemId;

            if (item.Amount == bazaarRequest.Amount)
            {
                itemId = item.Id;
            }
            else
            {
                itemId       = item.Id;
                item.Amount -= bazaarRequest.Amount;
                _itemInstanceDao.InsertOrUpdate(ref item);
                item.Id = Guid.NewGuid();
            }

            _itemInstanceDao.InsertOrUpdate(ref item);

            var bazaarItem = new BazaarItemDto
            {
                Amount         = bazaarRequest.Amount,
                DateStart      = SystemTime.Now(),
                Duration       = bazaarRequest.Duration,
                IsPackage      = bazaarRequest.IsPackage,
                MedalUsed      = bazaarRequest.HasMedal,
                Price          = bazaarRequest.Price,
                SellerId       = bazaarRequest.CharacterId,
                ItemInstanceId = item.Id
            };

            _bazaarItemDao.InsertOrUpdate(ref bazaarItem);
            _holder.BazaarItems.TryAdd(bazaarItem.BazaarItemId,
                                       new BazaarLink
            {
                BazaarItem   = bazaarItem, SellerName = bazaarRequest.CharacterName,
                ItemInstance = item.Adapt <ItemInstanceDto>()
            });

            return(LanguageKey.OBJECT_IN_BAZAAR);
        }