예제 #1
0
        public bool Update(int id, TaskGroupViewModel group)
        {
            if (!TryFindGroupInDb(id, out var groupFromDb))
            {
                return(false);
            }

            var updatedGroup = _mapper.Map <TaskGroupEntity>(group);

            _dbContext.Entry(groupFromDb).CurrentValues.SetValues(updatedGroup);

            foreach (var userTaskFromDb in groupFromDb.UserTasks.ToList())
            {
                var task = updatedGroup.UserTasks.SingleOrDefault(t => t.Id == userTaskFromDb.Id);
                if (task == null)
                {
                    _dbContext.Remove(userTaskFromDb);
                }
                else
                {
                    _dbContext.Entry(userTaskFromDb).CurrentValues.SetValues(task);
                }
            }

            foreach (var newUserTasks in updatedGroup.UserTasks
                     .Where(newUserTasks => newUserTasks.Id == 0 || groupFromDb.UserTasks.All(t => t.Id != newUserTasks.Id)))
            {
                groupFromDb.UserTasks.Add(newUserTasks);
            }

            _dbContext.SaveChanges();
            return(true);
        }
예제 #2
0
        public void Mapper_ShouldCorrectlyMap_TaskGroupEntityToTaskGroupViewModel()
        {
            var taskGroupEntity = new TaskGroupEntity
            {
                Id        = 1,
                Name      = "TestTaskGroup",
                UserTasks = new List <UserTaskEntity> {
                    new UserTaskEntity {
                        Id = 1, Name = "TestTask1"
                    }, new UserTaskEntity {
                        Id = 2, Name = "TestTask2"
                    }
                }
            };
            var expected = new TaskGroupViewModel
            {
                Id        = 1,
                Name      = "TestTaskGroup",
                UserTasks = new List <UserTaskViewModel> {
                    new UserTaskViewModel {
                        Id = 1, Name = "TestTask1"
                    }, new UserTaskViewModel {
                        Id = 2, Name = "TestTask2"
                    }
                }
            };

            var result = _mapperConfig.CreateMapper().Map <TaskGroupViewModel>(taskGroupEntity);

            Assert.IsInstanceOf <TaskGroupViewModel>(result);
            Assert.AreEqual(expected.Id, result.Id);
            Assert.AreEqual(expected.Name, result.Name);
            Assert.That(result.UserTasks, Is.EquivalentTo(expected.UserTasks));
        }
예제 #3
0
        public ActionResult <TaskGroupViewModel> Create(TaskGroupViewModel groupViewModel)
        {
            var newGroupId = _groupDbManager.Create(groupViewModel);

            groupViewModel.Id = newGroupId;
            return(CreatedAtAction(nameof(Get), new { id = newGroupId }, groupViewModel));
        }
예제 #4
0
 public IActionResult Update(int id, TaskGroupViewModel groupViewModel)
 {
     if (_groupDbManager.Update(id, groupViewModel))
     {
         return(NoContent());
     }
     return(NotFound());
 }
예제 #5
0
        public int Create(TaskGroupViewModel group)
        {
            var newGroup = _mapper.Map <TaskGroupEntity>(group);

            newGroup = _dbContext.TaskGroups.Add(newGroup).Entity;
            _dbContext.SaveChanges();

            return(newGroup.Id);
        }
예제 #6
0
        public IActionResult EditTaskGroup(int taskGroupId, [FromBody] TaskGroupViewModel taskGroup)
        {
            string userId = _userManager.GetUserId(HttpContext.User);

            try
            {
                return(new ObjectResult(_taskGroupLogic.EditTaskGroup(userId, taskGroupId, taskGroup)));
            }
            catch (NotFoundException)
            {
                return(NotFound());
            }
            catch (IllegalAccessException)
            {
                return(Challenge());
            }
        }
예제 #7
0
        public void Mapper_ShouldCorrectlyMap_TaskGroupViewModelToTaskGroupEntity()
        {
            var taskGroupViewModel = new TaskGroupViewModel
            {
                Id   = 1,
                Name = "TestTaskGroup",
            };
            var expected = new TaskGroupEntity
            {
                Id   = 1,
                Name = "TestTaskGroup",
            };

            var result = _mapperConfig.CreateMapper().Map <TaskGroupEntity>(taskGroupViewModel);

            Assert.IsInstanceOf <TaskGroupEntity>(result);
            Assert.AreEqual(expected.Name, result.Name);
        }
예제 #8
0
        public TaskGroupViewModel EditTaskGroup(string userId, int taskGroupId, TaskGroupViewModel taskGroup)
        {
            TaskGroup editingGroup = _context.TaskGroups.Find(taskGroupId);

            if (editingGroup == null)
            {
                throw new NotFoundException();
            }
            if (!KaCakeUtils.IsCourseTeacher(_context, editingGroup.CourseId, userId))
            {
                throw new IllegalAccessException();
            }

            editingGroup.Name        = taskGroup.Name;
            editingGroup.Description = taskGroup.Description;
            _context.SaveChanges();

            return(GetTaskGroup(userId, editingGroup.Id));
        }
예제 #9
0
        public TaskGroupViewModel CreateTaskGroup(string userId, TaskGroupViewModel taskGroup)
        {
            if (!KaCakeUtils.IsCourseTeacher(_context, taskGroup.CourseId, userId))
            {
                throw new IllegalAccessException();
            }

            var entry = _context.TaskGroups.Add(new TaskGroup()
            {
                CourseId    = taskGroup.CourseId,
                Name        = taskGroup.Name,
                Description = taskGroup.Description
            });

            _context.SaveChanges();
            taskGroup.Id = entry.Entity.Id;

            return(GetTaskGroup(userId, entry.Entity.Id));
        }
예제 #10
0
        public IActionResult Create(TaskGroupViewModel taskGroup)
        {
            string userId = _userManager.GetUserId(HttpContext.User);

            if (ModelState.IsValid)
            {
                TaskGroup editedTaskGroup;
                if ((editedTaskGroup = _context.TaskGroups.Find(taskGroup.Id)) != null)
                {
                    try
                    {
                        taskGroup = _taskGroupLogic.EditTaskGroup(userId, taskGroup.Id, taskGroup);
                    }
                    catch (NotFoundException)
                    {
                        return(NotFound());
                    }
                    catch (IllegalAccessException)
                    {
                        return(Challenge());
                    }
                }
                else
                {
                    try
                    {
                        taskGroup = _taskGroupLogic.CreateTaskGroup(userId, taskGroup);
                    }
                    catch (NotFoundException)
                    {
                        return(NotFound());
                    }
                    catch (IllegalAccessException)
                    {
                        return(Challenge());
                    }
                }

                return(RedirectToAction("View", new { id = taskGroup.Id }));
            }

            return(View(taskGroup));
        }
예제 #11
0
 private void GetNewTaskGroup( TaskGroup taskGroup )
 {
     TaskGroupViewModel viewModel = new TaskGroupViewModel( base.WindowLoader );
     viewModel.DisplayName = "Add Task Group";
     viewModel.TaskGroup = taskGroup;
     viewModel.Parent = this;
     base.WindowLoader.ShowDialog( viewModel );
 }