Exemplo n.º 1
0
        public TasksApiModule(ITaskService taskService)
            : base("/api")
        {
            Get["/tasks"] = parameters =>
                                {
                                    var tasks =
                                        taskService.FindTaskItemsByName(new FindTaskItemsByNameRequest()
                                                                            {Query = "", RequestUserId = 1}).TaskItems;
                                    var response =
                                        new JsonResponse(tasks.Select(t =>
                                                                      new TaskViewModel()
                                                                          {
                                                                              TaskItemId = t.TaskItemId,
                                                                              Title = t.Title,
                                                                              Details = t.Details,
                                                                              AssignedToUserId =
                                                                                  t.AssignedToUserId > 0
                                                                                      ? (int?) t.AssignedToUserId
                                                                                      : null,
                                                                                      Comments = t.Comments.Select(c => new CommentViewModel()
                                                                                                                            {
                                                                                                                                TaskItemId = t.TaskItemId,
                                                                                                                                CommentId = c.CommentId,
                                                                                                                                CreatedByUserId = c.CreatedByUserId,
                                                                                                                                Comment = c.Comment
                                                                                                                            })
                                                                          })
                                            ).WithNoCache();

                                    return response;
                                };

            Post["/tasks"] = parameters =>
                            {
                                var taskViewModel = this.Bind<TaskViewModel>();

                                var taskId = taskViewModel.TaskItemId.GetValueOrDefault(0);
                                if (taskId == 0)
                                {
                                    var response = taskService.AddTaskItem(new AddTaskItemRequest()
                                                                               {
                                                                                   Title = taskViewModel.Title,
                                                                                   Details = taskViewModel.Details,
                                                                                   RequestUserId = int.Parse(Context.Request.Headers["TM-RequestUserId"].First()),
                                                                                   AssignedToUserId = taskViewModel.AssignedToUserId
                                                                               });
                                    return new JsonResponse(response.TaskItemId);
                                }
                                else
                                {
                                    var response = taskService.EditTaskItem(new EditTaskItemRequest()
                                                                                {
                                                                                    TaskItemId = taskId,
                                                                                    Title = taskViewModel.Title,
                                                                                    Details = taskViewModel.Details,
                                                                                    AssignedToUserId = taskViewModel.AssignedToUserId
                                                                                });
                                    return new JsonResponse(response.TaskItemId);
                                }

                            };

            Post["/tasks/comments"] = parameters =>
                                         {
                                             var commentViewModel = this.Bind<CommentViewModel>();
                                             var commentId = commentViewModel.CommentId.GetValueOrDefault(0);
                                             if (commentId == 0)
                                                 return new JsonResponse("Unknown Task");

                                            var createdById =
                                                int.Parse(Context.Request.Headers["TM-RequestUserId"].First());
                                            var response = taskService.AddComment(new AddCommentRequest() { Comment = commentViewModel.Comment, TaskItemId = commentViewModel.TaskItemId, RequestUserId = createdById });

                                            return new JsonResponse(response.CommentId);
                                         };
        }