import { HttpClient, HttpParams } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { IBrand } from '../shared/models/brand'; import { IPagination } from '../shared/models/pagination'; import { IType } from '../shared/models/producttype'; import { map } from 'rxjs/operators' import { ShopParams } from '../shared/models/shopparams'; import { IProduct } from '../shared/models/product'; @Injectable({ providedIn: 'root' }) export class ShopService { baseURL = 'https://localhost:5001/api/' constructor(private http: HttpClient) { } getProducts(shopParams: ShopParams){ let params = new HttpParams(); if (shopParams.brandId !== 0){ params = params.append('brandId', shopParams.brandId.toString()); } if(shopParams.typeId !== 0){ params = params.append('typeId', shopParams.typeId.toString()); } if (shopParams.search){ params = params.append('search', shopParams.search); } params = params.append('sort', shopParams.sort); params = params.append('pageIndex', shopParams.pageNumber.toString()); params = params.append('pageIndex', shopParams.pageSize.toString()); return this.http.get(this.baseURL + 'products', {observe: 'response', params}) .pipe( map(response => { return response.body; }) ); } getProduct(id: number){ return this.http.get(this.baseURL + 'products/' + id); } getBrands(){ return this.http.get(this.baseURL + 'products/brands'); } getTypes(){ return this.http.get(this.baseURL + 'products/types'); } }