public async Task <ActionResult> PostTodoItem(TodoVm todoItem) { var item = await _todoService.AddTodoItem(todoItem); return(CreatedAtAction("PostTodoItem", new { id = item.Id }, item)); // return Ok(item); }
public TodoVm Add(TodoVm todo) { var newTodo = new Todo { Title = todo.Title, IsDone = todo.IsDone }; var tagsInDb = _ctx.Tags.Select(t => t.Id).ToHashSet(); var tagsToAdd = todo.Tags.Where(t => !tagsInDb.Contains(t)).Select(t => new Tag { Id = t }).ToList(); _ctx.AddRange(tagsToAdd); newTodo.Tags = todo.Tags.Select(tag => new TodoTag { TagId = tag, Todo = newTodo }).ToList(); _ctx.Add(newTodo); _ctx.SaveChanges(); todo.Id = newTodo.Id; return(todo); }
public async Task<bool> UpdateTodoItem(int id, TodoVm todoItemVM) { var todoItem = await _context.TodoItems.FindAsync(id); if (todoItem == null) { return false; } try { todoItem.IsDone = todoItemVM.IsDone; todoItem.TodoDescription = todoItemVM.TodoDescription; todoItem.TodoTime = todoItem.TodoTime; await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!TodoItemExists(id)) { return false; } else { throw; } } return true; }
public ActionResult<TodoVm> ChangeItem(TodoVm todo) { try { return _repo.Update(todo); } catch (ItemNotFoundException) { return NotFound(); } }
public async Task<TodoItem> AddTodoItem(TodoVm todoVm) { var todo = new TodoItem { TodoTime = todoVm.TodoTime, IsDone = todoVm.IsDone, TodoDescription = todoVm.TodoDescription }; _context.TodoItems.Add(todo); await _context.SaveChangesAsync(); return todo; }
public TodoVm Update(TodoVm todo) { var found = _ctx.Todos.Include(t => t.Tags).Where(t => t.Id == todo.Id).FirstOrDefault(); if (found == null) { throw new ItemNotFoundException(); } found.Title = todo.Title; found.IsDone = todo.IsDone; UpdateTags(found, todo); _ctx.Update(found); _ctx.SaveChanges(); return(todo); }
public ActionResult Create([Bind(Include = "Text,DueDate,DueTime")] TodoVm todo) { if (ModelState.IsValid) { try { TodoDTO todoDto = Mapper.Map <TodoVm, TodoDTO>(todo); serviceProvider._todoService.AddTodo(todoDto, Request.Files); return(RedirectToAction("Index")); } catch { ViewBag.ErrorMsg = "Error occured"; return(View(todo)); } } return(View(todo)); }
private void UpdateTags(Todo todo, TodoVm newTodo) { var tagsInDb = _ctx.Tags.ToHashSet(); var tagsToAdd = newTodo.Tags.Where(t => !tagsInDb.Any(tag => tag.Id == t)).Select(t => new Tag { Id = t }).ToList(); var tagsToDelete = tagsInDb .Where(t => !newTodo.Tags.Contains(t.Id) && _ctx.TodoTags.Where(tt => tt.TagId == t.Id).Count() == 1) .ToList(); _ctx.AddRange(tagsToAdd); _ctx.RemoveRange(tagsToDelete); todo.Tags = newTodo.Tags.Select(tag => new TodoTag { TagId = tag, TodoId = todo.Id }).ToList(); }
public ActionResult<Todo> Create(TodoVm todo) => Ok(_repo.Add(todo));