Ejemplo n.º 1
0
        /// <summary>
        ///     Adds item inventory to DB
        /// </summary>
        /// <param name="i">Item inventory</param>
        /// <returns>Item inventory</returns>
        public ItemInventoryModel BuyItem(ItemInventoryModel i)
        {
            var newItemInventory = new itemInventory {
                itemId = i.ItemId, teamId = i.GroupId, quantity = i.Quantity
            };


            _db.itemInventories.InsertOnSubmit(newItemInventory);
            try
            {
                _db.SubmitChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            ItemInventoryModel outgoing = GetItemInventory(i.ItemId, i.GroupId);

            return(outgoing);
        }
        /// <summary>
        ///     Performs item trade
        /// </summary>
        /// <param name="tm">Trade</param>
        /// <returns>Changed item inventories</returns>
        public List <ItemInventoryModel> TradeItem(TradingModel tm)
        {
            var itemInventories = new List <ItemInventoryModel>();
            var itemInventory   = new ItemInventoryModel();

            IQueryable <itemInventory> query =
                (from itemInv in _db.itemInventories
                 where itemInv.itemId == tm.ItemId &&
                 itemInv.teamId == tm.Buyer
                 select itemInv);

            if (query.Count() != 0)
            {
                itemInventory result = query.First();
                result.quantity += tm.Amount;
                if (result.quantity != null)
                {
                    itemInventory = new ItemInventoryModel(result.Id, tm.Buyer, tm.ItemId, (double)result.quantity);
                }
            }

            else
            {
                itemInventory = new ItemInventoryModel(0, tm.Buyer, tm.ItemId, tm.Amount);
                _inventoryDal.BuyItem(itemInventory);
            }

            // Submit the changes to the database.
            try
            {
                _db.SubmitChanges();
                itemInventories.Add(itemInventory);
                ValueDal.IncreaseOrDecreaseCash(tm.Buyer, -tm.Price);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                // Provide for exceptions.
            }

            if (tm.Owner != 0)
            {
                query = (from itemInv in _db.itemInventories
                         where itemInv.itemId == tm.ItemId &&
                         itemInv.teamId == tm.Owner
                         select itemInv);

                if (query.Count() != 0)
                {
                    itemInventory result = query.First();
                    result.quantity -= tm.Amount;
                    if (result.quantity != null)
                    {
                        itemInventory = new ItemInventoryModel(result.Id, tm.Buyer, tm.ItemId, (double)result.quantity);
                    }
                }

                // Submit the changes to the database.
                try
                {
                    _db.SubmitChanges();
                    itemInventories.Add(itemInventory);
                    ValueDal.IncreaseOrDecreaseCash(tm.Owner, tm.Price);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    // Provide for exceptions.
                }
            }

            return(itemInventories);
        }