import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; import { Observable } from 'rxjs'; import { environment } from '../../environments/environment'; import { HttpClient } from '@angular/common/http'; @Injectable({ providedIn: 'root' }) export class CartService { constructor(private httpClient: HttpClient) { } public itemsInCartSource = new BehaviorSubject(localStorage.getItem('cartItems')); public taxGroupSourceBS: BehaviorSubject = new BehaviorSubject([{}]); public taxGroupData = this.taxGroupSourceBS.asObservable(); public taxSlabSourceBS: BehaviorSubject = new BehaviorSubject([{}]); public taxSlabData = this.taxSlabSourceBS.asObservable(); public isWalletAmountUsedSource = new BehaviorSubject(false); public usedWalletAmountSource = new BehaviorSubject(0); setIsWalletAmountUsed(item: boolean) { this.isWalletAmountUsedSource.next(item); } getIsWalletAmountUsed() :Observable { return this.isWalletAmountUsedSource.asObservable(); } setUsedWalletAmount(item: number) { this.usedWalletAmountSource.next(item); } getUsedWalletAmount() :Observable { return this.usedWalletAmountSource.asObservable(); } setItemsInCart(items: string) { this.itemsInCartSource.next(items); } getSum(array,attribute) { var total = 0 for (var i = 0; i < array.length; i++) { total += array[i][attribute]; } return total; } getItemsInCart() :Observable { return this.itemsInCartSource.asObservable(); } taxGroupDatafn(value: any) { this.taxGroupSourceBS.next(value); } taxSlabDatafn(value: any) { this.taxSlabSourceBS.next(value); } updateItemsInCart(product,operationType) { let itemsInCart = JSON.parse(localStorage.getItem('cartItems')); itemsInCart.find(cartItem => { if (cartItem.item_id === product.item_id && cartItem.variant_id === product.variant_id) { if(operationType === "decrement") cartItem.numItems = cartItem.numItems-1; else cartItem.numItems = cartItem.numItems+1; cartItem.totalDiscountPrice = cartItem.discount_price*cartItem.numItems; cartItem.totalSalesPrice = cartItem.sales_price*cartItem.numItems; } }) itemsInCart = itemsInCart.filter(cartItem => cartItem.numItems>0); localStorage.cartItems = JSON.stringify(itemsInCart); this.setItemsInCart(JSON.stringify(itemsInCart)) } checkout(data) { return this.httpClient.post(`${environment.apiUrl}/api/v1/customers/customer_payment/checkout`,data); } }