File manager - Edit - /home/webapp69.cm.in.th/u69319090028/Shop/app/Controllers/AdminRefundController.php
Back
<?php /** * AdminRefundController * Admin: Manage refund requests */ require_once __DIR__ . '/../Core/Controller.php'; require_once __DIR__ . '/../Services/RefundService.php'; require_once __DIR__ . '/../Services/AdminPermissionService.php'; require_once __DIR__ . '/../Helpers/Auth.php'; require_once __DIR__ . '/../Helpers/Session.php'; class AdminRefundController extends Controller { private RefundService $refundService; private AdminPermissionService $permService; public function __construct() { $this->refundService = new RefundService(); $this->permService = new AdminPermissionService(); } /** * GET /admin/refunds */ public function index(): void { $adminId = Auth::id(); if (!$this->permService->has($adminId, 'finance.view') && !$this->permService->has($adminId, 'payment.refund')) { Session::setFlash('danger', 'คุณไม่มีสิทธิ์เข้าถึงส่วนนี้'); $this->redirect('/admin'); } $filters = [ 'status' => $_GET['status'] ?? 'all', 'q' => trim($_GET['q'] ?? ''), 'date_from' => $_GET['date_from'] ?? '', 'date_to' => $_GET['date_to'] ?? '', ]; $page = max(1, (int)($_GET['page'] ?? 1)); $data = $this->refundService->getAdminRefunds($filters, $page); $this->render('admin/payments/refunds', [ 'items' => $data['items'], 'stats' => $data['stats'], 'filters' => $filters, 'page' => $data['page'], 'totalPages' => $data['total_pages'], 'total' => $data['total'], 'pageTitle' => 'คำขอคืนเงิน — Admin', 'activeNav' => 'refunds', ], 'admin'); } /** * GET /admin/refunds/{id} */ public function show(int $id): void { $adminId = Auth::id(); if (!$this->permService->has($adminId, 'finance.view') && !$this->permService->has($adminId, 'payment.refund')) { Session::setFlash('danger', 'คุณไม่มีสิทธิ์เข้าถึงส่วนนี้'); $this->redirect('/admin/refunds'); } $refund = $this->refundService->findById($id); if (!$refund) { Session::setFlash('danger', 'ไม่พบคำขอคืนเงิน'); $this->redirect('/admin/refunds'); } $this->render('admin/payments/refund_show', [ 'refund' => $refund, 'pageTitle' => 'Refund #' . $id . ' — Admin', 'activeNav' => 'refunds', ], 'admin'); } /** * POST /admin/refunds/{id}/approve */ public function approve(int $id): void { $adminId = Auth::id(); if (!$this->permService->has($adminId, 'payment.refund')) { $this->json(['success' => false, 'message' => 'ไม่มีสิทธิ์อนุมัติการคืนเงิน'], 403); } $note = trim($_POST['note'] ?? ''); $result = $this->refundService->approveRefund($id, $adminId, $note ?: null); if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) { $this->json($result); } if ($result['success']) { Session::setFlash('success', $result['message']); } else { Session::setFlash('danger', $result['message']); } $this->redirect('/admin/refunds/' . $id); } /** * POST /admin/refunds/{id}/complete */ public function complete(int $id): void { $adminId = Auth::id(); if (!$this->permService->has($adminId, 'payment.refund')) { $this->json(['success' => false, 'message' => 'ไม่มีสิทธิ์ดำเนินการคืนเงิน'], 403); } $result = $this->refundService->completeRefund($id, $adminId); if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) { $this->json($result); } if ($result['success']) { Session::setFlash('success', $result['message']); } else { Session::setFlash('danger', $result['message']); } $this->redirect('/admin/refunds/' . $id); } /** * POST /admin/refunds/{id}/reject */ public function reject(int $id): void { $adminId = Auth::id(); if (!$this->permService->has($adminId, 'payment.refund')) { $this->json(['success' => false, 'message' => 'ไม่มีสิทธิ์ปฏิเสธการคืนเงิน'], 403); } $reason = trim($_POST['reason'] ?? ''); if (empty($reason)) { $this->json(['success' => false, 'message' => 'กรุณาระบุเหตุผลในการปฏิเสธ'], 422); } $result = $this->refundService->rejectRefund($id, $adminId, $reason); if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) { $this->json($result); } if ($result['success']) { Session::setFlash('success', $result['message']); } else { Session::setFlash('danger', $result['message']); } $this->redirect('/admin/refunds/' . $id); } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.24 |
proxy
|
phpinfo
|
Settings