<?php

class MotatosBridge extends BridgeAbstract
{
    const NAME = 'Motatos / Matsmart';
    const URI = 'https://www.motatos.de/neu-im-shop';
    const CACHE_TIMEOUT = 3600; // 1h
    const DESCRIPTION = 'New articles in the Motatos / Matsmart online shop';
    const MAINTAINER = 'knrdl';
    const PARAMETERS = [[
        'region' => [
            'name' => 'Region',
            'type' => 'list',
            'title' => 'Choose country',
            'values' => [
                'Austria' => 'at',
                'Denmark' => 'dk',
                'Finland' => 'fi',
                'Germany' => 'de',
                'Sweden' => 'se',
            ],
        ],
    ]];

    public function getName()
    {
        switch ($this->getInput('region')) {
            case 'at':
                return 'Motatos';
            case 'dk':
                return 'Motatos';
            case 'de':
                return 'Motatos';
            case 'fi':
                return 'Matsmart';
            case 'se':
                return 'Matsmart';
            default:
                return self::NAME;
        }
    }

    public function getURI()
    {
        switch ($this->getInput('region')) {
            case 'at':
                return 'https://www.motatos.at/neu-im-shop';
            case 'dk':
                return 'https://www.motatos.dk/nye-varer';
            case 'de':
                return 'https://www.motatos.de/neu-im-shop';
            case 'fi':
                return 'https://www.matsmart.fi/uusimmat';
            case 'se':
                return 'https://www.matsmart.se/nyinkommet';
            default:
                return self::URI;
        }
    }

    public function getIcon()
    {
        return 'https://www.motatos.de/favicon.ico';
    }

    private function getApiUrl()
    {
        switch ($this->getInput('region')) {
            case 'at':
                return 'https://api.findify.io/v4/4359f7b3-17e0-4f74-9fdb-e6606dfed25c/smart-collection/new-arrivals';
            case 'dk':
                return 'https://api.findify.io/v4/3709426e-621a-49df-bd61-ac8543452022/smart-collection/new-arrivals';
            case 'de':
                return 'https://api.findify.io/v4/2a044754-6cda-4541-b159-39133b75386c/smart-collection/new-arrivals';
            case 'fi':
                return 'https://api.findify.io/v4/63946f89-2a82-4839-a412-883b79144f7b/smart-collection/new-arrivals';
            case 'se':
                return 'https://api.findify.io/v4/3ae86b36-a1bd-4442-a3d9-2af6845908e6/smart-collection/new-arrivals';
        }
    }

    public function collectData()
    {
        // motatos uses this api to dynamically load more items on page scroll
        $json = getContents($this->getApiUrl() . '?t_client=0&user={%22uid%22:%220%22,%22sid%22:%220%22}');
        $jsonFile = json_decode($json, true);

        foreach ($jsonFile['items'] as $entry) {
            $item = [];
            $item['uid'] = $entry['custom_fields']['uuid'][0];
            $item['uri'] = $entry['product_url'];
            $item['timestamp'] = $entry['created_at'] / 1000;
            $item['title'] = $entry['title'];
            $item['content'] = <<<HTML
            <h1>{$entry['title']}</h1>
            <img src="{$entry['image_url']}" />
            <p>{$entry['price'][0]}€</p>
            HTML;
            $this->items[] = $item;
        }
    }
}