<?php

class ControllerEntegrasyonTrendyol extends Controller
{
    private $markalar = array(
        "arzum", "SerenityHaven", "MİR", "ellc", "teknotrust", "MEDITERIAN", "NIDAGE",
        "Mir Eğitim ve Yazılım", "LENOVO", "Elenberg", "woodhub", "HiTech", "nikadu",
        "knittingtr", "knitpro", "easytekno", "Rose", "dede", "sunplus", "MAGBOX",
        "Globex", "Skytech", "NEXT NEXTSTAR", "Astra", "FANTOM", "Tois Baby", "ALDEBA",
        "Star", "Dede Oyuncak", "LETS GO BABY", "Mikado", "Maxword", "TCL", "DailyTech",
        "Samsung", "DailyLink", "Vestel", "Urban Sound", "Jopus", "Jameson", "Bestway",
        "arçelik", "inFace", "beko", "Stilevs", "Bosch", "Profilo", "Electrolux",
        "Siemens", "Nilfisk", "Karcher", "Intex", "grundig", "phillips", "arnica",
        "hutt", "altus", "wiami", "npo", "onvo", "singer", "rubenis", "ALTUNAY",
        "king", "Uğur", "tulip", "lykke", "babyliss"
    );
    private $brandAllowMap = [];

    private $ististaMarkalar = array("SerenityHaven", "ozbience", "nikadu", "woodhub", 'BreatheDrive', "knitpro", "Mediterian", 'ellc', "NIDAGE", "easytekno", "easy tekno", 'knitpro', 'knittingtr', "teknotrust", "tekno trust", 'easyentegre', "hall breathe", "hallbreathe", "DEKORANLA", "AboutThePerfect", "Saatistan", "noblevita", "qrnote");

    // Normalize edilmiş (trim + strtolower) marka isimleri
    private $normalizedMarkalar = array();
    private $lastPageFile = DIR_IMAGE . 'ty_last_page.txt';
    private $lastMarkaPageFile = DIR_IMAGE . 'ty_last_marka_page.txt';
    private $lastPageFileDeleteArchiveProducts = DIR_IMAGE . 'ty_last_page_archine_delete_products.txt';
    private $check419PageFile = DIR_IMAGE . 'check429.txt';
    private $totalPages = 0;

    // “Marka uyumsuz” ürünler
    private $brandMismatch = array();

    // “Güncellenmeyen” ürünler arasında product_url'de bulunan ve bulunmayan olarak ayrılmış diziler
    private $updatableOutdated = array();
    private $missingProductUrl = array();

    private $user_info = null;
    private $api_info = null;

    public function __construct($registry)
    {
        parent::__construct($registry);
        $this->reg = $registry;

        // Marka listesini normalize edelim (baş/son boşlukları temizle + UTF-8 strtolower)
        foreach ($this->markalar as $m) {
            $key = mb_strtolower(trim($m), 'UTF-8');
            if ($key !== '') {
                $this->normalizedMarkalar[$key] = true;
            }
        }
    }


    function getStealthPage($url)
    {
        $headers = [
            "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
            "Accept-Language: tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7",
            "Cache-Control: no-cache",
            "Connection: keep-alive",
            "Upgrade-Insecure-Requests: 1",
            "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
        ];

        $ch = curl_init($url);
        curl_setopt_array($ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_TIMEOUT => 20,
            CURLOPT_HTTPHEADER => $headers,
            CURLOPT_COOKIEFILE => "", // boş dosya ile cookie taklidi
        ]);
        $html = curl_exec($ch);
        curl_close($ch);

        return $html;
    }


    public function marka()
    {
        if (!STATUS) {
            return;
        }

        $ty_update_list = null;

        $this->load->model('tool/entegrasyon_api');
        $this->load->model("entegrasyon/addproduct");


        // Hata raporlama
        error_reporting(E_ALL);
        ini_set('display_errors', 1);

        if (file_exists($this->lastMarkaPageFile)) {
            $lastPage = (int)file_get_contents($this->lastMarkaPageFile);
        } else {
            $lastPage = 0;
        }

        echo 'sayfa=' . $lastPage;


        // 1) “Bir sonraki” sayfa
        $nextPage = $lastPage;

        // 2) Kullanıcı bilgileri
        $this->user_info = $this->db
            ->query(
                "SELECT * FROM `oc_user_database` ud 
             LEFT JOIN `oc_user` u 
               ON (ud.database_id = u.user_database_id) 
             WHERE ud.name = '" . $this->db->escape(USERNAME) . "'"
            )
            ->row;

        // 3) Marketplace
        $marketplace = "ty";
        $className = "Marketplace\\$marketplace";
        $this->reg->set($marketplace, new $className($this->reg));

        // 4) API info
        $this->api_info = $this->model_tool_entegrasyon_api
            ->getEntegrasyonApiInfo($marketplace, $this->user_info['database_id']);
        // $nextPage=6;
        // 5) Trendyol’dan ürünleri çekelim
        $productFilter = array(
            'itemcount' => 1000,
            'on_sale' => true,
            'barcode' => '',
            'page' => $nextPage
        );

        $apiResult = $this->getProducts($productFilter, true, false);


        if (isset($apiResult['result']['totalPages'])) {
            $this->totalPages = $apiResult['result']['totalPages'];
        } else {
            file_put_contents($this->lastMarkaPageFile, 1);
        }
        $ty_update_list = array();

        foreach ($apiResult['result']['content'] as $product) {


            if (!$this->isAllowedBrand($product['brand'])) {


                $ty_update_list[] = array(
                    'barcode' => $product['barcode'],
                    'salePrice' => 0,
                    'listPrice' => 0,
                    'quantity' => 0,
                    'brand' => $product['brand']
                );

            } else {
                // echo $product['brand'].'<br>';

            }


        }


        $api_info = $this->model_tool_entegrasyon_api->getEntegrasyonApiInfo($marketplace, $this->user_info['database_id']);
        $result = $this->{$marketplace}->update_fast($ty_update_list, $api_info);

        print_r($result);

        $writePage = $nextPage + 1;
        if (isset($this->totalPages) && $writePage > $this->totalPages) {
            $writePage = 0;
        }
        file_put_contents($this->lastMarkaPageFile, $writePage);

        // print_r($ty_update_list);

    }

    public function index()
    {
        if (!STATUS) {
            return;
        }

        $ty_update_list = null;

        $this->load->model('tool/entegrasyon_api');
        $this->load->model("entegrasyon/addproduct");

        $check429 = $this->model_entegrasyon_addproduct->check429Status();

        if ($check429 > 100) {
            echo 'çok fazla 429 hatası var bir süre bekleyeceğiz';
            return;
        }

        // Hata raporlama
        error_reporting(E_ALL);
        ini_set('display_errors', 1);

        if (file_exists($this->lastPageFile)) {
            $lastPage = (int)file_get_contents($this->lastPageFile);
        } else {
            $lastPage = 0;
        }

        // 1) “Bir sonraki” sayfa
        $nextPage = $lastPage;

        // 2) Kullanıcı bilgileri
        $this->user_info = $this->db
            ->query(
                "SELECT * FROM `oc_user_database` ud 
             LEFT JOIN `oc_user` u 
               ON (ud.database_id = u.user_database_id) 
             WHERE ud.name = '" . $this->db->escape(USERNAME) . "'"
            )
            ->row;

        // 3) Marketplace
        $marketplace = "ty";
        $className = "Marketplace\\$marketplace";
        $this->reg->set($marketplace, new $className($this->reg));

        // 4) API info
        $this->api_info = $this->model_tool_entegrasyon_api
            ->getEntegrasyonApiInfo($marketplace, $this->user_info['database_id']);

        // 5) Trendyol’dan ürünleri çekelim
        $productFilter = array(
            'itemcount' => LIMIT,
            'on_sale' => true,
            'barcode' => '',
            'page' => $nextPage
        );

        $apiResult = $this->getProducts($productFilter, true, false);


        if (isset($apiResult['result']['totalPages'])) {
            $this->totalPages = $apiResult['result']['totalPages'];
        } else {
            file_put_contents($this->lastPageFile, 1);
        }

        // --- EK: Barkod -> Marka izinli mi? Haritası (quantity override için kullanacağız)
        //  $this->brandAllowMap = $this->brandAllowMap ?? [];

        // 6) İçerik varsa dolaş
        if (
            isset($apiResult['result']['content']) &&
            is_array($apiResult['result']['content'])
        ) {
            foreach ($apiResult['result']['content'] as $product) {

                // Marka normalizasyonu (dize/obje fark etmez)
                $brandRaw = isset($product['brand']) ? $product['brand'] : null;
                if (is_array($brandRaw)) {
                    $brand = $brandRaw['name'] ?? null;
                } else {
                    $brand = $brandRaw;
                }

                $barcode = isset($product['barcode']) ? $this->db->escape($product['barcode']) : '';

                // Barkod->marka izinli mi? Haritasını doldur
                //$allowBrand = $this->isAllowedBrand($brand);
                //$this->brandAllowMap[(string)$barcode] = $allowBrand;

                // product_url tablosunda var mı?
                $query = $this->db->query(
                    "SELECT * FROM `product_url` WHERE `barcode` = '" . $barcode . "'"
                );

                if ($query->num_rows) {
                    // Güncellenebilir


                    $this->updatableOutdated[] = array(
                        'id' => $query->row['id'],
                        'barcode' => $product['barcode'],
                        'price' => isset($product['salePrice']) ? $product['salePrice'] : $query->row['sale_price'],
                        'url' => $query->row['url'],
                    );
                } else {
                    // Yoksa ve marka beyaz listede değilse, ileride quantity=0 göndereceğiz

                    if ($product['quantity'] < 10) {
                        $this->missingProductUrl[] = array(
                            'barcode' => $product['barcode'],
                            'price' => isset($product['salePrice']) ? $product['salePrice'] : 0,
                        );
                    }
                }
            }
        }


        // 7) Çakışan barkodları çıkar (opsiyonel, mevcut mantığın)
        $excludeBarcodes = array();
        foreach ($this->updatableOutdated as $item) {
            $excludeBarcodes[$item['barcode']] = true;
        }
        foreach ($this->missingProductUrl as $item) {
            $excludeBarcodes[$item['barcode']] = true;
        }

        // 8) Toplu veri çekimi
        $url_list = array();
        foreach ($this->updatableOutdated as $item) {
            $url_list[] = $item;
        }


        $bulkResults = $this->model_entegrasyon_addproduct->getProductsBulkWithRetry($url_list, 5, 2);


        foreach ($bulkResults as $index => $ty_product_info) {
            if ($ty_product_info) {
                if ($ty_product_info['httpcode'] == 200) {
                    $status = $ty_product_info['has_stock'] ? 1 : 0;

                    // product_url tablosunu güncelle
                    $this->db->query(
                        "UPDATE `product_url` 
                     SET `status` = '" . $status . "',
                         `title` = '" . $this->db->escape($ty_product_info['title']) . "',
                         `image` = '" . $this->db->escape($ty_product_info['image']) . "',
                         `update_cycle` = `update_cycle` + 1,
                         `orginal_price` = '" . (float)$ty_product_info['price'] . "',
                         `httpcode` = '" . $ty_product_info['httpcode'] . "',
                         `last_update_date` = NOW()
                     WHERE `stock_code` like '" . (int)$ty_product_info['barcode'] . "'"
                    );

                    // Fiyat & miktar
                    $calculatedPrice = $this->model_entegrasyon_addproduct->calculate_price($ty_product_info['price']);
                    if ($calculatedPrice > MAX_PRICE or $calculatedPrice < 1000) {
                        $quantity = 0;
                    } else {
                        $quantity = $ty_product_info['has_stock'] ? QUANTITY : 0;
                    }

                    if ($ty_product_info['current_price'] < MIN_PRICE) {

                        $calculatedPrice = $ty_product_info['current_price'] * 1.20;

                    }


                    $ty_update_list[] = array(
                        'barcode' => $ty_product_info['barcode'],
                        'orginal_price' => $ty_product_info['price'],
                        'salePrice' => $calculatedPrice,
                        'listPrice' => $calculatedPrice,
                        'quantity' => $quantity,
                    );

                } else if ($ty_product_info['httpcode'] == 404) {

                    $ty_update_list[] = array(
                        'barcode' => $ty_product_info['barcode'],
                        'salePrice' => 0,
                        'listPrice' => 0,
                        'quantity' => 0
                    );
                } else if ($ty_product_info['httpcode'] == 429) {


                    $this->db->query(
                        "UPDATE `product_url` 
                     SET  `httpcode` = '" . $ty_product_info['httpcode'] . "',
                         `last_update_date` = NOW()
                     WHERE `stock_code` like '" . (int)$ty_product_info['barcode'] . "'"
                    );

                }
            }
        }


        // 9) product_url'da bulunmayan ama beyaz liste dışı markalar için
        //    direkt quantity=0 (fiyatları 0) gönder
        foreach ($this->missingProductUrl as $brandMismatch) {
            $ty_update_list[] = array(
                'barcode' => $brandMismatch['barcode'],
                'salePrice' => 0,
                'listPrice' => 0,
                'quantity' => 0
            );
        }

        print_r($ty_update_list);


        $api_info = $this->model_tool_entegrasyon_api->getEntegrasyonApiInfo($marketplace, $this->user_info['database_id']);
        $result = $this->{$marketplace}->update_fast($ty_update_list, $api_info);

        print_r($result);

        $writePage = $nextPage + 1;
        if (isset($this->totalPages) && $writePage > $this->totalPages) {
            $writePage = 1;
        }
        file_put_contents($this->lastPageFile, $writePage);
    }

// --- Sınıf içine ekleyin (index()'ten ÖNCE bir yere) ---
    private function isAllowedBrand($brand)
    {
        if ($brand === null) return false;
        // Trendyol bazen brand'ı obje döndürebilir: ['name' => '...']
        if (is_array($brand)) {
            $brand = $brand['name'] ?? null;
            if ($brand === null) return false;
        }
        $norm = mb_strtolower(trim($brand), 'UTF-8');
        foreach ($this->ististaMarkalar as $b) {
            if ($norm === mb_strtolower(trim($b), 'UTF-8')) {
                return true;
            }
        }
        return false;
    }

    public function testmarka()
    {
        $brand = "BreatheDrive";
        $result = $this->isAllowedBrand($brand);
        print_r($result);

    }


    public function index_eski()
    {
        if (!STATUS) {
            return;
        }

        $ty_update_list = null;

        $this->load->model('tool/entegrasyon_api');
        $this->load->model("entegrasyon/addproduct");

        $check429 = $this->model_entegrasyon_addproduct->check429Status();

        if ($check429 > 100) {
            echo 'çok fazla 429 hatası var bir süre bekleyeceğiz';
            return;
        }


        // Hata raporlama (geliştirme aşamasında açık olabilir)
        error_reporting(E_ALL);
        ini_set('display_errors', 1);
        if (file_exists($this->lastPageFile)) {
            $lastPage = (int)file_get_contents($this->lastPageFile);
        } else {
            // Dosya yoksa 0 kabul et
            $lastPage = 0;
        }


        // -------------------------
        // 1) “Bir sonraki” sayfa numarasını hesapla
        // -------------------------
        $nextPage = $lastPage;

        // -------------------------
        // 2) Hata raporlama (geliştirme aşamasında açık olabilir)
        // -------------------------
        error_reporting(E_ALL);
        ini_set('display_errors', 1);
        // ---------------------------------------------------------------------

        // ---------------------------------------------------------------------
        // 3) Kullanıcı bilgilerini çekelim (SQL enjeksiyonunu önlemek için escape)
        // ---------------------------------------------------------------------
        $this->user_info = $this->db
            ->query(
                "SELECT * FROM `oc_user_database` ud 
                 LEFT JOIN `oc_user` u 
                   ON (ud.database_id = u.user_database_id) 
                 WHERE ud.name = '" . $this->db->escape(USERNAME) . "'"
            )
            ->row;

        // ---------------------------------------------------------------------
        // 4) Marketplace sınıfını oluşturup registry’e ekleyelim
        // ---------------------------------------------------------------------
        $marketplace = "ty";
        $className = "Marketplace\\$marketplace";
        $this->reg->set($marketplace, new $className($this->reg));

        // ---------------------------------------------------------------------
        // 5) API bilgilerini alalım
        // ---------------------------------------------------------------------
        $this->api_info = $this->model_tool_entegrasyon_api
            ->getEntegrasyonApiInfo($marketplace, $this->user_info['database_id']);

        // ---------------------------------------------------------------------
        // 6) Trendyol’dan ürünleri çekelim (örnek: 100 kayıt, sayfa 102)
        // ---------------------------------------------------------------------


        $productFilter = array(
            'itemcount' => LIMIT,
            'on_sale' => false,
            'barcode' => '',
            'page' => $nextPage
        );

        $apiResult = $this->getProducts($productFilter, true, false);


        if (isset($apiResult['result']['totalPages'])) {
            $this->totalPages = $apiResult['result']['totalPages'];

        } else {


            file_put_contents($this->lastPageFile, 1);
        }


        // ---------------------------------------------------------------------
        // 7) Dönen içerik varsa kontrol edip “farklı marka” ve “güncellenmeyen” listelerini dolduralım
        // ---------------------------------------------------------------------
        if (
            isset($apiResult['result']['content']) &&
            is_array($apiResult['result']['content'])
        ) {
            foreach ($apiResult['result']['content'] as $product) {


                $barcode = isset($product['barcode']) ? $this->db->escape($product['barcode']) : '';


                // c) product_url tablosunda barkoda göre sorgu
                $query = $this->db->query(
                    "SELECT * FROM `product_url` WHERE `barcode` = '" . $barcode . "'"
                );

                if ($query->num_rows) {
                    // Ürün product_url tablosunda mevcut → güncellenebilir

                    // $marka listede yoksa bu iterasyonu atla

                    $this->updatableOutdated[] = array(
                        'id' => $query->row['id'],
                        'barcode' => $product['barcode'],
                        'price' => isset($product['salePrice']) ? $product['salePrice'] : $query->row['sale_price'],
                        'url' => $query->row['url'],
                    );


                } else {
                    // product_url tablosunda yok → eksik olarak kaydet

                    if (!in_array($product['brand'], $this->ististaMarkalar, true)) {

                        $this->missingProductUrl[] = array(
                            'barcode' => $product['barcode'],
                            'price' => isset($product['salePrice']) ? $product['salePrice'] : 0,

                        );
                    }
                }
            }
        }


        // ---------------------------------------------------------------------
        // 7.3) “brandMismatch” içinden, “updatableOutdated” veya
        //       “missingProductUrl” içinde yer alan barkodları çıkaralım
        // ---------------------------------------------------------------------
        $excludeBarcodes = array();
        foreach ($this->updatableOutdated as $item) {
            $excludeBarcodes[$item['barcode']] = true;
        }
        foreach ($this->missingProductUrl as $item) {
            $excludeBarcodes[$item['barcode']] = true;
        }

        // ---------------------------------------------------------------------
        // 8) “updatableOutdated” ürünlerin URL’lerini alıp toplu güncelleme yapalım
        // ---------------------------------------------------------------------
        $url_list = array();


        foreach ($this->updatableOutdated as $item) {
            $url_list[] = $item;
        }


        // Çok fazla URL varsa paralel istek sayısını ayarlamak için
        $bulkResults = $this->model_entegrasyon_addproduct->getProductsBulkWithRetry($url_list, 5, 2);


        foreach ($bulkResults as $index => $ty_product_info) {
            // $item = $this->updatableOutdated[$index]; // aynı sıra korunmalı
            if ($ty_product_info) {

                if ($ty_product_info['httpcode'] == 200) {
                    $status = $ty_product_info['has_stock'] ? 1 : 0;

                    // product_url tablosunu güncelle
                    $this->db->query(
                        "UPDATE `product_url` 
                     SET `status` = '" . $status . "',
                         `title` = '" . $this->db->escape($ty_product_info['title']) . "',
                         `image` = '" . $this->db->escape($ty_product_info['image']) . "',
                         `update_cycle` = `update_cycle` + 1,
                         `orginal_price` = '" . (float)$ty_product_info['price'] . "',
                         `httpcode` = '" . $ty_product_info['httpcode'] . "',
                         `last_update_date` = NOW()
                     WHERE `stock_code` like '" . (int)$ty_product_info['barcode'] . "'"
                    );

                    // Fiyat hesaplama ve satılabilirlik
                    $calculatedPrice = $this->model_entegrasyon_addproduct->calculate_price($ty_product_info['price']);
                    if ($calculatedPrice > MAX_PRICE) {
                        $quantity = 0;
                    } else {
                        $quantity = $ty_product_info['has_stock'] ? QUANTITY : 0;
                    }

                    $ty_update_list[] = array(
                        'barcode' => $ty_product_info['barcode'],
                        'orginal_price' => $ty_product_info['price'],
                        'salePrice' => $calculatedPrice,
                        'listPrice' => $calculatedPrice,
                        'quantity' => $quantity,
                    );
                } else if ($ty_product_info['httpcode'] == 429) {


                    $this->db->query(
                        "UPDATE `product_url` 
                     SET  `httpcode` = '" . $ty_product_info['httpcode'] . "',
                         `last_update_date` = NOW()
                     WHERE `stock_code` like '" . (int)$ty_product_info['barcode'] . "'"
                    );

                }
            }
        }


        // ---------------------------------------------------------------------
        // 9) Çıktıyı oluşturup print_r ile gösterelim, ardından geri dönelim
        // ---------------------------------------------------------------------
        $output = array(
            'updatable_outdated' => $this->updatableOutdated,
            'missing_product_url' => $this->missingProductUrl
        );


        foreach ($this->missingProductUrl as $brandMismatch) {


            $ty_update_list[] = array(
                'barcode' => $brandMismatch['barcode'],
                'salePrice' => 0,
                'listPrice' => 0,
                'quantity' => 0
            );


        }


        print_r($ty_update_list);
        $api_info = $this->model_tool_entegrasyon_api->getEntegrasyonApiInfo($marketplace, $this->user_info['database_id']);
        $result = $this->{$marketplace}->update_fast($ty_update_list, $api_info);

        print_r($result);

        $writePage = $nextPage + 1;
        // Eğer bir sonraki > toplam sayfa sayısı, 1 yazarız
        if (isset($this->totalPages) && $writePage > $this->totalPages) {
            $writePage = 1;
        }
        file_put_contents($this->lastPageFile, $writePage);
        // print_r($result);


        //print_r($output);

        // JSON olarak da döndürebilirsiniz:
        /*
        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($output));
        */
    }


    public function delete_archive_products()
    {

        $this->load->model('tool/entegrasyon_api');
        $this->load->model("entegrasyon/addproduct");


        // Hata raporlama (geliştirme aşamasında açık olabilir)
        error_reporting(E_ALL);
        ini_set('display_errors', 1);
        if (file_exists($this->lastPageFileDeleteArchiveProducts)) {
            $lastPage = (int)file_get_contents($this->lastPageFileDeleteArchiveProducts);
        } else {
            // Dosya yoksa 0 kabul et
            $lastPage = 0;
        }


        // -------------------------
        // 1) “Bir sonraki” sayfa numarasını hesapla
        // -------------------------
        $nextPage = $lastPage;

        // -------------------------
        // 2) Hata raporlama (geliştirme aşamasında açık olabilir)
        // -------------------------
        error_reporting(E_ALL);
        ini_set('display_errors', 1);
        // ---------------------------------------------------------------------

        // ---------------------------------------------------------------------
        // 3) Kullanıcı bilgilerini çekelim (SQL enjeksiyonunu önlemek için escape)
        // ---------------------------------------------------------------------
        $this->user_info = $this->db
            ->query(
                "SELECT * FROM `oc_user_database` ud 
                 LEFT JOIN `oc_user` u 
                   ON (ud.database_id = u.user_database_id) 
                 WHERE ud.name = '" . $this->db->escape(USERNAME) . "'"
            )
            ->row;

        // ---------------------------------------------------------------------
        // 4) Marketplace sınıfını oluşturup registry’e ekleyelim
        // ---------------------------------------------------------------------
        $marketplace = "ty";
        $className = "Marketplace\\$marketplace";
        $this->reg->set($marketplace, new $className($this->reg));

        // ---------------------------------------------------------------------
        // 5) API bilgilerini alalım
        // ---------------------------------------------------------------------
        $this->api_info = $this->model_tool_entegrasyon_api
            ->getEntegrasyonApiInfo($marketplace, $this->user_info['database_id']);

        // ---------------------------------------------------------------------
        // 6) Trendyol’dan ürünleri çekelim (örnek: 100 kayıt, sayfa 102)
        // ---------------------------------------------------------------------
        $productFilter = array(
            'itemcount' => 100,
            'on_sale' => false,
            'barcode' => '',
            'archived' => true,
            'page' => $nextPage
        );


        $apiResult = $this->ty->get_products($productFilter, $this->api_info);


        $this->totalPages = $apiResult['result']['totalPages'];


        $barcodes = array();
        // ---------------------------------------------------------------------
        // 7) Dönen içerik varsa kontrol edip “farklı marka” ve “güncellenmeyen” listelerini dolduralım
        // ---------------------------------------------------------------------
        if (
            isset($apiResult['result']['content']) &&
            is_array($apiResult['result']['content'])
        ) {
            foreach ($apiResult['result']['content'] as $product) {


                $barcodes[] = $product['barcode'];


            }


        }


        $deleteResult = $this->ty->delete_products($barcodes, $this->api_info);


        $writePage = $nextPage + 1;
        // Eğer bir sonraki > toplam sayfa sayısı, 1 yazarız
        if (isset($this->totalPages) && $writePage > $this->totalPages) {
            $writePage = 1;
        }
        file_put_contents($this->lastPageFileDeleteArchiveProducts, $writePage);
        // print_r($result);


        //print_r($output);

        // JSON olarak da döndürebilirsiniz:
        /*
        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($output));
        */
    }


    /**
     * Trendyol’dan ürünleri çekmek için yardımcı metot.
     *
     * @param array $data ['itemcount' => int, 'page' => int]
     * @param boolean $onlyApproved Sadece onaylı ürünleri mi çekelim?
     * @param boolean $debug Debug modu (ileride kullanılabilir)
     * @return array                 API’den dönen ham cevap
     */
    public function getProducts($data = array(), $onlyApproved = true, $debug = false)
    {


        $this->load->model('entegrasyon/general');

        $itemcount = isset($data['itemcount']) ? (int)$data['itemcount'] : 20;
        $page = isset($data['page']) ? (int)$data['page'] : 1;

        $post_data = array(
            'request_data' => array(
                'itemcount' => $itemcount,
                'barcode' => $data['barcode'],
                'page' => $page,
                'approved' => $onlyApproved,
                'on_sale' => $data['on_sale']
            )
        );


        return $this->ty->get_products(
            $post_data['request_data'],
            $this->api_info
        );
    }

    /**
     * Başka yerlerde (gerektiğinde) marka kontrolü yapacak yardımcı metot.
     *
     * @param string $brand Kontrol edilecek marka ismi
     * @return bool          Eğer normalize edilmiş listede varsa true döner.
     */
    private function checkBrand($brand)
    {
        $key = mb_strtolower(trim($brand), 'UTF-8');
        return isset($this->normalizedMarkalar[$key]);
    }


}
