public bool TryAdd(IToBeLearnedItem item) { //Check if an item with this question already exists (don't want duplicates!) var itemQuestion = item.GetQuestion(); if (_loadedItems.Any(m => string.Compare(m.GetTheQuestion(), itemQuestion, true) == 0)) { return(false); } //Generate a new statistics item for this var wordStats = new WordStatistics { DateLearned = DateTime.Now, NumberOfTimesAnsweredCorrectly = 0, NumberOfTimesAsked = 0, UniqueId = item.UniqueId, }; _loadedItems.Add(new MemorisableItem(item, wordStats)); _wordSerialiser.AddItemForSerialisation(item); //Probably shouldn't rewrite the whole thing after every new item added, but works for now WriteWordsToStorage(); WriteStatsToStorage(); return(true); }
public void AddItemForSerialisation(IToBeLearnedItem item) { switch (item) { case NounWord n: _fileData.LearnedNouns.Add(ConvertToDataRecord(n)); break; case AdjectiveWord a: _fileData.LearnedAdjectives.Add(ConvertToDataRecord(a)); break; case VerbWord v: _fileData.LearnedVerbs.Add(ConvertToDataRecord(v)); break; default: throw new InvalidOperationException("Attempted serializing unsupported type: " + item.GetType()); } }
public MemorisableItem(IToBeLearnedItem toBeLearnedItem, WordStatistics stats) { _toBeLearned = toBeLearnedItem; statistics = stats; }