MIF_E31230892/KELAS_USAGE_MAP.md

24 KiB

Santri.kelas Usage Mapping

Generated: 2026-02-12 16:30:36

This document maps all usage of $santri->kelas and related patterns in the codebase to guide refactoring to the new kelas system.


📊 Summary

  • Total files with kelas usage: 40
  • Total matches found: 115

🎯 Priority Levels

🔴 HIGH Priority (Break functionality)

  • app/Http/Controllers/Admin/CapaianController.php

    • Issue: Query filtering by kelas column
    • Action Required: Update to use kelasSantri relationship
  • app/Http/Controllers/Admin/SantriController.php

    • Issue: Query filtering by kelas column
    • Action Required: Update to use kelasSantri relationship
  • database/migrations/2025_09_29_033444_create_santris_table.php

    • Issue: Database schema definition
    • Action Required: Review but DO NOT modify old migrations
  • database/migrations/2025_10_31_064743_create_materi_table.php

    • Issue: Database schema definition
    • Action Required: Review but DO NOT modify old migrations

🟡 MEDIUM Priority (UI/Display)

  • app/Models/Materi.php

    • Issue: Model attribute or accessor
    • Action Required: Review accessor implementation
  • app/Models/Santri.php

    • Issue: Model attribute or accessor
    • Action Required: Review accessor implementation
  • resources/views/admin/berita/show.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/capaian/create.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/capaian/export-rapor.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/capaian/index.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/capaian/riwayat-santri.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/kegiatan/absensi/input.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/kegiatan/kartu/cetak.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/kegiatan/kartu/daftar.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/kegiatan/kartu/index.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/kegiatan/riwayat/detail-santri.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/kepulangan/create.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/kepulangan/over-limit.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/kepulangan/surat-pdf.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/kesehatan-santri/riwayat.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/pembayaran-spp/create.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/pembayaran-spp/edit.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/riwayat_pelanggaran/riwayat_santri.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/santri/form.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/santri/index.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/santri/show.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/admin/users/wali_accounts.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/santri/berita/index.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/santri/capaian/index.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor
  • resources/views/santri/kegiatan/index.blade.php

    • Issue: Display kelas in UI
    • Action Required: Change to use $santri->kelas_name accessor

🟢 LOW Priority (Backward compatible)

  • app/Http/Controllers/Admin/AbsensiKegiatanController.php

    • Note: Other usage
  • app/Http/Controllers/Admin/BeritaController.php

    • Note: Other usage
  • app/Http/Controllers/Admin/MateriController.php

    • Note: Other usage
  • app/Http/Controllers/Admin/PembayaranSppController.php

    • Note: Other usage
  • app/Http/Controllers/Api/ApiAuthController.php

    • Note: Other usage
  • app/Http/Controllers/Api/ApiBeritaController.php

    • Note: Other usage
  • app/Http/Controllers/Api/ApiCapaianController.php

    • Note: Other usage
  • app/Http/Controllers/DashboardController.php

    • Note: Other usage
  • app/Http/Controllers/Santri/SantriBeritaController.php

    • Note: Other usage
  • database/seeders/KelasSeeder.php

    • Note: Other usage

📂 Detailed Listing by Directory

App / Http / Controllers

📄 app/Http/Controllers/Admin/AbsensiKegiatanController.php

Pattern: property_access

  • Line 179: 'kelas' => $santri->kelas,

Pattern: kelas_column

  • Line 179: 'kelas' => $santri->kelas,

💡 Suggested Action: Review usage and update as needed based on context.


📄 app/Http/Controllers/Admin/BeritaController.php

Pattern: enum_values

  • Line 51: $kelasOptions = ['PB', 'Lambatan', 'Cepatan'];
  • Line 127: $kelasOptions = ['PB', 'Lambatan', 'Cepatan'];

💡 Suggested Action: Review usage and update as needed based on context.


📄 app/Http/Controllers/Admin/CapaianController.php

Pattern: where_kelas

  • Line 35: $query->where('kelas', $selectedKelas);
  • Line 344: ->when($kelas, fn($q) => $q->where('kelas', $kelas))
  • Line 347: ->when($kelas, fn($q) => $q->where('kelas', $kelas))
  • Line 352: ->when($kelas, fn($q) => $q->whereHas('santri', fn($sq) => $sq->where('kelas', $kelas)))
  • Line 393: $kelasMateris = $materis->where('kelas', $k);
  • Line 463: $filteredMateris = $kelas ? $materis->where('kelas', $kelas) : $materis;
  • Line 480: $heatmapMateris = $kelas ? $materis->where('kelas', $kelas)->values() : $materis->take(15)->values();
  • Line 835: $q->where('kelas', $kelas);
  • Line 896: $query->where('kelas', $kelas);

Pattern: property_access

  • Line 116: $materis = Materi::where('kelas', $santri->kelas)
  • Line 123: 'kelas' => $santri->kelas,
  • Line 453: 'kelas' => $santri->kelas,
  • Line 484: $row = ['nama' => $santri->nama_lengkap, 'id_santri' => $santri->id_santri, 'kelas' => $santri->kelas];

Pattern: kelas_column

  • Line 123: 'kelas' => $santri->kelas,
  • Line 453: 'kelas' => $santri->kelas,
  • Line 484: $row = ['nama' => $santri->nama_lengkap, 'id_santri' => $santri->id_santri, 'kelas' => $santri->kelas];

Pattern: enum_values

  • Line 341: $kelasList = ['Lambatan', 'Cepatan', 'PB'];
  • Line 708: $kelas = $request->input('kelas', 'Lambatan');

💡 Suggested Action:

  1. Replace where('kelas') with whereHas('kelasSantri')
  2. Update query to use kelas ID instead of name
  3. Test filter functionality thoroughly

📄 app/Http/Controllers/Admin/MateriController.php

Pattern: kelas_column

  • Line 82: 'kelas' => 'required|in:Lambatan,Cepatan,PB',
  • Line 156: 'kelas' => 'required|in:Lambatan,Cepatan,PB',

💡 Suggested Action: Review usage and update as needed based on context.


📄 app/Http/Controllers/Admin/PembayaranSppController.php

Pattern: property_access

  • Line 54: 'kelas' => $santri->kelas,

Pattern: kelas_column

  • Line 54: 'kelas' => $santri->kelas,

💡 Suggested Action: Review usage and update as needed based on context.


📄 app/Http/Controllers/Admin/SantriController.php

Pattern: where_kelas

  • Line 38: $query->where('kelas', $request->kelas);

Pattern: kelas_column

  • Line 86: 'kelas' => 'required|in:PB,Lambatan,Cepatan',
  • Line 154: 'kelas' => 'required|in:PB,Lambatan,Cepatan',

💡 Suggested Action:

  1. Replace where('kelas') with whereHas('kelasSantri')
  2. Update query to use kelas ID instead of name
  3. Test filter functionality thoroughly

📄 app/Http/Controllers/Api/ApiAuthController.php

Pattern: property_access

  • Line 158: 'kelas' => $santri->kelas,

Pattern: kelas_column

  • Line 158: 'kelas' => $santri->kelas,

💡 Suggested Action: Review usage and update as needed based on context.


📄 app/Http/Controllers/Api/ApiBeritaController.php

Pattern: property_access

  • Line 42: ->whereJsonContains('target_kelas', $santri->kelas);
  • Line 146: $bolehAkses = in_array($santri->kelas, $berita->target_kelas ?? []);

💡 Suggested Action: Review usage and update as needed based on context.


📄 app/Http/Controllers/Api/ApiCapaianController.php

Pattern: property_access

  • Line 125: 'kelas' => $santri->kelas,
  • Line 490: ->where('santris.kelas', $santri->kelas)
  • Line 523: ->where('santris.kelas', $santri->kelas)
  • Line 591: 'kelas' => $santri->kelas,

Pattern: kelas_column

  • Line 125: 'kelas' => $santri->kelas,
  • Line 295: 'kelas' => $capaian->materi->kelas,
  • Line 591: 'kelas' => $santri->kelas,

💡 Suggested Action: Review usage and update as needed based on context.


📄 app/Http/Controllers/DashboardController.php

Pattern: property_access

  • Line 204: 'kelas' => $santri->kelas,
  • Line 251: ->whereJsonContains('target_kelas', $santri->kelas);

Pattern: kelas_column

  • Line 204: 'kelas' => $santri->kelas,

💡 Suggested Action: Review usage and update as needed based on context.


📄 app/Http/Controllers/Santri/SantriBeritaController.php

Pattern: property_access

  • Line 44: ->whereJsonContains('target_kelas', $santri->kelas);
  • Line 89: ->whereJsonContains('target_kelas', $santri->kelas);

💡 Suggested Action: Review usage and update as needed based on context.


App / Models

📄 app/Models/Materi.php

Pattern: where_kelas

  • Line 80: return $query->where('kelas', $kelas);

💡 Suggested Action:

  1. Review model methods and accessors
  2. Ensure backward compatibility
  3. Add tests for new relations

📄 app/Models/Santri.php

Pattern: enum_values

  • Line 177: 'Lambatan' => 'Lambatan',
  • Line 178: 'Cepatan' => 'Cepatan',

Pattern: where_kelas

  • Line 306: return $query->where('kelas', $kelas);

💡 Suggested Action:

  1. Review model methods and accessors
  2. Ensure backward compatibility
  3. Add tests for new relations

Resources / views

📄 resources/views/admin/berita/show.blade.php

Pattern: property_access

  • Line 130: <i class="fas fa-graduation-cap"></i> {{ $santri->kelas }}

Pattern: blade_kelas

  • Line 130: <i class="fas fa-graduation-cap"></i> {{ $santri->kelas }}

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/capaian/create.blade.php

Pattern: property_access

  • Line 25: data-kelas="{{ $santri->kelas }}"
  • Line 27: {{ $santri->nama_lengkap }} ({{ $santri->nis }}) - Kelas: {{ $santri->kelas }}

Pattern: blade_kelas

  • Line 25: data-kelas="{{ $santri->kelas }}"
  • Line 27: {{ $santri->nama_lengkap }} ({{ $santri->nis }}) - Kelas: {{ $santri->kelas }}

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/capaian/export-rapor.blade.php

Pattern: property_access

  • Line 96: <div class="info-item"><span class="label">Kelas</span> <span class="value">{{ $santri->kelas }}</span></div>

Pattern: blade_kelas

  • Line 96: <div class="info-item"><span class="label">Kelas</span> <span class="value">{{ $santri->kelas }}</span></div>

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/capaian/index.blade.php

Pattern: enum_values

  • Line 38: <a href="{{ route('admin.capaian.index', array_merge(request()->except('kelas'), ['kelas' => 'PB'])) }}"
  • Line 43: <a href="{{ route('admin.capaian.index', array_merge(request()->except('kelas'), ['kelas' => 'Lambatan'])) }}"
  • Line 48: <a href="{{ route('admin.capaian.index', array_merge(request()->except('kelas'), ['kelas' => 'Cepatan'])) }}"
  • Line 112: @if($data['santri']->kelas == 'PB')
  • Line 114: @elseif($data['santri']->kelas == 'Lambatan')

Pattern: kelas_column

  • Line 38: <a href="{{ route('admin.capaian.index', array_merge(request()->except('kelas'), ['kelas' => 'PB'])) }}"
  • Line 43: <a href="{{ route('admin.capaian.index', array_merge(request()->except('kelas'), ['kelas' => 'Lambatan'])) }}"
  • Line 48: <a href="{{ route('admin.capaian.index', array_merge(request()->except('kelas'), ['kelas' => 'Cepatan'])) }}"

💡 Suggested Action: Review usage and update as needed based on context.


📄 resources/views/admin/capaian/riwayat-santri.blade.php

Pattern: property_access

  • Line 18: <strong>Kelas:</strong> <span class="badge badge-secondary">{{ $santri->kelas }}</span>

Pattern: blade_kelas

  • Line 18: <strong>Kelas:</strong> <span class="badge badge-secondary">{{ $santri->kelas }}</span>

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/kegiatan/absensi/input.blade.php

Pattern: property_access

  • Line 63: <td><span class="badge badge-secondary">{{ $santri->kelas }}</span></td>

Pattern: blade_kelas

  • Line 63: <td><span class="badge badge-secondary">{{ $santri->kelas }}</span></td>

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/kegiatan/kartu/cetak.blade.php

Pattern: property_access

  • Line 423: <span class="value">: @if(isset($santri)){{ $santri->kelas }}@else Lambatan @endif</span>

Pattern: blade_kelas

  • Line 423: <span class="value">: @if(isset($santri)){{ $santri->kelas }}@else Lambatan @endif</span>

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/kegiatan/kartu/daftar.blade.php

Pattern: property_access

  • Line 29: <td><span class="badge badge-secondary">{{ $santri->kelas }}</span></td>

Pattern: blade_kelas

  • Line 29: <td><span class="badge badge-secondary">{{ $santri->kelas }}</span></td>

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/kegiatan/kartu/index.blade.php

Pattern: property_access

  • Line 60: <td><span class="badge badge-secondary">{{ $santri->kelas }}</span></td>

Pattern: blade_kelas

  • Line 60: <td><span class="badge badge-secondary">{{ $santri->kelas }}</span></td>

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/kegiatan/riwayat/detail-santri.blade.php

Pattern: property_access

  • Line 15: Kelas: <strong>{{ $santri->kelas }}</strong> |

Pattern: blade_kelas

  • Line 15: Kelas: <strong>{{ $santri->kelas }}</strong> |

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/kepulangan/create.blade.php

Pattern: property_access

  • Line 49: {{ $santri->nama_lengkap }} ({{ $santri->id_santri }} - {{ $santri->kelas }})

Pattern: blade_kelas

  • Line 49: {{ $santri->nama_lengkap }} ({{ $santri->id_santri }} - {{ $santri->kelas }})

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/kepulangan/over-limit.blade.php

Pattern: property_access

  • Line 78: <td>{{ $santri->kelas }}</td>

Pattern: blade_kelas

  • Line 78: <td>{{ $santri->kelas }}</td>

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/kepulangan/surat-pdf.blade.php

Pattern: property_access

  • Line 269: <div class="data-value">{{ $santri->kelas }}</div>
  • Line 394: <td style="padding: 5px;">: {{ $santri->kelas }}</td>

Pattern: blade_kelas

  • Line 269: <div class="data-value">{{ $santri->kelas }}</div>
  • Line 394: <td style="padding: 5px;">: {{ $santri->kelas }}</td>

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/kesehatan-santri/riwayat.blade.php

Pattern: property_access

  • Line 21: <strong>Kelas:</strong> {{ $santri->kelas }}<br>

Pattern: blade_kelas

  • Line 21: <strong>Kelas:</strong> {{ $santri->kelas }}<br>

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/pembayaran-spp/create.blade.php

Pattern: property_access

  • Line 35: {{ $santri->id_santri }} - {{ $santri->nama_lengkap }} ({{ $santri->kelas }})

Pattern: blade_kelas

  • Line 35: {{ $santri->id_santri }} - {{ $santri->nama_lengkap }} ({{ $santri->kelas }})

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/pembayaran-spp/edit.blade.php

Pattern: property_access

  • Line 36: {{ $santri->id_santri }} - {{ $santri->nama_lengkap }} ({{ $santri->kelas }})

Pattern: blade_kelas

  • Line 36: {{ $santri->id_santri }} - {{ $santri->nama_lengkap }} ({{ $santri->kelas }})

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/riwayat_pelanggaran/riwayat_santri.blade.php

Pattern: property_access

  • Line 33: {{ $santri->id_santri }} | {{ $santri->kelas }}

Pattern: blade_kelas

  • Line 33: {{ $santri->id_santri }} | {{ $santri->kelas }}

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/santri/form.blade.php

Pattern: property_access

  • Line 87: <option value="PB" {{ old('kelas', $isEdit ? $santri->kelas : '') == 'PB' ? 'selected' : '' }}>PB (Pembinaan)</option>
  • Line 88: <option value="Lambatan" {{ old('kelas', $isEdit ? $santri->kelas : '') == 'Lambatan' ? 'selected' : '' }}>Lambatan</option>
  • Line 89: <option value="Cepatan" {{ old('kelas', $isEdit ? $santri->kelas : '') == 'Cepatan' ? 'selected' : '' }}>Cepatan</option>

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/santri/index.blade.php

Pattern: property_access

  • Line 89: <td><strong>{{ $santri->kelas }}</strong></td>

Pattern: blade_kelas

  • Line 89: <td><strong>{{ $santri->kelas }}</strong></td>

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/santri/show.blade.php

Pattern: property_access

  • Line 75: <strong style="color: #6FBA9D; font-size: 1.1rem;">{{ $santri->kelas }}</strong>
  • Line 76: @if($santri->kelas == 'PB')

Pattern: blade_kelas

  • Line 75: <strong style="color: #6FBA9D; font-size: 1.1rem;">{{ $santri->kelas }}</strong>

Pattern: enum_values

  • Line 76: @if($santri->kelas == 'PB')

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/admin/users/wali_accounts.blade.php

Pattern: property_access

  • Line 95: <td>{{ $santri->kelas }}</td>

Pattern: blade_kelas

  • Line 95: <td>{{ $santri->kelas }}</td>

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/santri/berita/index.blade.php

Pattern: property_access

  • Line 10: Informasi terbaru untuk <strong>{{ $santri->kelas }}</strong>

Pattern: blade_kelas

  • Line 10: Informasi terbaru untuk <strong>{{ $santri->kelas }}</strong>

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/santri/capaian/index.blade.php

Pattern: property_access

  • Line 56: <div class="card-value-small">{{ $santri->kelas }}</div>

Pattern: blade_kelas

  • Line 56: <div class="card-value-small">{{ $santri->kelas }}</div>

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

📄 resources/views/santri/kegiatan/index.blade.php

Pattern: property_access

  • Line 9: {{ $santri->nama_lengkap }} - Kelas {{ $santri->kelas }}

Pattern: blade_kelas

  • Line 9: {{ $santri->nama_lengkap }} - Kelas {{ $santri->kelas }}

💡 Suggested Action:

  1. Replace {{ $santri->kelas }} with {{ $santri->kelas_name }}
  2. Test display in browser

Database / migrations

📄 database/migrations/2025_09_29_033444_create_santris_table.php

Pattern: enum_values

  • Line 25: $table->enum('kelas', ['PB', 'Lambatan', 'Cepatan']); // PB = Pembinaan

💡 Suggested Action: Review usage and update as needed based on context.


📄 database/migrations/2025_10_31_064743_create_materi_table.php

Pattern: enum_values

  • Line 18: $table->enum('kelas', ['Lambatan', 'Cepatan', 'PB'])->index();

💡 Suggested Action: Review usage and update as needed based on context.


Database / seeders

📄 database/seeders/KelasSeeder.php

Pattern: enum_values

  • Line 29: 'nama_kelas' => 'PB',
  • Line 38: 'nama_kelas' => 'Lambatan',
  • Line 47: 'nama_kelas' => 'Cepatan',

💡 Suggested Action: Review usage and update as needed based on context.


📖 Refactoring Guide

General Patterns

1. Display in Views (Blade)

// OLD:
{{ $santri->kelas }}

// NEW (backward compatible):
{{ $santri->kelas_name }}

2. Filter in Controllers

// OLD:
$santris = Santri::where('kelas', 'PB')->get();

// NEW:
$santris = Santri::whereHas('kelasSantri', function($q) {
    $q->where('id_kelas', 1); // PB = 1
})->get();

3. Kegiatan-Kelas Relation

// OLD: Filter santri by kelas for kegiatan
$santris = Santri::whereIn('kelas', ['PB', 'Lambatan'])->get();

// NEW: Use kegiatan relation
$santris = $kegiatan->getEligibleSantris();

Testing Checklist

  • Santri detail page displays correct kelas
  • Santri list filter by kelas works
  • Dashboard statistics by kelas accurate
  • Kegiatan filtering by kelas works
  • Absensi shows correct santri per kegiatan
  • Reports include correct kelas information
  • Mobile API returns kelas data correctly