public static void ArchiveNoteFile(NotesDbContext _db, NoteFile noteFile) { noteFile.NumberArchives++; _db.Update(noteFile); List <NoteHeader> nhl = _db.NoteHeader.Where(p => p.NoteFileId == noteFile.Id && p.ArchiveId == 0).ToList(); foreach (NoteHeader nh in nhl) { nh.ArchiveId = noteFile.NumberArchives; _db.Update(nh); } List <NoteAccess> nal = _db.NoteAccess.Where(p => p.NoteFileId == noteFile.Id && p.ArchiveId == 0).ToList(); foreach (NoteAccess na in nal) { na.ArchiveId = noteFile.NumberArchives; } _db.NoteAccess.AddRange(nal); List <Tags> ntl = _db.Tags.Where(p => p.NoteFileId == noteFile.Id && p.ArchiveId == 0).ToList(); foreach (Tags nt in ntl) { nt.ArchiveId = noteFile.NumberArchives; _db.Update(nt); } _db.SaveChanges(); }
public static async Task <NoteHeader> EditNote(NotesDbContext db, UserManager <IdentityUser> userManager, NoteHeader nh, NoteContent nc, string tags) { NoteHeader eHeader = await GetBaseNoteHeader(db, nh.Id); eHeader.LastEdited = nh.LastEdited; eHeader.ThreadLastEdited = nh.ThreadLastEdited; eHeader.NoteSubject = nh.NoteSubject; db.Entry(eHeader).State = EntityState.Modified; NoteContent eContent = await GetNoteContent(db, nh.NoteFileId, nh.ArchiveId, nh.NoteOrdinal, nh.ResponseOrdinal); eContent.NoteBody = nc.NoteBody; eContent.DirectorMessage = nc.DirectorMessage; db.Entry(eContent).State = EntityState.Modified; List <Tags> oTags = await GetNoteTags(db, nh.NoteFileId, nh.ArchiveId, nh.NoteOrdinal, nh.ResponseOrdinal, 0); db.Tags.RemoveRange(oTags); db.UpdateRange(oTags); db.Update(eHeader); db.Update(eContent); await db.SaveChangesAsync(); // deal with tags if (tags != null && tags.Length > 1) { var theTags = Tags.StringToList(tags, eHeader.Id, eHeader.NoteFileId, eHeader.ArchiveId); if (theTags.Count > 0) { await db.Tags.AddRangeAsync(theTags); await db.SaveChangesAsync(); } } // Check for linked notefile(s) List <LinkedFile> links = await db.LinkedFile.Where(p => p.HomeFileId == eHeader.NoteFileId && p.SendTo).ToListAsync(); if (links == null || links.Count < 1) { } else { foreach (var link in links) { if (link.SendTo) { LinkQueue q = new LinkQueue { Activity = LinkAction.Edit, LinkGuid = eHeader.LinkGuid, LinkedFileId = eHeader.NoteFileId, BaseUri = link.RemoteBaseUri, Secret = link.Secret }; db.LinkQueue.Add(q); await db.SaveChangesAsync(); } } } return(eHeader); }