public HttpResponseMessage ChangeTodoStatus(int todoId, [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken) { return(this.ExecuteOperationAndHandleExceptions(() => { var context = new TasksManagerDbContext(); var meUser = this.GetUserByAccessToken(accessToken, context); var todo = context.Todos.Find(todoId); if (todo == null) { throw new ArgumentNullException("Wrong Todo"); } if (todo.List.Owner != meUser) { throw new InvalidOperationException("This is no your todo to check"); } todo.IsDone = (todo.IsDone) ? false : true; context.SaveChanges(); var responseModel = new ListCreatedModel() { Id = todo.List.Id, Owner = meUser.Username }; var response = this.Request.CreateResponse(HttpStatusCode.Created, responseModel); response.Headers.Location = new Uri(Url.Link("DefaultApi", new { listId = responseModel.Id })); return response; })); }
public HttpResponseMessage CreateList(TodolistModel model, [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken) { return(this.ExecuteOperationAndHandleExceptions(() => { var context = new TasksManagerDbContext(); var meUser = this.GetUserByAccessToken(accessToken, context); this.ValidateList(model); var listEntity = model.ToEntity(); listEntity.Owner = meUser; meUser.TodoLists.Add(listEntity); context.SaveChanges(); var responseModel = new ListCreatedModel() { Id = listEntity.Id, Owner = meUser.Username }; var response = this.Request.CreateResponse(HttpStatusCode.Created, responseModel); response.Headers.Location = new Uri(Url.Link("DefaultApi", new { listId = listEntity.Id })); return response; })); }
public HttpResponseMessage CreateTodoForList(int listId, TodoModel model, [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken) { return(this.ExecuteOperationAndHandleExceptions(() => { var context = new TasksManagerDbContext(); var meUser = this.GetUserByAccessToken(accessToken, context); var list = context.TodoLists.Find(listId); if (list == null) { throw new ArgumentNullException("Wrong TODO list"); } if (string.IsNullOrEmpty(model.Text)) { throw new ArgumentNullException("Invalid TODO properties"); } var todoEntity = new Todo() { Text = model.Text, IsDone = false }; list.Todos.Add(todoEntity); context.SaveChanges(); var responseModel = new ListCreatedModel() { Id = listId, Owner = meUser.Username }; var response = this.Request.CreateResponse(HttpStatusCode.Created, responseModel); response.Headers.Location = new Uri(Url.Link("DefaultApi", new { listId = responseModel.Id })); return response; })); }