<?php

namespace Database\Seeders;

use App\Photo;
use Illuminate\Database\Seeder;

class AssignPhoto extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $this->getRow(75, 4000);

        /*$path = "/var/www/html/ai/public/uploads/colors/task/";
        for ($i = 1; $i <= 34; $i++) {
            $folderName = str_pad($i, 4, 0, STR_PAD_LEFT);
            if (file_exists($path . $folderName)) {
                shell_exec("cd /var/www/html/ai/public/uploads/colors/task && rm -rf " . $folderName);
            }
            print_r($folderName . "\r\n");
        }*/

        /*$path = "/var/www/html/ai/public/uploads/colors/task/";
        for ($i = 35; $i <= 74; $i++) {
            $folderName = str_pad($i, 4, 0, STR_PAD_LEFT);
            if (file_exists($path . $folderName)) {
                shell_exec("cd /var/www/html/ai/public/uploads/colors/task && zip -r " . $folderName . ".zip " . $folderName . "/");
            }
            print_r("http://ai.gxo.co.jp/uploads/colors/task/" . $folderName . ".zip\r\n");
        }*/

        //Remove
        /*$path = "/var/www/html/ai/public/uploads/colors/task/";
        for ($i = 35; $i <= 74; $i++) {
            $folderName = str_pad($i, 4, 0, STR_PAD_LEFT);
            if (file_exists($path . $folderName)) {
                shell_exec("cd /var/www/html/ai/public/uploads/colors/task && rm -rf " . $folderName . " && rm -rf " . $folderName . ".zip");
                print_r("Removed: " . $folderName . "\r\n");
            }
        }*/

        //Unzip
        /*$path = "/media/duyliemapt/DATA2/11___ai_images_result/task/";
        for ($i = 36; $i <= 74; $i++) {
            $folderName = str_pad($i, 4, 0, STR_PAD_LEFT);
            if (file_exists($path . $folderName . ".zip")) {
                shell_exec("cd " . $path . " && unzip " . $folderName . ".zip");
                print_r("Unzip: " . $folderName . ".zip\r\n");
            }
        }*/
    }

    public function getRow($startFolderCount = 1, $limit = 100) {
        $originPath = public_path('uploads/files/aws/');
        $taskPath = public_path('uploads/colors/task/');
        $resultPath = null;
        $validFolder = true;

        do {
            $folderName = str_pad($startFolderCount, 4, 0, STR_PAD_LEFT);

            if (file_exists($taskPath . $folderName)) {
                $startFolderCount++;
                $validFolder = false;
            } else {
                mkdir($taskPath . $folderName, 0775);
                $resultPath = $taskPath . $folderName . "/";
                $validFolder = true;
            }
        } while (!$validFolder);

        print "New Folder Task: " . $resultPath . "\r\n";

        $photos = Photo::where('rs_status', 1)
            ->whereNotNull('file_url')
            ->where('id', '<', 7877)
            ->limit($limit)
            ->orderBy('id', 'DESC')
            ->get();

        $log = '"No.", "ID", "Origin"' . "\r\n";
        $countRow = 1;
        foreach ($photos as $key => $photo) {
            copy($originPath . $photo->file_url, $resultPath . $photo->id . ".jpeg");

            $log .= '"' . $countRow . '", "' . $photo->id . '", "' . $photo->file_url . '"' . "\r\n";
            print  "[" . $countRow . "] " . $photo->file_url . "\r\n";

            if (($countRow % 100) == 0) {
                file_put_contents($resultPath . "ids.csv", $log);
                $log = '"No.", "ID", "Origin"' . "\r\n";

                $startFolderCount++;
                $folderName = str_pad($startFolderCount, 4, 0, STR_PAD_LEFT);
                mkdir($taskPath . $folderName, 0775);
                $resultPath = $taskPath . $folderName . "/";
            }

            $countRow++;
        }

        file_put_contents($resultPath . "ids.csv", $log);
    }
}
