<?php

namespace App\Packages\Capsule\Jobs;

use App\Packages\Capsule\Models\Capsule;
use App\Packages\Capsule\Repository\CapsuleRepository;
use App\Packages\Capsule\Services\CapsuleService;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\QueueManager;
use Illuminate\Queue\SerializesModels;

/**
 * Class NotificationLike
 * @package App\Packages\User\Notifications
 */
class HatchCapsules implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     *
     */
    public function handle()
    {
        $capsules = CapsuleRepository::init()->readyToHatch(now());
        $capsules->each(function ($capsule) {

            /** @var Capsule $capsule */
            $capsuleService = new CapsuleService($capsule);
            $capsuleService->hatchCapsule();
        });

        static::dispatch()
             ->onQueue($this->queue)
             ->delay(now()->addSeconds(3));
    }
}