<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Report extends Model
{
    use HasFactory;

public $timestamps = false;
    protected $table = 'fcf_reports_reports';

    protected $fillable = [
        'name',
        'validated' ,
        'necessita_nulla_osta' ,
        'data_nulla_osta' ,
        'protocollo_num' ,
        'protocollo_ord' ,
        'protocollo_anno' ,
        'verificatosi_in_data' ,
        'verificatosi_in_data_ora' ,
        'verificatosi_in_data_minuti' ,
        'utg' ,
        'utg_data' ,
        'utg_protocollo',
        'ag' ,
        'ag_data' ,
        'ag_protocollo',
        'incidente_con_danni_a_cose' ,
        'incidente_con_feriti' ,
        'incidente_con_feriti_lesioni_lievi' ,
        'incidente_con_feriti_lesioni_gravi' ,
        'incidente_mortale' ,
        'localita_uno' ,
        'localita_due' ,
        'intersezione_con' ,
        'prossimita_civico',
        'prossimita_palo_luce',
        'prossimita_chilometro',
        'note_aggiuntive' ,
        'accertatore_1' ,
        'grado_accertatore_1' ,
        'accertatore_2' ,
        'grado_accertatore_2' ,
        'accertatore_3' ,
        'grado_accertatore_3' ,
        'accertatore_4' ,
        'grado_accertatore_4' ,
        'accertatore_5' ,
        'grado_accertatore_5' ,
        'rilievi_id' ,
        'parti_coinvolte_1_nome' ,
        'parti_coinvolte_2_nome' ,
        'parti_coinvolte_3_nome' ,
        'parti_coinvolte_1_veicolo' ,
        'parti_coinvolte_2_veicolo' ,
        'parti_coinvolte_3_veicolo' ,
        'tipo_urto_altro' ,
        'segnalazione_data' ,
        'segnalazione_ora',
        'segnalazione_minuti',
        'segnalazione_altro',
        'ausilio_altri_enti_motivo',
        'ausilio_altri_enti_ora_intervento',
        'ausilio_altri_enti_minuti_intervento',
        'ditta_intervenuta' ,
        'ripristino_ora_chiamata' ,
        'ripristino_minuti_chiamata' ,
        'ripristino_ora_arrivo' ,
        'ripristino_minuti_arrivo' ,
        'danni_cose_diverse_da_veicoli',
        'sinistro_ora' ,
        'sinistro_minuti' ,
        'localizzazione_incidente' ,
        'localizzazione_incidente_altro',
        'condizioni_atmosferiche' ,
        'condizioni_atmosferiche_altro' ,
        'nomenclatura_strada' ,
        'nomenclatura_strada_numero' ,
        'nomenclatura_strada_altro' ,
        'pavimentazione' ,
        'pavimentazione_altro' ,
        'condizione_strada' ,
        'condizione_strada_altro' ,
        'fondo_stradale' ,
        'fondo_stradale_specifica' ,
        'visibilita' ,
        'visibilita_specifica' ,
        'particolarita_strada' ,
        'particolarita_strada_specifica' ,
        'tipo_strada' ,
        'tipo_strada_altro' ,
        'traffico' ,
        'segnaletica' ,
        'segnaletica_verticale_1_via' ,
        'segnaletica_verticale_1_altro' ,
        'segnaletica_verticale_1_limite_velocita' ,
        'segnaletica_verticale_1_limite_direzione' ,
        'segnaletica_verticale_1_pannello_integrativo' ,
        'segnaletica_verticale_2_via' ,
        'segnaletica_verticale_2_altro' ,
        'segnaletica_verticale_2_limite_velocita' ,
        'segnaletica_verticale_2_limite_direzione' ,
        'segnaletica_verticale_2_pannello_integrativo' ,
        'segnaletica_verticale_3_via' ,
        'segnaletica_verticale_3_altro' ,
        'segnaletica_verticale_3_limite_velocita' ,
        'segnaletica_verticale_3_limite_direzione' ,
        'segnaletica_verticale_3_pannello_integrativo' ,
        'segnaletica_verticale_4_via' ,
        'segnaletica_verticale_4_altro' ,
        'segnaletica_verticale_4_limite_velocita' ,
        'segnaletica_verticale_4_limite_direzione' ,
        'segnaletica_verticale_4_pannello_integrativo' ,
        'segnaletica_orizzontale_1_via' ,
        'segnaletica_orizzontale_1_linea_margine' ,
        'segnaletica_orizzontale_1_linea_margine_specifica' ,
        'segnaletica_orizzontale_1_linea_mezzeria' ,
        'segnaletica_orizzontale_1_linea_mezzeria_specifica' ,
        'segnaletica_orizzontale_1_altro' ,
        'segnaletica_orizzontale_1_direzione' ,
        'segnaletica_orizzontale_2_via' ,
        'segnaletica_orizzontale_2_linea_margine' ,
        'segnaletica_orizzontale_2_linea_margine_specifica' ,
        'segnaletica_orizzontale_2_linea_mezzeria' ,
        'segnaletica_orizzontale_2_linea_mezzeria_specifica' ,
        'segnaletica_orizzontale_2_altro' ,
        'segnaletica_orizzontale_2_direzione' ,
        'segnaletica_orizzontale_3_via' ,
        'segnaletica_orizzontale_3_linea_margine' ,
        'segnaletica_orizzontale_3_linea_margine_specifica' ,
        'segnaletica_orizzontale_3_linea_mezzeria' ,
        'segnaletica_orizzontale_3_linea_mezzeria_specifica' ,
        'segnaletica_orizzontale_3_altro' ,
        'segnaletica_orizzontale_3_direzione' ,
        'segnaletica_orizzontale_4_via' ,
        'segnaletica_orizzontale_4_linea_margine' ,
        'segnaletica_orizzontale_4_linea_margine_specifica' ,
        'segnaletica_orizzontale_4_linea_mezzeria' ,
        'segnaletica_orizzontale_4_linea_mezzeria_specifica' ,
        'segnaletica_orizzontale_4_altro' ,
        'segnaletica_orizzontale_4_direzione' ,
        'state' ,
        'created',
        'created_by' ,
        'updated',
        'updated_by' ,
        'locked' ,
        'locked_by' ,
    ];

    public function localita()
    {
        return $this->belongsTo(\App\Models\LocationTown::class, 'localita_uno');
    }

    public function indirizzo()
    {
        return $this->belongsTo(\App\Models\Stradario::class, 'localita_due');
    }

    public function rilievo()
    {
        return $this->belongsTo(\App\Models\Rilievi::class, 'rilievi_id');
    }

    public function nomenclatura()
    {
        return $this->belongsTo(\App\Models\NomenclaturaStrada::class, 'nomenclatura_strada');
    }

    public function condizioneatmosferiche()
    {
        return $this->belongsTo(\App\Models\CondizioniAtmosferiche::class, 'condizioni_atmosferiche');
    }

    public function pavimentazione_value()
    {
        return $this->belongsTo(\App\Models\PavimentazioneStrada::class, 'pavimentazione');
    }

    public function condizione_strada_value()
    {
        return $this->belongsTo(\App\Models\CondizioneStrada::class, 'condizione_strada');
    }

    public function fondo_stradale_value()
    {
        return $this->belongsTo(\App\Models\FondoStradale::class, 'fondo_stradale');
    }

    public function particolarita_strada_value()
    {
        return $this->belongsTo(\App\Models\ParticolaritaStrada::class, 'particolarita_strada');
    }

    public function segnaletica_verticale_1_via_value()
    {
        return $this->belongsTo(\App\Models\Stradario::class, 'segnaletica_verticale_1_via');
    }

    public function segnaletica_verticale_2_via_value()
    {
        return $this->belongsTo(\App\Models\Stradario::class, 'segnaletica_verticale_2_via');
    }

    public function segnaletica_verticale_3_via_value()
    {
        return $this->belongsTo(\App\Models\Stradario::class, 'segnaletica_verticale_3_via');
    }

    public function segnaletica_verticale_4_via_value()
    {
        return $this->belongsTo(\App\Models\Stradario::class, 'segnaletica_verticale_4_via');
    }

    public function segnaletica_orizzontale_1_via_value()
    {
        return $this->belongsTo(\App\Models\Stradario::class, 'segnaletica_orizzontale_1_via');
    }

    public function segnaletica_orizzontale_2_via_value()
    {
        return $this->belongsTo(\App\Models\Stradario::class, 'segnaletica_orizzontale_2_via');
    }

    public function segnaletica_orizzontale_3_via_value()
    {
        return $this->belongsTo(\App\Models\Stradario::class, 'segnaletica_orizzontale_3_via');
    }

    public function segnaletica_orizzontale_4_via_value()
    {
        return $this->belongsTo(\App\Models\Stradario::class, 'segnaletica_orizzontale_4_via');
    }

    public function accertatore_1_value()
    {
        return $this->belongsTo(\App\Models\User::class, 'accertatore_1');
    }

    public function grado_accertatore_1_value()
    {
        return $this->belongsTo(\App\Models\AccertatoreGrado::class, 'grado_accertatore_1');
    }

    public function accertatore_2_value()
    {
        return $this->belongsTo(\App\Models\User::class, 'accertatore_2');
    }

    public function grado_accertatore_2_value()
    {
        return $this->belongsTo(\App\Models\AccertatoreGrado::class, 'grado_accertatore_2');
    }

    public function accertatore_3_value()
    {
        return $this->belongsTo(\App\Models\User::class, 'accertatore_3');
    }

    public function grado_accertatore_3_value()
    {
        return $this->belongsTo(\App\Models\AccertatoreGrado::class, 'grado_accertatore_3');
    }

    public function accertatore_4_value()
    {
        return $this->belongsTo(\App\Models\User::class, 'accertatore_4');
    }

    public function grado_accertatore_4_value()
    {
        return $this->belongsTo(\App\Models\AccertatoreGrado::class, 'grado_accertatore_4');
    }

    public function accertatore_5_value()
    {
        return $this->belongsTo(\App\Models\User::class, 'accertatore_5');
    }

    public function grado_accertatore_5_value()
    {
        return $this->belongsTo(\App\Models\AccertatoreGrado::class, 'grado_accertatore_5');
    }

    public function reportDataPedoni()
    {
        return $this->belongsTo(\App\Models\ReportDataPedoni::class, 'report_id');
    }

    public function allegati()
    {
        return $this->hasMany(ReportAllegatiGallery::class);
    }

}
