/// <summary>
        /// Update the details of a task
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public JsonResult Update(TaskViewModel model)
        {
            
            ModelState.Remove("CreatedBy");
            ModelState.Remove("AssignedToId");
            if (ModelState.IsValid)
            {
                using (var orgSession = OrgStore.OpenSession())
                {
                    
                    var task = orgSession.Load<Task>(model.Id);

                    task.DueDate = model.DueDate;
                    task.ConsolidatedCompletionDate = model.DueDate;
                    if (task.CompletedDate != null) task.CompletedDate = model.DueDate;


                    task.Title = model.Title;
                    task.Description = model.Description;

                    orgSession.Store(task);
                    orgSession.SaveChanges();

                    return JsonSuccess(task.ToTimelineItems(), "Task updated");
                }
            }
            return JsonError("Invalid data");
        }
        /// <summary>
        /// Create a new Task
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public JsonResult Create(TaskViewModel model)
        {
            //remove Id from modelstate if tehre. 
            ModelState.Remove("Id"); 
            ModelState.Remove("CreatedBy");
            if (ModelState.IsValid)
            {
                using (var orgSession = OrgStore.OpenSession())
                {
                    //load the user that the task is for
                    var assignee = orgSession.Load<User>(model.AssignedToId);
                    var task = new Task
                               {
                                   CreatedBy = OrgUser.ToSimpleUser(),
                                   DueDate = model.DueDate.ToUniversalTime(),
                                   ConsolidatedCompletionDate = model.DueDate,
                                   AssignedUsers = new List<SimpleUser>{assignee.ToSimpleUser()},
                                   Title = model.Title,
                                   Description = model.Description,
                                   Id = IlluminateDatabase.GenerateId<Task>()
                               };

                    if (model.DueDate < DateTime.Now.Date)
                        task.ConsolidatedCompletionDate = DateTime.Now.Date;
                    orgSession.Store(task);
                    task.UpdateAssignees(orgSession);

                    orgSession.SaveChanges();

                    return JsonSuccess(task.ToTimelineItems(), "Task created");
                }
            }
            return JsonError("Invalid data");
        }