# Master Profil Jam Kerja

- Module key: `MasterProfilJamKerja`
- Category: `HRIS`
- Path: `app/Modules/MasterProfilJamKerja`

## Ringkasan

Master Profil Jam Kerja berada di kategori HRIS. Modul ini memiliki 8 definisi route, 1 controller, 1 model, dan 1 view. Database module terdeteksi pada tabel: `master_profil_jam_kerjas`.

## Flowchart

```mermaid
flowchart TD
    A[User / Operator] --> B[Menu Master Profil Jam Kerja]
    B --> C[Routes: 8]
    C --> D[Controllers: 1]
    D --> E[Views: 1]
    D --> F[(Tables: 1<br/>master_profil_jam_kerjas)]
    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/MasterProfilJamKerja/routes/web.php`
- `Route::prefix('master-profil-jam-kerja')->name('master_profil_jam_kerja.')->group(function () {`  
  File: `app/Modules/MasterProfilJamKerja/routes/web.php`
- `Route::get('/', [MasterProfilJamKerjaController::class, 'index'])->name('index');`  
  File: `app/Modules/MasterProfilJamKerja/routes/web.php`
- `Route::get('data', [MasterProfilJamKerjaController::class, 'data'])->name('data');`  
  File: `app/Modules/MasterProfilJamKerja/routes/web.php`
- `Route::post('/', [MasterProfilJamKerjaController::class, 'store'])->name('store');`  
  File: `app/Modules/MasterProfilJamKerja/routes/web.php`
- `Route::post('{id}/copy', [MasterProfilJamKerjaController::class, 'copy'])->name('copy');`  
  File: `app/Modules/MasterProfilJamKerja/routes/web.php`
- `Route::put('{id}', [MasterProfilJamKerjaController::class, 'update'])->name('update');`  
  File: `app/Modules/MasterProfilJamKerja/routes/web.php`
- `Route::delete('{id}', [MasterProfilJamKerjaController::class, 'destroy'])->name('destroy');`  
  File: `app/Modules/MasterProfilJamKerja/routes/web.php`

## Controllers

- `app/Modules/MasterProfilJamKerja/Http/Controllers/MasterProfilJamKerjaController.php`

## Models

- `app/Modules/MasterProfilJamKerja/Models/ProfilJamKerjaModel.php`

## Views

- `app/Modules/MasterProfilJamKerja/Resources/views/index.blade.php`

## Database / Migration

### `master_profil_jam_kerjas`
- Actions: `create`, `table`
- Columns: 15
  - `code:string`
  - `name:string`
  - `start_time:time`
  - `end_time:time`
  - `break_start_time:time`
  - `break_end_time:time`
  - `late_tolerance_minutes:unsignedSmallInteger`
  - `work_minutes_per_day:unsignedSmallInteger`
  - `work_days:json`
  - `description:text`
  - `is_active:boolean`
  - `is_one_day_cap:boolean`
  - `is_one_day_cap:dropColumn`
  - `required_checkin_before_start_minutes:unsignedSmallInteger`
  - `required_checkin_before_start_minutes:dropColumn`
- Migrations:
  - `app/Modules/MasterProfilJamKerja/Database/migrations/2026_02_24_160000_create_master_profil_jam_kerjas_table.php`
  - `app/Modules/MasterProfilJamKerja/Database/migrations/2026_02_24_161000_add_is_one_day_cap_to_master_profil_jam_kerjas_table.php`
  - `app/Modules/MasterProfilJamKerja/Database/migrations/2026_04_22_090000_add_required_checkin_before_start_minutes_to_master_profil_jam_kerjas_table.php`
