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);
}