Ticket.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. protected $guarded = [];
  14. public function scopeUid($query)
  15. {
  16. return $query->whereUserId(Auth::id());
  17. }
  18. public function user(): BelongsTo
  19. {
  20. return $this->belongsTo(User::class);
  21. }
  22. public function admin(): BelongsTo
  23. {
  24. return $this->belongsTo(User::class);
  25. }
  26. public function reply(): HasMany
  27. {
  28. return $this->hasMany(TicketReply::class);
  29. }
  30. public function close(): bool
  31. {
  32. $this->status = 2;
  33. return $this->save();
  34. }
  35. public function getStatusLabelAttribute(): string
  36. {
  37. switch ($this->attributes['status']) {
  38. case 0:
  39. $status_label = '<span class="badge badge-lg badge-success">'.trans('home.ticket_table_status_wait').'</span>';
  40. break;
  41. case 1:
  42. $status_label = '<span class="badge badge-lg badge-danger">'.trans('home.ticket_table_status_reply').'</span>';
  43. break;
  44. case 2:
  45. $status_label = '<span class="badge badge-lg badge-default">'.trans('home.ticket_table_status_close').'</span>';
  46. break;
  47. default:
  48. $status_label = '<span class="badge badge-lg badge-default"> 未知 </span>';
  49. }
  50. return $status_label;
  51. }
  52. }