Example #1
0
        public TodoItemRetrieve Get(string id)
        {
            var item    = _todoItemService.Retrieve(id);
            var history = _todoItemStatusHistoryService.RetrieveByTodoItemId(id).ToList();

            return(TodoItemMapper.ToController(item, history));
        }
Example #2
0
        public HttpResponseMessage Post(CreateTodoItemModel model)
        {
            if (ModelState.IsValid)
            {
                // Map the model
                var mapper = new CreateTodoItemMapper();
                mapper.Configure();
                var todoItem = mapper.Map(model);

                // Create the item
                var createTodoItemHandler = new CreateTodoItemHandler();
                createTodoItemHandler.Handle(todoItem);

                // Map the item to the json
                var mapperResult = new TodoItemMapper();
                mapperResult.Configure();
                var todoItemResult = mapperResult.Map(todoItem);

                // Return the response
                var response = Request.CreateResponse <TodoItemResult>(HttpStatusCode.Created, todoItemResult);
                return(response);
            }

            return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ModelState));
        }
Example #3
0
        public IEnumerable <TodoItemRetrieve> GetAll()
        {
            var items   = _todoItemService.Retrieve();
            var history = _todoItemStatusHistoryService.Retrieve().GroupBy(h => h.TodoItemId).ToDictionary(g => g.Key, g => g.ToList());

            return(TodoItemMapper.ToController(items, history));
        }
        public async Task <Response <TodoItem> > HandleAsync(CreateTodoItemRequest request)
        {
            var todoItemEntityResponse = new Response <TodoItemEntity>();

            // Query. Apply all validation and modification rules.  These rules can only query the database.
            await _rulesEngine.ProcessAsync(request, todoItemEntityResponse, _createRulesFactory.Create().ToList());

            if (todoItemEntityResponse.HasErrors())
            {
                return(new Response <TodoItem>(todoItemEntityResponse.Notifications));
            }

            // Query. Apply all validation and modification rules.  These rules can only query the database.
            await _rulesEngine.ProcessAsync(request, todoItemEntityResponse, _saveRulesFactory.Create().ToList());

            if (todoItemEntityResponse.HasErrors())
            {
                return(new Response <TodoItem>(todoItemEntityResponse.Notifications));
            }

            // Command.  Save the data.
            await _createTodoItemRepository.SaveAsync(todoItemEntityResponse);

            LogTodoItemEntityResponse(todoItemEntityResponse);

            return(new Response <TodoItem>(todoItemEntityResponse.Notifications, TodoItemMapper.MapToTodoItem(todoItemEntityResponse.Item)));
        }
        public IEnumerable <TodoItemResult> Handle()
        {
            // Get the todoitems
            var todoItems = new TodoContext().TodoItems;

            // Map all the items to the json objects
            var mapper = new TodoItemMapper();

            mapper.Configure();

            return(todoItems.Select(mapper.Map));
        }
Example #6
0
        public TodoItemRetrieve Create(TodoItemCreate item)
        {
            var now    = DateTime.UtcNow;
            var status = TodoItemStatus.Pending;

            var objectToCreate = TodoItemMapper.ToDataAccess(item, now, status);

            var createdThing = _todoItemService.Create(objectToCreate);

            var history = MakeStatusHistory(createdThing.Id, status, now);

            return(TodoItemMapper.ToController(createdThing, new List <TodoItemStatusHistoryDataAccess> {
                history
            }));
        }
Example #7
0
        public HttpResponseMessage Get(int id)
        {
            // Get the item
            var getTodoItemHandler = new GetTodoItemHandler();
            var result             = getTodoItemHandler.Handle(id);

            // Map the item
            var mapper = new TodoItemMapper();

            mapper.Configure();
            var todoItemResult = mapper.Map(result);

            // Create + return response
            var response = Request.CreateResponse <TodoItemResult>(HttpStatusCode.OK, todoItemResult);

            return(response);
        }
        public async Task <ActionResult <TodoItem> > GetTodoItem(string id)
        {
            _logger.LogInformation($"Getting Todo item, id: {id}");

            var table = TableStorageHelper.GetTableReference(_storageConnectionString, _tableName);

            var findOp     = TableOperation.Retrieve <TodoItemEntity>(TodoItemMapper.TablePartitionKey, id);
            var findResult = await table.ExecuteAsync(findOp);

            if (findResult.Result == null)
            {
                return(new NotFoundResult());
            }

            var todoEntity = (TodoItemEntity)findResult.Result;

            var todoItem = TodoItemMapper.ToModel(todoEntity);

            return(new OkObjectResult(todoItem));
        }
        public async Task <ActionResult <TodoItem> > CreateTodoItem(TodoItem todoItem)
        {
            _logger.LogInformation($"Creating new Todo item");

            if (todoItem == null || string.IsNullOrWhiteSpace(todoItem.Name))
            {
                return(new BadRequestResult());
            }

            var table = TableStorageHelper.GetTableReference(_storageConnectionString, _tableName);

            var newTodoItem = new TodoItem {
                Name = todoItem.Name, IsCompleted = false
            };
            // Create the InsertOrReplace table operation
            TableOperation insertOp = TableOperation.Insert(TodoItemMapper.ToEntity(newTodoItem));

            // Execute the operation.
            TableResult result = await table.ExecuteAsync(insertOp);

            return(CreatedAtAction(nameof(GetTodoItem), new { id = newTodoItem.Id }, newTodoItem));
        }