Skip to content

Instantly share code, notes, and snippets.

@thangchung
Created September 7, 2018 04:01
Show Gist options
  • Save thangchung/468cd653319a57222366d4daf6bd1abd to your computer and use it in GitHub Desktop.
Save thangchung/468cd653319a57222366d4daf6bd1abd to your computer and use it in GitHub Desktop.
Clean Domain-driven Design article - Checkout
public class RequestHandler : TxRequestHandlerBase<CheckoutRequest, CheckoutResponse>
{
public RequestHandler(IUnitOfWorkAsync uow, IQueryRepositoryFactory qrf)
: base(uow, qrf)
{
}
public override async Task<CheckoutResponse> Handle(CheckoutRequest request, CancellationToken cancellationToken)
{
var cartCommander = UnitOfWork.Repository<Domain.Cart>();
var cartQuery = QueryFactory.QueryEfRepository<Domain.Cart>();
var cart = await cartQuery.GetFullCartAsync(request.CartId);
cart.Checkout();
var checkoutCart = await cartCommander.UpdateAsync(cart);
await UnitOfWork.SaveChangesAsync(cancellationToken);
return new CheckoutResponse
{
IsSucceed = checkoutCart != null
};
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment