import fetch from "node-fetch";
import WM from "./index";

interface Variant {
    id: number;
    slug: string;
    values: Array<{ id: number }>;
}

interface ProductVariant {
    id: number;
    sku: string,
    variants: number[];
    price: number;
    high_price: number;
}

interface Galleries {
    [key: number]: string[];
}

interface FetchDataResult {
    variants: Variant[];
    productVariants: ProductVariant[];
    galleries: Galleries;
}

async function fetchData(productId: number): Promise<FetchDataResult> {
    const variantResponse = await fetch(`https://sku-api.test.megaads.vn/v2/variant/${productId}?ignore_localization=1`);
    const variantDataJson = await variantResponse.json() as { result: { variants: Variant[], productVariants: ProductVariant[] } };

    const variants = variantDataJson.result.variants;
    const productVariants = variantDataJson.result.productVariants;

    const galleryResponse = await fetch(`https://sku-api.test.megaads.vn/gallery/${productId}?ignore_localization=1`);
    const galleriesDataJson = await galleryResponse.json() as { result: Galleries };
    const galleries = galleriesDataJson.result;

    return { variants, productVariants, galleries };
}

async function getDetails(productId: number, productSkuId: number): Promise<void> {
    const { variants, productVariants, galleries } = await fetchData(productId);

    const variantsService = WM.initVariants({
        variants: variants,
        productVariants: productVariants,
        galleries: galleries
    });
    const retVal = variantsService.getProductSkuDetail(productSkuId);
    console.log(JSON.stringify(retVal));
}

getDetails(158287360, 3408937481).then(() => {});

function getCdnUrl(url: string): void {
    const imagesWM = WM.initImages({
        baseCdnUrl: 'https://cdn.printerval.com'
    })

    console.log(imagesWM.getImageCdn(url, 960, 960, false, false, {}));

}

getCdnUrl('https://assets.printerval.com/seller/2024/02/15/womens-espresso-martini-drinking-coffee-lovers-cocktail-bartender-v-neck-t-shirt-15f0742d17528a2355b987d587766f8b.png');

// format price
function getPrice(): void {
    const priceService = WM.initPrice({
        currencyUnit: 'USD'
    });

    console.log(priceService.formatPrice(1000000));
}

getPrice();

// print location
const printLocationsService = WM.initPrintLocations([
    {
        "id": 1,
        "name": "Front",
        "value": "front"
    },
    {
        "id": 2,
        "name": "Chest",
        "value": "chest"
    },
    {
        "id": 3,
        "name": "Back",
        "value": "back"
    },
    {
        "id": 4,
        "name": "Chest & Back",
        "value": "chest_back"
    }
], 'us');
// get additional price
console.log(printLocationsService.getAdditionalPrice('chest_back', 7, 10));
// decor galleries
console.log(printLocationsService.getGalleries(['https://cdn.printerval.com/image/t-shirts-men-heavyweight-t-shirt-1,black,print-2024-01-10_61ea1b01-5f99-46d1-ba76-17ddb8e712a5,2d2d2d.jpeg'], 'chest'));