update controllers logic

This commit is contained in:
root
2026-04-23 00:04:35 -04:00
parent 1977a513df
commit ca4ba272fc
353 changed files with 13402 additions and 1301 deletions
@@ -2,7 +2,7 @@
namespace App\Http\Controllers\Api\Finance;
use App\Http\Controllers\Api\BaseApiController;
use App\Http\Controllers\Api\Core\BaseApiController;
use App\Http\Requests\Files\FileNameRequest;
use App\Http\Requests\Reimbursements\ReimbursementBatchAdminFileRequest;
use App\Http\Requests\Reimbursements\ReimbursementBatchAssignmentRequest;
@@ -68,6 +68,11 @@ class ReimbursementController extends BaseApiController
public function markDonation(Request $request): JsonResponse
{
$guard = $this->authenticatedUserIdOrUnauthorized();
if ($guard instanceof JsonResponse) {
return $guard;
}
$data = array_merge($request->query->all(), $request->all(), $request->json()->all());
$validator = Validator::make($data, [
'expense_id' => ['required', 'integer', 'min:1'],
@@ -81,10 +86,9 @@ class ReimbursementController extends BaseApiController
}
$payload = $validator->validated();
$userId = (int) (auth()->id() ?? 0);
try {
$this->donationService->markDonation((int) $payload['expense_id'], $userId);
$this->donationService->markDonation((int) $payload['expense_id'], $guard);
} catch (RuntimeException $e) {
$message = $e->getMessage();
$status = str_contains($message, 'not found') ? 404 : (str_contains($message, 'already') ? 409 : 422);
@@ -98,6 +102,11 @@ class ReimbursementController extends BaseApiController
public function createBatch(Request $request): JsonResponse
{
$guard = $this->authenticatedUserIdOrUnauthorized();
if ($guard instanceof JsonResponse) {
return $guard;
}
$data = array_merge($request->query->all(), $request->all(), $request->json()->all());
$validator = Validator::make($data, [
'title' => ['nullable', 'string', 'max:255'],
@@ -111,11 +120,10 @@ class ReimbursementController extends BaseApiController
}
$payload = $validator->validated();
$userId = (int) (auth()->id() ?? 0);
$schoolYear = $this->context->getSchoolYear();
$semester = $this->context->getSemester();
$batch = $this->batchService->createBatch($payload['title'] ?? null, $userId, $schoolYear, $semester);
$batch = $this->batchService->createBatch($payload['title'] ?? null, $guard, $schoolYear, $semester);
return response()->json([
'ok' => true,
@@ -158,13 +166,17 @@ class ReimbursementController extends BaseApiController
public function lockBatch(ReimbursementBatchLockRequest $request): JsonResponse
{
$guard = $this->authenticatedUserIdOrUnauthorized();
if ($guard instanceof JsonResponse) {
return $guard;
}
$payload = $request->validated();
$userId = (int) (auth()->id() ?? 0);
try {
$this->batchService->lockBatch(
(int) $payload['batch_id'],
$userId,
$guard,
$this->context->getSchoolYear(),
$this->context->getSemester()
);
@@ -181,6 +193,11 @@ class ReimbursementController extends BaseApiController
public function uploadBatchAdminFile(ReimbursementBatchAdminFileRequest $request): JsonResponse
{
$guard = $this->authenticatedUserIdOrUnauthorized();
if ($guard instanceof JsonResponse) {
return $guard;
}
$payload = $request->validated();
$batchId = (int) $payload['batch_id'];
$adminId = (int) $payload['admin_id'];
@@ -194,7 +211,7 @@ class ReimbursementController extends BaseApiController
}
try {
$file = $this->fileService->storeAdminFile($batchId, $adminId, $request->file('check_file'), (int) (auth()->id() ?? 0));
$file = $this->fileService->storeAdminFile($batchId, $adminId, $request->file('check_file'), $guard);
} catch (\Throwable $e) {
return response()->json(['ok' => false, 'message' => 'Unable to store the uploaded file.'], 500);
}
@@ -312,6 +329,11 @@ class ReimbursementController extends BaseApiController
public function store(Request $request): JsonResponse
{
$guard = $this->authenticatedUserIdOrUnauthorized();
if ($guard instanceof JsonResponse) {
return $guard;
}
$data = array_merge($request->query->all(), $request->all(), $request->json()->all());
$validator = Validator::make($data, [
'amount' => ['required', 'numeric', 'gt:0'],
@@ -333,7 +355,6 @@ class ReimbursementController extends BaseApiController
}
$payload = $validator->validated();
$userId = (int) (auth()->id() ?? 0);
$receiptName = null;
if ($request->hasFile('receipt')) {
@@ -343,7 +364,7 @@ class ReimbursementController extends BaseApiController
try {
$reimb = $this->crudService->store(
$payload,
$userId,
$guard,
$this->context->getSchoolYear(),
$this->context->getSemester(),
$receiptName
@@ -363,8 +384,12 @@ class ReimbursementController extends BaseApiController
public function process(ReimbursementProcessRequest $request): JsonResponse
{
$guard = $this->authenticatedUserIdOrUnauthorized();
if ($guard instanceof JsonResponse) {
return $guard;
}
$payload = $request->validated();
$userId = (int) (auth()->id() ?? 0);
$receiptName = null;
if ($request->hasFile('receipt')) {
@@ -374,7 +399,7 @@ class ReimbursementController extends BaseApiController
try {
$reimb = $this->crudService->process(
$payload,
$userId,
$guard,
$this->context->getSchoolYear(),
$this->context->getSemester(),
$receiptName
@@ -404,6 +429,11 @@ class ReimbursementController extends BaseApiController
public function update(Request $request, int $id): JsonResponse
{
$guard = $this->authenticatedUserIdOrUnauthorized();
if ($guard instanceof JsonResponse) {
return $guard;
}
$reimb = Reimbursement::query()->find($id);
if (!$reimb) {
return response()->json(['ok' => false, 'message' => 'Reimbursement not found.'], 404);
@@ -428,7 +458,6 @@ class ReimbursementController extends BaseApiController
}
$payload = $validator->validated();
$userId = (int) (auth()->id() ?? 0);
$receiptName = $reimb->receipt_path;
if ($request->hasFile('receipt')) {
@@ -438,7 +467,7 @@ class ReimbursementController extends BaseApiController
$receiptName = null;
}
$updated = $this->crudService->update($reimb, $payload, $userId, $receiptName);
$updated = $this->crudService->update($reimb, $payload, $guard, $receiptName);
$data = $updated->toArray();
$data['receipt_url'] = $this->fileService->receiptUrl($updated->receipt_path ?? null);
@@ -447,4 +476,17 @@ class ReimbursementController extends BaseApiController
'reimbursement' => new ReimbursementResource($data),
]);
}
/**
* @return int|JsonResponse
*/
private function authenticatedUserIdOrUnauthorized(): int|JsonResponse
{
$userId = (int) (auth()->id() ?? 0);
if ($userId <= 0) {
return response()->json(['ok' => false, 'message' => 'Unauthorized.'], 401);
}
return $userId;
}
}