PartnerAgreement.php 1.7 KB

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