PartnerAgreement.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. class PartnerAgreement extends Model
  10. {
  11. use SoftDeletes;
  12. protected $guarded = ['id'];
  13. protected function casts(): array
  14. {
  15. return [
  16. 'discount_percentage' => 'float',
  17. 'contract_start' => 'date',
  18. 'contract_end' => 'date',
  19. 'status' => PartnerAgreementStatusEnum::class,
  20. ];
  21. }
  22. public function category(): BelongsTo
  23. {
  24. return $this->belongsTo(Category::class);
  25. }
  26. public function city(): BelongsTo
  27. {
  28. return $this->belongsTo(City::class);
  29. }
  30. public function state(): BelongsTo
  31. {
  32. return $this->belongsTo(State::class);
  33. }
  34. public function services(): HasMany
  35. {
  36. return $this->hasMany(PartnerAgreementService::class);
  37. }
  38. public function appointments(): HasMany
  39. {
  40. return $this->hasMany(Appointment::class);
  41. }
  42. public function logo(): HasOne
  43. {
  44. return $this->hasOne(Media::class, 'source_id')->where('source', 'partner_agreement_logo');
  45. }
  46. public function media(): HasMany
  47. {
  48. return $this->hasMany(Media::class, 'source_id')->where('source', 'partner_agreement');
  49. }
  50. }