File manager - Edit - /var/www/html/gop/api/app/Models/Obra.php
Back
<?php namespace App\Models; use App\Casts\Money; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Support\Facades\Auth; class Obra extends BaseModel { protected $fillable = [ 'nome', 'contrato', 'modalidade', 'processo', 'numero', 'ano', 'valor_inicial', 'valor_ajustado', 'servico', 'empresa_id', 'ordenador_id', 'endereco_id', 'responsavel_fiscalizacao_id', 'responsavel_firma_id', 'responsavel_tecnico_id', 'data', 'prazo_inicial', 'prazo_ajustado', 'is_fornecimento', 'is_habilitado', ]; protected $casts = [ 'valor_inicial' => Money::class, 'valor_ajustado' => Money::class, ]; protected $appends = [ 'valor_empenhado', 'valor_empenhado_disponivel', 'anexos', 'status', 'porcentagem', 'valor_liquidado', ]; protected function anexos(): Attribute { return new Attribute( get: function () { if (Auth::check()) { $arquivos = $this->arquivos; $images = $this->images; $anexos = [ 'arquivos' => $arquivos, 'images' => $images, ]; return $anexos; } $arquivos = $this->arquivosPublicos; $images = $this->images; $anexos = [ 'arquivos' => $arquivos, 'images' => $images, ]; return $anexos; }, ); } protected function valorEmpenhado(): Attribute { return new Attribute( get: fn () => $this->empenhos->sum('valor') ); } protected function valorEmpenhadoDisponivel(): Attribute { return new Attribute( get: fn () => round($this->empenhos->sum('valor_disponivel'), 2) > 0 ? round($this->empenhos->sum('valor_disponivel'), 2) : 0.0 ); } protected function status(): Attribute { return new Attribute( get: fn () => $this->statuses->last() ); } protected function valorLiquidado(): Attribute { return new Attribute( get: fn () => $this->notasFiscais->sum('valor'), ); } protected function porcentagem(): Attribute { $fases = $this->fases; $porcentagemAcumulada = 0; $quantidadeFases = count($fases) ?: 1; foreach ($fases as $fase) { $porcentagemAcumulada = $porcentagemAcumulada + $fase->porcentagem; } $porcentagem = $porcentagemAcumulada / $quantidadeFases; return new Attribute( get: fn () => $porcentagem, ); } public function fiscais() { return $this->hasMany(ObraFiscal::class, 'obra_id'); } public function responsavelFirma() { return $this->belongsTo(Fiscal::class, 'responsavel_firma_id'); } public function responsavelTecnico() { return $this->belongsTo(Fiscal::class, 'responsavel_tecnico_id'); } public function empresa() { return $this->belongsTo(Empresa::class); } public function termos() { return $this->hasMany(Termo::class); } public function images() { return $this->morphMany(Image::class, 'imageable'); } public function arquivos() { return $this->morphMany(Arquivo::class, 'arquivable'); } public function historicos() { return $this->morphMany(Historico::class, 'historicable'); } public function endereco() { return $this->belongsTo(Endereco::class); } public function reajustes() { return $this->hasMany(Reajuste::class); } public function empenhos() { return $this->hasMany(Empenho::class); } public function fases() { return $this->hasMany(Fase::class); } public function notasFiscais() { return $this->hasMany(NotaFiscal::class); } public function fiscalizacoes() { return $this->hasMany(Fiscalizacao::class); } public function statuses() { return $this->hasMany(Status::class); } public function logImportacoes() { return $this->hasMany(LogImportacao::class); } public function fornecimentos() { return $this->hasMany(Fornecimento::class); } public function arquivosPublicos() { return $this->morphMany(Arquivo::class, 'arquivable')->where('is_public', true); } public function organizations() { return $this->hasMany(ObraOrganization::class, 'obra_id'); } public function unidFiscalizadoras() { return $this->hasMany(UnidFiscalizadora::class, 'obra_id'); } public function unidOrcamentarias() { return $this->hasMany(UnidOrcamentaria::class, 'obra_id'); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings