Exemple #1
0
        public async Task <LanguageKey> AddBazaarAsync([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 = await _itemInstanceDao.FirstOrDefaultAsync(s => s !.Id == bazaarRequest.ItemInstanceId).ConfigureAwait(true);

            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;
                item         = await _itemInstanceDao.TryInsertOrUpdateAsync(item).ConfigureAwait(true);

                item !.Id = Guid.NewGuid();
            }

            item = await _itemInstanceDao.TryInsertOrUpdateAsync(item).ConfigureAwait(true);

            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
            };

            bazaarItem = await _bazaarItemDao.TryInsertOrUpdateAsync(bazaarItem).ConfigureAwait(true);

            _holder.BazaarItems.TryAdd(bazaarItem.BazaarItemId,
                                       new BazaarLink
            {
                BazaarItem   = bazaarItem, SellerName = bazaarRequest.CharacterName,
                ItemInstance = (ItemInstanceDto)item
            });

            return(LanguageKey.OBJECT_IN_BAZAAR);
        }
        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);
        }
Exemple #3
0
 public LanguageKey AddBazaar(BazaarRequest bazaarRequest)
 {
     return(Post <LanguageKey>(bazaarRequest));
 }
 public Task <LanguageKey> AddBazaarAsync([FromBody] BazaarRequest bazaarRequest) => _bazaarService.AddBazaarAsync(bazaarRequest.ItemInstanceId,
                                                                                                                   bazaarRequest.CharacterId, bazaarRequest.CharacterName, bazaarRequest.HasMedal, bazaarRequest.Price, bazaarRequest.IsPackage, bazaarRequest.Duration, bazaarRequest.Amount);
 public Task <LanguageKey?> AddBazaarAsync(BazaarRequest bazaarRequest)
 {
     return(PostAsync <LanguageKey?>(bazaarRequest));
 }