Explorar el Código

feat(tbrs): contract tab

ebagabee hace 1 día
padre
commit
6057ff4b7c

+ 9 - 0
app/Http/Resources/FranchiseeTbrResource.php

@@ -18,6 +18,11 @@ class FranchiseeTbrResource extends JsonResource
      */
     public function toArray(Request $request): array
     {
+        $contract        = $this->whenLoaded('contract');
+        $signatureDate   = $contract?->signature_date;
+        $validityMonths  = $contract?->validity_months;
+        $monthsElapsed   = $signatureDate ? (int) Carbon::parse($signatureDate)->diffInMonths(Carbon::now()) : null;
+
         return [
             'id'                                  => $this->id,
             'franchisee_id'                       => $this->franchisee_id,
@@ -29,9 +34,13 @@ public function toArray(Request $request): array
             'invoice_due_day'                     => $this->invoice_due_day,
             'base_royalties_percentage'           => $this->base_royalties_percentage,
             'base_fnm_percentage'                 => $this->base_fnm_percentage,
+            'maintenance_percentage'              => $this->whenLoaded('maintenanceBracket')?->percentage,
             'franchisee_royalties_bracket_id'     => $this->franchisee_royalties_bracket_id,
             'franchisee_fnm_bracket_id'           => $this->franchisee_fnm_bracket_id,
             'franchisee_maintenance_bracket_id'   => $this->franchisee_maintenance_bracket_id,
+            'unit_name'                           => $contract?->unit?->fantasy_name,
+            'contract_month_current'              => $monthsElapsed,
+            'contract_validity_months'            => $validityMonths,
             'created_at'                          => Carbon::parse($this->created_at)->format('Y-m-d H:i:s'),
             'updated_at'                          => Carbon::parse($this->updated_at)->format('Y-m-d H:i:s'),
             'inhabitant_classification'           => new InhabitantClassificationResource($this->whenLoaded('inhabitantClassification')),

+ 12 - 14
app/Models/FranchiseeContract.php

@@ -4,9 +4,13 @@
 
 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 $signature_date
+ * @property int $validity_months
  * @property \Carbon\Carbon $created_at
  * @property \Carbon\Carbon $updated_at
  */
@@ -16,22 +20,16 @@ class FranchiseeContract extends Model
 
     protected $table = 'franchisee_contracts';
 
-    protected $guarded = [
-        'id', // Add more fields that shouldn't be edited here
-    ];
+    protected $guarded = ['id'];
 
     protected $casts = [
-        'created_at' => 'datetime',
-        'updated_at' => 'datetime',
-        // Add your casts here (e.g., 'is_active' => 'boolean')
+        'signature_date' => 'date',
+        'created_at'     => 'datetime',
+        'updated_at'     => 'datetime',
     ];
 
-    // Relationships
-
-    // Business Logic Methods
-
-    // Custom Finders
-
-    // Query Scopes
-
+    public function unit(): BelongsTo
+    {
+        return $this->belongsTo(Unit::class, 'unit_id');
+    }
 }

+ 1 - 1
app/Services/FranchiseeTbrService.php

@@ -16,7 +16,7 @@ class FranchiseeTbrService
 {
     public function paginate(int $perPage = 15): LengthAwarePaginator
     {
-        return FranchiseeTbr::with(['franchisee', 'contract', 'inhabitantClassification'])
+        return FranchiseeTbr::with(['franchisee', 'contract.unit', 'inhabitantClassification', 'maintenanceBracket'])
             ->orderBy('created_at', 'desc')
             ->paginate($perPage);
     }