From e80c5efdd327a9bcc8e90261698838e2dd6f7fe6 Mon Sep 17 00:00:00 2001 From: Christian Arenas Date: Fri, 16 Jun 2017 01:20:03 +0200 Subject: [PATCH] Add details view and add marketing scope in mvc project and identity config --- .../Identity.API/Configuration/Config.cs | 3 +- .../Controllers/CampaignsController.cs | 19 +++++++++++-- .../Marketing.API/MarketingSettings.cs | 1 + .../Marketing/Marketing.API/appsettings.json | 3 +- .../WebMVC/Controllers/CampaignsController.cs | 12 +++++++- src/Web/WebMVC/Startup.cs | 2 +- src/Web/WebMVC/Views/Campaigns/Details.cshtml | 28 +++++++++++++++++++ src/Web/WebMVC/Views/Campaigns/Index.cshtml | 6 ++-- .../Services/Marketing/CampaignScenarios.cs | 2 ++ 9 files changed, 66 insertions(+), 10 deletions(-) create mode 100644 src/Web/WebMVC/Views/Campaigns/Details.cshtml diff --git a/src/Services/Identity/Identity.API/Configuration/Config.cs b/src/Services/Identity/Identity.API/Configuration/Config.cs index a99eeb0c1..1f7a20457 100644 --- a/src/Services/Identity/Identity.API/Configuration/Config.cs +++ b/src/Services/Identity/Identity.API/Configuration/Config.cs @@ -108,7 +108,8 @@ namespace Identity.API.Configuration IdentityServerConstants.StandardScopes.OfflineAccess, "orders", "basket", - "locations" + "locations", + "marketing" }, } }; diff --git a/src/Services/Marketing/Marketing.API/Controllers/CampaignsController.cs b/src/Services/Marketing/Marketing.API/Controllers/CampaignsController.cs index 35227d271..6bad7ddd4 100644 --- a/src/Services/Marketing/Marketing.API/Controllers/CampaignsController.cs +++ b/src/Services/Marketing/Marketing.API/Controllers/CampaignsController.cs @@ -11,19 +11,23 @@ using Microsoft.AspNetCore.Authorization; using System; using System.Linq; + using Microsoft.Extensions.Options; [Route("api/v1/[controller]")] [Authorize] public class CampaignsController : Controller { private readonly MarketingContext _context; + private readonly MarketingSettings _settings; private readonly IMarketingDataRepository _marketingDataRepository; public CampaignsController(MarketingContext context, - IMarketingDataRepository marketingDataRepository) + IMarketingDataRepository marketingDataRepository, + IOptionsSnapshot settings) { _context = context; _marketingDataRepository = marketingDataRepository; + _settings = settings.Value; } [HttpGet] @@ -171,7 +175,7 @@ Description = campaign.Description, From = campaign.From, To = campaign.To, - PictureUri = campaign.PictureUri + PictureUri = GetUriPlaceholder(campaign.PictureUri) }; } @@ -184,8 +188,17 @@ Description = campaignDto.Description, From = campaignDto.From, To = campaignDto.To, - PictureUri = $"http://externalcatalogbaseurltobereplaced/api/v1/campaigns/{campaignDto.Id}/pic" + PictureUri = campaignDto.PictureUri }; } + + private string GetUriPlaceholder(string campaignUri) + { + var baseUri = _settings.ExternalCatalogBaseUrl; + + campaignUri = campaignUri.Replace("http://externalcatalogbaseurltobereplaced", baseUri); + + return campaignUri; + } } } \ No newline at end of file diff --git a/src/Services/Marketing/Marketing.API/MarketingSettings.cs b/src/Services/Marketing/Marketing.API/MarketingSettings.cs index d88726dcf..f83200019 100644 --- a/src/Services/Marketing/Marketing.API/MarketingSettings.cs +++ b/src/Services/Marketing/Marketing.API/MarketingSettings.cs @@ -5,5 +5,6 @@ public string ConnectionString { get; set; } public string MongoConnectionString { get; set; } public string MongoDatabase { get; set; } + public string ExternalCatalogBaseUrl { get; set; } } } diff --git a/src/Services/Marketing/Marketing.API/appsettings.json b/src/Services/Marketing/Marketing.API/appsettings.json index aefa3526f..a05a01836 100644 --- a/src/Services/Marketing/Marketing.API/appsettings.json +++ b/src/Services/Marketing/Marketing.API/appsettings.json @@ -8,5 +8,6 @@ "ConnectionString": "127.0.0.1", "MongoConnectionString": "mongodb://nosql.data", "MongoDatabase": "MarketingDb", - "IdentityUrl": "http://localhost:5105" + "IdentityUrl": "http://localhost:5105", + "ExternalCatalogBaseUrl": "http://localhost:5110" } diff --git a/src/Web/WebMVC/Controllers/CampaignsController.cs b/src/Web/WebMVC/Controllers/CampaignsController.cs index 2c7cad487..052055243 100644 --- a/src/Web/WebMVC/Controllers/CampaignsController.cs +++ b/src/Web/WebMVC/Controllers/CampaignsController.cs @@ -83,7 +83,17 @@ namespace Microsoft.eShopOnContainers.WebMVC.Controllers public async Task Details(int id) { - var campaign = await _campaignService.GetCampaignById(id); + var campaignDto = await _campaignService.GetCampaignById(id); + + var campaign = new Campaign + { + Id = campaignDto.Id, + Name = campaignDto.Name, + Description = campaignDto.Description, + From = campaignDto.From, + To = campaignDto.To, + PictureUri = campaignDto.PictureUri + }; return View(campaign); } diff --git a/src/Web/WebMVC/Startup.cs b/src/Web/WebMVC/Startup.cs index f022b256f..8147f6720 100644 --- a/src/Web/WebMVC/Startup.cs +++ b/src/Web/WebMVC/Startup.cs @@ -126,7 +126,7 @@ namespace Microsoft.eShopOnContainers.WebMVC SaveTokens = true, GetClaimsFromUserInfoEndpoint = true, RequireHttpsMetadata = false, - Scope = { "openid", "profile", "orders", "basket" } + Scope = { "openid", "profile", "orders", "basket", "marketing" } }; //Wait untill identity service is ready on compose. diff --git a/src/Web/WebMVC/Views/Campaigns/Details.cshtml b/src/Web/WebMVC/Views/Campaigns/Details.cshtml new file mode 100644 index 000000000..3b3dc68a9 --- /dev/null +++ b/src/Web/WebMVC/Views/Campaigns/Details.cshtml @@ -0,0 +1,28 @@ +@{ + ViewData["Title"] = "Campaign details"; + @model Microsoft.eShopOnContainers.WebMVC.ViewModels.Campaign +} +
+
+ +
+
+ +@Html.Partial("_Header", new List
() { + new Header() { Controller = "Catalog", Text = "Back to catalog" }, + new Header() { Controller = "Campaigns", Text = "Back to Campaigns" } }) + +
+
+ Card image cap +
+

@Model.Name

+

@Model.Description

+

+ + From @Model.From.ToString("MMMM dd, yyyy") until @Model.To.ToString("MMMM dd, yyyy") + +

+
+
+
\ No newline at end of file diff --git a/src/Web/WebMVC/Views/Campaigns/Index.cshtml b/src/Web/WebMVC/Views/Campaigns/Index.cshtml index a777d84c5..ce48ade59 100644 --- a/src/Web/WebMVC/Views/Campaigns/Index.cshtml +++ b/src/Web/WebMVC/Views/Campaigns/Index.cshtml @@ -20,15 +20,15 @@

@campaign.Name

-

@campaign.Description

@campaign.Name +
- +
} diff --git a/test/Services/IntegrationTests/Services/Marketing/CampaignScenarios.cs b/test/Services/IntegrationTests/Services/Marketing/CampaignScenarios.cs index 1a524b654..068777473 100644 --- a/test/Services/IntegrationTests/Services/Marketing/CampaignScenarios.cs +++ b/test/Services/IntegrationTests/Services/Marketing/CampaignScenarios.cs @@ -117,9 +117,11 @@ { return new CampaignDTO() { + Name = "FakeCampaignName", Description = "FakeCampaignDescription", From = DateTime.Now, To = DateTime.Now.AddDays(7), + PictureUri = "http://externalcatalogbaseurltobereplaced/api/v1/campaigns/0/pic" }; } }