Ticket.php 1.5 KB

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