예제 #1
0
        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());
            }
        }
예제 #2
0
        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());
        }