Browse Source

Merge 9dbabb4f50 into 5d8628c9e2

pull/134/merge
Bill Wagner 8 years ago
committed by GitHub
parent
commit
40b79bf3c1
8 changed files with 24 additions and 32 deletions
  1. +0
    -0
      cli-mac/build-bits.sh
  2. +4
    -5
      src/Services/Basket/Basket.API/Controllers/BasketController.cs
  3. +2
    -4
      src/Services/Basket/Basket.API/Controllers/HomeController.cs
  4. +10
    -6
      src/Services/Basket/Basket.API/IntegrationEvents/EventHandling/ProductPriceChangedIntegrationEventHandler.cs
  5. +3
    -3
      src/Services/Basket/Basket.API/IntegrationEvents/Events/ProductPriceChangedIntegrationEvent.cs
  6. +2
    -5
      src/Services/Basket/Basket.API/Model/Basket.cs
  7. +2
    -8
      src/Services/Basket/Basket.API/Model/RedisBasketRepository.cs
  8. +1
    -1
      src/Services/Basket/Basket.API/Startup.cs

+ 0
- 0
cli-mac/build-bits.sh View File


+ 4
- 5
src/Services/Basket/Basket.API/Controllers/BasketController.cs View File

@ -18,10 +18,9 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.Controllers
{
private IBasketRepository _repository;
public BasketController(IBasketRepository repository)
{
public BasketController(IBasketRepository repository) =>
_repository = repository;
}
// GET api/values/5
[HttpGet("{id}")]
public async Task<IActionResult> Get(string id)
@ -42,9 +41,9 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.Controllers
// DELETE api/values/5
[HttpDelete("{id}")]
public void Delete(string id)
public Task Delete(string id)
{
_repository.DeleteBasket(id);
return _repository.DeleteBasket(id);
}
}
}

+ 2
- 4
src/Services/Basket/Basket.API/Controllers/HomeController.cs View File

@ -11,9 +11,7 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.Controllers
public class HomeController : Controller
{
// GET: /<controller>/
public IActionResult Index()
{
return new RedirectResult("~/swagger/ui");
}
public IActionResult Index() =>
new RedirectResult("~/swagger/ui");
}
}

+ 10
- 6
src/Services/Basket/Basket.API/IntegrationEvents/EventHandling/ProductPriceChangedIntegrationEventHandler.cs View File

@ -4,6 +4,7 @@ using Microsoft.eShopOnContainers.Services.Basket.API.Model;
using System.Linq;
using System.Threading.Tasks;
namespace Microsoft.eShopOnContainers.Services.Basket.API.IntegrationEvents.EventHandling
{
public class ProductPriceChangedIntegrationEventHandler : IIntegrationEventHandler<ProductPriceChangedIntegrationEvent>
@ -20,26 +21,29 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.IntegrationEvents.Even
foreach (var id in userIds)
{
var basket = await _repository.GetBasket(id);
await UpdateBasket(@event.ProductId, @event.NewPrice, basket);
await UpdateBasket(@event.ProductId, @event.NewPrice, basket);
}
}
private async Task UpdateBasket(int productId, decimal newPrice, CustomerBasket basket)
private ValueTask<CustomerBasket> UpdateBasket(int productId, decimal newPrice, CustomerBasket basket)
{
var itemsToUpdate = basket?.Items?.Where(x => int.Parse(x.ProductId) == productId).ToList();
if (itemsToUpdate != null)
{
foreach (var item in itemsToUpdate)
{
if(item.UnitPrice != newPrice)
{
if (item.UnitPrice != newPrice)
{
var originalPrice = item.UnitPrice;
item.UnitPrice = newPrice;
item.OldUnitPrice = originalPrice;
}
}
await _repository.UpdateBasket(basket);
}
return new ValueTask<CustomerBasket>(_repository.UpdateBasket(basket));
} else
{
return new ValueTask<CustomerBasket>(default(CustomerBasket));
}
}
}
}


+ 3
- 3
src/Services/Basket/Basket.API/IntegrationEvents/Events/ProductPriceChangedIntegrationEvent.cs View File

@ -10,11 +10,11 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.IntegrationEvents.Even
// An Integration Event is an event that can cause side effects to other microsrvices, Bounded-Contexts or external systems.
public class ProductPriceChangedIntegrationEvent : IntegrationEvent
{
public int ProductId { get; private set; }
public int ProductId { get; }
public decimal NewPrice { get; private set; }
public decimal NewPrice { get; }
public decimal OldPrice { get; private set; }
public decimal OldPrice { get; }
public ProductPriceChangedIntegrationEvent(int productId, decimal newPrice, decimal oldPrice)
{


+ 2
- 5
src/Services/Basket/Basket.API/Model/Basket.cs View File

@ -8,12 +8,9 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.Model
public class CustomerBasket
{
public string BuyerId { get; set; }
public List<BasketItem> Items { get; set; }
public List<BasketItem> Items { get; set; } = new List<BasketItem>();
public CustomerBasket(string customerId)
{
public CustomerBasket(string customerId) =>
BuyerId = customerId;
Items = new List<Model.BasketItem>();
}
}
}

+ 2
- 8
src/Services/Basket/Basket.API/Model/RedisBasketRepository.cs View File

@ -28,7 +28,7 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.Model
public async Task<bool> DeleteBasket(string id)
{
var database = await GetDatabase();
return await database.KeyDeleteAsync(id.ToString());
return await database.KeyDeleteAsync(id);
}
public async Task<IEnumerable<string>> GetUsers()
@ -36,11 +36,7 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.Model
var server = await GetServer();
IEnumerable<RedisKey> data = server.Keys();
if (data == null)
{
return null;
}
return data.Select(k => k.ToString());
return data?.Select(k => k.ToString());
}
public async Task<CustomerBasket> GetBasket(string customerId)
@ -99,8 +95,6 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.Model
_logger.LogInformation($"Connecting to database {_settings.ConnectionString} at IP {ips.First().ToString()}");
_redis = await ConnectionMultiplexer.ConnectAsync(ips.First().ToString());
}
}
}

+ 1
- 1
src/Services/Basket/Basket.API/Startup.cs View File

@ -114,7 +114,7 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API
var identityUrl = Configuration.GetValue<string>("IdentityUrl");
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = identityUrl.ToString(),
Authority = identityUrl,
ScopeName = "basket",
RequireHttpsMetadata = false
});


Loading…
Cancel
Save