CompanyPaymentAccount.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. /**
  5. * Conta Asaas da franqueadora (matriz). Linha única.
  6. *
  7. * @property int $id
  8. * @property string|null $asaas_api_key
  9. * @property string|null $asaas_webhook_id
  10. * @property string $status
  11. * @property \Illuminate\Support\Carbon|null $onboarded_at
  12. * @property \Illuminate\Support\Carbon|null $created_at
  13. * @property \Illuminate\Support\Carbon|null $updated_at
  14. * @method static \Illuminate\Database\Eloquent\Builder<static>|CompanyPaymentAccount newModelQuery()
  15. * @method static \Illuminate\Database\Eloquent\Builder<static>|CompanyPaymentAccount newQuery()
  16. * @method static \Illuminate\Database\Eloquent\Builder<static>|CompanyPaymentAccount query()
  17. * @method static \Illuminate\Database\Eloquent\Builder<static>|CompanyPaymentAccount whereAsaasApiKey($value)
  18. * @method static \Illuminate\Database\Eloquent\Builder<static>|CompanyPaymentAccount whereAsaasWebhookId($value)
  19. * @method static \Illuminate\Database\Eloquent\Builder<static>|CompanyPaymentAccount whereCreatedAt($value)
  20. * @method static \Illuminate\Database\Eloquent\Builder<static>|CompanyPaymentAccount whereId($value)
  21. * @method static \Illuminate\Database\Eloquent\Builder<static>|CompanyPaymentAccount whereOnboardedAt($value)
  22. * @method static \Illuminate\Database\Eloquent\Builder<static>|CompanyPaymentAccount whereStatus($value)
  23. * @method static \Illuminate\Database\Eloquent\Builder<static>|CompanyPaymentAccount whereUpdatedAt($value)
  24. * @mixin \Eloquent
  25. */
  26. class CompanyPaymentAccount extends Model
  27. {
  28. public const STATUS_PENDING = 'pending';
  29. public const STATUS_ACTIVE = 'active';
  30. protected $table = 'company_payment_accounts';
  31. protected $guarded = ['id'];
  32. protected $casts = [
  33. 'asaas_api_key' => 'encrypted',
  34. 'onboarded_at' => 'datetime',
  35. 'created_at' => 'datetime',
  36. 'updated_at' => 'datetime',
  37. ];
  38. /**
  39. * A (única) conta da matriz.
  40. */
  41. public static function current(): self
  42. {
  43. return static::query()->first() ?? new self();
  44. }
  45. /**
  46. * Chave efetiva da matriz: banco → fallback .env.
  47. */
  48. public static function resolveApiKey(): ?string
  49. {
  50. $key = static::query()->first()?->asaas_api_key;
  51. return filled($key) ? $key : config('services.asaas.api_key');
  52. }
  53. }