EvaluationCampaign.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace App\Models;
  3. use App\Enums\DefaultStatusEnum;
  4. use App\Enums\EvaluationTargetEnum;
  5. use Illuminate\Database\Eloquent\Model;
  6. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  7. use Illuminate\Database\Eloquent\Relations\HasMany;
  8. use Illuminate\Database\Eloquent\SoftDeletes;
  9. class EvaluationCampaign extends Model
  10. {
  11. use SoftDeletes;
  12. protected $guarded = ['id'];
  13. protected function casts(): array
  14. {
  15. return [
  16. 'target' => EvaluationTargetEnum::class,
  17. 'status' => DefaultStatusEnum::class,
  18. 'started_at' => 'datetime',
  19. 'finished_at' => 'datetime',
  20. ];
  21. }
  22. public function createdBy(): BelongsTo
  23. {
  24. return $this->belongsTo(User::class, 'created_by');
  25. }
  26. public function evaluations(): HasMany
  27. {
  28. return $this->hasMany(Evaluation::class);
  29. }
  30. public function isActive(): bool
  31. {
  32. return $this->status === DefaultStatusEnum::ACTIVE;
  33. }
  34. public function isFinished(): bool
  35. {
  36. return $this->finished_at !== null;
  37. }
  38. }