<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;

class Photo extends Model
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'album_id',
        'name',
        'description',
        'file_name',
        'mime_type',
        'file_size',
        'metadata_version',
        'taken_at',
        'camera_make',
        'camera_model',
        'camera_software',
        'width',
        'height'
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
    ];

    public function album()
    {
        return $this->belongsTo(Album::class);
    }

    public function thumbnailUrl($thumbnailName = null)
    {
        /** @var Album $album */
        //$album = Album::where('id', $this->album_id)->first();
        $album = $this->album;
        $albumSource = $album->getAlbumSource();

        return $album->getAlbumSource()->getUrlToPhoto($album, $this, $thumbnailName);
    }

    public function url()
    {
        return route('viewPhoto', [
            'albumUrlAlias' => $this->album->url_alias,
            'photoFilename' => $this->file_name
        ]);
    }
}