public Task Post(Guid taskListId, Task task)
        {
            var userName = this.Request.GetUserPrincipal().Identity.Name;

            var listExists = this.model.TaskLists.Count(o => o.UserName == userName && o.Id == taskListId) == 1;
            if (!listExists)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            task.Id = Guid.NewGuid();
            task.UserName = userName;
            task.StartDate = DateTime.UtcNow;
            task.TimestampUpdate = DateTime.UtcNow;
            task.TaskListId = taskListId;

            this.model.Tasks.Add(task);
            this.model.SaveChanges();

            return task;
        }
        public Task Put(Guid taskListId, Task value)
        {
            var userName = this.Request.GetUserPrincipal().Identity.Name;

            var belongsToUser = this.model.Tasks.Count(o => o.Id == value.Id && o.TaskList.Id == taskListId && o.TaskList.UserName == userName) == 1;
            if (!belongsToUser)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            value.UserName = userName;
            value.TaskListId = taskListId;
            value.TimestampUpdate = DateTime.UtcNow;
            value.StartDate = value.StartDate != DateTime.MinValue ? value.StartDate : DateTime.UtcNow;
            value.DueDate = value.DueDate != DateTime.MinValue ? value.DueDate : null;

            this.model.Tasks.Attach(value);
            this.model.Entry<Task>(value).State = System.Data.EntityState.Modified;
            this.model.SaveChanges();

            return value;
        }