<?php

namespace Rvsitebuilder\Wysiwyg\Listeners;

use Rvsitebuilder\Core\Models\CoreSlug;
use Rvsitebuilder\Wysiwyg\Events\AfterSave;

class SaveThumbAndFeatureImg
{
    /**
     * Create the event listener.
     */
    public function __construct()
    {
    }

    /**
     * Handle the event.
     *
     * @param \Rvsitebuilder\Wysiwyg\Events\AfterSave $event
     */
    public function handle(AfterSave $event)
    {
        $data = $event->data['global_post'];

        if ($data && isset($data['slug_id']) && isset($data['first_img'])) {
            /*
             * get first image
             * เอา first image ไป save ตาม colection และ ขนาดที่กำหนด
             * function ที่ใช้ resize และ save trump,share image จะอยู่ใน /rvsitebuildercms/Modules/Blog/Entities/BlogPost.php@registerMediaConversions
             * รูปภาพจะถูกเก็บที่ /var/www/html/storage/transform/[trumbnail,featured]/[1...n]แยกตามid ใน table model/[conversions]ถ้ามี/[colection]ที่สร้างขึ้น
             * ถ้ากำหนดขนาดใหญ่กว่าภาพ original image จะ save ขนาด original image จะไม่ยืดขยายภาพ
             * ถ้ากำหนดขนาด ทั้ง w และ h จะคำนวณหาขนาดเป็นไปได้ และ เล็กที่สุด
             * เช่น
             * ภาพขนาด 1000x500 กำหนดขนาดใหม่เป็น 400x100 ทั้ง w และ h ไม่เกิน original จะปรับขนาดใหม่ อิงตาม h ส่วน w ตามสเกล 400 200
             * ภาพขนาด 1000x500 กำหนดขนาดใหม่เป็น 500x500 ทั้ง w และ h ไม่เกิน original จะปรับขนาดใหม่ อิงตาม y ส่วน h ตามสเกล 500x250
             */
            $slug = CoreSlug::find($data['slug_id']);
            $post = $slug->slugble;
            $media = $post->getMedia();
            // เคยมีแล้ว ใช้วิธี delete id เก่า และสร้าง id ใหม่ ปัจจุบันยังไม่มีให้สามารถ update ได้
            // https://github.com/spatie/laravel-medialibrary/issues/762 , https://github.com/spatie/laravel-medialibrary/issues/609
            if (isset($media[0]) && $media[0]->getUrl()) {
                $media[0]->delete();
            }

            // for trumb img
            $media = $post->addMediaFromUrl($data['first_img'])->withCustomProperties(['thumbnail' => true])->toMediaCollection();

            /*
             * //TODO ไปทำตอนจะ share
             * //for featured img (facebook and etc.)
             * //get img size
             * //width ระหว่าง 1200 - 200 คูณด้วย .524 จะได้ size พอดีกับที่จะใช้ แชร์
             * //ต้อง crop img ด้วย ->fit('crop',$width,$high);
             * //loop while
             * list($width,$high) = getimagesize($firstImg);
             */
            $response['savethumb']['status'] = 'success';
            $response['savethumb']['msg'] = 'Save Thumb Success';

            return $response;
        }
    }
}
