<?php

namespace App\Jobs;

use Carbon\Carbon;
use App\Models\Entry;
use Illuminate\Bus\Queueable;
use Illuminate\Support\Collection;
use App\Connectors\DavinciPreowned;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Contracts\Queue\ShouldBeUnique;

class SyncStoryblokItem implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;



    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct(
        public Entry $entry,
        public array $mappedImportObject,
        public Collection $entryMediaCollection
    ) {
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {


        $response = (new DavinciPreowned)
            ->updateOrCreateStory($this->entry, $this->mappedImportObject);
        //Upload the media to Storyblok

        (new DavinciPreowned)->updateStoryblokMedia($entry, $response, $this->mediaFromImportFlatten);
    }
}
