Ticket.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace App\Models;
  3. use Auth;
  4. use Illuminate\Database\Eloquent\Builder;
  5. use Illuminate\Database\Eloquent\Model;
  6. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  7. use Illuminate\Database\Eloquent\Relations\HasMany;
  8. /**
  9. * 工单.
  10. */
  11. class Ticket extends Model
  12. {
  13. protected $table = 'ticket';
  14. protected $guarded = [];
  15. public function scopeUid(Builder $query): Builder
  16. {
  17. return $query->whereUserId(Auth::id());
  18. }
  19. public function user(): BelongsTo
  20. {
  21. return $this->belongsTo(User::class);
  22. }
  23. public function admin(): BelongsTo
  24. {
  25. return $this->belongsTo(User::class);
  26. }
  27. public function reply(): HasMany
  28. {
  29. return $this->hasMany(TicketReply::class);
  30. }
  31. public function close(): bool
  32. {
  33. $this->status = 2;
  34. return $this->save();
  35. }
  36. public function getStatusLabelAttribute(): string
  37. {
  38. return match ($this->status) {
  39. 0 => '<span class="badge badge-lg badge-success">'.trans('common.status.pending').'</span>',
  40. 1 => '<span class="badge badge-lg badge-danger">'.trans('common.status.reply').'</span>',
  41. 2 => '<span class="badge badge-lg badge-default">'.trans('common.status.closed').'</span>',
  42. default => '<span class="badge badge-lg badge-default">'.trans('common.status.unknown').'</span>',
  43. };
  44. }
  45. }