Skip to content

Instantly share code, notes, and snippets.

@dcomartin
Created June 16, 2021 21:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dcomartin/61096145d9bcee36b3fe9e989690bc8b to your computer and use it in GitHub Desktop.
Save dcomartin/61096145d9bcee36b3fe9e989690bc8b to your computer and use it in GitHub Desktop.
[HttpPost("{orderId}/prepare")]
public async Task<ActionResult<OrderWithStatus>> Preparing(int orderId, [FromServices] ICapPublisher capPublisher)
{
var order = await _db.Orders
.Where(o => o.OrderId == orderId)
.SingleOrDefaultAsync();
if (order == null)
{
return NotFound();
}
order.OrderStatus = OrderStatus.Preparing;
await _db.SaveChangesAsync();
await capPublisher.PublishAsync(nameof(OrderBeingPreparedEvent), new OrderBeingPreparedEvent(orderId));
return NoContent();
}
[HttpPost("{orderId}/outForDelivery")]
public async Task<ActionResult<OrderWithStatus>> OutForDelivery(int orderId, [FromServices] ICapPublisher capPublisher)
{
var order = await _db.Orders
.Where(o => o.OrderId == orderId)
.SingleOrDefaultAsync();
if (order == null)
{
return NotFound();
}
order.OrderStatus = OrderStatus.OutForDelivery;
await _db.SaveChangesAsync();
await capPublisher.PublishAsync(nameof(OrderPickedUpForDeliveryEvent), new OrderPickedUpForDeliveryEvent(orderId));
return NoContent();
}
[HttpPost("{orderId}/deliver")]
public async Task<ActionResult<OrderWithStatus>> Deliver(int orderId, [FromServices] ICapPublisher capPublisher)
{
var order = await _db.Orders
.Where(o => o.OrderId == orderId)
.SingleOrDefaultAsync();
if (order == null)
{
return NotFound();
}
order.OrderStatus = OrderStatus.Delivered;
await _db.SaveChangesAsync();
await capPublisher.PublishAsync(nameof(OrderDeliveredEvent), new OrderDeliveredEvent(orderId));
return NoContent();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment