'array', 'materiali_utilizzati' => 'array', 'iniziato_at' => 'datetime', 'terminato_at' => 'datetime', 'qr_scansionato_at' => 'datetime', 'notifica_chiusura_inviata_at' => 'datetime', 'chiuso_at' => 'datetime', 'fattura_data' => 'date', 'check_foto_ok' => 'boolean', 'check_qr_ok' => 'boolean', 'check_admin_ok' => 'boolean', 'fattura_imponibile' => 'decimal:2', 'fattura_totale' => 'decimal:2', ]; public function ticket() { return $this->belongsTo(Ticket::class, 'ticket_id'); } public function fornitore() { return $this->belongsTo(Fornitore::class, 'fornitore_id'); } public function creatoDaUser() { return $this->belongsTo(User::class, 'creato_da_user_id'); } public function presoInCaricoDaUser() { return $this->belongsTo(User::class, 'preso_in_carico_da_user_id'); } public function eseguitoDaDipendente() { return $this->belongsTo(FornitoreDipendente::class, 'eseguito_da_dipendente_id'); } public function sessioni() { return $this->hasMany(TicketInterventoSessione::class, 'ticket_intervento_id'); } public function getCompletabileAttribute(): bool { return $this->check_foto_ok && $this->check_qr_ok && $this->check_admin_ok; } public function getOperatoreAssegnatoLabelAttribute(): string { return $this->eseguitoDaDipendente?->ruolo_operativo_label ?: 'Responsabile fornitore'; } }