public async Task <IActionResult> RemoveItem([FromRoute] string auctionId, [FromRoute] string itemName)
        {
            var id      = IdentityBase.FromExistingId <AuctionId>(auctionId);
            var command = new RemoveAuctionItemCommand(id, itemName);
            await _commandBus.ExecuteAsync(command);

            return(NoContent());
        }
        public async Task <IActionResult> Update([FromRoute] string id, [FromBody] UpdateAuctionViewModel viewModel)
        {
            var auctionId = IdentityBase.FromExistingId <AuctionId>(id);
            var command   = new UpdateAuctionCommand(auctionId, viewModel.Name, viewModel.AuctionDate);
            await _commandBus.ExecuteAsync(command);

            return(Ok());
        }
        public async Task <IActionResult> AddItem([FromRoute] string auctionId,
                                                  [FromBody] AddAuctionItemViewModel viewModel)
        {
            var id      = IdentityBase.FromExistingId <AuctionId>(auctionId);
            var item    = new AuctionItem(viewModel.Name, viewModel.Donor, viewModel.Description, viewModel.Quantity);
            var command = new AddAuctionItemCommand(id, item);
            await _commandBus.ExecuteAsync(command);

            return(CreatedAtRoute("GetAuctionItems", new { auctionId }, null));
        }
        public async Task <IActionResult> UpdateItem(
            [FromRoute] string auctionId,
            [FromRoute] string itemName,
            [FromBody] UpdateAuctionItemViewModel viewModel)
        {
            var id      = IdentityBase.FromExistingId <AuctionId>(auctionId);
            var command = new UpdateAuctionItemCommand(
                id,
                itemName,
                viewModel.NewName,
                viewModel.NewDonor,
                viewModel.NewDescription,
                viewModel.NewQuantity);

            await _commandBus.ExecuteAsync(command);

            return(NoContent());
        }