<?php
/**
 * Model object generated by: Skipper (http://www.skipper18.com)
 * Do not modify this file manually.
 */

namespace App\Models\AbstractModels;

abstract class AbstractDispositivo extends \Illuminate\Foundation\Auth\User
{
    /**  
     * The table associated with the model.
     * 
     * @var string
     */
    protected $table = 'dispositivo';
    
    /**  
     * Primary key type.
     * 
     * @var string
     */
    protected $keyType = 'bigInteger';
    
    /**  
     * The model's default values for attributes.
     * 
     * @var array
     */
    // protected $attributes = ['is_gruppo' => 0];
    
    /**  
     * The attributes that should be cast to native types.
     * 
     * @var array
     */
    protected $casts = [
        'id' => 'integer',
        'endpoint_id' => 'integer',
        'tipo' => 'string',
        'attivita_id' => 'integer',
        'nome' => 'string',
        'licenza' => 'string',
        // 'ip' => 'string',
        'binding_token' => 'string',
        'url_stampante' => 'string',
        'ubicazione' => 'string',
        'note' => 'string',
        'is_attivo' => 'boolean',
        'pin_sblocco' => 'string',
        'data_apertura_dispositivo' => 'datetime',
        'data_chiusura_dispositivo' => 'datetime',
        'cucina_id' => 'integer',
        'occupato' => 'boolean',
        'info' => 'json',
        'created_at' => 'datetime',
        'updated_at' => 'datetime'
    ];
    
    /**  
     * The attributes that are mass assignable.
     * 
     * @var array
     */
    protected $fillable = [
        'id',
        'endpoint_id',
        'tipo',
        'attivita_id',
        'nome',
        'licenza',
        'url_stampante',
        'ubicazione',
        // 'ip',
        'binding_token',
        'note',
        'is_attivo',
        'pin_sblocco',
        'data_apertura_dispositivo',
        'data_chiusura_dispositivo',
        'cucina_id',
        'occupato',
        'info',
        'created_at',
        'updated_at'
    ];
    
    function attivita()
    {
        return $this->belongsTo('\App\Models\Attivita', 'attivita_id', 'id');
    }

    function endpoint()
    {
        return $this->belongsTo('\App\Models\Endpoint', 'endpoint_id', 'id');
    }

    function cucina()
    {
        return $this->belongsTo('\App\Models\Cucina', 'cucina_id', 'id');
    }

    function monitor_has_contenuto()
    {
        return $this->hasOne('\App\Models\MonitorHasContenuto', 'monitor_id', 'id');
    }

    public function hasCucine()
    {
        return $this->belongsToMany('\App\Models\Cucina', 'dispositivo_has_cucina', 'dispositivo_id', 'cucina_id');
    }

}
