juice-shop

Форк
0
/
basket.service.ts 
66 строк · 2.5 Кб
1
/*
2
 * Copyright (c) 2014-2024 Bjoern Kimminich & the OWASP Juice Shop contributors.
3
 * SPDX-License-Identifier: MIT
4
 */
5

6
import { environment } from '../../environments/environment'
7
import { Injectable } from '@angular/core'
8
import { HttpClient } from '@angular/common/http'
9
import { catchError, map } from 'rxjs/operators'
10
import { type Observable, Subject } from 'rxjs'
11

12
interface OrderDetail {
13
  paymentId: string
14
  addressId: string
15
  deliveryMethodId: string
16
}
17

18
@Injectable({
19
  providedIn: 'root'
20
})
21
export class BasketService {
22
  public hostServer = environment.hostServer
23
  public itemTotal = new Subject<any>()
24
  private readonly host = this.hostServer + '/api/BasketItems'
25

26
  constructor (private readonly http: HttpClient) { }
27

28
  find (id?: number) {
29
    return this.http.get(`${this.hostServer}/rest/basket/${id}`).pipe(map((response: any) => response.data), catchError((error) => { throw error }))
30
  }
31

32
  get (id: number) {
33
    return this.http.get(`${this.host}/${id}`).pipe(map((response: any) => response.data), catchError((error) => { throw error }))
34
  }
35

36
  put (id: number, params: any) {
37
    return this.http.put(`${this.host}/${id}`, params).pipe(map((response: any) => response.data), catchError((error) => { throw error }))
38
  }
39

40
  del (id: number) {
41
    return this.http.delete(`${this.host}/${id}`).pipe(map((response: any) => response.data), catchError((error) => { throw error }))
42
  }
43

44
  save (params?: any) {
45
    return this.http.post(this.host + '/', params).pipe(map((response: any) => response.data), catchError((error) => { throw error }))
46
  }
47

48
  checkout (id?: number, couponData?: string, orderDetails?: OrderDetail) {
49
    return this.http.post(`${this.hostServer}/rest/basket/${id}/checkout`, { couponData, orderDetails }).pipe(map((response: any) => response.orderConfirmation), catchError((error) => { throw error }))
50
  }
51

52
  applyCoupon (id?: number, coupon?: string) {
53
    return this.http.put(`${this.hostServer}/rest/basket/${id}/coupon/${coupon}`, {}).pipe(map((response: any) => response.discount), catchError((error) => { throw error }))
54
  }
55

56
  updateNumberOfCartItems () {
57
    this.find(parseInt(sessionStorage.getItem('bid'), 10)).subscribe((basket) => {
58
      // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
59
      this.itemTotal.next(basket.Products.reduce((itemTotal, product) => itemTotal + product.BasketItem.quantity, 0))
60
    }, (err) => { console.log(err) })
61
  }
62

63
  getItemTotal (): Observable<any> {
64
    return this.itemTotal.asObservable()
65
  }
66
}
67

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.