feat: update various controllers to return back instead of redirecting to index routes; add payroll adjustment and payroll controllers

This commit is contained in:
Yoga Pangestu 2026-08-08 14:18:04 +07:00
parent 6627422655
commit 48c031a86f
16 changed files with 64 additions and 119 deletions

View File

@ -36,7 +36,7 @@ public function updateSystem(UpdateSystemRequest $request): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Pengaturan sistem berhasil diperbarui.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Pengaturan sistem berhasil diperbarui.']);
return to_route('admin.settings.index'); return back();
} }
public function updateHomepage(UpdateHomepageRequest $request): RedirectResponse public function updateHomepage(UpdateHomepageRequest $request): RedirectResponse
@ -45,7 +45,7 @@ public function updateHomepage(UpdateHomepageRequest $request): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Pengaturan homepage berhasil diperbarui.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Pengaturan homepage berhasil diperbarui.']);
return to_route('admin.settings.index'); return back();
} }
public function updateSocialMedia(UpdateSocialMediaRequest $request): RedirectResponse public function updateSocialMedia(UpdateSocialMediaRequest $request): RedirectResponse
@ -54,7 +54,7 @@ public function updateSocialMedia(UpdateSocialMediaRequest $request): RedirectRe
Inertia::flash('toast', ['type' => 'success', 'message' => 'Pengaturan media sosial berhasil diperbarui.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Pengaturan media sosial berhasil diperbarui.']);
return to_route('admin.settings.index'); return back();
} }
public function updateMarketplace(UpdateMarketplaceRequest $request): RedirectResponse public function updateMarketplace(UpdateMarketplaceRequest $request): RedirectResponse
@ -63,7 +63,7 @@ public function updateMarketplace(UpdateMarketplaceRequest $request): RedirectRe
Inertia::flash('toast', ['type' => 'success', 'message' => 'Pengaturan marketplace berhasil diperbarui.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Pengaturan marketplace berhasil diperbarui.']);
return to_route('admin.settings.index'); return back();
} }
public function updateHR(UpdateHRRequest $request): RedirectResponse public function updateHR(UpdateHRRequest $request): RedirectResponse
@ -72,6 +72,6 @@ public function updateHR(UpdateHRRequest $request): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Pengaturan HR berhasil diperbarui.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Pengaturan HR berhasil diperbarui.']);
return to_route('admin.settings.index'); return back();
} }
} }

View File

@ -20,10 +20,8 @@ public function __construct(
public function index(PaginatedRequest $request): Response public function index(PaginatedRequest $request): Response
{ {
$cashAccount = $this->service->get();
return Inertia::render('admin/finance/cash-account/index', [ return Inertia::render('admin/finance/cash-account/index', [
'cashAccount' => $cashAccount, 'cashAccount' => $this->service->get(),
'transactions' => $this->service->paginatedTransactions( 'transactions' => $this->service->paginatedTransactions(
...$request->validatedWithDefaults(), ...$request->validatedWithDefaults(),
filters: $request->only(['type']), filters: $request->only(['type']),
@ -38,7 +36,7 @@ public function index(PaginatedRequest $request): Response
public function deposit(CashTransactionRequest $request): RedirectResponse public function deposit(CashTransactionRequest $request): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->deposit($request->validated()), fn() => $this->service->deposit($request->validated()),
'Deposit berhasil ditambahkan.', 'Deposit berhasil ditambahkan.',
'admin.finance.cash-accounts.index' 'admin.finance.cash-accounts.index'
); );
@ -47,7 +45,7 @@ public function deposit(CashTransactionRequest $request): RedirectResponse
public function withdrawal(CashTransactionRequest $request): RedirectResponse public function withdrawal(CashTransactionRequest $request): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->withdrawal($request->validated()), fn() => $this->service->withdrawal($request->validated()),
'Withdrawal berhasil ditambahkan.', 'Withdrawal berhasil ditambahkan.',
'admin.finance.cash-accounts.index' 'admin.finance.cash-accounts.index'
); );
@ -56,7 +54,7 @@ public function withdrawal(CashTransactionRequest $request): RedirectResponse
public function update(CashTransactionRequest $request, CashTransaction $transaction): RedirectResponse public function update(CashTransactionRequest $request, CashTransaction $transaction): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->updateTransaction($transaction, $request->validated()), fn() => $this->service->updateTransaction($transaction, $request->validated()),
'Transaksi berhasil diperbarui.', 'Transaksi berhasil diperbarui.',
'admin.finance.cash-accounts.index' 'admin.finance.cash-accounts.index'
); );
@ -65,7 +63,7 @@ public function update(CashTransactionRequest $request, CashTransaction $transac
public function destroy(CashTransaction $transaction): RedirectResponse public function destroy(CashTransaction $transaction): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->deleteTransaction($transaction), fn() => $this->service->deleteTransaction($transaction),
'Transaksi berhasil dihapus.', 'Transaksi berhasil dihapus.',
'admin.finance.cash-accounts.index' 'admin.finance.cash-accounts.index'
); );

View File

@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Controllers\Admin\Finance; namespace App\Http\Controllers\Admin\Finance\Payroll;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\Finance\PayrollAdjustmentRequest; use App\Http\Requests\Admin\Finance\PayrollAdjustmentRequest;
@ -18,7 +18,7 @@ public function __construct(
public function store(PayrollAdjustmentRequest $request, Payroll $payroll): RedirectResponse public function store(PayrollAdjustmentRequest $request, Payroll $payroll): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->create($payroll, $request->validated()), fn() => $this->service->create($payroll, $request->validated()),
'Adjustment gaji berhasil ditambahkan.', 'Adjustment gaji berhasil ditambahkan.',
'admin.finance.payroll-periods.show', 'admin.finance.payroll-periods.show',
parameters: ['payroll_period' => $payroll->payroll_period_id] parameters: ['payroll_period' => $payroll->payroll_period_id]
@ -28,7 +28,7 @@ public function store(PayrollAdjustmentRequest $request, Payroll $payroll): Redi
public function destroy(PayrollAdjustment $payrollAdjustment): RedirectResponse public function destroy(PayrollAdjustment $payrollAdjustment): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->delete($payrollAdjustment), fn() => $this->service->delete($payrollAdjustment),
'Adjustment gaji berhasil dihapus.', 'Adjustment gaji berhasil dihapus.',
'admin.finance.payroll-periods.show', 'admin.finance.payroll-periods.show',
parameters: ['payroll_period' => $payrollAdjustment->payroll->payroll_period_id] parameters: ['payroll_period' => $payrollAdjustment->payroll->payroll_period_id]

View File

@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Controllers\Admin\Finance; namespace App\Http\Controllers\Admin\Finance\Payroll;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Payroll; use App\Models\Payroll;
@ -16,7 +16,7 @@ public function __construct(
public function pay(Payroll $payroll): RedirectResponse public function pay(Payroll $payroll): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->pay($payroll), fn() => $this->service->pay($payroll),
'Gaji berhasil dibayar.', 'Gaji berhasil dibayar.',
'admin.finance.payroll-periods.show', 'admin.finance.payroll-periods.show',
parameters: ['payroll_period' => $payroll->payroll_period_id] parameters: ['payroll_period' => $payroll->payroll_period_id]
@ -26,7 +26,7 @@ public function pay(Payroll $payroll): RedirectResponse
public function cancel(Payroll $payroll): RedirectResponse public function cancel(Payroll $payroll): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->cancel($payroll), fn() => $this->service->cancel($payroll),
'Gaji berhasil dibatalkan.', 'Gaji berhasil dibatalkan.',
'admin.finance.payroll-periods.show', 'admin.finance.payroll-periods.show',
parameters: ['payroll_period' => $payroll->payroll_period_id] parameters: ['payroll_period' => $payroll->payroll_period_id]

View File

@ -1,8 +1,7 @@
<?php <?php
namespace App\Http\Controllers\Admin\Finance; namespace App\Http\Controllers\Admin\Finance\Payroll;
use App\Enums\PayrollPeriodStatus;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\PaginatedRequest; use App\Http\Requests\PaginatedRequest;
use App\Models\PayrollPeriod; use App\Models\PayrollPeriod;
@ -26,29 +25,22 @@ public function index(PaginatedRequest $request): Response
public function current(): RedirectResponse public function current(): RedirectResponse
{ {
$now = now(); $period = $this->service->getCurrentOrCreate();
$period = PayrollPeriod::firstOrCreate(
['year' => $now->year, 'month' => $now->month],
['status' => PayrollPeriodStatus::OPEN]
);
return to_route('admin.finance.payroll-periods.show', ['payroll_period' => $period->id]); return to_route('admin.finance.payroll-periods.show', ['payroll_period' => $period->id]);
} }
public function show(PayrollPeriod $payrollPeriod): Response public function show(PayrollPeriod $payrollPeriod): Response
{ {
$period = $this->service->getDetail($payrollPeriod);
return Inertia::render('admin/finance/payroll-period/show', [ return Inertia::render('admin/finance/payroll-period/show', [
'payrollPeriod' => $period, 'payrollPeriod' => $this->service->getDetail($payrollPeriod),
]); ]);
} }
public function close(PayrollPeriod $payrollPeriod): RedirectResponse public function close(PayrollPeriod $payrollPeriod): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->close($payrollPeriod), fn() => $this->service->close($payrollPeriod),
'Periode gaji berhasil ditutup.', 'Periode gaji berhasil ditutup.',
'admin.finance.payroll-periods.index' 'admin.finance.payroll-periods.index'
); );
@ -57,7 +49,7 @@ public function close(PayrollPeriod $payrollPeriod): RedirectResponse
public function reopen(PayrollPeriod $payrollPeriod): RedirectResponse public function reopen(PayrollPeriod $payrollPeriod): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->reopen($payrollPeriod), fn() => $this->service->reopen($payrollPeriod),
'Periode gaji berhasil dibuka kembali.', 'Periode gaji berhasil dibuka kembali.',
'admin.finance.payroll-periods.index' 'admin.finance.payroll-periods.index'
); );

View File

@ -6,7 +6,6 @@
use App\Http\Requests\Admin\HR\AttendanceRequest; use App\Http\Requests\Admin\HR\AttendanceRequest;
use App\Models\Attendance; use App\Models\Attendance;
use App\Services\Admin\HR\AttendanceService; use App\Services\Admin\HR\AttendanceService;
use App\Settings\HRSettings;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Inertia\Inertia; use Inertia\Inertia;
@ -22,44 +21,9 @@ public function index(Request $request): Response
{ {
$year = $request->integer('year', now()->year); $year = $request->integer('year', now()->year);
$month = $request->integer('month', now()->month); $month = $request->integer('month', now()->month);
$hrSettings = app(HRSettings::class);
$user = auth()->user();
$isAdmin = $user->hasAnyRole(['developer', 'owner']);
if ($isAdmin) {
return Inertia::render('admin/hr/attendance/index', [
'attendances' => $this->service->getByMonth($year, $month),
'leaves' => $this->service->getLeavesByMonth($year, $month),
'employees' => $this->service->getAllEmployees(),
'todayAttendance' => null,
'currentYear' => $year,
'currentMonth' => $month,
'monthStats' => $this->service->getMonthStats($year, $month),
'hrSettings' => [
'scheduled_check_in_time' => $hrSettings->scheduled_check_in_time,
'scheduled_check_out_time' => $hrSettings->scheduled_check_out_time,
],
'isAdmin' => true,
]);
}
$employeeId = $user->employee?->id;
$isOnLeave = $this->service->isOnLeave($user);
return Inertia::render('admin/hr/attendance/index', [ return Inertia::render('admin/hr/attendance/index', [
'attendances' => $this->service->getByMonth($year, $month, $employeeId), ...$this->service->getIndexData($year, $month),
'leaves' => $this->service->getLeavesByMonth($year, $month, $employeeId),
'todayAttendance' => $this->service->getToday(),
'currentYear' => $year,
'currentMonth' => $month,
'monthStats' => $this->service->getMonthStats($year, $month, $employeeId),
'hrSettings' => [
'scheduled_check_in_time' => $hrSettings->scheduled_check_in_time,
'scheduled_check_out_time' => $hrSettings->scheduled_check_out_time,
],
'isOnLeave' => $isOnLeave,
'canCheckIn' => $user->employee !== null,
'isAdmin' => false,
]); ]);
} }

View File

@ -7,15 +7,16 @@
use App\Http\Requests\PaginatedRequest; use App\Http\Requests\PaginatedRequest;
use App\Models\User; use App\Models\User;
use App\Services\Admin\HR\EmployeeService; use App\Services\Admin\HR\EmployeeService;
use App\Services\Admin\Settings\RoleService;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Inertia\Inertia; use Inertia\Inertia;
use Inertia\Response; use Inertia\Response;
use Spatie\Permission\Models\Role;
class EmployeeController extends Controller class EmployeeController extends Controller
{ {
public function __construct( public function __construct(
private EmployeeService $service private EmployeeService $service,
private RoleService $roleService,
) {} ) {}
public function index(PaginatedRequest $request): Response public function index(PaginatedRequest $request): Response
@ -32,14 +33,8 @@ public function index(PaginatedRequest $request): Response
public function create(): Response public function create(): Response
{ {
$user = auth()->user();
return Inertia::render('admin/hr/employee/create', [ return Inertia::render('admin/hr/employee/create', [
'roles' => $this->service->canViewAll() 'roles' => $this->roleService->getForEmployee(),
? Role::where('name', '!=', 'Developer')
->when($this->service->shouldHideAdminBahanBaku(), fn ($q) => $q->where('name', '!=', 'admin-bahan-baku'))
->get(['id', 'name'])
: Role::where('name', '=', $user->roles->first()?->name)->get(['id', 'name']),
'canViewAll' => $this->service->canViewAll(), 'canViewAll' => $this->service->canViewAll(),
]); ]);
} }
@ -47,7 +42,7 @@ public function create(): Response
public function store(EmployeeRequest $request): RedirectResponse public function store(EmployeeRequest $request): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->create($request->validated()), fn() => $this->service->create($request->validated()),
'Pegawai berhasil ditambahkan.', 'Pegawai berhasil ditambahkan.',
'admin.hr.employees.index' 'admin.hr.employees.index'
); );
@ -59,9 +54,7 @@ public function edit(User $user): Response
return Inertia::render('admin/hr/employee/edit', [ return Inertia::render('admin/hr/employee/edit', [
'employee' => $user, 'employee' => $user,
'roles' => Role::where('name', '!=', 'Developer') 'roles' => $this->roleService->getForEmployee(),
->when($this->service->shouldHideAdminBahanBaku(), fn ($q) => $q->where('name', '!=', 'admin-bahan-baku'))
->get(['id', 'name']),
'canViewAll' => $this->service->canViewAll(), 'canViewAll' => $this->service->canViewAll(),
]); ]);
} }
@ -69,7 +62,7 @@ public function edit(User $user): Response
public function update(EmployeeRequest $request, User $user): RedirectResponse public function update(EmployeeRequest $request, User $user): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->update($user, $request->validated()), fn() => $this->service->update($user, $request->validated()),
'Pegawai berhasil diperbarui.', 'Pegawai berhasil diperbarui.',
'admin.hr.employees.index' 'admin.hr.employees.index'
); );
@ -78,7 +71,7 @@ public function update(EmployeeRequest $request, User $user): RedirectResponse
public function destroy(User $user): RedirectResponse public function destroy(User $user): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->delete($user), fn() => $this->service->delete($user),
'Pegawai berhasil dihapus.', 'Pegawai berhasil dihapus.',
'admin.hr.employees.index' 'admin.hr.employees.index'
); );
@ -91,13 +84,13 @@ public function toggleActive(User $user): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => "Pegawai berhasil {$status}."]); Inertia::flash('toast', ['type' => 'success', 'message' => "Pegawai berhasil {$status}."]);
return to_route('admin.hr.employees.index'); return back();
} }
public function resetPassword(User $user): RedirectResponse public function resetPassword(User $user): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->resetPassword($user), fn() => $this->service->resetPassword($user),
'Kata sandi pegawai berhasil direset ke kata sandi default.', 'Kata sandi pegawai berhasil direset ke kata sandi default.',
'admin.hr.employees.index' 'admin.hr.employees.index'
); );

View File

@ -42,7 +42,7 @@ public function create(): Response
public function store(TransactionRequest $request): RedirectResponse public function store(TransactionRequest $request): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->create($request->validated()), fn() => $this->service->create($request->validated()),
'Transaksi berhasil ditambahkan.', 'Transaksi berhasil ditambahkan.',
'admin.manage.transactions.index', 'admin.manage.transactions.index',
'admin.manage.transactions.create' 'admin.manage.transactions.create'
@ -60,7 +60,7 @@ public function edit(Order $transaction): Response
public function update(TransactionRequest $request, Order $transaction): RedirectResponse public function update(TransactionRequest $request, Order $transaction): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->update($transaction, $request->validated()), fn() => $this->service->update($transaction, $request->validated()),
'Transaksi berhasil diperbarui.', 'Transaksi berhasil diperbarui.',
'admin.manage.transactions.index', 'admin.manage.transactions.index',
'admin.manage.transactions.edit', 'admin.manage.transactions.edit',
@ -71,7 +71,7 @@ public function update(TransactionRequest $request, Order $transaction): Redirec
public function destroy(Order $transaction): RedirectResponse public function destroy(Order $transaction): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->delete($transaction), fn() => $this->service->delete($transaction),
'Transaksi berhasil dihapus.', 'Transaksi berhasil dihapus.',
'admin.manage.transactions.index' 'admin.manage.transactions.index'
); );
@ -80,7 +80,7 @@ public function destroy(Order $transaction): RedirectResponse
public function updateStatus(Order $transaction): RedirectResponse public function updateStatus(Order $transaction): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->updateStatus($transaction, request('status')), fn() => $this->service->updateStatus($transaction, request('status')),
'Status transaksi berhasil diperbarui.', 'Status transaksi berhasil diperbarui.',
'admin.manage.transactions.index' 'admin.manage.transactions.index'
); );

View File

@ -30,7 +30,7 @@ public function store(CategoryRequest $request): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Kategori berhasil ditambahkan.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Kategori berhasil ditambahkan.']);
return to_route('admin.master.categories.index'); return back();
} }
public function update(CategoryRequest $request, Category $category): RedirectResponse public function update(CategoryRequest $request, Category $category): RedirectResponse
@ -39,7 +39,7 @@ public function update(CategoryRequest $request, Category $category): RedirectRe
Inertia::flash('toast', ['type' => 'success', 'message' => 'Kategori berhasil diperbarui.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Kategori berhasil diperbarui.']);
return to_route('admin.master.categories.index'); return back();
} }
public function destroy(Category $category): RedirectResponse public function destroy(Category $category): RedirectResponse
@ -48,6 +48,6 @@ public function destroy(Category $category): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Kategori berhasil dihapus.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Kategori berhasil dihapus.']);
return to_route('admin.master.categories.index'); return back();
} }
} }

View File

@ -30,7 +30,7 @@ public function store(CustomerRequest $request): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Customer berhasil ditambahkan.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Customer berhasil ditambahkan.']);
return to_route('admin.master.customers.index'); return back();
} }
public function update(CustomerRequest $request, Customer $customer): RedirectResponse public function update(CustomerRequest $request, Customer $customer): RedirectResponse
@ -39,7 +39,7 @@ public function update(CustomerRequest $request, Customer $customer): RedirectRe
Inertia::flash('toast', ['type' => 'success', 'message' => 'Customer berhasil diperbarui.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Customer berhasil diperbarui.']);
return to_route('admin.master.customers.index'); return back();
} }
public function destroy(Customer $customer): RedirectResponse public function destroy(Customer $customer): RedirectResponse
@ -48,6 +48,6 @@ public function destroy(Customer $customer): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Customer berhasil dihapus.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Customer berhasil dihapus.']);
return to_route('admin.master.customers.index'); return back();
} }
} }

View File

@ -42,7 +42,7 @@ public function create(): Response
public function store(ProductRequest $request): RedirectResponse public function store(ProductRequest $request): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->create($request->validated()), fn() => $this->service->create($request->validated()),
'Produk berhasil ditambahkan.', 'Produk berhasil ditambahkan.',
'admin.master.products.index', 'admin.master.products.index',
'admin.master.products.create' 'admin.master.products.create'
@ -60,7 +60,7 @@ public function edit(Product $product): Response
public function update(ProductRequest $request, Product $product): RedirectResponse public function update(ProductRequest $request, Product $product): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->update($product, $request->validated()), fn() => $this->service->update($product, $request->validated()),
'Produk berhasil diperbarui.', 'Produk berhasil diperbarui.',
'admin.master.products.index', 'admin.master.products.index',
'admin.master.products.edit', 'admin.master.products.edit',
@ -71,7 +71,7 @@ public function update(ProductRequest $request, Product $product): RedirectRespo
public function destroy(Product $product): RedirectResponse public function destroy(Product $product): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->delete($product), fn() => $this->service->delete($product),
'Produk berhasil dihapus.', 'Produk berhasil dihapus.',
'admin.master.products.index' 'admin.master.products.index'
); );
@ -84,7 +84,7 @@ public function toggleStatus(Product $product): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => "Status produk berhasil diubah menjadi {$status->label()}."]); Inertia::flash('toast', ['type' => 'success', 'message' => "Status produk berhasil diubah menjadi {$status->label()}."]);
return to_route('admin.master.products.index'); return back();
} }
public function approve(Product $product): RedirectResponse public function approve(Product $product): RedirectResponse
@ -93,7 +93,7 @@ public function approve(Product $product): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Produk berhasil disetujui.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Produk berhasil disetujui.']);
return to_route('admin.master.products.index'); return back();
} }
public function reject(Product $product): RedirectResponse public function reject(Product $product): RedirectResponse
@ -103,7 +103,7 @@ public function reject(Product $product): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Produk berhasil ditolak.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Produk berhasil ditolak.']);
return to_route('admin.master.products.index'); return back();
} }
public function resubmit(Product $product): RedirectResponse public function resubmit(Product $product): RedirectResponse
@ -112,6 +112,6 @@ public function resubmit(Product $product): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Produk berhasil diajukan ulang.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Produk berhasil diajukan ulang.']);
return to_route('admin.master.products.index'); return back();
} }
} }

View File

@ -18,8 +18,6 @@ public function __construct(
public function index(StockMutationRequest $request, Product $product, ProductVariant $variant): Response public function index(StockMutationRequest $request, Product $product, ProductVariant $variant): Response
{ {
$perPage = $request->validatedWithDefaults()['perPage'];
return Inertia::render('admin/master/product/variant/stock-mutations', [ return Inertia::render('admin/master/product/variant/stock-mutations', [
'product' => [ 'product' => [
'id' => $product->id, 'id' => $product->id,
@ -29,7 +27,7 @@ public function index(StockMutationRequest $request, Product $product, ProductVa
'id' => $variant->id, 'id' => $variant->id,
'name' => $variant->name, 'name' => $variant->name,
], ],
'mutations' => $this->service->paginated($variant, $perPage), 'mutations' => $this->service->paginated($variant, ...$request->validatedWithDefaults()),
]); ]);
} }
} }

View File

@ -36,7 +36,7 @@ public function create(): Response
public function store(RawMaterialRequest $request): RedirectResponse public function store(RawMaterialRequest $request): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->create($request->validated()), fn() => $this->service->create($request->validated()),
'Bahan baku berhasil ditambahkan.', 'Bahan baku berhasil ditambahkan.',
'admin.master.raw-materials.index', 'admin.master.raw-materials.index',
'admin.master.raw-materials.create' 'admin.master.raw-materials.create'
@ -53,7 +53,7 @@ public function edit(RawMaterial $rawMaterial): Response
public function update(RawMaterialRequest $request, RawMaterial $rawMaterial): RedirectResponse public function update(RawMaterialRequest $request, RawMaterial $rawMaterial): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->update($rawMaterial, $request->validated()), fn() => $this->service->update($rawMaterial, $request->validated()),
'Bahan baku berhasil diperbarui.', 'Bahan baku berhasil diperbarui.',
'admin.master.raw-materials.index', 'admin.master.raw-materials.index',
'admin.master.raw-materials.edit', 'admin.master.raw-materials.edit',
@ -64,7 +64,7 @@ public function update(RawMaterialRequest $request, RawMaterial $rawMaterial): R
public function destroy(RawMaterial $rawMaterial): RedirectResponse public function destroy(RawMaterial $rawMaterial): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->delete($rawMaterial), fn() => $this->service->delete($rawMaterial),
'Bahan baku berhasil dihapus.', 'Bahan baku berhasil dihapus.',
'admin.master.raw-materials.index' 'admin.master.raw-materials.index'
); );
@ -77,6 +77,6 @@ public function toggleStatus(RawMaterial $rawMaterial): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => "Status bahan baku berhasil diubah menjadi {$status}."]); Inertia::flash('toast', ['type' => 'success', 'message' => "Status bahan baku berhasil diubah menjadi {$status}."]);
return to_route('admin.master.raw-materials.index'); return back();
} }
} }

View File

@ -30,7 +30,7 @@ public function store(SupplierRequest $request): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Supplier berhasil ditambahkan.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Supplier berhasil ditambahkan.']);
return to_route('admin.master.suppliers.index'); return back();
} }
public function update(SupplierRequest $request, Supplier $supplier): RedirectResponse public function update(SupplierRequest $request, Supplier $supplier): RedirectResponse
@ -39,7 +39,7 @@ public function update(SupplierRequest $request, Supplier $supplier): RedirectRe
Inertia::flash('toast', ['type' => 'success', 'message' => 'Supplier berhasil diperbarui.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Supplier berhasil diperbarui.']);
return to_route('admin.master.suppliers.index'); return back();
} }
public function destroy(Supplier $supplier): RedirectResponse public function destroy(Supplier $supplier): RedirectResponse
@ -48,6 +48,6 @@ public function destroy(Supplier $supplier): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Supplier berhasil dihapus.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Supplier berhasil dihapus.']);
return to_route('admin.master.suppliers.index'); return back();
} }
} }

View File

@ -34,7 +34,7 @@ public function create(): Response
public function store(RoleRequest $request): RedirectResponse public function store(RoleRequest $request): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->create($request->validated()), fn() => $this->service->create($request->validated()),
'Role berhasil ditambahkan.', 'Role berhasil ditambahkan.',
'admin.settings.roles.index' 'admin.settings.roles.index'
); );
@ -43,7 +43,7 @@ public function store(RoleRequest $request): RedirectResponse
public function edit(Role $role): Response public function edit(Role $role): Response
{ {
return Inertia::render('admin/roles/edit', [ return Inertia::render('admin/roles/edit', [
'role' => $this->service->getById($role->id), 'role' => $role->load('permissions'),
'permissions' => $this->service->getPermissionsByModule(), 'permissions' => $this->service->getPermissionsByModule(),
]); ]);
} }
@ -51,7 +51,7 @@ public function edit(Role $role): Response
public function update(RoleRequest $request, Role $role): RedirectResponse public function update(RoleRequest $request, Role $role): RedirectResponse
{ {
return $this->handleAction( return $this->handleAction(
fn () => $this->service->update($role, $request->validated()), fn() => $this->service->update($role, $request->validated()),
'Role berhasil diperbarui.', 'Role berhasil diperbarui.',
'admin.settings.roles.index' 'admin.settings.roles.index'
); );
@ -63,6 +63,6 @@ public function destroy(Role $role): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Role berhasil dihapus.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Role berhasil dihapus.']);
return to_route('admin.settings.roles.index'); return back();
} }
} }

View File

@ -4,9 +4,9 @@
use App\Http\Controllers\Admin\Finance\CashAccountController; use App\Http\Controllers\Admin\Finance\CashAccountController;
use App\Http\Controllers\Admin\Finance\EmployeeAdvanceController; use App\Http\Controllers\Admin\Finance\EmployeeAdvanceController;
use App\Http\Controllers\Admin\Finance\ExpenseController; use App\Http\Controllers\Admin\Finance\ExpenseController;
use App\Http\Controllers\Admin\Finance\PayrollAdjustmentController; use App\Http\Controllers\Admin\Finance\Payroll\PayrollAdjustmentController;
use App\Http\Controllers\Admin\Finance\PayrollController; use App\Http\Controllers\Admin\Finance\Payroll\PayrollController;
use App\Http\Controllers\Admin\Finance\PayrollPeriodController; use App\Http\Controllers\Admin\Finance\Payroll\PayrollPeriodController;
use App\Http\Controllers\Admin\HR\AttendanceController; use App\Http\Controllers\Admin\HR\AttendanceController;
use App\Http\Controllers\Admin\HR\EmployeeController; use App\Http\Controllers\Admin\HR\EmployeeController;
use App\Http\Controllers\Admin\HR\LeaveRequestController; use App\Http\Controllers\Admin\HR\LeaveRequestController;