private bool Remove(string nominativeSingular, CorrectionLanguage language) { var token = HttpContext.Current.Request.GetToken(); if (token == null) { throw new TokenNotFoundException(); } var cache = (MorpherCacheObject)_morpherCache.Get(token.ToString().ToLowerInvariant()); _correctionCache.Remove(cache.UserId.ToString().ToLowerInvariant()); using (UserCorrectionDataContext context = new UserCorrectionDataContext()) { var query = (from name in context.Names join userVote in context.UserVotes on name.ID equals userVote.NameID where userVote.UserID == cache.UserId && name.Lemma == LemmaNormalizer.Normalize(nominativeSingular) && name.LanguageID == language.ToDatabaseLanguage() select new { name, userVote }).FirstOrDefault(); if (query == null) { return(false); } foreach (var form in query.name.NameForms) { context.NameForms.DeleteOnSubmit(form); } context.UserVotes.DeleteOnSubmit(query.userVote); context.SubmitChanges(); return(true); } }
private void Add(string nominativeSingular, List <NameForm> forms, CorrectionLanguage language) { var token = HttpContext.Current.Request.GetToken(); if (token == null) { throw new TokenNotFoundException(); } var cache = (MorpherCacheObject)_morpherCache.Get(token.ToString().ToLowerInvariant()); string normalizedLemma = LemmaNormalizer.Normalize(nominativeSingular); using (UserCorrectionDataContext context = new UserCorrectionDataContext()) { var userVote = context.UserVotes.FirstOrDefault( vote => vote.UserID == cache.UserId && vote.Name.Lemma == normalizedLemma && vote.Name.LanguageID == language.ToDatabaseLanguage()); Name name; if (userVote == null) { var nameId = Guid.NewGuid(); name = new Name() { ID = nameId, LanguageID = language.ToDatabaseLanguage() }; context.Names.InsertOnSubmit(name); userVote = new UserVote() { Name = name, UserID = cache.UserId.Value }; context.UserVotes.InsertOnSubmit(userVote); } else { name = userVote.Name; } name.Lemma = normalizedLemma; userVote.SubmittedUTC = DateTime.UtcNow; foreach (var nameForm in forms) { var dbForm = name.NameForms.FirstOrDefault( nf => nf.FormID == nameForm.FormID && nf.Plural == nameForm.Plural); if (dbForm == null) { nameForm.Name = name; context.NameForms.InsertOnSubmit(nameForm); } else { dbForm.AccentedText = nameForm.AccentedText; } } context.SubmitChanges(); _correctionCache.Remove(cache.UserId.ToString().ToLowerInvariant()); } }