From cdffaf1ce119626b4a1d5b22c41fa03bf157c6c6 Mon Sep 17 00:00:00 2001 From: "PLAINCONCEPTS\\ccanizares" Date: Wed, 11 Jan 2017 12:23:05 +0100 Subject: [PATCH] MVC: Add To Cart bug. SPA: Add To Cart 'bug', Update Basket. --- .../eShopOnContainers.TestRunner.Droid.csproj | 2 +- ...opOnContainers.TestRunner.Droid.csproj.bak | 2 +- src/Web/WebMVC/Controllers/CartController.cs | 2 +- src/Web/WebMVC/Views/Catalog/_product.cshtml | 2 +- .../wwwroot/css/catalog/catalog.component.css | 6 ++++++ .../basket-status/basket-status.component.ts | 2 +- .../modules/basket/basket.component.html | 5 ++++- .../Client/modules/basket/basket.component.ts | 6 +++++- .../Client/modules/basket/basket.service.ts | 9 ++++++-- .../modules/catalog/catalog.component.html | 2 +- .../modules/catalog/catalog.component.scss | 7 +++++++ .../modules/catalog/catalog.component.ts | 21 +++++++++++++++---- 12 files changed, 52 insertions(+), 14 deletions(-) diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.Droid/eShopOnContainers.TestRunner.Droid.csproj b/src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.Droid/eShopOnContainers.TestRunner.Droid.csproj index ffa9c0b55..c9cb8a265 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.Droid/eShopOnContainers.TestRunner.Droid.csproj +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.Droid/eShopOnContainers.TestRunner.Droid.csproj @@ -16,7 +16,7 @@ Resources\Resource.Designer.cs Off True - v7.0 + v6.0 Properties\AndroidManifest.xml diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.Droid/eShopOnContainers.TestRunner.Droid.csproj.bak b/src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.Droid/eShopOnContainers.TestRunner.Droid.csproj.bak index c9cb8a265..ffa9c0b55 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.Droid/eShopOnContainers.TestRunner.Droid.csproj.bak +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.Droid/eShopOnContainers.TestRunner.Droid.csproj.bak @@ -16,7 +16,7 @@ Resources\Resource.Designer.cs Off True - v6.0 + v7.0 Properties\AndroidManifest.xml diff --git a/src/Web/WebMVC/Controllers/CartController.cs b/src/Web/WebMVC/Controllers/CartController.cs index 2396631f0..ea657ae7c 100644 --- a/src/Web/WebMVC/Controllers/CartController.cs +++ b/src/Web/WebMVC/Controllers/CartController.cs @@ -52,7 +52,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.Controllers public async Task AddToCart(CatalogItem productDetails) { - if (productDetails != null) + if (productDetails.Id != null) { var user = _appUserParser.Parse(HttpContext.User); var product = new BasketItem() diff --git a/src/Web/WebMVC/Views/Catalog/_product.cshtml b/src/Web/WebMVC/Views/Catalog/_product.cshtml index 10c372d4b..11138b55d 100644 --- a/src/Web/WebMVC/Views/Catalog/_product.cshtml +++ b/src/Web/WebMVC/Views/Catalog/_product.cshtml @@ -4,7 +4,7 @@
- +
@Model.Name diff --git a/src/Web/WebMVC/wwwroot/css/catalog/catalog.component.css b/src/Web/WebMVC/wwwroot/css/catalog/catalog.component.css index 9a84259fc..3ee2b7210 100644 --- a/src/Web/WebMVC/wwwroot/css/catalog/catalog.component.css +++ b/src/Web/WebMVC/wwwroot/css/catalog/catalog.component.css @@ -86,6 +86,8 @@ text-align: center; margin-bottom: 1.5rem; width: 33%; + display: inline-block; + float: none !important; } @media screen and (max-width: 1024px) { @@ -116,6 +118,10 @@ transition: all 0.35s; width: 80%; } + .esh-catalog-button.is-disabled { + opacity: .5; + pointer-events: none; + } .esh-catalog-button:hover { background-color: #4a760f; diff --git a/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket-status/basket-status.component.ts b/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket-status/basket-status.component.ts index 0680fefa0..5460aa3ef 100644 --- a/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket-status/basket-status.component.ts +++ b/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket-status/basket-status.component.ts @@ -24,7 +24,7 @@ export class BasketStatusComponent implements OnInit { // Subscribe to Add Basket Observable: this.basketItemAddedSubscription = this.basketEvents.addItemToBasket$.subscribe( item => { - this.service.setBasket(item).subscribe(res => { + this.service.addItemToBasket(item).subscribe(res => { this.service.getBasket().subscribe(basket => { if (basket) this.badge = basket.items.length; diff --git a/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket.component.html b/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket.component.html index 49f27191c..3dece543b 100644 --- a/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket.component.html +++ b/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket.component.html @@ -41,8 +41,11 @@
-
+
+ +
+
[ Checkout ]
diff --git a/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket.component.ts b/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket.component.ts index d07da4594..4637e93fa 100644 --- a/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket.component.ts +++ b/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket.component.ts @@ -26,7 +26,11 @@ export class BasketComponent implements OnInit { itemQuantityChanged(item: IBasketItem) { this.calculateTotalPrice(); - this.service.setBasket(this.basket); + this.service.setBasket(this.basket).subscribe(x => console.log('basket updated: ' + x)); + } + + update(event: any) { + this.service.setBasket(this.basket).subscribe(x => console.log('basket updated: ' + x)); } checkOut(event: any) { diff --git a/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket.service.ts b/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket.service.ts index 4417eaad5..b7fbb60d5 100644 --- a/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket.service.ts +++ b/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/basket/basket.service.ts @@ -55,9 +55,14 @@ export class BasketService { }); } - setBasket(item): Observable { + addItemToBasket(item): Observable { this.basket.items.push(item); - return this.service.post(this.basketUrl + '/', this.basket).map((response: Response) => { + return this.setBasket(this.basket); + } + + setBasket(basket): Observable { + this.basket = basket; + return this.service.post(this.basketUrl + '/', basket).map((response: Response) => { return true; }); } diff --git a/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/catalog/catalog.component.html b/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/catalog/catalog.component.html index dfb45bf4c..3953ef487 100644 --- a/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/catalog/catalog.component.html +++ b/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/catalog/catalog.component.html @@ -29,7 +29,7 @@ *ngFor="let item of catalog?.data"> - diff --git a/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/catalog/catalog.component.scss b/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/catalog/catalog.component.scss index bd5b292cf..663215ff6 100644 --- a/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/catalog/catalog.component.scss +++ b/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/catalog/catalog.component.scss @@ -95,6 +95,8 @@ margin-bottom: 1.5rem; text-align: center; width: 33%; + display: inline-block; + float: none !important; @media screen and (max-width: $media-screen-m) { width: 50%; @@ -121,6 +123,11 @@ transition: all $animation-speed-default; width: 80%; + &.is-disabled { + opacity: .5; + pointer-events: none; + } + &:hover { background-color: $color-secondary-darker; transition: all $animation-speed-default; diff --git a/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/catalog/catalog.component.ts b/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/catalog/catalog.component.ts index db6a4c7be..b5315fca1 100644 --- a/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/catalog/catalog.component.ts +++ b/src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/catalog/catalog.component.ts @@ -1,4 +1,6 @@ import { Component, OnInit } from '@angular/core'; +import { Subscription } from 'rxjs/Subscription'; + import { CatalogService } from './catalog.service'; import { ConfigurationService } from '../shared/services/configuration.service'; import { ICatalog } from '../shared/models/catalog.model'; @@ -7,6 +9,7 @@ import { ICatalogType } from '../shared/models/catalogType.model'; import { ICatalogBrand } from '../shared/models/catalogBrand.model'; import { IPager } from '../shared/models/pager.model'; import { BasketWrapperService} from '../shared/services/basket.wrapper.service'; +import { SecurityService } from '../shared/services/security.service'; @Component({ selector: 'esh-catalog .esh-catalog', @@ -20,17 +23,27 @@ export class CatalogComponent implements OnInit { brandSelected: number; typeSelected: number; paginationInfo: IPager; + authenticated: boolean = false; + authSubscription: Subscription; - constructor(private service: CatalogService, private basketService: BasketWrapperService, private configurationService: ConfigurationService) { } + constructor(private service: CatalogService, private basketService: BasketWrapperService, private configurationService: ConfigurationService, private securityService: SecurityService) { + this.authenticated = securityService.IsAuthorized; + } ngOnInit() { - if (this.configurationService.isReady) { + + // Configuration Settings: + if (this.configurationService.isReady) this.loadData(); - }else{ + else this.configurationService.settingsLoaded$.subscribe(x => { this.loadData(); }); - } + + // Subscribe to login and logout observable + this.authSubscription = this.securityService.authenticationChallenge$.subscribe(res => { + this.authenticated = res; + }); } loadData() {