Jelajahi Sumber

feat: add soft deletes to multiple models and corresponding migration

alvesantos 3 minggu lalu
induk
melakukan
362eab397a

+ 7 - 2
app/Models/FinancialPlanAccount.php

@@ -4,6 +4,7 @@
 
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * @property int $id
@@ -14,13 +15,14 @@
  * @property string $chart_type
  * @property \Illuminate\Support\Carbon|null $created_at
  * @property \Illuminate\Support\Carbon|null $updated_at
- * @property string|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
  * @property int|null $parent_id
  * @property-read \Illuminate\Database\Eloquent\Collection<int, FinancialPlanAccount> $children
  * @property-read int|null $children_count
  * @property-read FinancialPlanAccount|null $parent
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FinancialPlanAccount newModelQuery()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FinancialPlanAccount newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|FinancialPlanAccount onlyTrashed()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FinancialPlanAccount query()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FinancialPlanAccount whereChartType($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FinancialPlanAccount whereCode($value)
@@ -32,11 +34,13 @@
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FinancialPlanAccount whereParentId($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FinancialPlanAccount whereUnitId($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FinancialPlanAccount whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|FinancialPlanAccount withTrashed(bool $withTrashed = true)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|FinancialPlanAccount withoutTrashed()
  * @mixin \Eloquent
  */
 class FinancialPlanAccount extends Model
 {
-    use HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $table = 'financial_plan_accounts';
 
@@ -47,6 +51,7 @@ class FinancialPlanAccount extends Model
     protected $casts = [
         'created_at' => 'datetime',
         'updated_at' => 'datetime',
+        'deleted_at' => 'datetime',
     ];
 
     // Relationships

+ 7 - 2
app/Models/FranchiseeContract.php

@@ -5,6 +5,7 @@
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
+use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * @property int $id
@@ -25,7 +26,7 @@
  * @property int|null $maximum_time_to_freeze_registration
  * @property \Illuminate\Support\Carbon|null $created_at
  * @property \Illuminate\Support\Carbon|null $updated_at
- * @property string|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
  * @property \Illuminate\Support\Carbon|null $start_date
  * @property \Illuminate\Support\Carbon|null $end_date
  * @property int|null $invoice_due_date
@@ -34,6 +35,7 @@
  * @property-read \App\Models\Unit $unit
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeContract newModelQuery()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeContract newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeContract onlyTrashed()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeContract query()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeContract whereCancellationFine($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeContract whereCreatedAt($value)
@@ -58,11 +60,13 @@
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeContract whereUnitId($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeContract whereUpdatedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeContract whereValidityMonths($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeContract withTrashed(bool $withTrashed = true)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeContract withoutTrashed()
  * @mixin \Eloquent
  */
 class FranchiseeContract extends Model
 {
-    use HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $table = 'franchisee_contracts';
 
@@ -75,6 +79,7 @@ class FranchiseeContract extends Model
         'invoice_due_date' => 'integer',
         'created_at'       => 'datetime',
         'updated_at'       => 'datetime',
+        'deleted_at'       => 'datetime',
     ];
 
     public function unit(): BelongsTo

+ 7 - 2
app/Models/FranchiseeUnit.php

@@ -4,6 +4,7 @@
 
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * @property int $id
@@ -11,9 +12,10 @@
  * @property int $unit_id
  * @property \Illuminate\Support\Carbon|null $created_at
  * @property \Illuminate\Support\Carbon|null $updated_at
- * @property string|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeUnit newModelQuery()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeUnit newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeUnit onlyTrashed()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeUnit query()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeUnit whereCreatedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeUnit whereDeletedAt($value)
@@ -21,11 +23,13 @@
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeUnit whereId($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeUnit whereUnitId($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeUnit whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeUnit withTrashed(bool $withTrashed = true)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|FranchiseeUnit withoutTrashed()
  * @mixin \Eloquent
  */
 class FranchiseeUnit extends Model
 {
-    use HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $table = 'franchisee_units';
 
@@ -36,6 +40,7 @@ class FranchiseeUnit extends Model
     protected $casts = [
         'created_at' => 'datetime',
         'updated_at' => 'datetime',
+        'deleted_at' => 'datetime',
         // Add your casts here (e.g., 'is_active' => 'boolean')
     ];
 

+ 8 - 1
app/Models/InhabitantClassification.php

@@ -4,6 +4,7 @@
 
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * @property int $id
@@ -15,11 +16,14 @@
  * @property bool $is_renewal
  * @property \Illuminate\Support\Carbon|null $created_at
  * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
  * @property-read \App\Models\MunicipalitySize|null $municipalitySize
  * @method static \Illuminate\Database\Eloquent\Builder<static>|InhabitantClassification newModelQuery()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|InhabitantClassification newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|InhabitantClassification onlyTrashed()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|InhabitantClassification query()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|InhabitantClassification whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|InhabitantClassification whereDeletedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|InhabitantClassification whereDescription($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|InhabitantClassification whereEnd($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|InhabitantClassification whereId($value)
@@ -28,11 +32,13 @@
  * @method static \Illuminate\Database\Eloquent\Builder<static>|InhabitantClassification whereStart($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|InhabitantClassification whereTbrPercentage($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|InhabitantClassification whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|InhabitantClassification withTrashed(bool $withTrashed = true)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|InhabitantClassification withoutTrashed()
  * @mixin \Eloquent
  */
 class InhabitantClassification extends Model
 {
-    use HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $table = 'inhabitant_classifications';
 
@@ -43,6 +49,7 @@ class InhabitantClassification extends Model
         'is_renewal'     => 'boolean',
         'created_at'     => 'datetime',
         'updated_at'     => 'datetime',
+        'deleted_at'     => 'datetime',
     ];
 
     public function municipalitySize(): \Illuminate\Database\Eloquent\Relations\BelongsTo

+ 7 - 2
app/Models/Notification.php

@@ -4,6 +4,7 @@
 
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * @property int $id
@@ -21,12 +22,13 @@
  * @property int|null $created_by_user_id
  * @property \Illuminate\Support\Carbon|null $created_at
  * @property \Illuminate\Support\Carbon|null $updated_at
- * @property string|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
  * @property-read \App\Models\User|null $creator
  * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\NotificationRecipient> $recipients
  * @property-read int|null $recipients_count
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Notification newModelQuery()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Notification newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|Notification onlyTrashed()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Notification query()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Notification whereActionText($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Notification whereCreatedAt($value)
@@ -44,11 +46,13 @@
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Notification whereUnitId($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Notification whereUpdatedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Notification whereUrl($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|Notification withTrashed(bool $withTrashed = true)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|Notification withoutTrashed()
  * @mixin \Eloquent
  */
 class Notification extends Model
 {
-    use HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $table = 'notifications';
 
@@ -60,6 +64,7 @@ class Notification extends Model
         'expires_at' => 'datetime',
         'created_at' => 'datetime',
         'updated_at' => 'datetime',
+        'deleted_at' => 'datetime',
     ];
 
     // Relationships

+ 7 - 2
app/Models/StudentHistory.php

@@ -4,6 +4,7 @@
 
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * @property int $id
@@ -13,9 +14,10 @@
  * @property string $description
  * @property \Illuminate\Support\Carbon|null $created_at
  * @property \Illuminate\Support\Carbon|null $updated_at
- * @property string|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
  * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentHistory newModelQuery()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentHistory newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentHistory onlyTrashed()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentHistory query()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentHistory whereCreatedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentHistory whereDeletedAt($value)
@@ -25,11 +27,13 @@
  * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentHistory whereStudentId($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentHistory whereUpdatedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentHistory whereUserId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentHistory withTrashed(bool $withTrashed = true)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentHistory withoutTrashed()
  * @mixin \Eloquent
  */
 class StudentHistory extends Model
 {
-    use HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $table = 'student_histories';
 
@@ -40,6 +44,7 @@ class StudentHistory extends Model
     protected $casts = [
         'created_at' => 'datetime',
         'updated_at' => 'datetime',
+        'deleted_at' => 'datetime',
         // Add your casts here (e.g., 'is_active' => 'boolean')
     ];
 

+ 7 - 2
app/Models/SupportTicket.php

@@ -4,6 +4,7 @@
 
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * @property int $id
@@ -16,7 +17,7 @@
  * @property string $severity
  * @property \Illuminate\Support\Carbon|null $created_at
  * @property \Illuminate\Support\Carbon|null $updated_at
- * @property string|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
  * @property string|null $scope
  * @property string|null $sector
  * @property string $status
@@ -30,6 +31,7 @@
  * @property-read \App\Models\Unit|null $targetUnit
  * @method static \Illuminate\Database\Eloquent\Builder<static>|SupportTicket newModelQuery()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|SupportTicket newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|SupportTicket onlyTrashed()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|SupportTicket query()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|SupportTicket visibleToUnit(int $unitId)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|SupportTicket whereApplicantUnitId($value)
@@ -50,11 +52,13 @@
  * @method static \Illuminate\Database\Eloquent\Builder<static>|SupportTicket whereTitle($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|SupportTicket whereUnitId($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|SupportTicket whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|SupportTicket withTrashed(bool $withTrashed = true)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|SupportTicket withoutTrashed()
  * @mixin \Eloquent
  */
 class SupportTicket extends Model
 {
-    use HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $table = 'support_tickets';
 
@@ -65,6 +69,7 @@ class SupportTicket extends Model
     protected $casts = [
         'created_at' => 'datetime',
         'updated_at' => 'datetime',
+        'deleted_at' => 'datetime',
         // Add your casts here (e.g., 'is_active' => 'boolean')
     ];
 

+ 8 - 1
app/Models/Tbr.php

@@ -4,6 +4,7 @@
 
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * @property int $id
@@ -14,10 +15,13 @@
  * @property numeric $royalties_percentage
  * @property numeric $fnm_percentage
  * @property numeric $maintenance_percentage
+ * @property \Illuminate\Support\Carbon|null $deleted_at
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Tbr newModelQuery()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Tbr newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|Tbr onlyTrashed()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Tbr query()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Tbr whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|Tbr whereDeletedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Tbr whereFnmPercentage($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Tbr whereId($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Tbr whereMaintenancePercentage($value)
@@ -25,11 +29,13 @@
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Tbr whereTbrValue($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Tbr whereUpdatedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|Tbr whereYear($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|Tbr withTrashed(bool $withTrashed = true)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|Tbr withoutTrashed()
  * @mixin \Eloquent
  */
 class Tbr extends Model
 {
-    use HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $table = 'tbrs';
 
@@ -42,5 +48,6 @@ class Tbr extends Model
         'maintenance_percentage' => 'decimal:4',
         'created_at'             => 'datetime',
         'updated_at'             => 'datetime',
+        'deleted_at'             => 'datetime',
     ];
 }

+ 7 - 2
app/Models/TreasuryAccount.php

@@ -4,6 +4,7 @@
 
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * @property int $id
@@ -17,9 +18,10 @@
  * @property bool $active
  * @property \Illuminate\Support\Carbon|null $created_at
  * @property \Illuminate\Support\Carbon|null $updated_at
- * @property string|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryAccount newModelQuery()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryAccount newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryAccount onlyTrashed()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryAccount query()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryAccount whereActive($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryAccount whereBankAccount($value)
@@ -33,11 +35,13 @@
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryAccount whereTreasuryType($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryAccount whereUnitId($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryAccount whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryAccount withTrashed(bool $withTrashed = true)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryAccount withoutTrashed()
  * @mixin \Eloquent
  */
 class TreasuryAccount extends Model
 {
-    use HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $table = 'treasury_accounts';
 
@@ -48,6 +52,7 @@ class TreasuryAccount extends Model
     protected $casts = [
         'created_at' => 'datetime',
         'updated_at' => 'datetime',
+        'deleted_at' => 'datetime',
         'active' => 'boolean',
     ];
 

+ 7 - 2
app/Models/TreasuryLaunch.php

@@ -4,6 +4,7 @@
 
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * @property int $id
@@ -22,10 +23,11 @@
  * @property int|null $reference_id
  * @property \Illuminate\Support\Carbon|null $created_at
  * @property \Illuminate\Support\Carbon|null $updated_at
- * @property string|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
  * @property-read \App\Models\FinancialPlanAccount|null $financialPlanAccount
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryLaunch newModelQuery()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryLaunch newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryLaunch onlyTrashed()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryLaunch query()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryLaunch whereAmount($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryLaunch whereCreatedAt($value)
@@ -44,11 +46,13 @@
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryLaunch whereUnitId($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryLaunch whereUpdatedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryLaunch whereUserId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryLaunch withTrashed(bool $withTrashed = true)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|TreasuryLaunch withoutTrashed()
  * @mixin \Eloquent
  */
 class TreasuryLaunch extends Model
 {
-    use HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $table = 'treasury_launches';
 
@@ -59,6 +63,7 @@ class TreasuryLaunch extends Model
     protected $casts = [
         'created_at' => 'datetime',
         'updated_at' => 'datetime',
+        'deleted_at' => 'datetime',
         'launch_date' => 'date:Y-m-d',
         'amount' => 'decimal:2',
         'is_reconciled' => 'boolean',

+ 7 - 2
app/Models/User.php

@@ -7,6 +7,7 @@
 use App\Traits\HasPermissions;
 use App\ValueObjects\Cpf;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\SoftDeletes;
 use Illuminate\Foundation\Auth\User as Authenticatable;
 use Illuminate\Notifications\Notifiable;
 use Laravel\Sanctum\HasApiTokens;
@@ -23,7 +24,7 @@
  * @property string $user_type
  * @property \Illuminate\Support\Carbon|null $created_at
  * @property \Illuminate\Support\Carbon|null $updated_at
- * @property string|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
  * @property \Illuminate\Support\Carbon|null $last_login_at
  * @property \App\ValueObjects\Cpf|null $cpf
  * @property string|null $avatar_url
@@ -45,6 +46,7 @@
  * @method static \Database\Factories\UserFactory factory($count = null, $state = [])
  * @method static \Illuminate\Database\Eloquent\Builder<static>|User newModelQuery()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|User newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|User onlyTrashed()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|User query()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|User whereAccessScope($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|User whereAvatarUrl($value)
@@ -62,11 +64,13 @@
  * @method static \Illuminate\Database\Eloquent\Builder<static>|User whereStatus($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|User whereUpdatedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|User whereUserType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|User withTrashed(bool $withTrashed = true)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|User withoutTrashed()
  * @mixin \Eloquent
  */
 class User extends Authenticatable
 {
-    use HasFactory, Notifiable, HasApiTokens, HasPermissions;
+    use HasFactory, Notifiable, HasApiTokens, HasPermissions, SoftDeletes;
 
     protected $guarded = ["id"];
 
@@ -87,6 +91,7 @@ protected function casts(): array
         return [
             "email_verified_at" => "datetime",
             "last_login_at"     => "datetime",
+            "deleted_at"        => "datetime",
             "password"          => "hashed",
             "cpf"               => Cpf::class,
             "language"          => LanguageEnum::class,

+ 12 - 0
app/Models/UserType.php

@@ -5,6 +5,7 @@
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Relations\HasMany;
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
+use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * @property int $id
@@ -17,6 +18,7 @@
  * @property int|null $unit_id
  * @property string|null $system_key
  * @property string $scope_key
+ * @property \Illuminate\Support\Carbon|null $deleted_at
  * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\UserTypePermission> $permissions
  * @property-read int|null $permissions_count
  * @property-read \App\Models\Unit|null $unit
@@ -26,9 +28,11 @@
  * @property-read int|null $users_count
  * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType newModelQuery()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType onlyTrashed()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType query()
  * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType whereAccessScope($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType whereDeletedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType whereId($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType whereIsSystem($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType whereLabel($value)
@@ -37,12 +41,20 @@
  * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType whereSystemKey($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType whereUnitId($value)
  * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType withTrashed(bool $withTrashed = true)
+ * @method static \Illuminate\Database\Eloquent\Builder<static>|UserType withoutTrashed()
  * @mixin \Eloquent
  */
 class UserType extends Model
 {
+    use SoftDeletes;
+
     protected $guarded = ['id'];
 
+    protected $casts = [
+        'deleted_at' => 'datetime',
+    ];
+
     public function users(): HasMany
     {
         return $this->hasMany(User::class, 'franchisor_user_type_id');

+ 38 - 0
database/migrations/2026_08_21_135628_add_soft_deletes_to_tbrs_inhabitant_classifications_user_types.php

@@ -0,0 +1,38 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    public function up(): void
+    {
+        Schema::table('tbrs', function (Blueprint $table) {
+            $table->softDeletes();
+        });
+
+        Schema::table('inhabitant_classifications', function (Blueprint $table) {
+            $table->softDeletes();
+        });
+
+        Schema::table('user_types', function (Blueprint $table) {
+            $table->softDeletes();
+        });
+    }
+
+    public function down(): void
+    {
+        Schema::table('tbrs', function (Blueprint $table) {
+            $table->dropSoftDeletes();
+        });
+
+        Schema::table('inhabitant_classifications', function (Blueprint $table) {
+            $table->dropSoftDeletes();
+        });
+
+        Schema::table('user_types', function (Blueprint $table) {
+            $table->dropSoftDeletes();
+        });
+    }
+};