Browse Source

feat(unit-payment-account): model com api_key criptografada e relação em Unit

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ebagabee 4 tuần trước cách đây
mục cha
commit
4418b64591
2 tập tin đã thay đổi với 48 bổ sung0 xóa
  1. 6 0
      app/Models/Unit.php
  2. 42 0
      app/Models/UnitPaymentAccount.php

+ 6 - 0
app/Models/Unit.php

@@ -7,6 +7,7 @@
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
 use Illuminate\Database\Eloquent\Relations\BelongsToMany;
 use Illuminate\Database\Eloquent\Relations\HasMany;
+use Illuminate\Database\Eloquent\Relations\HasOne;
 use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
@@ -104,4 +105,9 @@ public function groups(): BelongsToMany
     {
         return $this->belongsToMany(Group::class, 'group_units');
     }
+
+    public function paymentAccount(): HasOne
+    {
+        return $this->hasOne(UnitPaymentAccount::class, 'unit_id');
+    }
 }

+ 42 - 0
app/Models/UnitPaymentAccount.php

@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\BelongsTo;
+
+/**
+ * @property int $id
+ * @property int $unit_id
+ * @property string|null $asaas_api_key
+ * @property string $status
+ * @property \Illuminate\Support\Carbon|null $onboarded_at
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property-read \App\Models\Unit $unit
+ */
+class UnitPaymentAccount extends Model
+{
+    use HasFactory;
+
+    public const STATUS_PENDING = 'pending';
+    public const STATUS_ACTIVE  = 'active';
+
+    protected $table = 'unit_payment_accounts';
+
+    protected $guarded = ['id'];
+
+    protected $casts = [
+        // Cifra/decifra automaticamente usando a APP_KEY.
+        'asaas_api_key' => 'encrypted',
+        'onboarded_at'  => 'datetime',
+        'created_at'    => 'datetime',
+        'updated_at'    => 'datetime',
+    ];
+
+    public function unit(): BelongsTo
+    {
+        return $this->belongsTo(Unit::class, 'unit_id');
+    }
+}