<?php

use App\Events\SaveDataEvent;
use Illuminate\Database\Seeder;
use App\Media;
use App\Seo;
use App\Fortuneteller;
use App\SliderDetail;

class MediaThumb extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $ignores = ['no-image.png', 'blank.png'];
        $filePath = public_path('uploads/files/');
        exec("cd " . public_path("uploads/files") . " && rm -rf *.webp && rm -rf *_* ");

        //Generate Teller Thumb
        $listTeller = Fortuneteller::where('is_deleted', false)->get();
        foreach ($listTeller as $item) {
            $avatar = $item->avatar;
            if (!file_exists($filePath . $avatar)) continue;
            try {
                $this->genThumb($avatar, 60, 60);
                $this->genThumb($avatar, 205, 205);
                $this->genThumb($avatar, 260, 356);
                $this->genThumb($avatar, 100, 60);
                $this->genThumb($avatar, 'auto', 260);
            } catch (Exception $exception) {
                print $exception->getMessage();
            }
        }

        try {
            $this->genThumb("no-image.png", 60, 60);
            $this->genThumb("no-image.png", 205, 205);
            $this->genThumb("no-image.png", 260, 356);
            $this->genThumb("no-image.png", 100, 60);
            $this->genThumb("no-image.png", 'auto', 260);
        } catch (Exception $exception) {
            print $exception->getMessage();
        }

        //Generate Slider Thumb
        $sliders = SliderDetail::all();
        foreach ($sliders as $item) {
            $image = $item->image;
            if (!file_exists($filePath . $image)) continue;
            try {
                $this->genThumb($image, 170, 230);
                $this->genThumb($image, 90, 50);
            } catch (Exception $exception) {
                print $exception->getMessage();
            }
        }

        print "============================================================================\r\n";

        //Generate Webp Image
        $this->call(ConvertImage::class);
    }

    private function fileExtension($s)
    {
        $n = strrpos($s, ".");
        return ($n === false) ? "" : substr($s, $n + 1);
    }

    private function genThumb($fileName, $width, $height) {
        $filePath = public_path('uploads/files/');
        $key = "87252hahagawbj";

        $extension = "." . $this->fileExtension($fileName);
        $baseName = basename($fileName);
        $baseName = str_replace($extension . $key, "", $baseName . $key);
        $nameFile = $baseName . "_" . $width . "x" . $height . $extension;

        $imgCross = ImageCross::make($filePath . $fileName)->orientate();
        if ($width == "auto" && is_numeric($height)) {
            $imgCross->fit(null, $height, function ($constraint) {
                $constraint->upsize();
            })->save($filePath . $nameFile);
        } else if ($height == "auto" && is_numeric($width)) {
            $imgCross->fit($width, null, function ($constraint) {
                $constraint->upsize();
            })->save($filePath . $nameFile);
        } else {
            $imgCross->fit($width, $height, function ($constraint) {
                $constraint->upsize();
            })->save($filePath . $nameFile);
        }

        print "[Thumbnail] " . $nameFile . "\r\n";
    }
}
