import { Injectable, Inject, PLATFORM_ID } from '@angular/core'
import { isPlatformBrowser } from '@angular/common'
import { HttpClient } from '@angular/common/http'

import { HelperService } from '@k-services/svc.helper'
import { BasketService } from '@k-services/svc.basket'
import { map } from 'rxjs/operators'



@Injectable()
export class BasketHelperService {


    attributeOrderMap = new Map

    constructor(
        private _helper: HelperService,
        private _basketService: BasketService,
        private _http: HttpClient
    ) {

    }


    setAttributeOrderMap(content) {
        this.attributeOrderMap = content
    }

    /**
     * Returns SKU Image based on the options sent to the element
     * 
     * @param options 
     */
    getSkuImage(options) {

        for(let key of Object.keys(options)) {
            
            let element = options[key]

            if(element.code == 'image')
                return element.value
        }
    }

    /**
     * Gets the sort order of attributes
     * 
     * @param code 
     */
    getOrder(code) {

        if(this.attributeOrderMap.has(code))
            return this.attributeOrderMap.get(code)
        else
            return 99
    }

    /**
     * Disables product by class, then removes it from checkout page
     * @param id: string
     */
    removeProduct(id) {
        this._basketService.removeProductFromBasket(id)
    }

    /**
     * Get product price and price_tiers based on item sku
     * 
     * @param item 
     */
    getPricesAndTiers(item) {

        return this._http.get(this._helper.server + 'feed/get/product' + this._helper.credentials + '&sku='+ item +'&fields:price,price_tiers' + '&noLocale')
            .pipe(
                map((response: any) => {
                    return response.data.product
                })
            )
    }
}