예제 #1
0
 public long CreateItem(long ownerId, Item item)
 {
     Maple2.Sql.Model.Item model = itemConverter.ToModel(item);
     model.OwnerId = ownerId;
     context.Item.Add(model);
     context.SaveChanges();
     return(model.Id);
 }
예제 #2
0
        public bool DeleteItem(long itemUid)
        {
            Maple2.Sql.Model.Item item = context.Item.Find(itemUid);
            if (item.OwnerId != 0)
            {
                return(false);
            }

            context.Item.Remove(item);
            return(context.TrySaveChanges());
        }
예제 #3
0
        // Saves items for ownerId, removing any owned items that are not present.
        public void StageSyncItems(long ownerId, IEnumerable <Item> items)
        {
            Dictionary <long, Maple2.Sql.Model.Item> dbItems = context.Item.AsQueryable()
                                                               .Where(dbItem => dbItem.OwnerId == ownerId)
                                                               .ToDictionary(dbItem => dbItem.Id, dbItem => dbItem);

            foreach (Item item in items)
            {
                Maple2.Sql.Model.Item dbItem;
                if (item.Id == 0)   // New items will fall back to creation
                {
                    dbItem = new Maple2.Sql.Model.Item();
                }
                else if (!dbItems.Remove(item.Id, out dbItem))
                {
                    dbItem = context.Item.Find(item.Id);

                    if (dbItem == null)   // Item does not exist
                    {
                        logger.LogError($"Failed to save non-existent item: {item.Id} for {ownerId}");
                        continue;
                    }
                }

                StageSocketGemstones(item);
                itemConverter.ToModel(item, dbItem);
                dbItem.OwnerId = ownerId;
            }

            // Remaining items are no longer owned (soft-delete)
            foreach (Maple2.Sql.Model.Item dbItem in dbItems.Values)
            {
                // Ensure that you still own this item at this point before "deleting"
                if (dbItem.OwnerId == ownerId)
                {
                    dbItem.OwnerId = 0;
                }
            }
        }
예제 #4
0
 public void UpdateItemAmount(Item item)
 {
     Maple2.Sql.Model.Item dbItem = context.Item.Find(item.Id);
     storage.itemConverter.ToModel(item, dbItem);
     context.SaveChanges();
 }