2017-08-23 11:06:50 +02:00
|
|
|
import { Component, OnInit } from '@angular/core';
|
|
|
|
import { Router } from '@angular/router';
|
2016-11-23 09:11:09 +01:00
|
|
|
|
2017-08-22 18:03:12 +02:00
|
|
|
import 'rxjs/Rx';
|
|
|
|
import { Observable } from 'rxjs/Observable';
|
|
|
|
import 'rxjs/add/observable/throw';
|
|
|
|
|
2017-08-23 11:06:50 +02:00
|
|
|
import { BasketService } from './basket.service';
|
|
|
|
import { IBasket } from '../shared/models/basket.model';
|
|
|
|
import { IBasketItem } from '../shared/models/basketItem.model';
|
2016-12-28 09:07:12 +01:00
|
|
|
import { BasketWrapperService } from '../shared/services/basket.wrapper.service';
|
2016-11-23 09:11:09 +01:00
|
|
|
|
|
|
|
@Component({
|
2016-12-28 16:31:24 +01:00
|
|
|
selector: 'esh-basket',
|
2016-11-23 09:11:09 +01:00
|
|
|
styleUrls: ['./basket.component.scss'],
|
|
|
|
templateUrl: './basket.component.html'
|
|
|
|
})
|
|
|
|
export class BasketComponent implements OnInit {
|
2017-08-22 18:03:12 +02:00
|
|
|
errorMessages: any;
|
2016-11-23 09:11:09 +01:00
|
|
|
basket: IBasket;
|
|
|
|
totalPrice: number = 0;
|
2016-12-28 09:07:12 +01:00
|
|
|
|
2016-12-28 09:30:31 +01:00
|
|
|
constructor(private service: BasketService, private router: Router, private basketwrapper: BasketWrapperService) { }
|
2016-11-23 09:11:09 +01:00
|
|
|
|
|
|
|
ngOnInit() {
|
2016-11-24 15:31:33 +01:00
|
|
|
this.service.getBasket().subscribe(basket => {
|
|
|
|
this.basket = basket;
|
|
|
|
this.calculateTotalPrice();
|
2016-11-23 09:11:09 +01:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
itemQuantityChanged(item: IBasketItem) {
|
|
|
|
this.calculateTotalPrice();
|
2017-01-11 12:23:05 +01:00
|
|
|
this.service.setBasket(this.basket).subscribe(x => console.log('basket updated: ' + x));
|
|
|
|
}
|
|
|
|
|
2017-08-23 11:06:50 +02:00
|
|
|
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;
|
2016-12-28 09:07:12 +01:00
|
|
|
}
|
|
|
|
|
2016-12-28 12:37:46 +01:00
|
|
|
checkOut(event: any) {
|
2017-08-23 11:06:50 +02:00
|
|
|
this.update(event)
|
|
|
|
.subscribe(
|
|
|
|
x => {
|
|
|
|
this.errorMessages = [];
|
|
|
|
this.basketwrapper.basket = this.basket;
|
|
|
|
this.router.navigate(['order'],
|
|
|
|
errMessage => this.errorMessages = errMessage.messages);
|
|
|
|
});
|
2016-11-23 09:11:09 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
private calculateTotalPrice() {
|
2016-12-28 14:47:51 +01:00
|
|
|
this.totalPrice = 0;
|
2016-11-24 15:31:33 +01:00
|
|
|
this.basket.items.forEach(item => {
|
2016-12-29 18:21:02 +01:00
|
|
|
this.totalPrice += (item.unitPrice * item.quantity);
|
2016-11-23 09:11:09 +01:00
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|