PLAINCONCEPTS\lruiz 8d14869ca0 Fix bug #259
2017-08-23 11:06:50 +02:00

67 lines
2.1 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import 'rxjs/Rx';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/throw';
import { BasketService } from './basket.service';
import { IBasket } from '../shared/models/basket.model';
import { IBasketItem } from '../shared/models/basketItem.model';
import { BasketWrapperService } from '../shared/services/basket.wrapper.service';
@Component({
selector: 'esh-basket',
styleUrls: ['./basket.component.scss'],
templateUrl: './basket.component.html'
})
export class BasketComponent implements OnInit {
errorMessages: any;
basket: IBasket;
totalPrice: number = 0;
constructor(private service: BasketService, private router: Router, private basketwrapper: BasketWrapperService) { }
ngOnInit() {
this.service.getBasket().subscribe(basket => {
this.basket = basket;
this.calculateTotalPrice();
});
}
itemQuantityChanged(item: IBasketItem) {
this.calculateTotalPrice();
this.service.setBasket(this.basket).subscribe(x => console.log('basket updated: ' + x));
}
update(event: any): Observable<boolean> {
let setBasketObservable = this.service.setBasket(this.basket);
setBasketObservable
.subscribe(
x => {
this.errorMessages = [];
console.log('basket updated: ' + x);
},
errMessage => this.errorMessages = errMessage.messages);
return setBasketObservable;
}
checkOut(event: any) {
this.update(event)
.subscribe(
x => {
this.errorMessages = [];
this.basketwrapper.basket = this.basket;
this.router.navigate(['order'],
errMessage => this.errorMessages = errMessage.messages);
});
}
private calculateTotalPrice() {
this.totalPrice = 0;
this.basket.items.forEach(item => {
this.totalPrice += (item.unitPrice * item.quantity);
});
}
}