public async Task <ActionResult> PostTodoItem(TodoVm todoItem)
        {
            var item = await _todoService.AddTodoItem(todoItem);

            return(CreatedAtAction("PostTodoItem", new { id = item.Id }, item));
            // return Ok(item);
        }
示例#2
0
        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);
        }
示例#3
0
        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;
        }
示例#4
0
 public ActionResult<TodoVm> ChangeItem(TodoVm todo)
 {
     try
     {
         return _repo.Update(todo);
     }
     catch (ItemNotFoundException)
     {
         return NotFound();
     }
 }
示例#5
0
        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;
        }
示例#6
0
        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);
        }
示例#7
0
        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));
        }
示例#8
0
        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();
        }
示例#9
0
 public ActionResult<Todo> Create(TodoVm todo) => Ok(_repo.Add(todo));