| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- <?php
- namespace Database\Seeders;
- use App\Models\InhabitantClassification;
- use App\Models\MunicipalitySize;
- use Illuminate\Database\Seeder;
- class InhabitantClassificationSeeder extends Seeder
- {
- public function run(): void
- {
- $sizes = MunicipalitySize::pluck('id', 'acronym');
- if ($sizes->isEmpty()) {
- return;
- }
- $rules = [
- 'PP' => [
- ['description' => 'Até 50k — isenção inicial (meses 1 a 3)', 'start' => 1, 'end' => 3, 'tbr_percentage' => 0.0000, 'is_renewal' => false],
- ['description' => 'Até 50k — meses 4 a 12', 'start' => 4, 'end' => 12, 'tbr_percentage' => 0.4000, 'is_renewal' => false],
- ['description' => 'Até 50k — meses 13 a 60', 'start' => 13, 'end' => 60, 'tbr_percentage' => 0.6000, 'is_renewal' => false],
- ['description' => 'Renovação até 50k', 'start' => 1, 'end' => 60, 'tbr_percentage' => 0.6000, 'is_renewal' => true],
- ],
- 'MP' => [
- ['description' => 'De 50k a 100k — isenção inicial (meses 1 a 3)', 'start' => 1, 'end' => 3, 'tbr_percentage' => 0.0000, 'is_renewal' => false],
- ['description' => 'De 50k a 100k — meses 4 a 12', 'start' => 4, 'end' => 12, 'tbr_percentage' => 0.5000, 'is_renewal' => false],
- ['description' => 'De 50k a 100k — meses 13 a 60', 'start' => 13, 'end' => 60, 'tbr_percentage' => 0.7500, 'is_renewal' => false],
- ['description' => 'Renovação 50k–100k', 'start' => 1, 'end' => 60, 'tbr_percentage' => 0.7500, 'is_renewal' => true],
- ],
- 'GP' => [
- ['description' => 'De 100k a 200k — isenção inicial (meses 1 a 3)', 'start' => 1, 'end' => 3, 'tbr_percentage' => 0.0000, 'is_renewal' => false],
- ['description' => 'De 100k a 200k — meses 4 a 12', 'start' => 4, 'end' => 12, 'tbr_percentage' => 0.7500, 'is_renewal' => false],
- ['description' => 'De 100k a 200k — meses 13 a 60', 'start' => 13, 'end' => 60, 'tbr_percentage' => 1.0000, 'is_renewal' => false],
- ['description' => 'Renovação 100k–200k', 'start' => 1, 'end' => 60, 'tbr_percentage' => 1.0000, 'is_renewal' => true],
- ],
- 'MGP' => [
- ['description' => 'Acima de 200k — isenção inicial (meses 1 a 3)', 'start' => 1, 'end' => 3, 'tbr_percentage' => 0.0000, 'is_renewal' => false],
- ['description' => 'Acima de 200k — meses 4 a 12', 'start' => 4, 'end' => 12, 'tbr_percentage' => 1.0000, 'is_renewal' => false],
- ['description' => 'Acima de 200k — meses 13 a 60', 'start' => 13, 'end' => 60, 'tbr_percentage' => 1.5000, 'is_renewal' => false],
- ['description' => 'Renovação +200k', 'start' => 1, 'end' => 60, 'tbr_percentage' => 1.5000, 'is_renewal' => true],
- ],
- ];
- foreach ($rules as $acronym => $brackets) {
- $sizeId = $sizes[$acronym] ?? null;
- if (!$sizeId) {
- continue;
- }
- foreach ($brackets as $bracket) {
- InhabitantClassification::firstOrCreate(
- [
- 'municipality_size_id' => $sizeId,
- 'start' => $bracket['start'],
- 'end' => $bracket['end'],
- 'is_renewal' => $bracket['is_renewal'],
- ],
- array_merge($bracket, ['municipality_size_id' => $sizeId]),
- );
- }
- }
- }
- }
|