/// <inheritdoc/> public virtual bool AddItem <T>(T item, ModuleManager moduleManager, bool ignoreLinkedTableUpdate = false) where T : AtomicItem { T newItem = item; newItem.Encrypted = false; var itemSource = GetAllItems <T>(); dbMemoryDirty = true; if (!AddItemAdditionCheck(item)) { return(false); } if (newItem.Id == -1) { newItem.Id = itemSource != null?GetID(itemSource) : 0; if (ignoreLinkedTableUpdate == false) { UpdateLinkedTableValues(item, moduleManager); } return(dbAccess.AddItemIntoDatabase(newItem).Result); } else { oldItem = GetItem <T>(newItem.Id); dbMemoryDirty = true; if (ignoreLinkedTableUpdate == false) { UpdateLinkedTableValues(item, moduleManager); } return(dbAccess.EditItemInDatabase(newItem).Result); } }