import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; import { Cartdto } from '../model/Cartdto'; import { CartItem } from '../model/CartItem'; import { Orderdto } from '../model/Orderdto'; import { Products } from '../model/Products'; import { User } from '../model/User'; @Injectable({ providedIn: 'root' }) export class CartService { public cartItemList : any=[]; cartItem!:CartItem; public cartdto! : Cartdto[]; public orderdto! : Orderdto[]; public productList = new BehaviorSubject([]); order = new BehaviorSubject({}); num=new BehaviorSubject(0); num1=new BehaviorSubject(false); total=new BehaviorSubject(0); path : string = 'http://localhost:8001/api1'; constructor(private httpClient:HttpClient) { } public postCart(uid:number,pid:number):Observable{ let get_api=this.path + '/cart/'+uid+'/'+pid; this.cartItem= {}; return this.httpClient.post(get_api,this.cartItem); } public getCart(uid:number):Observable{ let get_api=this.path + '/cart/'+uid; return this.httpClient.get(get_api); } public getCartdto(uid:number):Observable{ let get_api=this.path + '/cartdto/'+uid; this.cartItem= {}; return this.httpClient.get(get_api); } public addquantity(cid:number,quantity:number):Observable{ let get_api=this.path + '/cartput/'+cid+'/'+quantity; return this.httpClient.post(get_api,this.cartItem); } public deleteCartItem(cid:number):Observable{ let api=this.path+'/cart/'+cid; return this.httpClient.delete(api); } public deleteCart(uid:number):Observable{ let api=this.path+'/usercart/'+uid; return this.httpClient.delete(api); } public getCartsum(uid:number):Observable{ let get_api=this.path + '/cartsum/'+uid; this.cartItem= {}; return this.httpClient.post(get_api,this.cartItem); } public postOrder(order:Orderdto,uid:number):Observable{ let get_api=this.path + '/order/'+uid; return this.httpClient.post(get_api,order); } public getOrder(uid:number):Observable{ let get_api=this.path + '/orderdto/'+uid; return this.httpClient.get(get_api); } public deleteOrderItem(cid:number):Observable{ let api=this.path+'/order/'+cid; return this.httpClient.delete(api); } public getordersum(uid:number,onid:number):Observable{ let get_api=this.path + '/ordersum/'+uid+'/'+onid; return this.httpClient.get(get_api); } public getordersumByUid(uid:number):Observable{ let get_api=this.path + '/orderuid/'+uid; return this.httpClient.get(get_api); } public addquantityOrder(cid:number,quantity:number):Observable{ let get_api=this.path + '/orderput/'+cid+'/'+quantity; return this.httpClient.post(get_api,this.cartItem); } getProducts() { return this.productList.asObservable(); } setProduct(product : any) { this.cartItemList.push(...product) this.productList.next(product) } addtoCart(product : any) { this.cartItemList.push(product); this.productList.next(this.cartItemList); this.getTotalPrice(); } getTotalPrice() : number{ let grandTotal = 0; this.cartItemList.map((a:any)=>{ a.total= a.price*a.quantity; grandTotal+=a.total; }) return grandTotal; } removeCartItem(product: any) { this.cartItemList.map((a:any,index:any)=>{ if(product.id===a.id) { this.cartItemList.splice(index,1); } }) } }