public ShoppingCartModule(IShoppingCartStore shoppingCartStore, IProductCatalogClient productCatalog, IEventStore eventStore) : base("/shoppingcart") { Get("/{userid:int}", parameters => { var userId = (int)parameters.userud; return(shoppingCartStore.Get(userId)); }); Post("/{userid:int}/items", async(parameters, _) => { var productCatalogIds = this.Bind <int[]>(); var userId = (int)parameters.userid; var shoppingCart = await shoppingCartStore.Get(userId).ConfigureAwait(false); var shoppingCartItems = await productCatalog.GetShoppingCartItems(productCatalogIds).ConfigureAwait(false); shoppingCart.AddItems(shoppingCartItems, eventStore); await shoppingCartStore.Save(shoppingCart); return(shoppingCart); }); Delete("/{userid:int}", async parameters => { var productCatalogIds = this.Bind <int[]>(); var userId = (int)parameters.userid; var shoppingCart = await shoppingCartStore.Get(userId).ConfigureAwait(false); shoppingCart.RemoveItems(productCatalogIds, eventStore); await shoppingCartStore.Save(shoppingCart); return(shoppingCart); }); }
public ShoppingCartModule(IShoppingCartStore shoppingCartStore, IProductCatalogClient productCatalogClient, IEventStore eventStore) : base("/shoppingcart") { Get("/{userid:int}", async parameters => await GetShoppingCart(shoppingCartStore, parameters)); Post("/{userid:int}", async(parameters, _) => { var productIds = this.Bind <int[]>(); ShoppingCartModel shoppingCart = await GetShoppingCart(shoppingCartStore, parameters); var products = await productCatalogClient.GetShoppingCartItems(productIds).ConfigureAwait(false); shoppingCart.AddProducts(products, eventStore); shoppingCartStore.Save(shoppingCart); return(shoppingCart); }); Delete("/{userid:int}", async parameters => { var productIds = this.Bind <int[]>(new BindingConfig() { BodyOnly = true }); var shoppingCart = await GetShoppingCart(shoppingCartStore, parameters); shoppingCart.RemoveProducts(productIds, eventStore); shoppingCartStore.Save(shoppingCart); return(shoppingCart); }); }
public ShoppingCartController(ILogger <ShoppingCartController> logger, IShoppingCartStore shoppingCartStore, IProductCatalogClient productCatalog, IEventStore eventStore) { _logger = logger; _shoppingCartStore = shoppingCartStore; _productCatalog = productCatalog; _eventStore = eventStore; }
public ShoppingCartModule( IShoppingCartStore shoppingCartStore, IProductCatalogClient productCatalogClient, IEventStore eventStore) { async Task <IShoppingCart> addingItemsToShoppingCart(dynamic parameters, CancellationToken _) { var productCatalogIds = this.Bind <int[]>(); var userId = (int)parameters.userid; var userShoppingCart = shoppingCartStore.CartForUserOf(userId); var shoppingCartItems = await productCatalogClient .ShoppingCartItemsOf(productCatalogIds) .ConfigureAwait(false); userShoppingCart.AddItems(shoppingCartItems, eventStore); shoppingCartStore.Save(userShoppingCart); return(userShoppingCart); } Get("/{userid:int}", parameters => { var userId = (int)parameters.userid; return(shoppingCartStore.CartForUserOf(userId)); }); Post("/{userid:int}/items", addingItemsToShoppingCart); }
public ShoppingCartController( IShoppingCartStore shoppingCartStore, IProductCatalogClient productCatalog, IEventStore eventStore) { this.shoppingCartStore = shoppingCartStore; this.productCatalog = productCatalog; this.eventStore = eventStore; }
public ShoppingCartController( IShoppingCartStore shoppingCartStore, IProductCatalogClient productCatalog, IEventStore eventStore) { _shoppingCartStore = shoppingCartStore; _productCatalog = productCatalog; _eventStore = eventStore; }
public ShoppingCartModule( IShoppingCartStore shoppingCartStore, IProductCatalogClient productCatalog, IEventStore eventStore) : base("/shoppingcart") { Get("/{userid:int}", parameters => { var userId = (int)parameters.userid; return(shoppingCartStore.Get(userId)); }); Get("/prices", _ => { var client = new MongoClient("mongodb://localhost:32769"); var db = client.GetDatabase("test"); var collection = db.GetCollection <Price>("prices"); var filter = new BsonDocument(); var prices = collection.AsQueryable().Select(c => new { c.Currency, c.Amount }).ToList(); //var prices = await collection.Find(filter).ToListAsync(); return(prices); }); Post("/{userid:int}/items", async(parameters, _) => { var productCatalogIds = this.Bind <int[]>(); var userId = (int)parameters.userid; var shoppingCart = shoppingCartStore.Get(userId); var shoppingCartItems = await productCatalog.GetShoppingCartItems(productCatalogIds) .ConfigureAwait(false); shoppingCart.AddItems(shoppingCartItems, eventStore); shoppingCartStore.Save(shoppingCart); return(shoppingCart); }); Delete("/{userid:int}/items", parameters => { var productCatalogIds = this.Bind <int[]>(); var userId = (int)parameters.userid; var shoppingCart = shoppingCartStore.Get(userId); shoppingCart.RemoveItems(productCatalogIds, eventStore); shoppingCartStore.Save(shoppingCart); return(shoppingCart); }); }
public ShoppingCartModule(IShoppingCartStore shoppingCartStore, IProductCatalogClient productCatalog, IEventStore eventStore) : base("/shoppingcart") { // get a specific user's shopping basket // route declaration, path followed by route handler Get("/{userid:int}", parameters => { var userId = (int)parameters.userid; return(shoppingCartStore.Get(userId)); }); Post("/{userid:int}/items", async(parameters, _) => { var productCatalogIds = this.Bind <int[]>(); var userId = (int)parameters.userid; var shoppingCart = shoppingCartStore.Get(userId); // get up to date information about the items chosen from the product catalog (including price) var shoppingCartItems = await productCatalog .GetShoppingCartItems(productCatalogIds) .ConfigureAwait(false); shoppingCart.AddItems(shoppingCartItems, eventStore); shoppingCartStore.Save(shoppingCart); return(shoppingCart); }); Delete("/{userid:int}/items", parameters => { var productCatalogIds = this.Bind <int[]>(); var userId = (int)parameters.userid; var shoppingCart = shoppingCartStore.Get(userId); shoppingCart.RemoveItems(productCatalogIds, eventStore); shoppingCartStore.Save(shoppingCart); return(shoppingCart); }); }
public ShoppingCartModule(IShoppingCartRepository shoppingCartRepository, IProductCatalogClient productCatalogClient, IEventStore eventStore) : base("/shoppingcart") { Get("/{userid:int}", parameters => { var userId = (int)parameters.userid; return(shoppingCartRepository.Get(userId)); }); Post("/{userid:int}/items", async(parameters, _) => { var userId = (int)parameters.userid; var productCatalogIds = this.Bind <int[]>(); var cart = shoppingCartRepository.Get(userId); var cartItems = await productCatalogClient.GetProductCartItemsAsync(productCatalogIds); cart.AddItems(cartItems, eventStore); shoppingCartRepository.Save(cart); return(new Response { StatusCode = HttpStatusCode.Created }); }); Delete("/{userid:int}/items", parameters => { var userId = (int)parameters.userid; var productCatalogIds = this.Bind <int[]>(); var cart = shoppingCartRepository.Get(userId); cart.RemoveItems(productCatalogIds, eventStore); shoppingCartRepository.Save(cart); return(new Response { StatusCode = HttpStatusCode.Accepted }); }); }