public UserNoteResponseData AddCollaborator(int userID, int noteID, CollaboratorsRequest collaborators) { try { var notesinfo = _context.UserNotes. Where(userNote => userNote.UserId == userID && userNote.NotesId == noteID && userNote.NotesId == noteID).FirstOrDefault(); foreach (CollaboratorRequest collaborator in collaborators.Collaborators) { var collaboratorsData = _context.Collaborators. Where(userCollab => userCollab.UserID == collaborator.UserID && userCollab.NoteID == noteID). FirstOrDefault(); if (userID == collaborator.UserID || collaboratorsData != null) { return(null); } else { CollaboratorInfo userNotes = new CollaboratorInfo() { UserID = collaborator.UserID, NoteID = noteID, CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now, }; _context.Collaborators.Add(userNotes); _context.SaveChanges(); } } List <LabelResponseData> labelsData = _context.NotesLabels. Where(note => note.NotesId == notesinfo.NotesId). Join(_context.Labels, noteLabel => noteLabel.LabelId, label => label.LabelID, (noteLabel, label) => new LabelResponseData { LabelID = noteLabel.LabelId, LabelName = label.LabelName, }). ToList(); List <CollaboratorResponseData> collabsData = _context.Collaborators. Where(noted => noted.NoteID == noteID). Join(_context.Users, noteCollab => noteCollab.UserID, collab => collab.ID, (noteCollab, collab) => new CollaboratorResponseData { UserID = noteCollab.UserID, Email = collab.Email }). ToList(); UserNoteResponseData noteResponseData = new UserNoteResponseData() { NoteId = notesinfo.NotesId, Title = notesinfo.Title, Description = notesinfo.Description, Color = notesinfo.Color, Image = notesinfo.Image, Pin = notesinfo.Pin, Archived = notesinfo.Archived, Trash = notesinfo.Trash, Reminder = notesinfo.Reminder, Labels = labelsData, Collaborators = collabsData }; return(noteResponseData); } catch (Exception ex) { throw new Exception(ex.Message); } }
public UserNoteResponseData CreateNote(int userID, UserNoteRequest userNoteData) { try { UserNotesInfo userNote = new UserNotesInfo() { UserId = userID, Title = userNoteData.Title, Description = userNoteData.Description, Color = userNoteData.Color, Image = userNoteData.Image, Pin = userNoteData.Pin, Archived = userNoteData.Archived, Trash = userNoteData.Trash, Reminder = userNoteData.Reminder, CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now }; _context.UserNotes.Add(userNote); _context.SaveChanges(); if (userNoteData.Label != null && userNoteData.Label.Count != 0) { List <NotesLabelRequest> labelRequests = userNoteData.Label; foreach (NotesLabelRequest labelRequest in labelRequests) { LabelInfo labelInfo = _context.Labels. Where(label => label.UserID == userID && label.LabelID == labelRequest.LabelId). FirstOrDefault <LabelInfo>(); if (labelRequest.LabelId > 0 && labelInfo != null) { var data = new NotesLabel { LabelId = labelRequest.LabelId, NotesId = userNote.NotesId, CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now }; _context.NotesLabels.Add(data); _context.SaveChanges(); } } } if (userNoteData.Collaborators != null && userNoteData.Collaborators.Count != 0) { List <CollaboratorRequest> collaboratorss = userNoteData.Collaborators; foreach (CollaboratorRequest collaborator in collaboratorss) { if (collaborator.UserID != 0) { CollaboratorInfo userNotes = new CollaboratorInfo() { UserID = collaborator.UserID, NoteID = userNote.NotesId, CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now, }; _context.Collaborators.Add(userNotes); _context.SaveChanges(); } } } List <LabelResponseData> labelsData = _context.NotesLabels. Where(note => note.NotesId == userNote.NotesId). Join(_context.Labels, labbelledNote => labbelledNote.LabelId, label => label.LabelID, (labbelledNote, label) => new LabelResponseData { LabelID = labbelledNote.LabelId, LabelName = label.LabelName, }). ToList(); List <CollaboratorResponseData> collabsData = _context.Collaborators. Where(noted => noted.NoteID == userNote.NotesId). Join(_context.Users, noteLabel => noteLabel.UserID, label => label.ID, (noteLabel, label) => new CollaboratorResponseData { UserID = noteLabel.UserID, Email = label.Email }). ToList(); var noteResponseData = new UserNoteResponseData() { NoteId = userNote.NotesId, Title = userNote.Title, Description = userNote.Description, Color = userNote.Color, Image = userNote.Image, Pin = userNote.Pin, Archived = userNote.Archived, Reminder = userNote.Reminder, Trash = userNote.Trash, Labels = labelsData, Collaborators = collabsData }; return(noteResponseData); } catch (Exception ex) { throw new Exception(ex.Message); } }