commit
3e81555963
@ -146,6 +146,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{32EE4736
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{120CABB3-0FEA-4B40-B4B5-2D3041798C80}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{120CABB3-0FEA-4B40-B4B5-2D3041798C80}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Payment", "Payment", "{C61C5CFE-4876-4A46-A96E-5BBF596A984A}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.API", "src\Services\Payment\Payment.API\Payment.API.csproj", "{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||||
@ -1792,6 +1796,54 @@ Global
|
|||||||
{639BB197-D112-47A7-A44A-471DDB0FA1AE}.Release|x64.Build.0 = Release|Any CPU
|
{639BB197-D112-47A7-A44A-471DDB0FA1AE}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{639BB197-D112-47A7-A44A-471DDB0FA1AE}.Release|x86.ActiveCfg = Release|Any CPU
|
{639BB197-D112-47A7-A44A-471DDB0FA1AE}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{639BB197-D112-47A7-A44A-471DDB0FA1AE}.Release|x86.Build.0 = Release|Any CPU
|
{639BB197-D112-47A7-A44A-471DDB0FA1AE}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Release|ARM.Build.0 = Release|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Release|iPhone.Build.0 = Release|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84}.Release|x86.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@ -1856,6 +1908,8 @@ Global
|
|||||||
{C3F6ED48-E26D-4D57-970F-B82E69467BA1} = {41139F64-4046-4F16-96B7-D941D96FA9C6}
|
{C3F6ED48-E26D-4D57-970F-B82E69467BA1} = {41139F64-4046-4F16-96B7-D941D96FA9C6}
|
||||||
{32EE4736-7534-47EC-BAAD-C00AF3130F80} = {A5260DE0-1FDD-467E-9CC1-A028AB081CEE}
|
{32EE4736-7534-47EC-BAAD-C00AF3130F80} = {A5260DE0-1FDD-467E-9CC1-A028AB081CEE}
|
||||||
{120CABB3-0FEA-4B40-B4B5-2D3041798C80} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B}
|
{120CABB3-0FEA-4B40-B4B5-2D3041798C80} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B}
|
||||||
|
{C61C5CFE-4876-4A46-A96E-5BBF596A984A} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8}
|
||||||
|
{0AB40131-8AD7-436F-9C6B-EDA59CFA3A84} = {C61C5CFE-4876-4A46-A96E-5BBF596A984A}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {25728519-5F0F-4973-8A64-0A81EB4EA8D9}
|
SolutionGuid = {25728519-5F0F-4973-8A64-0A81EB4EA8D9}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# This heml values file defines app-based settings
|
# This helm values file defines app-based settings
|
||||||
# Charts use those values, so this file **MUST** be included in all chart releases
|
# Charts use those values, so this file **MUST** be included in all chart releases
|
||||||
|
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
private readonly string AUTOFAC_SCOPE_NAME = "eshop_event_bus";
|
private readonly string AUTOFAC_SCOPE_NAME = "eshop_event_bus";
|
||||||
private const string INTEGRATION_EVENT_SUFIX = "IntegrationEvent";
|
private const string INTEGRATION_EVENT_SUFIX = "IntegrationEvent";
|
||||||
|
|
||||||
public EventBusServiceBus(IServiceBusPersisterConnection serviceBusPersisterConnection,
|
public EventBusServiceBus(IServiceBusPersisterConnection serviceBusPersisterConnection,
|
||||||
ILogger<EventBusServiceBus> logger, IEventBusSubscriptionsManager subsManager, string subscriptionClientName,
|
ILogger<EventBusServiceBus> logger, IEventBusSubscriptionsManager subsManager, string subscriptionClientName,
|
||||||
ILifetimeScope autofac)
|
ILifetimeScope autofac)
|
||||||
{
|
{
|
||||||
@ -30,7 +30,7 @@
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
_subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager();
|
_subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager();
|
||||||
|
|
||||||
_subscriptionClient = new SubscriptionClient(serviceBusPersisterConnection.ServiceBusConnectionStringBuilder,
|
_subscriptionClient = new SubscriptionClient(serviceBusPersisterConnection.ServiceBusConnectionStringBuilder,
|
||||||
subscriptionClientName);
|
subscriptionClientName);
|
||||||
_autofac = autofac;
|
_autofac = autofac;
|
||||||
|
|
||||||
@ -68,7 +68,7 @@
|
|||||||
where T : IntegrationEvent
|
where T : IntegrationEvent
|
||||||
where TH : IIntegrationEventHandler<T>
|
where TH : IIntegrationEventHandler<T>
|
||||||
{
|
{
|
||||||
var eventName = typeof(T).Name.Replace(INTEGRATION_EVENT_SUFIX, "");
|
var eventName = typeof(T).Name.Replace(INTEGRATION_EVENT_SUFIX, "");
|
||||||
|
|
||||||
var containsKey = _subsManager.HasSubscriptionsForEvent<T>();
|
var containsKey = _subsManager.HasSubscriptionsForEvent<T>();
|
||||||
if (!containsKey)
|
if (!containsKey)
|
||||||
@ -81,7 +81,7 @@
|
|||||||
Name = eventName
|
Name = eventName
|
||||||
}).GetAwaiter().GetResult();
|
}).GetAwaiter().GetResult();
|
||||||
}
|
}
|
||||||
catch(ServiceBusException)
|
catch (ServiceBusException)
|
||||||
{
|
{
|
||||||
_logger.LogInformation($"The messaging entity {eventName} already exists.");
|
_logger.LogInformation($"The messaging entity {eventName} already exists.");
|
||||||
}
|
}
|
||||||
@ -129,10 +129,12 @@
|
|||||||
{
|
{
|
||||||
var eventName = $"{message.Label}{INTEGRATION_EVENT_SUFIX}";
|
var eventName = $"{message.Label}{INTEGRATION_EVENT_SUFIX}";
|
||||||
var messageData = Encoding.UTF8.GetString(message.Body);
|
var messageData = Encoding.UTF8.GetString(message.Body);
|
||||||
await ProcessEvent(eventName, messageData);
|
|
||||||
|
|
||||||
// Complete the message so that it is not received again.
|
// Complete the message so that it is not received again.
|
||||||
await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
|
if (await ProcessEvent(eventName, messageData))
|
||||||
|
{
|
||||||
|
await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
new MessageHandlerOptions(ExceptionReceivedHandler) { MaxConcurrentCalls = 10, AutoComplete = false });
|
new MessageHandlerOptions(ExceptionReceivedHandler) { MaxConcurrentCalls = 10, AutoComplete = false });
|
||||||
}
|
}
|
||||||
@ -148,8 +150,9 @@
|
|||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task ProcessEvent(string eventName, string message)
|
private async Task<bool> ProcessEvent(string eventName, string message)
|
||||||
{
|
{
|
||||||
|
var processed = false;
|
||||||
if (_subsManager.HasSubscriptionsForEvent(eventName))
|
if (_subsManager.HasSubscriptionsForEvent(eventName))
|
||||||
{
|
{
|
||||||
using (var scope = _autofac.BeginLifetimeScope(AUTOFAC_SCOPE_NAME))
|
using (var scope = _autofac.BeginLifetimeScope(AUTOFAC_SCOPE_NAME))
|
||||||
@ -173,7 +176,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
processed = true;
|
||||||
}
|
}
|
||||||
|
return processed;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RemoveDefaultRule()
|
private void RemoveDefaultRule()
|
||||||
@ -191,4 +196,4 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -17,6 +17,7 @@
|
|||||||
<PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" />
|
<PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" />
|
||||||
<PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.0-beta8" />
|
<PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.0-beta8" />
|
||||||
<PackageReference Include="Microsoft.ApplicationInsights.ServiceFabric" Version="2.1.1-beta1" />
|
<PackageReference Include="Microsoft.ApplicationInsights.ServiceFabric" Version="2.1.1-beta1" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.1.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
|
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
|
||||||
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" />
|
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.1.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.1.0" />
|
||||||
|
@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Builder;
|
|||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace Microsoft.eShopOnContainers.Services.Basket.API
|
namespace Microsoft.eShopOnContainers.Services.Basket.API
|
||||||
@ -26,7 +27,21 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API
|
|||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>()
|
||||||
.ConfigureAppConfiguration((builderContext, config) =>
|
.ConfigureAppConfiguration((builderContext, config) =>
|
||||||
{
|
{
|
||||||
config.AddEnvironmentVariables();
|
var builtConfig = config.Build();
|
||||||
|
|
||||||
|
var configurationBuilder = new ConfigurationBuilder();
|
||||||
|
|
||||||
|
if (Convert.ToBoolean(builtConfig["UseVault"]))
|
||||||
|
{
|
||||||
|
configurationBuilder.AddAzureKeyVault(
|
||||||
|
$"https://{builtConfig["Vault:Name"]}.vault.azure.net/",
|
||||||
|
builtConfig["Vault:ClientId"],
|
||||||
|
builtConfig["Vault:ClientSecret"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
configurationBuilder.AddEnvironmentVariables();
|
||||||
|
|
||||||
|
config.AddConfiguration(configurationBuilder.Build());
|
||||||
})
|
})
|
||||||
.ConfigureLogging((hostingContext, builder) =>
|
.ConfigureLogging((hostingContext, builder) =>
|
||||||
{
|
{
|
||||||
|
@ -14,5 +14,11 @@
|
|||||||
"ApplicationInsights": {
|
"ApplicationInsights": {
|
||||||
"InstrumentationKey": ""
|
"InstrumentationKey": ""
|
||||||
},
|
},
|
||||||
"EventBusRetryCount": 5
|
"EventBusRetryCount": 5,
|
||||||
|
"UseVault": false,
|
||||||
|
"Vault": {
|
||||||
|
"Name": "eshop",
|
||||||
|
"ClientId": "your-clien-id",
|
||||||
|
"ClientSecret": "your-client-secret"
|
||||||
|
}
|
||||||
}
|
}
|
@ -39,6 +39,7 @@
|
|||||||
<PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" />
|
<PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" />
|
||||||
<PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.0-beta8" />
|
<PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.0-beta8" />
|
||||||
<PackageReference Include="Microsoft.ApplicationInsights.ServiceFabric" Version="2.1.1-beta1" />
|
<PackageReference Include="Microsoft.ApplicationInsights.ServiceFabric" Version="2.1.1-beta1" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.1.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.1.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.1.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
|
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="2.4.0" />
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="2.4.0" />
|
||||||
|
@ -64,23 +64,26 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API.Controllers
|
|||||||
{
|
{
|
||||||
var numIds = ids.Split(',')
|
var numIds = ids.Split(',')
|
||||||
.Select(id => (Ok: int.TryParse(id, out int x), Value: x));
|
.Select(id => (Ok: int.TryParse(id, out int x), Value: x));
|
||||||
|
|
||||||
if (!numIds.All(nid => nid.Ok))
|
if (!numIds.All(nid => nid.Ok))
|
||||||
{
|
{
|
||||||
return BadRequest("ids value invalid. Must be comma-separated list of numbers");
|
return BadRequest("ids value invalid. Must be comma-separated list of numbers");
|
||||||
}
|
}
|
||||||
|
|
||||||
var idsToSelect = numIds.Select(id => id.Value);
|
var idsToSelect = numIds
|
||||||
|
.Select(id => id.Value);
|
||||||
|
|
||||||
var items = _catalogContext.CatalogItems.Where(ci => idsToSelect.Contains(ci.Id)).ToList();
|
var items = _catalogContext.CatalogItems.Where(ci => idsToSelect.Contains(ci.Id)).ToList();
|
||||||
|
|
||||||
items = ChangeUriPlaceholder(items);
|
items = ChangeUriPlaceholder(items);
|
||||||
return Ok(items);
|
|
||||||
|
|
||||||
|
return Ok(items);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Route("items/{id:int}")]
|
[Route("items/{id:int}")]
|
||||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||||
[ProducesResponseType(typeof(CatalogItem),(int)HttpStatusCode.OK)]
|
[ProducesResponseType(typeof(CatalogItem), (int)HttpStatusCode.OK)]
|
||||||
public async Task<IActionResult> GetItemById(int id)
|
public async Task<IActionResult> GetItemById(int id)
|
||||||
{
|
{
|
||||||
if (id <= 0)
|
if (id <= 0)
|
||||||
@ -127,19 +130,44 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API.Controllers
|
|||||||
return Ok(model);
|
return Ok(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
// GET api/v1/[controller]/items/type/1/brand/null[?pageSize=3&pageIndex=10]
|
// GET api/v1/[controller]/items/type/1/brand[?pageSize=3&pageIndex=10]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Route("[action]/type/{catalogTypeId}/brand/{catalogBrandId}")]
|
[Route("[action]/type/{catalogTypeId}/brand/{catalogBrandId:int?}")]
|
||||||
[ProducesResponseType(typeof(PaginatedItemsViewModel<CatalogItem>), (int)HttpStatusCode.OK)]
|
[ProducesResponseType(typeof(PaginatedItemsViewModel<CatalogItem>), (int)HttpStatusCode.OK)]
|
||||||
public async Task<IActionResult> Items(int? catalogTypeId, int? catalogBrandId, [FromQuery]int pageSize = 10, [FromQuery]int pageIndex = 0)
|
public async Task<IActionResult> Items(int catalogTypeId, int? catalogBrandId, [FromQuery]int pageSize = 10, [FromQuery]int pageIndex = 0)
|
||||||
{
|
{
|
||||||
var root = (IQueryable<CatalogItem>)_catalogContext.CatalogItems;
|
var root = (IQueryable<CatalogItem>)_catalogContext.CatalogItems;
|
||||||
|
|
||||||
if (catalogTypeId.HasValue)
|
root = root.Where(ci => ci.CatalogTypeId == catalogTypeId);
|
||||||
|
|
||||||
|
if (catalogBrandId.HasValue)
|
||||||
{
|
{
|
||||||
root = root.Where(ci => ci.CatalogTypeId == catalogTypeId);
|
root = root.Where(ci => ci.CatalogBrandId == catalogBrandId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var totalItems = await root
|
||||||
|
.LongCountAsync();
|
||||||
|
|
||||||
|
var itemsOnPage = await root
|
||||||
|
.Skip(pageSize * pageIndex)
|
||||||
|
.Take(pageSize)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
itemsOnPage = ChangeUriPlaceholder(itemsOnPage);
|
||||||
|
|
||||||
|
var model = new PaginatedItemsViewModel<CatalogItem>(
|
||||||
|
pageIndex, pageSize, totalItems, itemsOnPage);
|
||||||
|
|
||||||
|
return Ok(model);
|
||||||
|
}
|
||||||
|
// GET api/v1/[controller]/items/type/all/brand[?pageSize=3&pageIndex=10]
|
||||||
|
[HttpGet]
|
||||||
|
[Route("[action]/type/all/brand/{catalogBrandId:int?}")]
|
||||||
|
[ProducesResponseType(typeof(PaginatedItemsViewModel<CatalogItem>), (int)HttpStatusCode.OK)]
|
||||||
|
public async Task<IActionResult> Items(int? catalogBrandId, [FromQuery]int pageSize = 10, [FromQuery]int pageIndex = 0)
|
||||||
|
{
|
||||||
|
var root = (IQueryable<CatalogItem>)_catalogContext.CatalogItems;
|
||||||
|
|
||||||
if (catalogBrandId.HasValue)
|
if (catalogBrandId.HasValue)
|
||||||
{
|
{
|
||||||
root = root.Where(ci => ci.CatalogBrandId == catalogBrandId);
|
root = root.Where(ci => ci.CatalogBrandId == catalogBrandId);
|
||||||
|
@ -6,6 +6,7 @@ using Microsoft.Extensions.Configuration;
|
|||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
namespace Microsoft.eShopOnContainers.Services.Catalog.API
|
namespace Microsoft.eShopOnContainers.Services.Catalog.API
|
||||||
{
|
{
|
||||||
@ -38,7 +39,21 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API
|
|||||||
.UseWebRoot("Pics")
|
.UseWebRoot("Pics")
|
||||||
.ConfigureAppConfiguration((builderContext, config) =>
|
.ConfigureAppConfiguration((builderContext, config) =>
|
||||||
{
|
{
|
||||||
config.AddEnvironmentVariables();
|
var builtConfig = config.Build();
|
||||||
|
|
||||||
|
var configurationBuilder = new ConfigurationBuilder();
|
||||||
|
|
||||||
|
if (Convert.ToBoolean(builtConfig["UseVault"]))
|
||||||
|
{
|
||||||
|
configurationBuilder.AddAzureKeyVault(
|
||||||
|
$"https://{builtConfig["Vault:Name"]}.vault.azure.net/",
|
||||||
|
builtConfig["Vault:ClientId"],
|
||||||
|
builtConfig["Vault:ClientSecret"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
configurationBuilder.AddEnvironmentVariables();
|
||||||
|
|
||||||
|
config.AddConfiguration(configurationBuilder.Build());
|
||||||
})
|
})
|
||||||
.ConfigureLogging((hostingContext, builder) =>
|
.ConfigureLogging((hostingContext, builder) =>
|
||||||
{
|
{
|
||||||
|
@ -16,5 +16,11 @@
|
|||||||
"ApplicationInsights": {
|
"ApplicationInsights": {
|
||||||
"InstrumentationKey": ""
|
"InstrumentationKey": ""
|
||||||
},
|
},
|
||||||
"EventBusRetryCount": 5
|
"EventBusRetryCount": 5,
|
||||||
|
"UseVault": false,
|
||||||
|
"Vault": {
|
||||||
|
"Name": "eshop",
|
||||||
|
"ClientId": "your-clien-id",
|
||||||
|
"ClientSecret": "your-client-secret"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
<PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.0-beta8" />
|
<PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.0-beta8" />
|
||||||
<PackageReference Include="Microsoft.ApplicationInsights.ServiceFabric" Version="2.1.1-beta1" />
|
<PackageReference Include="Microsoft.ApplicationInsights.ServiceFabric" Version="2.1.1-beta1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.1.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.1.0" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.1.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
|
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
|
||||||
<PackageReference Include="IdentityServer4.AspNetIdentity" Version="2.1.0" />
|
<PackageReference Include="IdentityServer4.AspNetIdentity" Version="2.1.0" />
|
||||||
<PackageReference Include="IdentityServer4.EntityFramework" Version="2.1.1" />
|
<PackageReference Include="IdentityServer4.EntityFramework" Version="2.1.1" />
|
||||||
|
@ -6,6 +6,7 @@ using Microsoft.Extensions.Configuration;
|
|||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace Microsoft.eShopOnContainers.Services.Identity.API
|
namespace Microsoft.eShopOnContainers.Services.Identity.API
|
||||||
@ -45,7 +46,21 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API
|
|||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>()
|
||||||
.ConfigureAppConfiguration((builderContext, config) =>
|
.ConfigureAppConfiguration((builderContext, config) =>
|
||||||
{
|
{
|
||||||
config.AddEnvironmentVariables();
|
var builtConfig = config.Build();
|
||||||
|
|
||||||
|
var configurationBuilder = new ConfigurationBuilder();
|
||||||
|
|
||||||
|
if (Convert.ToBoolean(builtConfig["UseVault"]))
|
||||||
|
{
|
||||||
|
configurationBuilder.AddAzureKeyVault(
|
||||||
|
$"https://{builtConfig["Vault:Name"]}.vault.azure.net/",
|
||||||
|
builtConfig["Vault:ClientId"],
|
||||||
|
builtConfig["Vault:ClientSecret"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
configurationBuilder.AddEnvironmentVariables();
|
||||||
|
|
||||||
|
config.AddConfiguration(configurationBuilder.Build());
|
||||||
})
|
})
|
||||||
.ConfigureLogging((hostingContext, builder) =>
|
.ConfigureLogging((hostingContext, builder) =>
|
||||||
{
|
{
|
||||||
|
@ -15,5 +15,11 @@
|
|||||||
},
|
},
|
||||||
"ApplicationInsights": {
|
"ApplicationInsights": {
|
||||||
"InstrumentationKey": ""
|
"InstrumentationKey": ""
|
||||||
|
},
|
||||||
|
"UseVault": false,
|
||||||
|
"Vault": {
|
||||||
|
"Name": "eshop",
|
||||||
|
"ClientId": "your-clien-id",
|
||||||
|
"ClientSecret": "your-client-secret"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
<PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.0-beta8" />
|
<PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.0-beta8" />
|
||||||
<PackageReference Include="Microsoft.ApplicationInsights.ServiceFabric" Version="2.1.1-beta1" />
|
<PackageReference Include="Microsoft.ApplicationInsights.ServiceFabric" Version="2.1.1-beta1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.1.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.1.0" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.1.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
|
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
|
||||||
<PackageReference Include="mongocsharpdriver" Version="2.5.0" />
|
<PackageReference Include="mongocsharpdriver" Version="2.5.0" />
|
||||||
<PackageReference Include="MongoDB.Bson" Version="2.5.0" />
|
<PackageReference Include="MongoDB.Bson" Version="2.5.0" />
|
||||||
|
@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Builder;
|
|||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace Microsoft.eShopOnContainers.Services.Locations.API
|
namespace Microsoft.eShopOnContainers.Services.Locations.API
|
||||||
@ -21,7 +22,21 @@ namespace Microsoft.eShopOnContainers.Services.Locations.API
|
|||||||
.UseStartup<Startup>()
|
.UseStartup<Startup>()
|
||||||
.ConfigureAppConfiguration((builderContext, config) =>
|
.ConfigureAppConfiguration((builderContext, config) =>
|
||||||
{
|
{
|
||||||
config.AddEnvironmentVariables();
|
var builtConfig = config.Build();
|
||||||
|
|
||||||
|
var configurationBuilder = new ConfigurationBuilder();
|
||||||
|
|
||||||
|
if (Convert.ToBoolean(builtConfig["UseVault"]))
|
||||||
|
{
|
||||||
|
configurationBuilder.AddAzureKeyVault(
|
||||||
|
$"https://{builtConfig["Vault:Name"]}.vault.azure.net/",
|
||||||
|
builtConfig["Vault:ClientId"],
|
||||||
|
builtConfig["Vault:ClientSecret"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
configurationBuilder.AddEnvironmentVariables();
|
||||||
|
|
||||||
|
config.AddConfiguration(configurationBuilder.Build());
|
||||||
})
|
})
|
||||||
.ConfigureLogging((hostingContext, builder) =>
|
.ConfigureLogging((hostingContext, builder) =>
|
||||||
{
|
{
|
||||||
|
@ -15,5 +15,11 @@
|
|||||||
"ApplicationInsights": {
|
"ApplicationInsights": {
|
||||||
"InstrumentationKey": ""
|
"InstrumentationKey": ""
|
||||||
},
|
},
|
||||||
"EventBusRetryCount": 5
|
"EventBusRetryCount": 5,
|
||||||
|
"UseVault": false,
|
||||||
|
"Vault": {
|
||||||
|
"Name": "eshop",
|
||||||
|
"ClientId": "your-clien-id",
|
||||||
|
"ClientSecret": "your-client-secret"
|
||||||
|
}
|
||||||
}
|
}
|
@ -24,6 +24,7 @@
|
|||||||
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" />
|
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" />
|
||||||
<PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" />
|
<PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" />
|
||||||
<PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.0-beta8" />
|
<PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.0-beta8" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.1.0" />
|
||||||
<PackageReference Include="Microsoft.ApplicationInsights.ServiceFabric" Version="2.1.1-beta1" />
|
<PackageReference Include="Microsoft.ApplicationInsights.ServiceFabric" Version="2.1.1-beta1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.1.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.1.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
|
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
public class Program
|
public class Program
|
||||||
@ -33,7 +34,21 @@
|
|||||||
.UseWebRoot("Pics")
|
.UseWebRoot("Pics")
|
||||||
.ConfigureAppConfiguration((builderContext, config) =>
|
.ConfigureAppConfiguration((builderContext, config) =>
|
||||||
{
|
{
|
||||||
config.AddEnvironmentVariables();
|
var builtConfig = config.Build();
|
||||||
|
|
||||||
|
var configurationBuilder = new ConfigurationBuilder();
|
||||||
|
|
||||||
|
if (Convert.ToBoolean(builtConfig["UseVault"]))
|
||||||
|
{
|
||||||
|
configurationBuilder.AddAzureKeyVault(
|
||||||
|
$"https://{builtConfig["Vault:Name"]}.vault.azure.net/",
|
||||||
|
builtConfig["Vault:ClientId"],
|
||||||
|
builtConfig["Vault:ClientSecret"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
configurationBuilder.AddEnvironmentVariables();
|
||||||
|
|
||||||
|
config.AddConfiguration(configurationBuilder.Build());
|
||||||
})
|
})
|
||||||
.ConfigureLogging((hostingContext, builder) =>
|
.ConfigureLogging((hostingContext, builder) =>
|
||||||
{
|
{
|
||||||
|
@ -16,5 +16,11 @@
|
|||||||
"ApplicationInsights": {
|
"ApplicationInsights": {
|
||||||
"InstrumentationKey": ""
|
"InstrumentationKey": ""
|
||||||
},
|
},
|
||||||
"EventBusRetryCount": 5
|
"EventBusRetryCount": 5,
|
||||||
|
"UseVault": false,
|
||||||
|
"Vault": {
|
||||||
|
"Name": "eshop",
|
||||||
|
"ClientId": "your-clien-id",
|
||||||
|
"ClientSecret": "your-client-secret"
|
||||||
|
}
|
||||||
}
|
}
|
@ -37,6 +37,7 @@
|
|||||||
<PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" />
|
<PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" />
|
||||||
<PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.0-beta8" />
|
<PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.0-beta8" />
|
||||||
<PackageReference Include="Microsoft.ApplicationInsights.ServiceFabric" Version="2.1.1-beta1" />
|
<PackageReference Include="Microsoft.ApplicationInsights.ServiceFabric" Version="2.1.1-beta1" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.1.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.1.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.1.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
|
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
|
||||||
<PackageReference Include="MediatR" Version="4.1.0" />
|
<PackageReference Include="MediatR" Version="4.1.0" />
|
||||||
|
@ -7,6 +7,7 @@ using Microsoft.Extensions.Configuration;
|
|||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace Microsoft.eShopOnContainers.Services.Ordering.API
|
namespace Microsoft.eShopOnContainers.Services.Ordering.API
|
||||||
@ -37,8 +38,21 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API
|
|||||||
.UseContentRoot(Directory.GetCurrentDirectory())
|
.UseContentRoot(Directory.GetCurrentDirectory())
|
||||||
.ConfigureAppConfiguration((builderContext, config) =>
|
.ConfigureAppConfiguration((builderContext, config) =>
|
||||||
{
|
{
|
||||||
config.AddJsonFile("settings.json");
|
var builtConfig = config.Build();
|
||||||
config.AddEnvironmentVariables();
|
|
||||||
|
var configurationBuilder = new ConfigurationBuilder();
|
||||||
|
|
||||||
|
if (Convert.ToBoolean(builtConfig["UseVault"]))
|
||||||
|
{
|
||||||
|
configurationBuilder.AddAzureKeyVault(
|
||||||
|
$"https://{builtConfig["Vault:Name"]}.vault.azure.net/",
|
||||||
|
builtConfig["Vault:ClientId"],
|
||||||
|
builtConfig["Vault:ClientSecret"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
configurationBuilder.AddEnvironmentVariables();
|
||||||
|
|
||||||
|
config.AddConfiguration(configurationBuilder.Build());
|
||||||
})
|
})
|
||||||
.ConfigureLogging((hostingContext, builder) =>
|
.ConfigureLogging((hostingContext, builder) =>
|
||||||
{
|
{
|
||||||
|
@ -17,5 +17,11 @@
|
|||||||
"InstrumentationKey": ""
|
"InstrumentationKey": ""
|
||||||
},
|
},
|
||||||
"EventBusRetryCount": 5,
|
"EventBusRetryCount": 5,
|
||||||
"EventBusConnection": "localhost"
|
"EventBusConnection": "localhost",
|
||||||
|
"UseVault": false,
|
||||||
|
"Vault": {
|
||||||
|
"Name": "eshop",
|
||||||
|
"ClientId": "your-clien-id",
|
||||||
|
"ClientSecret": "your-client-secret"
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,6 +1,4 @@
|
|||||||
using System;
|
namespace WebMVC.Infrastructure
|
||||||
|
|
||||||
namespace WebMVC.Infrastructure
|
|
||||||
{
|
{
|
||||||
public static class API
|
public static class API
|
||||||
{
|
{
|
||||||
@ -55,11 +53,20 @@ namespace WebMVC.Infrastructure
|
|||||||
{
|
{
|
||||||
var filterQs = "";
|
var filterQs = "";
|
||||||
|
|
||||||
if (brand.HasValue || type.HasValue)
|
if (type.HasValue)
|
||||||
{
|
{
|
||||||
var brandQs = (brand.HasValue) ? brand.Value.ToString() : "null";
|
var brandQs = (brand.HasValue) ? brand.Value.ToString() : string.Empty;
|
||||||
var typeQs = (type.HasValue) ? type.Value.ToString() : "null";
|
filterQs = $"/type/{type.Value}/brand/{brandQs}";
|
||||||
filterQs = $"/type/{typeQs}/brand/{brandQs}";
|
|
||||||
|
}
|
||||||
|
else if (brand.HasValue)
|
||||||
|
{
|
||||||
|
var brandQs = (brand.HasValue) ? brand.Value.ToString() : string.Empty;
|
||||||
|
filterQs = $"/type/all/brand/{brandQs}";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
filterQs = string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $"{baseUri}items{filterQs}?pageIndex={page}&pageSize={take}";
|
return $"{baseUri}items{filterQs}?pageIndex={page}&pageSize={take}";
|
||||||
|
@ -29,10 +29,14 @@ export class CatalogService {
|
|||||||
|
|
||||||
getCatalog(pageIndex: number, pageSize: number, brand: number, type: number): Observable<ICatalog> {
|
getCatalog(pageIndex: number, pageSize: number, brand: number, type: number): Observable<ICatalog> {
|
||||||
let url = this.catalogUrl;
|
let url = this.catalogUrl;
|
||||||
if (brand || type) {
|
|
||||||
url = this.catalogUrl + '/type/' + ((type) ? type.toString() : 'null') + '/brand/' + ((brand) ? brand.toString() : 'null');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (type) {
|
||||||
|
url = this.catalogUrl + '/type/' + type.toString() + '/brand/' + ((brand) ? brand.toString() : '');
|
||||||
|
}
|
||||||
|
else if (brand) {
|
||||||
|
url = this.catalogUrl + '/type/all' + '/brand/' + ((brand) ? brand.toString() : '');
|
||||||
|
}
|
||||||
|
|
||||||
url = url + '?pageIndex=' + pageIndex + '&pageSize=' + pageSize;
|
url = url + '?pageIndex=' + pageIndex + '&pageSize=' + pageSize;
|
||||||
|
|
||||||
return this.service.get(url).map((response: Response) => {
|
return this.service.get(url).map((response: Response) => {
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
.UseContentRoot(Path.GetDirectoryName(path))
|
.UseContentRoot(Path.GetDirectoryName(path))
|
||||||
.ConfigureAppConfiguration(cb =>
|
.ConfigureAppConfiguration(cb =>
|
||||||
{
|
{
|
||||||
cb.AddJsonFile("Services/Locations/appsettings.json", optional: false)
|
cb.AddJsonFile("Services/Location/appsettings.json", optional: false)
|
||||||
.AddEnvironmentVariables();
|
.AddEnvironmentVariables();
|
||||||
}).UseStartup<LocationsTestsStartup>();
|
}).UseStartup<LocationsTestsStartup>();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user