<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Lab extends Model
{
    /**
     * Don't auto-apply mass assignment protection.
     *
     * @var array
     */
    protected $guarded = [];

    protected $table = 'labs';

    // also fillable
    protected $fillable = [
        'name',
//        'forum_channels_id',
        'description',
        'icon_path',
        'user_limit',
        'read_only'
    ];
    //
    public function members()
    {
        return $this->belongsToMany('App\Models\Auth\User', 'users_labs', 'lab_id', 'user_id')->withPivot(['admin', 'lab_id','moderator'])->withTimestamps();
    }

    public function admins(){
        return $this->belongsToMany('App\Models\Auth\User', 'users_labs', 'lab_id', 'user_id')->wherePivot('admin', 'true');
    }

    public function scopeLabAdmins(){
        return $this->members->wherePivot(['admin'=>true,'lab_id'=>$this->id])->get();
    }

    public function boards(){
        return $this->hasMany('App\Models\Boards\Board', 'lab_id');
    }

    public function forums(){
        return $this->hasMany('App\Models\Forums\ForumChannel', 'lab_id', 'id');
    }

    // get the ID of the baseline
    public function getAnnouncementForumIDAttribute()
    {
        $data = $this->forums->where('is_announcement_forum', '=', '1')->first();
        if(!is_null($data)){
            return $this->forums->where('is_announcement_forum', '=', '1')->first()->id;
        }else{
            return null;
        }

        //return null;
    }

    public function getLabIconAttribute(){
        return asset('storage/'.$this->icon_path);
    }
}
