PartnerAgreement.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace App\Models;
  3. use App\Enums\PartnerAgreementStatusEnum;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  6. use Illuminate\Database\Eloquent\Relations\HasMany;
  7. use Illuminate\Database\Eloquent\Relations\HasOne;
  8. use Illuminate\Database\Eloquent\SoftDeletes;
  9. use App\Models\User;
  10. class PartnerAgreement extends Model
  11. {
  12. use SoftDeletes;
  13. protected $guarded = ['id'];
  14. protected function casts(): array
  15. {
  16. return [
  17. 'discount_percentage' => 'float',
  18. 'contract_start' => 'date',
  19. 'contract_end' => 'date',
  20. 'status' => PartnerAgreementStatusEnum::class,
  21. ];
  22. }
  23. public function user(): BelongsTo
  24. {
  25. return $this->belongsTo(User::class);
  26. }
  27. public function category(): BelongsTo
  28. {
  29. return $this->belongsTo(Category::class);
  30. }
  31. public function city(): BelongsTo
  32. {
  33. return $this->belongsTo(City::class);
  34. }
  35. public function state(): BelongsTo
  36. {
  37. return $this->belongsTo(State::class);
  38. }
  39. public function services(): HasMany
  40. {
  41. return $this->hasMany(PartnerAgreementService::class);
  42. }
  43. public function appointments(): HasMany
  44. {
  45. return $this->hasMany(Appointment::class);
  46. }
  47. public function logo(): HasOne
  48. {
  49. return $this->hasOne(Media::class, 'source_id')->where('source', 'partner_agreement_logo');
  50. }
  51. public function media(): HasMany
  52. {
  53. return $this->hasMany(Media::class, 'source_id')->where('source', 'partner_agreement');
  54. }
  55. }