public async Task <IActionResult> CreateAsync([FromBody] DomainModel.Note note) { using (var context = new NTR2019ZContext()) { if (context.Note.Any(n => n.Title == note.Title)) { return(StatusCode(400, "A note with title=\"" + note.Title + "\" already exists in the database")); } Note newNote = new Note() { Title = note.Title, Description = note.Description, Date = note.Date, IsMarkdown = note.IsMarkdown, }; context.Note.Add(newNote); await context.SaveChangesAsync(); Array.ForEach(note.Categories.ToArray(), c => { try{ Category cat; using (var transaction = context.Database.BeginTransaction()){ var occurances = context.Category.Where(categoryObj => categoryObj.Name == c).ToList(); if (occurances.Count() == 0) { cat = new Category { Name = c }; context.Category.Add(cat); context.SaveChanges(); } else { cat = occurances.FirstOrDefault(); } context.NoteCategory.Add(new NoteCategory { Idnote = newNote.Idnote, Idcategory = cat.Idcategory }); context.SaveChanges(); transaction.Commit(); } } catch (DbUpdateException e) { Console.WriteLine(e.Message); } }); await context.SaveChangesAsync(); return(Ok()); } }
public IActionResult Create([FromBody] NoteData note) { if (_context.Note.Any(n => n.Title == note.Title)) { return(StatusCode(400, "Note with title - " + note.Title + " - already exists")); } Note newNote = new Note() { Title = note.Title, Description = note.Text, Date = note.Date, IsMarkdown = Convert.ToInt16(note.Markdown) }; _context.Note.Add(newNote); _context.SaveChanges(); updateCategories(newNote.Idnote, note.NoteCategories); try { _context.SaveChanges(); } catch (DbUpdateException ex) { return(StatusCode(500, ex.InnerException.Message)); } return(Ok()); }