<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use ImageCross;

class MappingID extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $resultFolder = "0031";
        $path = public_path('uploads/colors/');

        //Rename
        /*$this->renameFiles("0022");
        $this->renameFiles("0023");
        $this->renameFiles("0024");
        $this->renameFiles("0025");
        $this->renameFiles("0026");*/

        //get by package 100 images
        //$this->getListImagePackage(["0021", "0022", "0023", "0024", "0025", "0026", "0027", "0028"]);
        //$this->getListImagePackage(["0022"]);
        $this->getListImagePackage(["0028"]);


        /*
        $startId = 1535;
        $stopId = 2449;
        $content = "";
        $logFile = $path . "list.txt";

        $list = glob($path . "1535-2449/*.PNG");
        foreach ($list as $item) {
            $content .= basename($item) . "|" . $startId . "|1\r\n";
            $startId++;
            print "Item: " . $item . "\r\n";
        }

        file_put_contents($logFile, "");
        file_put_contents($logFile, $content);*/


        //Convert JPG to PNG
        /*$list = glob($path . $resultFolder . "/*.JPG");
        $countName = 1;
        foreach ($list as $item) {
            $newFile = str_replace(basename($item), $countName . ".png", $item);
            ImageCross::make($item)->orientate()->save($newFile);
            print("Converted: " . $item . "     => [" . basename($newFile) . "]\r\n");
            $countName++;
        }*/


        //Quy
        /*$startId = 4928;
        $content = "";
        $logFile = $path . "list.txt";
        $count = 1;

        $list = glob($path . $resultFolder . "/*.PNG");
        foreach ($list as $item) {
            $content .= basename($item) . "|" . $startId . "|1\r\n";
            $startId++;
            print "Item: " . $item . "\r\n";
            $count++;
        }

        file_put_contents($logFile, "");
        file_put_contents($logFile, $content);*/


        //Nguyet
        /*$startId = 4341;
        $content = "";
        $logFile = $path . "list.txt";
        $count = 1;

        $list = glob($path . $resultFolder . "/*.PNG");
        foreach ($list as $item) {
            $content .= basename($item) . "|" . $startId . "|1\r\n";
            $startId++;
            print "Item: " . $item . "\r\n";
            $count++;
        }

        file_put_contents($logFile, "");
        file_put_contents($logFile, $content);*/


        //change position
        /*$content = "";
        $lFile = fopen($logFile, "r+");
        while (!feof($lFile)) {
            $line = fgets($lFile);
            $line = str_replace("\r\n", "", $line);
            if ($line == "") continue;

            $lineArr = explode("|", $line);
            $content .= $lineArr[0] . "|" . $startId . "|1\r\n";
            print "Item: " . $lineArr[0] . "|" . $startId . "|1\r\n";

            $startId++;
        }

        fclose($lFile);
        file_put_contents($logFile, "");
        file_put_contents($logFile, $content);*/


        //moving imported files
        /*$importedFile = $path . "imported.txt";
        $originFolder = $path . $resultFolder . "/";
        $importedFolder = $path . $resultFolder . "/imported/";

        $fileHandle = fopen($importedFile, "r+");
        while (!feof($fileHandle)) {
            $line = fgets($fileHandle);
            $line = str_replace("\r\n", "", $line);
            if ($line == "") continue;

            $lineArr = explode("|", $line);
            $fileName = $lineArr[0];

            if (file_exists($originFolder . $fileName)) {
                rename($originFolder . $fileName, $importedFolder . $fileName);
                print($fileName . "\r\n");
            }
        }
        fclose($fileHandle);*/
    }

    public function renameFiles($resultFolder) {
        if ($resultFolder == null || $resultFolder == "") return false;

        print("============  Start rename folder [" . $resultFolder . "] ============\r\n");
        $pathRs = public_path('uploads/colors/');
        $list = glob($pathRs . $resultFolder . "/*.PNG");
        $countName = 1;
        foreach ($list as $item) {
            $newFile = str_replace(basename($item), "IMG_" . str_pad($countName, 4, 0, 0) . ".PNG", $item);
            rename($item, $newFile);
            print("Converted: " . $item . "     => [" . basename($newFile) . "]\r\n");
            $countName++;
        }
    }

    public function getListImagePackage($resultFolderList = []) {
        $path = public_path('uploads/colors/');

        foreach ($resultFolderList as $resultFolder) {
            $idsFile = $path . $resultFolder . "/ids.csv";
            $logFile = $path . $resultFolder . "/list.txt";

            $list = glob($path . $resultFolder . "/*.PNG");
            $images = [];
            foreach ($list as $item) {
                $images[] = [
                    'id'     => '',
                    'name'   => basename($item),
                    'status' => 1,
                ];
            }

            $content = "";
            $idx = 0;
            $isFirstLine = true;
            $fileHandle = fopen($idsFile, "r+");
            while (!feof($fileHandle)) {
                $line = fgetcsv($fileHandle);
                if ($isFirstLine) {
                    $isFirstLine = false;
                    continue;
                }

                if (is_array($line) && $line != null && count($line) > 0 && isset($line['1']) && isset($images[$idx])) {
                    $content .= $images[$idx]['name'] . "|" . $line['1'] . "|1\r\n";
                    print "[" . $idx . "] Item: " . $images[$idx]['name'] . "|" . $line['1'] . "\r\n";
                    $idx++;
                }
            }
            fclose($fileHandle);
            file_put_contents($logFile, "");
            file_put_contents($logFile, $content);
        }
    }
}
