<?php

namespace App\Providers;

use Illuminate\Support\Facades\Log;
use Illuminate\Support\ServiceProvider;
use Illuminate\Foundation\Bus\DispatchesJobs;

use App\Models\{Photo,Video};
use App\Jobs\{PhotoMove,VideoMove};

class AppServiceProvider extends ServiceProvider
{
    use DispatchesJobs;

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
		// Any photo saved, queue it to be moved.
		Photo::saved(function($photo) {
			if ($photo->scanned AND ! $photo->duplicate AND ! $photo->remove AND ($x=$photo->moveable()) === TRUE) {
				Log::info(sprintf('%s: Need to Move [%s]',__METHOD__,$photo->id.'|'.serialize($x)));

				$this->dispatch((new PhotoMove($photo))->onQueue('move'));
			}
		});

		// Any video saved, queue it to be moved.
		Video::saved(function($video) {
			if ($video->scanned AND ! $video->duplicate AND ! $video->remove AND ($x=$video->moveable()) === TRUE) {
				Log::info(sprintf('%s: Need to Move [%s]',__METHOD__,$video->id.'|'.serialize($x)));

				$this->dispatch((new VideoMove($video))->onQueue('move'));
			}
		});
    }
}