<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Storage;

class Picture extends Model
{
    //
    protected $fillable = ['path', 'cache', 'item_id', 'real_name', 'mime_type', 'size','updated_at'];
    protected $guarded = ['id'];
    public $timestamps = true; // для seeder дожна быть public
    protected $attributes = [
//        'id' => '',
//        'path' => '',
//        'cache' => '',
//        'item_id' => '',
//        'real_name' => '',
//        'mime_type' => '',
    ];

    public static function fromRequest(Item $item = null) // скорее всего должно приходить два объекта Item & Files[]
    {
        $pictures = collect();
        $itemId = ($item) ? $item->id : Input::get('id');
        $dirName = '/items/item_' . $itemId;
        foreach (Input::file() as $files) {
            if (is_array($files) && $itemId) {
//                Storage::deleteDirectory($dirName);  // нужно ли удалять папку перед сохранением или обновлением?
                // удаление старых записей из базы
                Picture::where('item_id', $itemId)->delete();
                // --------------
                foreach ($files as $key => $file) {
                    $picture = new self([
                        'path' => Storage::putFile($dirName, $file),
//                        'cache' =>  // file caching code
                        'item_id' => $itemId,
                        'real_name' => $file->getClientOriginalName(),
                        'mime_type' => $file->getClientOriginalExtension(),
                        'size' => $file->getSize()
                    ]);
                    $picture->save();
                    $pictures->$key = $picture;
                }
//                return true;
            }
        }
        return $pictures;
    }

    public function item()
    {
        return $this->belongsTo(Item::class);
//        return $this->hasOne(Item::class);
    }

}
