feat(webstatement): implement periode statement management feature

- Menambahkan menu "Periode Statement" pada module.json dengan akses untuk role administrator.
- Menambahkan model `PeriodeStatement` dengan fitur tracking user dan scoped query.
- Menyediakan controller `PeriodeStatementController` dengan fungsi CRUD, otorisasi, proses, ekspor data ke Excel, dan datatables.
- Menambahkan request validation melalui `PeriodeStatementRequest`.
- Menyediakan view untuk list, create, edit, dan otorisasi periode statement.
- Menambahkan routing termasuk resource routes dan breadcrumbs untuk mendukung fitur ini.
- Menambahkan migrasi database `periode_statements` dengan kolom untuk menyimpan data periode, status, otorisasi, serta metadata.
- Fitur ini memungkinkan pengelolaan dan pemrosesan periode statement secara terstruktur dan aman.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
Daeng Deni Mardaeni
2025-05-11 15:58:49 +07:00
parent 204675716b
commit 7df50b5141
11 changed files with 1152 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
<?php
use Illuminate\Support\Facades\Route;
use Modules\Webstatement\Http\Controllers\PeriodeStatementController;
use Modules\Webstatement\Http\Controllers\SyncLogsController;
use Modules\Webstatement\Http\Controllers\JenisKartuController;
use Modules\Webstatement\Http\Controllers\KartuAtmController;
@@ -58,6 +59,26 @@ Route::middleware(['auth'])->group(function () {
Route::get('/{id}/view', [EmailBlastController::class, 'view'])->name('emailblast.view');
Route::get('/datatables', [EmailBlastController::class, 'datatables'])->name('emailblast.datatables');
});
// Periode Statement Routes
Route::group(['prefix' => 'periode-statements', 'as' => 'periode-statements.', 'middleware' => ['auth']], function () {
Route::get('/datatables', [PeriodeStatementController::class, 'dataForDatatables'])->name('datatables');
Route::get('/export', [PeriodeStatementController::class, 'export'])->name('export');
// Process, complete, and fail routes
Route::get('/{periodeStatement}/process', 'PeriodeStatementController@process')->name('process');
Route::get('/{periodeStatement}/complete', 'PeriodeStatementController@complete')->name('complete');
Route::post('/{periodeStatement}/fail', 'PeriodeStatementController@fail')->name('fail');
// Authorization routes
Route::get('/pending-authorization', 'PeriodeStatementController@pendingAuthorization')->name('pending-authorization');
Route::get('/{periodeStatement}/authorize', 'PeriodeStatementController@showAuthorize')->name('show-authorize');
Route::post('/{periodeStatement}/authorize', 'PeriodeStatementController@authorize')->name('authorize');
});
Route::resource('periode-statements', PeriodeStatementController::class);
});
Route::get('migrasi', [MigrasiController::class, 'index'])->name('migrasi.index');