Merge remote-tracking branch 'upstream/dev' into dev
This commit is contained in:
		
						commit
						6c9647a31d
					
				@ -27,7 +27,7 @@ namespace FunctionalTests.Services.Catalog
 | 
			
		||||
                    .AddEnvironmentVariables();
 | 
			
		||||
                }).UseStartup<Startup>();
 | 
			
		||||
 | 
			
		||||
            var testServer =  new TestServer(hostBuilder);
 | 
			
		||||
            var testServer = new TestServer(hostBuilder);
 | 
			
		||||
 | 
			
		||||
            testServer.Host
 | 
			
		||||
                .MigrateDbContext<CatalogContext>((context, services) =>
 | 
			
		||||
 | 
			
		||||
@ -43,8 +43,8 @@ namespace FunctionalTests.Services
 | 
			
		||||
                var oldPrice = itemToModify.UnitPrice;
 | 
			
		||||
                var newPrice = oldPrice + priceModification;
 | 
			
		||||
                var pRes = await catalogClient.PutAsync(CatalogScenariosBase.Put.UpdateCatalogProduct, new StringContent(ChangePrice(itemToModify, newPrice, originalCatalogProducts), UTF8Encoding.UTF8, "application/json"));
 | 
			
		||||
                                
 | 
			
		||||
                var modifiedCatalogProducts = await GetCatalogAsync(catalogClient);               
 | 
			
		||||
 | 
			
		||||
                var modifiedCatalogProducts = await GetCatalogAsync(catalogClient);
 | 
			
		||||
 | 
			
		||||
                var itemUpdated = await GetUpdatedBasketItem(newPrice, itemToModify.ProductId, userId, basketClient);
 | 
			
		||||
 | 
			
		||||
@ -71,7 +71,7 @@ namespace FunctionalTests.Services
 | 
			
		||||
            BasketItem itemUpdated = null;
 | 
			
		||||
 | 
			
		||||
            while (continueLoop && counter < 20)
 | 
			
		||||
            {                
 | 
			
		||||
            {
 | 
			
		||||
                //get the basket and verify that the price of the modified product is updated
 | 
			
		||||
                var basketGetResponse = await basketClient.GetAsync(BasketScenariosBase.Get.GetBasketByCustomer(userId));
 | 
			
		||||
                var basketUpdated = JsonConvert.DeserializeObject<CustomerBasket>(await basketGetResponse.Content.ReadAsStringAsync());
 | 
			
		||||
@ -92,7 +92,7 @@ namespace FunctionalTests.Services
 | 
			
		||||
            return itemUpdated;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private async  Task<PaginatedItemsViewModel<CatalogItem>> GetCatalogAsync(HttpClient catalogClient)
 | 
			
		||||
        private async Task<PaginatedItemsViewModel<CatalogItem>> GetCatalogAsync(HttpClient catalogClient)
 | 
			
		||||
        {
 | 
			
		||||
            var response = await catalogClient.GetAsync(CatalogScenariosBase.Get.Items);
 | 
			
		||||
            var items = await response.Content.ReadAsStringAsync();
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,7 @@
 | 
			
		||||
 | 
			
		||||
        public static class Post
 | 
			
		||||
        {
 | 
			
		||||
            public static string AddNewuserLocationRule(int campaignId) 
 | 
			
		||||
            public static string AddNewuserLocationRule(int campaignId)
 | 
			
		||||
                => GetUserLocationRolesUrlBase(campaignId);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,7 @@ using Xunit;
 | 
			
		||||
namespace FunctionalTests.Services.Ordering
 | 
			
		||||
{
 | 
			
		||||
    public class OrderingScenarios : OrderingScenariosBase
 | 
			
		||||
    {        
 | 
			
		||||
    {
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public async Task Cancel_basket_and_check_order_status_cancelled()
 | 
			
		||||
        {
 | 
			
		||||
@ -69,7 +69,8 @@ namespace FunctionalTests.Services.Ordering
 | 
			
		||||
                var ordersGetResponse = await orderClient.GetStringAsync(OrderingScenariosBase.Get.Orders);
 | 
			
		||||
                var orders = JsonConvert.DeserializeObject<List<Order>>(ordersGetResponse);
 | 
			
		||||
 | 
			
		||||
                if (orders == null || orders.Count == 0) {
 | 
			
		||||
                if (orders == null || orders.Count == 0)
 | 
			
		||||
                {
 | 
			
		||||
                    counter++;
 | 
			
		||||
                    await Task.Delay(100);
 | 
			
		||||
                    continue;
 | 
			
		||||
@ -84,9 +85,9 @@ namespace FunctionalTests.Services.Ordering
 | 
			
		||||
                if (IsOrderCreated(order, city))
 | 
			
		||||
                {
 | 
			
		||||
                    break;
 | 
			
		||||
                }                
 | 
			
		||||
            }                
 | 
			
		||||
            
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return order;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -117,7 +118,7 @@ namespace FunctionalTests.Services.Ordering
 | 
			
		||||
            var order = new OrderDTO()
 | 
			
		||||
            {
 | 
			
		||||
                OrderNumber = orderId
 | 
			
		||||
            };           
 | 
			
		||||
            };
 | 
			
		||||
            return JsonConvert.SerializeObject(order);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -135,7 +136,7 @@ namespace FunctionalTests.Services.Ordering
 | 
			
		||||
                CardExpiration = DateTime.Now.AddYears(1),
 | 
			
		||||
                CardSecurityNumber = "123",
 | 
			
		||||
                CardTypeId = 1,
 | 
			
		||||
                Buyer = "Buyer",                
 | 
			
		||||
                Buyer = "Buyer",
 | 
			
		||||
                RequestId = Guid.NewGuid()
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
@ -143,4 +144,3 @@ namespace FunctionalTests.Services.Ordering
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@ -1,9 +1,4 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC
 | 
			
		||||
{
 | 
			
		||||
    public class AppSettings
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -2,16 +2,16 @@ namespace Microsoft.eShopOnContainers.WebMVC.Controllers
 | 
			
		||||
{
 | 
			
		||||
    using AspNetCore.Authorization;
 | 
			
		||||
    using AspNetCore.Mvc;
 | 
			
		||||
    using global::WebMVC.Services.ModelDTOs;
 | 
			
		||||
    using global::WebMVC.Services;
 | 
			
		||||
    using global::WebMVC.Services.ModelDTOs;
 | 
			
		||||
    using global::WebMVC.ViewModels;
 | 
			
		||||
    using Microsoft.AspNetCore.Authentication.OpenIdConnect;
 | 
			
		||||
    using Microsoft.Extensions.Options;
 | 
			
		||||
    using Services;
 | 
			
		||||
    using System;
 | 
			
		||||
    using System.Threading.Tasks;
 | 
			
		||||
    using ViewModels;
 | 
			
		||||
    using ViewModels.Pagination;
 | 
			
		||||
    using Microsoft.AspNetCore.Authentication.OpenIdConnect;
 | 
			
		||||
 | 
			
		||||
    [Authorize(AuthenticationSchemes = OpenIdConnectDefaults.AuthenticationScheme)]
 | 
			
		||||
    public class CampaignsController : Controller
 | 
			
		||||
@ -31,12 +31,12 @@ namespace Microsoft.eShopOnContainers.WebMVC.Controllers
 | 
			
		||||
        {
 | 
			
		||||
            var campaignList = await _campaignService.GetCampaigns(pageSize, page);
 | 
			
		||||
 | 
			
		||||
            if(campaignList is null)
 | 
			
		||||
            if (campaignList is null)
 | 
			
		||||
            {
 | 
			
		||||
                return View();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var totalPages = (int) Math.Ceiling((decimal) campaignList.Count / pageSize);
 | 
			
		||||
            var totalPages = (int)Math.Ceiling((decimal)campaignList.Count / pageSize);
 | 
			
		||||
 | 
			
		||||
            var vm = new CampaignViewModel
 | 
			
		||||
            {
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,9 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.ViewModels.Pagination;
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.Services;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.ViewModels.CatalogViewModels;
 | 
			
		||||
using Microsoft.AspNetCore.Http;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.ViewModels.Pagination;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.Controllers
 | 
			
		||||
{
 | 
			
		||||
@ -12,10 +11,10 @@ namespace Microsoft.eShopOnContainers.WebMVC.Controllers
 | 
			
		||||
    {
 | 
			
		||||
        private ICatalogService _catalogSvc;
 | 
			
		||||
 | 
			
		||||
        public CatalogController(ICatalogService catalogSvc) => 
 | 
			
		||||
        public CatalogController(ICatalogService catalogSvc) =>
 | 
			
		||||
            _catalogSvc = catalogSvc;
 | 
			
		||||
 | 
			
		||||
        public async Task<IActionResult> Index(int? BrandFilterApplied, int? TypesFilterApplied, int? page, [FromQuery]string errorMsg)
 | 
			
		||||
        public async Task<IActionResult> Index(int? BrandFilterApplied, int? TypesFilterApplied, int? page, [FromQuery] string errorMsg)
 | 
			
		||||
        {
 | 
			
		||||
            var itemsPage = 10;
 | 
			
		||||
            var catalog = await _catalogSvc.GetCatalogItems(page ?? 0, itemsPage, BrandFilterApplied, TypesFilterApplied);
 | 
			
		||||
@ -30,7 +29,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.Controllers
 | 
			
		||||
                {
 | 
			
		||||
                    ActualPage = page ?? 0,
 | 
			
		||||
                    ItemsPerPage = catalog.Data.Count,
 | 
			
		||||
                    TotalItems = catalog.Count, 
 | 
			
		||||
                    TotalItems = catalog.Count,
 | 
			
		||||
                    TotalPages = (int)Math.Ceiling(((decimal)catalog.Count / itemsPage))
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
@ -1,13 +1,10 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
 | 
			
		||||
using Microsoft.AspNetCore.Authorization;
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using WebMVC.Services.ModelDTOs;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.Services;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.ViewModels;
 | 
			
		||||
using Microsoft.AspNetCore.Authorization;
 | 
			
		||||
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using WebMVC.Services.ModelDTOs;
 | 
			
		||||
 | 
			
		||||
namespace WebMVC.Controllers
 | 
			
		||||
{
 | 
			
		||||
@ -37,7 +34,7 @@ namespace WebMVC.Controllers
 | 
			
		||||
            {
 | 
			
		||||
                await _orderSvc.ShipOrder(orderId);
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            return RedirectToAction("Index");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -48,7 +48,7 @@ namespace WebMVC.Controllers
 | 
			
		||||
 | 
			
		||||
            if (response.IsSuccessStatusCode)
 | 
			
		||||
            {
 | 
			
		||||
                var str =  await response.Content.ReadAsStringAsync();
 | 
			
		||||
                var str = await response.Content.ReadAsStringAsync();
 | 
			
		||||
 | 
			
		||||
                return Ok(str);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,8 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.IdentityModel.Tokens.Jwt;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Net.Http;
 | 
			
		||||
using System.Net.Http.Headers;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.Extensions
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,5 @@
 | 
			
		||||
using Microsoft.AspNetCore.Http;
 | 
			
		||||
using Newtonsoft.Json;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
public static class SessionExtensions
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,7 @@ namespace WebMVC.Infrastructure
 | 
			
		||||
                    request.Headers.Add("x-requestid", Guid.NewGuid().ToString());
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            return await base.SendAsync(request, cancellationToken);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,6 @@
 | 
			
		||||
using Microsoft.AspNetCore.Http;
 | 
			
		||||
using Microsoft.Extensions.Primitives;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Security.Claims;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
@ -63,7 +62,7 @@ namespace WebMVC.Infrastructure.Middlewares
 | 
			
		||||
                    new Claim("name", "Test user"),
 | 
			
		||||
                    new Claim("nonce", Guid.NewGuid().ToString()),
 | 
			
		||||
                    new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", "Test user"),
 | 
			
		||||
                    new Claim("http://schemas.microsoft.com/identity/claims/identityprovider", "ByPassAuthMiddleware"),                    
 | 
			
		||||
                    new Claim("http://schemas.microsoft.com/identity/claims/identityprovider", "ByPassAuthMiddleware"),
 | 
			
		||||
                    new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname","User"),
 | 
			
		||||
                    new Claim("sub", currentUserId),
 | 
			
		||||
                    new Claim("card_expiration", "12/21"),
 | 
			
		||||
 | 
			
		||||
@ -35,7 +35,7 @@ namespace WebMVC.Infrastructure
 | 
			
		||||
        static void GetPreconfiguredCSS(string contentRootPath, string webroot, ILogger log)
 | 
			
		||||
        {
 | 
			
		||||
            try
 | 
			
		||||
            { 
 | 
			
		||||
            {
 | 
			
		||||
                string overrideCssFile = Path.Combine(contentRootPath, "Setup", "override.css");
 | 
			
		||||
                if (!File.Exists(overrideCssFile))
 | 
			
		||||
                {
 | 
			
		||||
@ -44,7 +44,7 @@ namespace WebMVC.Infrastructure
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                string destinationFilename = Path.Combine(webroot, "css", "override.css");
 | 
			
		||||
                File.Copy(overrideCssFile, destinationFilename, true );
 | 
			
		||||
                File.Copy(overrideCssFile, destinationFilename, true);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
@ -86,7 +86,7 @@ namespace WebMVC.Infrastructure
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            catch ( Exception ex )
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
                log.Error(ex, "EXCEPTION ERROR: {Message}", ex.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -42,13 +42,13 @@ namespace Microsoft.eShopOnContainers.WebMVC
 | 
			
		||||
 | 
			
		||||
        private static IWebHost BuildWebHost(IConfiguration configuration, string[] args) =>
 | 
			
		||||
            WebHost.CreateDefaultBuilder(args)
 | 
			
		||||
                .CaptureStartupErrors(false)                
 | 
			
		||||
                .CaptureStartupErrors(false)
 | 
			
		||||
                .ConfigureAppConfiguration(x => x.AddConfiguration(configuration))
 | 
			
		||||
                .UseStartup<Startup>()
 | 
			
		||||
                .UseSerilog()
 | 
			
		||||
                .Build();
 | 
			
		||||
 | 
			
		||||
         private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration)
 | 
			
		||||
        private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration)
 | 
			
		||||
        {
 | 
			
		||||
            var seqServerUrl = configuration["Serilog:SeqServerUrl"];
 | 
			
		||||
            var logstashUrl = configuration["Serilog:LogstashgUrl"];
 | 
			
		||||
@ -57,10 +57,12 @@ namespace Microsoft.eShopOnContainers.WebMVC
 | 
			
		||||
                .Enrich.WithProperty("ApplicationContext", AppName)
 | 
			
		||||
                .Enrich.FromLogContext()
 | 
			
		||||
                .WriteTo.Console();
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(seqServerUrl)) {
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(seqServerUrl))
 | 
			
		||||
            {
 | 
			
		||||
                cfg.WriteTo.Seq(seqServerUrl);
 | 
			
		||||
            }
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(logstashUrl)) {
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(logstashUrl))
 | 
			
		||||
            {
 | 
			
		||||
                cfg.WriteTo.Http(logstashUrl);
 | 
			
		||||
            }
 | 
			
		||||
            return cfg.CreateLogger();
 | 
			
		||||
 | 
			
		||||
@ -23,7 +23,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.Services
 | 
			
		||||
        {
 | 
			
		||||
            _apiClient = httpClient;
 | 
			
		||||
            _settings = settings;
 | 
			
		||||
            _logger =logger;
 | 
			
		||||
            _logger = logger;
 | 
			
		||||
 | 
			
		||||
            _basketByPassUrl = $"{_settings.Value.PurchaseUrl}/b/api/v1/basket";
 | 
			
		||||
            _purchaseUrl = $"{_settings.Value.PurchaseUrl}/api/v1";
 | 
			
		||||
@ -33,7 +33,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.Services
 | 
			
		||||
        {
 | 
			
		||||
            var uri = API.Basket.GetBasket(_basketByPassUrl, user.Id);
 | 
			
		||||
            _logger.LogDebug("[GetBasket] -> Calling {Uri} to get the basket", uri);
 | 
			
		||||
            var response = await _apiClient.GetAsync(uri);  
 | 
			
		||||
            var response = await _apiClient.GetAsync(uri);
 | 
			
		||||
            _logger.LogDebug("[GetBasket] -> response code {StatusCode}", response.StatusCode);
 | 
			
		||||
            var responseString = await response.Content.ReadAsStringAsync();
 | 
			
		||||
            return string.IsNullOrEmpty(responseString) ?
 | 
			
		||||
@ -97,7 +97,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.Services
 | 
			
		||||
 | 
			
		||||
            var responseString = await _apiClient.GetStringAsync(uri);
 | 
			
		||||
 | 
			
		||||
            var response =  JsonConvert.DeserializeObject<Order>(responseString);
 | 
			
		||||
            var response = JsonConvert.DeserializeObject<Order>(responseString);
 | 
			
		||||
 | 
			
		||||
            return response;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,5 @@
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.ViewModels;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using WebMVC.Services.ModelDTOs;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,5 @@
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.Services
 | 
			
		||||
{
 | 
			
		||||
    using System.Collections.Generic;
 | 
			
		||||
    using System.Threading.Tasks;
 | 
			
		||||
    using ViewModels;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,6 @@
 | 
			
		||||
using Microsoft.AspNetCore.Mvc.Rendering;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.ViewModels;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.Services
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,4 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Security.Principal;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Security.Principal;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.Services
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,5 @@
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.ViewModels;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using WebMVC.Services.ModelDTOs;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,14 +1,12 @@
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.ViewModels;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Security.Claims;
 | 
			
		||||
using System.Security.Principal;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.Services
 | 
			
		||||
{
 | 
			
		||||
    public class IdentityParser:IIdentityParser<ApplicationUser>
 | 
			
		||||
    public class IdentityParser : IIdentityParser<ApplicationUser>
 | 
			
		||||
    {
 | 
			
		||||
        public ApplicationUser Parse(IPrincipal principal)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,7 @@ namespace WebMVC.Services.ModelDTOs
 | 
			
		||||
 | 
			
		||||
        [Required]
 | 
			
		||||
        public DateTime CardExpiration { get; set; }
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        [Required]
 | 
			
		||||
        public string CardSecurityNumber { get; set; }
 | 
			
		||||
 | 
			
		||||
@ -31,7 +31,7 @@ namespace WebMVC.Services.ModelDTOs
 | 
			
		||||
        public string Buyer { get; set; }
 | 
			
		||||
 | 
			
		||||
        [Required]
 | 
			
		||||
        public Guid RequestId { get; set; }       
 | 
			
		||||
        public Guid RequestId { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -7,19 +7,16 @@ using Microsoft.AspNetCore.DataProtection;
 | 
			
		||||
using Microsoft.AspNetCore.Diagnostics.HealthChecks;
 | 
			
		||||
using Microsoft.AspNetCore.Hosting;
 | 
			
		||||
using Microsoft.AspNetCore.Http;
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.Services;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.ViewModels;
 | 
			
		||||
using Microsoft.Extensions.Configuration;
 | 
			
		||||
using Microsoft.Extensions.DependencyInjection;
 | 
			
		||||
using Microsoft.Extensions.Diagnostics.HealthChecks;
 | 
			
		||||
using Microsoft.Extensions.Hosting;
 | 
			
		||||
using Microsoft.Extensions.Logging;
 | 
			
		||||
using Microsoft.IdentityModel.Logging;
 | 
			
		||||
using StackExchange.Redis;
 | 
			
		||||
using System;
 | 
			
		||||
using System.IdentityModel.Tokens.Jwt;
 | 
			
		||||
using System.Net.Http;
 | 
			
		||||
using WebMVC.Infrastructure;
 | 
			
		||||
using WebMVC.Infrastructure.Middlewares;
 | 
			
		||||
using WebMVC.Services;
 | 
			
		||||
@ -46,8 +43,8 @@ namespace Microsoft.eShopOnContainers.WebMVC
 | 
			
		||||
                .AddDevspaces()
 | 
			
		||||
                .AddHttpClientServices(Configuration);
 | 
			
		||||
 | 
			
		||||
            IdentityModelEventSource.ShowPII  = true;       // Caution! Do NOT use in production: https://aka.ms/IdentityModel/PII
 | 
			
		||||
            
 | 
			
		||||
            IdentityModelEventSource.ShowPII = true;       // Caution! Do NOT use in production: https://aka.ms/IdentityModel/PII
 | 
			
		||||
 | 
			
		||||
            services.AddControllers();
 | 
			
		||||
 | 
			
		||||
            services.AddCustomAuthentication(Configuration);
 | 
			
		||||
@ -82,13 +79,13 @@ namespace Microsoft.eShopOnContainers.WebMVC
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            WebContextSeed.Seed(app, env);
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            // Fix samesite issue when running eShop from docker-compose locally as by default http protocol is being used
 | 
			
		||||
            // Refer to https://github.com/dotnet-architecture/eShopOnContainers/issues/1391
 | 
			
		||||
            app.UseCookiePolicy(new CookiePolicyOptions { MinimumSameSitePolicy = AspNetCore.Http.SameSiteMode.Lax });            
 | 
			
		||||
            app.UseCookiePolicy(new CookiePolicyOptions { MinimumSameSitePolicy = AspNetCore.Http.SameSiteMode.Lax });
 | 
			
		||||
 | 
			
		||||
            app.UseRouting();
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            app.UseAuthentication();
 | 
			
		||||
            app.UseAuthorization();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,7 @@
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.Services;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.ViewModels;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.ViewModels.CartViewModels;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.Services;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewComponents
 | 
			
		||||
@ -24,7 +21,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.ViewComponents
 | 
			
		||||
                vm.ItemsCount = itemsInCart;
 | 
			
		||||
                return View(vm);
 | 
			
		||||
            }
 | 
			
		||||
            catch 
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                ViewBag.IsBasketInoperative = true;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,7 @@
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.ViewModels;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.Services;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.ViewModels;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewComponents
 | 
			
		||||
@ -29,7 +27,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.ViewComponents
 | 
			
		||||
 | 
			
		||||
            return View(vm);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        private Task<Basket> GetItemsAsync(ApplicationUser user) => _cartSvc.GetBasket(user);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,5 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.ComponentModel.DataAnnotations;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels.Annotations
 | 
			
		||||
{
 | 
			
		||||
@ -24,7 +21,8 @@ namespace Microsoft.eShopOnContainers.WebMVC.ViewModels.Annotations
 | 
			
		||||
                DateTime d = new DateTime(year, month, 1);
 | 
			
		||||
 | 
			
		||||
                return d > DateTime.UtcNow;
 | 
			
		||||
            } else
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -16,7 +16,7 @@ namespace WebMVC.ViewModels.Annotations
 | 
			
		||||
                    ("Longitude must be between -180 and 180 degrees inclusive.");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return ValidationResult.Success;            
 | 
			
		||||
            return ValidationResult.Success;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,5 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Microsoft.AspNetCore.Identity;
 | 
			
		||||
using System.ComponentModel.DataAnnotations;
 | 
			
		||||
using Microsoft.AspNetCore.Identity;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,6 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels
 | 
			
		||||
{
 | 
			
		||||
@ -16,7 +15,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.ViewModels
 | 
			
		||||
 | 
			
		||||
        public decimal Total()
 | 
			
		||||
        {
 | 
			
		||||
            return Math.Round(Items.Sum(x => x.UnitPrice * x.Quantity),2);
 | 
			
		||||
            return Math.Round(Items.Sum(x => x.UnitPrice * x.Quantity), 2);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,4 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels
 | 
			
		||||
{
 | 
			
		||||
    public class BasketItem
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,11 @@
 | 
			
		||||
namespace WebMVC.ViewModels
 | 
			
		||||
{
 | 
			
		||||
    using System.Collections.Generic;
 | 
			
		||||
    using Microsoft.eShopOnContainers.WebMVC.ViewModels;
 | 
			
		||||
    using Microsoft.eShopOnContainers.WebMVC.ViewModels.Pagination;
 | 
			
		||||
    using WebMVC.ViewModels.Annotations;
 | 
			
		||||
    using Newtonsoft.Json;
 | 
			
		||||
    using System.Collections.Generic;
 | 
			
		||||
    using System.ComponentModel.DataAnnotations;
 | 
			
		||||
    using WebMVC.ViewModels.Annotations;
 | 
			
		||||
 | 
			
		||||
    public class CampaignViewModel
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,4 @@
 | 
			
		||||
using Microsoft.AspNetCore.Mvc.Rendering;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels.CartViewModels
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels.CartViewModels
 | 
			
		||||
{
 | 
			
		||||
    public class CartComponentViewModel
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,4 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,4 @@
 | 
			
		||||
using System;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels
 | 
			
		||||
{
 | 
			
		||||
    public class CatalogItem
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,6 @@
 | 
			
		||||
using Microsoft.AspNetCore.Mvc.Rendering;
 | 
			
		||||
using Microsoft.eShopOnContainers.WebMVC.ViewModels.Pagination;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels.CatalogViewModels
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,4 @@
 | 
			
		||||
using System;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels
 | 
			
		||||
{
 | 
			
		||||
    public class Header
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -5,21 +5,19 @@ using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.ComponentModel;
 | 
			
		||||
using System.ComponentModel.DataAnnotations;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using WebMVC.Services.ModelDTOs;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels
 | 
			
		||||
{
 | 
			
		||||
    public class Order
 | 
			
		||||
    {
 | 
			
		||||
        public string OrderNumber {get;set;}
 | 
			
		||||
        public string OrderNumber { get; set; }
 | 
			
		||||
 | 
			
		||||
        public DateTime Date {get;set;}
 | 
			
		||||
        public DateTime Date { get; set; }
 | 
			
		||||
 | 
			
		||||
        public string Status { get; set; }
 | 
			
		||||
 | 
			
		||||
        public decimal Total {get;set;}
 | 
			
		||||
        public decimal Total { get; set; }
 | 
			
		||||
 | 
			
		||||
        public string Description { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,4 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels
 | 
			
		||||
{
 | 
			
		||||
    public class OrderItem
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,4 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels.Pagination
 | 
			
		||||
namespace Microsoft.eShopOnContainers.WebMVC.ViewModels.Pagination
 | 
			
		||||
{
 | 
			
		||||
    public class PaginationInfo
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,4 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace eShopOnContainers.WebSPA
 | 
			
		||||
namespace eShopOnContainers.WebSPA
 | 
			
		||||
{
 | 
			
		||||
    public class AppSettings
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,9 @@
 | 
			
		||||
using Microsoft.AspNetCore;
 | 
			
		||||
using Microsoft.AspNetCore.Hosting;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using Microsoft.Extensions.Logging;
 | 
			
		||||
using Microsoft.Extensions.Configuration;
 | 
			
		||||
using Microsoft.Extensions.Logging;
 | 
			
		||||
using Serilog;
 | 
			
		||||
using System.IO;
 | 
			
		||||
 | 
			
		||||
namespace eShopConContainers.WebSPA
 | 
			
		||||
{
 | 
			
		||||
@ -36,6 +36,6 @@ namespace eShopConContainers.WebSPA
 | 
			
		||||
                        .Enrich.FromLogContext()
 | 
			
		||||
                        .WriteTo.Console();
 | 
			
		||||
                })
 | 
			
		||||
                .Build();       
 | 
			
		||||
                .Build();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,9 @@
 | 
			
		||||
// For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
 | 
			
		||||
 | 
			
		||||
using eShopOnContainers.WebSPA;
 | 
			
		||||
using Microsoft.AspNetCore.Hosting;
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using Microsoft.Extensions.Options;
 | 
			
		||||
using eShopOnContainers.WebSPA;
 | 
			
		||||
 | 
			
		||||
namespace eShopConContainers.WebSPA.Server.Controllers
 | 
			
		||||
{
 | 
			
		||||
@ -20,6 +20,6 @@ namespace eShopConContainers.WebSPA.Server.Controllers
 | 
			
		||||
        public IActionResult Configuration()
 | 
			
		||||
        {
 | 
			
		||||
            return Json(_settings.Value);
 | 
			
		||||
        } 
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -70,7 +70,7 @@ namespace eShopConContainers.WebSPA
 | 
			
		||||
            {
 | 
			
		||||
                app.UseDeveloperExceptionPage();
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            // Configure XSRF middleware, This pattern is for SPA style applications where XSRF token is added on Index page 
 | 
			
		||||
            // load and passed back token on every subsequent async request            
 | 
			
		||||
            // app.Use(async (context, next) =>
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,6 @@
 | 
			
		||||
using HealthChecks.UI.Configuration;
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using Microsoft.Extensions.Configuration;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace WebStatus.Controllers
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user