File manager - Edit - /var/www/html/portal/app/Models/Contratos/Contrato.php
Back
<?php namespace App\Models\Contratos; use App\Models\Structure; use App\Models\LicitacoesProcedimentos\Processo; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use App\Models\User; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; class Contrato extends Model { use HasFactory, HasUuids; protected $table = 'contratos'; protected $primaryKey = 'id'; public $incrementing = false; protected $keyType = 'string'; public const MODALIDADES = [ 1 => 'Concorrência', 2 => 'Tomada de Preços', 3 => 'Convite', 4 => 'Pregão Presencial', 5 => 'Pregão Eletrônico', 6 => 'Dispensa', 7 => 'Inexigibilidade', 8 => 'Credenciamento', ]; public const STATUS = [ 0 => 'Indefinido', 1 => 'Ativo', 2 => 'Encerrado', 3 => 'Cancelado', 4 => 'Suspenso', ]; protected $fillable = [ 'con_numero', 'con_ano', 'con_titulo', 'con_modalidade', 'con_favorecido', 'con_dataini', 'con_datafim', 'con_valor', 'con_processo', 'licitacao_procedimento_id', 'con_secretaria', 'con_secretaria_gestora', 'con_datapub', 'con_dataassinatura', 'con_fiscais', 'con_status', 'con_usuario', 'con_covid', 'con_criado_por', 'con_editado_por', ]; public function arquivos(): HasMany { return $this->hasMany(ContratoArquivo::class, 'arq_id_contrato', 'id'); } public function criadoPor(): BelongsTo { return $this->belongsTo(User::class, 'con_criado_por', 'id'); } public function editadoPor(): BelongsTo { return $this->belongsTo(User::class, 'con_editado_por', 'id'); } public function favorecido(): BelongsTo { return $this->belongsTo(ContratoFavorecido::class, 'con_favorecido', 'fav_cpfcnpj'); } public function secretaria(): BelongsTo { return $this->belongsTo(Structure::class, 'con_secretaria', 'id'); } public function secretariaGestora(): BelongsTo { return $this->belongsTo(Structure::class, 'con_secretaria_gestora', 'id'); } public function licitacao(): BelongsTo { return $this->belongsTo(Processo::class, 'licitacao_procedimento_id', 'id'); } public function getModalidadeLabelAttribute(): ?string { return self::MODALIDADES[(int) $this->con_modalidade] ?? null; } public function getStatusLabelAttribute(): ?string { return self::STATUS[(int) $this->con_status] ?? null; } public function getIdContratoAttribute(): ?string { return $this->id; } /** * Retorna o arquivo que causou a prorrogação do contrato, se houver. * * Um arquivo é considerado prorrogador quando seu arq_datafim coincide * com a data de término atual do contrato (definida automaticamente pelo * serviço ao salvar o arquivo). * * Requer que a relação 'arquivos' esteja carregada via eager loading. */ public function getProrrogacaoAttribute(): ?ContratoArquivo { if (empty($this->con_datafim) || !$this->relationLoaded('arquivos')) { return null; } return $this->arquivos ->filter(fn (ContratoArquivo $a) => !empty($a->arq_datafim) && $a->arq_datafim === $this->con_datafim) ->sortByDesc('arq_sequencia') ->first(); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings