store/app/Http/Controllers/Admin/Manage/StockController.php

65 lines
1.9 KiB
PHP

<?php
namespace App\Http\Controllers\Admin\Manage;
use App\Http\Controllers\Concerns\FlashesEntityMessage;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\Manage\StockVerifyRequest;
use App\Models\Cutting;
use App\Services\Manage\StockService;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Inertia\Inertia;
use Inertia\Response;
class StockController extends Controller
{
use FlashesEntityMessage;
public function __construct(
private readonly StockService $stockService,
) {}
public function index(Request $request): Response
{
$user = $request->user();
return Inertia::render('admin/manage/stocks/Index', [
'pendingCuttings' => $this->stockService->getPendingVerificationCuttings($user),
'verifiedCuttings' => $this->stockService->getVerifiedCuttings(),
]);
}
public function verify(StockVerifyRequest $request, Cutting $cutting): RedirectResponse
{
$this->stockService->verify(
$cutting,
$request->user(),
$request->validated('verification_note'),
$request->validated('results'),
$request->validated('result_prices'),
);
$this->flashSuccess('Cutting berhasil diverifikasi. Stok produk telah ditambahkan ke toko.');
return redirect()->route('admin.manage.stocks.index');
}
public function reject(Request $request, Cutting $cutting): RedirectResponse
{
$request->validate([
'reason' => ['required', 'string', 'max:500'],
]);
$this->stockService->reject(
$cutting,
$request->user(),
$request->validated('reason'),
);
$this->flashSuccess('Cutting berhasil ditolak dan dikembalikan ke proses.');
return redirect()->route('admin.manage.stocks.index');
}
}