The create task view model.
        public void Should_CreateTask_WhenMethodCreateTaskWasCalledWithAssignedId3()
        {
            // arreange 
            User user = new User
                            {
                                Id = 1,
                                UserName = "******"
                            };

            CreateTaskViewModel model = new CreateTaskViewModel
                                            {
                                                AssigneeId = 3,
                                                Description = "Description",
                                                Name = "Name"
                                            };
            this.userProcessorMock.Setup(it => it.GetUserByName(null)).Returns(user);

            // act
            this.controller.CreateTask(model);

            // assert
            this.taskProcessorMock.Verify(x => x.CreateTask(It.Is<HumanTask>(it => it.AssigneeId == 3)), Times.Once());
        }
        public ActionResult Edit(CreateTaskViewModel createModel)
        {
            if (this.ModelState.IsValid)
            {
                var humanTask = this.taskProcessor.GetTaskById(createModel.Id);

                humanTask.Name = createModel.Name;
                humanTask.Priority = createModel.Priority;
                humanTask.Finished = createModel.Finished;
                humanTask.Description = createModel.Description;
                this.taskProcessor.UpdateTask(humanTask);
                var taskHistory = new HumanTaskHistory
                                      {
                                          NewDescription = createModel.Description,
                                          ChangeDateTime = DateTime.Now,
                                          NewAssigneeId = createModel.AssigneeId,
                                          NewName = createModel.Name,
                                          Task = humanTask,
                                          TaskId = humanTask.Id,
                                          NewPriority = createModel.Priority,
                                          Action = ChangeHistoryTypes.Change,
                                          UserId = this.userProcessor.GetUserByName(User.Identity.Name).Id
                                      };
                
                this.taskProcessor.AddHistory(taskHistory);
                this.newsProcessor.CreateNewsForUsersInProject(taskHistory, humanTask.ProjectId);

                if (true == createModel.ViewStyle)
                {
                    return this.RedirectToAction("MultiuserView", new { projectId = createModel.ProjectId, userId = createModel.AssigneeId });
                }

                return this.RedirectToAction("Project", new { id = createModel.ProjectId, userId = createModel.AssigneeId });
            }

            return this.View(createModel);
        }
 public ActionResult Edit(int taskId, int projectId, bool? viewStyle)
 {
     var task = this.taskProcessor.GetTaskById(taskId);
     var createModel = new CreateTaskViewModel
     {
         Priorities = this.taskProcessor.GetPrioritiesList().OrderBy(x => x.Value),
         Assigned = task.Assigned,
         AssigneeId = task.AssigneeId,
         Created = task.Created,
         Priority = task.Priority,
         CreatorId = task.CreatorId,
         Description = task.Description,
         Name = task.Name,
         Finished = task.Finished,
         Tasks = this.taskProcessor.GetOpenTasksListInProject(projectId),
         ProjectId = projectId,
         Id = taskId,
         ViewStyle = viewStyle
     };
     return this.View(createModel);
 }
        public ActionResult CreateTask(CreateTaskViewModel createModel)
        {
            createModel.Assigned = createModel.AssigneeId == (int?)null ? createModel.Created : (DateTime?)null;
            if (this.ModelState.IsValid)
            {
                var task = new HumanTask
                {
                    Assigned = createModel.Assigned,
                    AssigneeId = createModel.AssigneeId,
                    Closed = createModel.Closed,
                    Finished = createModel.Finished,
                    Created = createModel.Created,
                    CreatorId = createModel.CreatorId,
                    Description = createModel.Description,
                    Id = createModel.Id,
                    Name = createModel.Name,
                    Priority = createModel.Priority,
                    ProjectId = createModel.ProjectId,
                    BlockingTaskId = createModel.BlockingTask
                };

                if (task.Priority == 3)
                {
                    task.AssigneeId = this.userProcessor.GetUserByTaskId(task.BlockingTaskId);
                    task.Assigned = task.AssigneeId == (int?)null ? task.Created : (DateTime?)null;
                }

                this.taskProcessor.CreateTask(task);

                var taskHistory = new HumanTaskHistory
                                      {
                                          NewDescription = task.Description,
                                          ChangeDateTime = DateTime.Now,
                                          NewAssigneeId = task.AssigneeId,
                                          NewName = task.Name,
                                          Task = task,
                                          NewPriority = task.Priority,
                                          Action = ChangeHistoryTypes.Create,
                                          UserId = this.userProcessor.GetUserByName(User.Identity.Name).Id
                                      };
                this.taskProcessor.AddHistory(taskHistory);
                this.notifier.CreateTask(task.Id);
                this.newsProcessor.CreateNewsForUsersInProject(taskHistory, task.ProjectId);

                if (true == createModel.ViewStyle)
                {
                    return this.RedirectToAction("MultiuserView", new { projectId = createModel.ProjectId, userId = createModel.AssigneeId });
                }

                return this.RedirectToAction("Project", new { id = createModel.ProjectId, userId = createModel.AssigneeId });
            }

            createModel.Priorities = taskProcessor.GetPrioritiesList();
            // TODO: refactor this "PossibleCreators" and "PossibleAssignees"
            this.ViewBag.PossibleCreators = new List<User>();
            this.ViewBag.PossibleAssignees = new List<User>();

            return this.View(createModel);
        }
 /// <summary>
 /// The create task.
 /// </summary>
 /// <param name="userId">
 /// The user id.
 /// </param>
 /// <param name="projectId">
 /// The project id.
 /// </param>
 /// <param name="viewStyle">
 /// The view Style.
 /// </param>
 /// <returns>
 /// The System.Web.Mvc.ActionResult.
 /// </returns>
 public ActionResult CreateTask(int userId, int projectId, bool? viewStyle)
 {
     var createModel = new CreateTaskViewModel
     {
         Priorities = this.taskProcessor.GetPrioritiesList().OrderBy(x => x.Value),
         AssigneeId = (userId != -1) ? userId : (int?)null,
         CreatorId = this.userProcessor.GetUserByName(User.Identity.Name).Id,
         Created = DateTime.Now,
         Tasks = this.taskProcessor.GetOpenTasksListInProject(projectId),
         ProjectId = projectId,
         ViewStyle = viewStyle
     };
     createModel.Priority = int.Parse(createModel.Priorities.First().Value);
     return this.View(createModel);
 }
        public ActionResult Create(CreateTaskViewModel createModel)
        {
            createModel.Assigned = createModel.AssigneeId == (int?)null ? createModel.Created : (DateTime?)null;
            if (this.ModelState.IsValid)
            {
                var task = new HumanTask
                               {
                                   Assigned = createModel.Assigned,
                                   AssigneeId = createModel.AssigneeId,
                                   Closed = createModel.Closed,
                                   Finished = createModel.Finished,
                                   Created = createModel.Created,
                                   CreatorId = createModel.CreatorId,
                                   Description = createModel.Description,
                                   Id = createModel.Id,
                                   Name = createModel.Name,
                                   Priority = createModel.Priority,
                                   ProjectId = 1,
                               };
                this.taskProcessor.CreateTask(task);
                this.taskProcessor.AddHistory(new HumanTaskHistory
                {
                    NewDescription = task.Description,
                    ChangeDateTime = DateTime.Now,
                    NewAssigneeId = task.AssigneeId,
                    NewName = task.Name,
                    Task = task,
                    NewPriority = task.Priority,
                });
                return this.RedirectToAction("AllManagersWithTasks");
            }
            createModel.Priorities = taskProcessor.GetPrioritiesList();
            // TODO: refactor this "PossibleCreators" and "PossibleAssignees"
            this.ViewBag.PossibleCreators = new List<User>();
            this.ViewBag.PossibleAssignees = new List<User>();

            return this.View(createModel);
        }
 public ActionResult Create(int managerId, int projectId)
 {
     var createModel = new CreateTaskViewModel
         {
             Priorities = this.taskProcessor.GetPrioritiesList().OrderBy(x => x.Value),
             AssigneeId = (managerId != -1) ? managerId : (int?)null,
             CreatorId = this.userProcessor.GetUserByName(User.Identity.Name).Id,
             Created = DateTime.Now,
             ProjectId = projectId,
         };
     return this.View(createModel);
 }