netgescon-day0/app/Models/TicketIntervento.php

99 lines
2.7 KiB
PHP
Executable File

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class TicketIntervento extends Model
{
use HasFactory;
protected $table = 'ticket_interventi';
protected $fillable = [
'ticket_id',
'fornitore_id',
'creato_da_user_id',
'preso_in_carico_da_user_id',
'eseguito_da_dipendente_id',
'stato',
'note_amministratore',
'rapporto_fornitore',
'articoli_utilizzati',
'materiali_utilizzati',
'tempo_minuti',
'iniziato_at',
'terminato_at',
'foto_path',
'qr_token',
'qr_scansionato_at',
'check_foto_ok',
'check_qr_ok',
'check_admin_ok',
'riferimento_chiusura',
'fattura_numero',
'fattura_data',
'fattura_imponibile',
'fattura_totale',
'fe_riferimento',
'notifica_chiusura_inviata_at',
'chiuso_at',
];
protected $casts = [
'articoli_utilizzati' => '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';
}
}