# Master Jabatan

- Module key: `MasterJabatan`
- Category: `General`
- Path: `app/Modules/MasterJabatan`

## Ringkasan

Master Jabatan berada di kategori General. Modul ini memiliki 15 definisi route, 1 controller, 1 model, dan 3 view. Database module terdeteksi pada tabel: `master_jabatans`.

## Flowchart

```mermaid
flowchart TD
    A[User / Operator] --> B[Menu Master Jabatan]
    B --> C[Routes: 15]
    C --> D[Controllers: 1]
    D --> E[Views: 3]
    D --> F[(Tables: 1<br/>master_jabatans)]
    D --> G[Validation / Business Rules]
    G --> F
    F --> H[Report / Export / Audit]
```


## Routes

- `Route::middleware(['auth', 'ip.block', 'menu.access'])->group(function () {`  
  File: `app/Modules/MasterJabatan/routes/web.php`
- `Route::prefix('master-jabatan')->name('master_jabatan.')->group(function () {`  
  File: `app/Modules/MasterJabatan/routes/web.php`
- `Route::get('/', [MasterJabatanController::class, 'index'])->name('index');`  
  File: `app/Modules/MasterJabatan/routes/web.php`
- `Route::get('organisasi', [MasterJabatanController::class, 'organization'])->name('organization');`  
  File: `app/Modules/MasterJabatan/routes/web.php`
- `Route::get('organisasi-orgchart', [MasterJabatanController::class, 'organizationOrgchart'])->name('organization_orgchart');`  
  File: `app/Modules/MasterJabatan/routes/web.php`
- `Route::get('data', [MasterJabatanController::class, 'data'])->name('data');`  
  File: `app/Modules/MasterJabatan/routes/web.php`
- `Route::get('detail/{id}', [MasterJabatanController::class, 'detail'])->name('detail');`  
  File: `app/Modules/MasterJabatan/routes/web.php`
- `Route::get('tree', [MasterJabatanController::class, 'tree'])->name('tree');`  
  File: `app/Modules/MasterJabatan/routes/web.php`
- `Route::post('save-hierarchy', [MasterJabatanController::class, 'saveHierarchy'])->name('save_hierarchy');`  
  File: `app/Modules/MasterJabatan/routes/web.php`
- `Route::post('import', [MasterJabatanController::class, 'import'])->name('import');`  
  File: `app/Modules/MasterJabatan/routes/web.php`
- `Route::get('export', [MasterJabatanController::class, 'export'])->name('export');`  
  File: `app/Modules/MasterJabatan/routes/web.php`
- `Route::get('template', [MasterJabatanController::class, 'template'])->name('template');`  
  File: `app/Modules/MasterJabatan/routes/web.php`
- `Route::post('/', [MasterJabatanController::class, 'store'])->name('store');`  
  File: `app/Modules/MasterJabatan/routes/web.php`
- `Route::put('{id}', [MasterJabatanController::class, 'update'])->name('update');`  
  File: `app/Modules/MasterJabatan/routes/web.php`
- `Route::delete('{id}', [MasterJabatanController::class, 'destroy'])->name('destroy');`  
  File: `app/Modules/MasterJabatan/routes/web.php`

## Controllers

- `app/Modules/MasterJabatan/Http/Controllers/MasterJabatanController.php`

## Models

- `app/Modules/MasterJabatan/Models/JabatanModel.php`

## Views

- `app/Modules/MasterJabatan/Resources/views/index.blade.php`
- `app/Modules/MasterJabatan/Resources/views/organization.blade.php`
- `app/Modules/MasterJabatan/Resources/views/organization_orgchart.blade.php`

## Database / Migration

### `master_jabatans`
- Actions: `create`, `table`
- Columns: 8
  - `code:string`
  - `name:string`
  - `description:text`
  - `is_active:boolean`
  - `parent_id:foreignId`
  - `parent_id:dropConstrainedForeignId`
  - `sort_order:unsignedInteger`
  - `sort_order:dropColumn`
- Migrations:
  - `app/Modules/MasterJabatan/Database/migrations/2026_02_19_100500_create_master_jabatans_table.php`
  - `app/Modules/MasterJabatan/Database/migrations/2026_02_19_110000_add_parent_id_to_master_jabatans_table.php`
  - `app/Modules/MasterJabatan/Database/migrations/2026_02_19_111000_add_sort_order_to_master_jabatans_table.php`
