File manager - Edit - /var/www/html/portal/app/Models/Accounts/Cronogramas/Project.php
Back
<?php namespace App\Models\Accounts\Cronogramas; use App\Enums\Accounts\Cronogramas\CronogramaProjectStatus; use App\Models\User; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Support\Str; use DateTimeInterface; /** * Projeto de cronograma pertencente a um usuário da Conta-Angra. */ class Project extends Model { use SoftDeletes; protected $connection = 'mysql'; public $incrementing = false; protected $keyType = 'string'; protected $table = 'cr_projects'; protected $fillable = [ 'id', 'user_id', 'name', 'description', 'status', 'start_date', 'planned_end_date', 'actual_end_date', 'completion_percent', 'public_share_enabled', 'public_share_token', 'public_share_enabled_at', ]; protected $casts = [ 'start_date' => 'date', 'planned_end_date' => 'date', 'actual_end_date' => 'date', 'completion_percent' => 'decimal:2', 'public_share_enabled' => 'boolean', 'public_share_enabled_at' => 'datetime', ]; public static function boot(): void { parent::boot(); static::creating(function (self $model): void { if (empty($model->id)) { $model->id = (string) Str::uuid(); } if (empty($model->status)) { $model->status = CronogramaProjectStatus::Active->value; } if (empty($model->public_share_token)) { $model->public_share_token = Str::random(64); } }); } protected function serializeDate(DateTimeInterface $date): string { return $date->format('Y-m-d H:i:s'); } public function user(): BelongsTo { return $this->belongsTo(User::class, 'user_id', 'id'); } public function activities(): HasMany { return $this->hasMany(Activity::class, 'project_id', 'id') ->orderBy('sort_order') ->orderBy('created_at'); } public function activeActivities(): HasMany { return $this->activities()->whereNull('deleted_at'); } public function historyLogs(): HasMany { return $this->hasMany(HistoryLog::class, 'project_id', 'id') ->orderByDesc('created_at'); } public function scopes(): HasMany { return $this->hasMany(ProjectScope::class, 'project_id', 'id'); } public function isReadOnly(): bool { return CronogramaProjectStatus::tryFrom($this->status)?->isReadOnly() ?? false; } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings