コード例 #1
0
        public HttpResponseMessage Patch(string userId, TodoModel[] models)
        {
            if (models == null || models.Any(x => string.IsNullOrWhiteSpace(x.Id)))
                return Request.CreateResponse(HttpStatusCode.BadRequest);

            try {
                var user = _userRepository.Get(ObjectId.Parse(userId));
                foreach (var model in models) {
                    user.UpdateTodo(
                        ObjectId.Parse(model.Id),
                        model.Description,
                        model.Completed);
                }
                _userRepository.Update(user);
            } catch (NullReferenceException ex) {
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
            } catch (Exception ex) {
                return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex);
            }

            var response = Request.CreateResponse(HttpStatusCode.OK);
            response.Headers.Add("Type", typeof(TodoModel[]).Name);
            return response;
        }
コード例 #2
0
        public HttpResponseMessage Put(string userId, string id, TodoModel todo)
        {
            try {
                var user = _userRepository.Get(ObjectId.Parse(userId));
                user.UpdateTodo(ObjectId.Parse(todo.Id), todo.Description, todo.Completed);
                _userRepository.Update(user);
            } catch (NullReferenceException ex) {
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
            } catch (Exception ex) {
                return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex);
            }

            var response = Request.CreateResponse(HttpStatusCode.OK);
            response.Headers.Add("Type", typeof(TodoModel).Name);
            return response;
        }
コード例 #3
0
        public HttpResponseMessage Put(string userId, TodoModel[] models)
        {
            if (models == null || models.Any(x => string.IsNullOrWhiteSpace(x.Id)))
                return Request.CreateResponse(HttpStatusCode.BadRequest);

            try {
                var user = _userRepository.Get(ObjectId.Parse(userId));
                var todos = user.GetTodos();
                todos = models.Aggregate(
                    todos,
                    (current, model) =>
                        current.Where(
                            x =>
                                x.Id.Equals(ObjectId.Parse(model.Id))
                            ).ToArray()
                    );
                user.SetTodos(todos);
                _userRepository.Update(user);
            } catch (NullReferenceException ex) {
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
            } catch (Exception ex) {
                return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex);
            }

            var response = Request.CreateResponse(HttpStatusCode.OK);
            response.Headers.Add("Type", typeof(TodoModel[]).Name);
            return response;
        }
コード例 #4
0
        public HttpResponseMessage Post(string userId, TodoModel model)
        {
            ITodo todo;

            try {
                var user = _userRepository.Get(ObjectId.Parse(userId));
                todo = user.AddTodo(model.Description);
                _userRepository.Update(user);
            } catch (NullReferenceException ex) {
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
            } catch (Exception ex) {
                return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex);
            }

            var response = Request.CreateResponse(HttpStatusCode.Created);
            response.Headers.Location =
                new Uri(string.Format("{0}/{1}", Request.RequestUri.AbsoluteUri, todo.Id));
            response.Headers.Add("Type", typeof(TodoModel).Name);
            return response;
        }