public IHttpActionResult UpdateTask(int id, TaskDto taskDto)
 {
     taskDto.Id = id;
     UpdateTask(taskDto);
     context.SaveChanges();
     return Ok(taskDto);
 }
 public IHttpActionResult CreateTask(TaskDto taskDto)
 {
     taskDto.Id = 0;
     var task = UpdateTask(taskDto);
     task.OrderIndex = (!context.Tasks.Any() ? 0 : context.Tasks.Max(t => t.OrderIndex)) + 1;
     context.SaveChanges();
     taskDto.Id = task.Id;
     return Ok(taskDto);
 }
 private Task UpdateTask(TaskDto taskDto)
 {
     var id = taskDto.Id;
     var task = id > 0 ? context.Tasks.Single(t => t.Id == id) : null;
     if (task == null)
     {
         task = new Task();
         context.Tasks.Add(task);
     }
     task.Name = taskDto.Name;
     task.Start = taskDto.Start;
     task.Finish = taskDto.Finish;
     task.CompletedFinish = taskDto.CompletedFinish;
     task.Assignments = taskDto.Assignments;
     task.Indentation = taskDto.Indentation;
     foreach (var predecessor in task.TargetPredecessors.ToArray())
         context.Predecessors.Remove(predecessor);
     if (taskDto.Predecessors != null)
     {
         foreach (var predecessorDto in taskDto.Predecessors)
             task.TargetPredecessors.Add(new Predecessor { SourceTaskId = predecessorDto.SourceTaskId, DependencyType = predecessorDto.DependencyType });
     }
     return task;
 }