diff --git a/app/components/admin/BookingRequests.js b/app/components/admin/BookingRequests.js
index f9b2c45..cf0a7a5 100644
--- a/app/components/admin/BookingRequests.js
+++ b/app/components/admin/BookingRequests.js
@@ -1177,12 +1177,6 @@ const RequestCard = ({ request, onConfirmDeposit, onViewDetails, confirmingDepos
)}
- {canConfirmDeposit && (
-
- يظهر زر تأكيد العربون فقط عندما تكون حالة الحجز depositPaid (2).
-
- )}
-
{Number(request.status) === RESERVATION_STATUS.depositConfirmed && (
تم تأكيد العربون من قبل الإدارة.
@@ -1372,11 +1366,21 @@ export default function BookingRequests() {
const handleDepositConfirmation = async (request) => {
if (!AuthService.isAdmin()) {
+ console.warn('[Admin] Deposit confirmation blocked: current user is not admin', {
+ user: AuthService.getUser(),
+ roles: AuthService.getRoles?.(),
+ request,
+ });
toast.error('هذا الإجراء متاح للإدارة فقط');
return;
}
if (Number(request?.status) !== RESERVATION_STATUS.depositPaid) {
+ console.warn('[Admin] Deposit confirmation blocked: reservation is not in depositPaid state', {
+ requestId: request?.id,
+ reservationId: request?.reservationId,
+ status: request?.status,
+ });
toast.error('يمكن تأكيد العربون فقط عندما تكون الحالة depositPaid');
return;
}
@@ -1391,7 +1395,25 @@ export default function BookingRequests() {
const parsedAdminId = Number(adminUser?.id);
const adminId = Number.isFinite(parsedAdminId) ? parsedAdminId : adminUser?.id;
+ console.log('[Admin] Preparing admin confirm deposit request', {
+ requestId: request?.id,
+ reservationId,
+ adminId,
+ adminUser,
+ status: request?.status,
+ endpoint: '/Reservations/AdminConfirmDeposit/admin-confirm-deposit',
+ payload: {
+ reservationId,
+ adminId,
+ comment: null,
+ },
+ });
+
if (adminId == null || adminId === '') {
+ console.warn('[Admin] Deposit confirmation blocked: adminId is missing', {
+ adminUser,
+ parsedAdminId,
+ });
toast.error('لم نتمكن من تحديد هوية المدير');
return;
}
@@ -1401,6 +1423,15 @@ export default function BookingRequests() {
try {
const result = await adminConfirmDeposit(reservationId, adminId, null);
+ console.log('[Admin] Deposit confirmation response', {
+ requestId: request?.id,
+ reservationId,
+ status: result?.status,
+ ok: result?.ok,
+ message: result?.message,
+ data: result?.data,
+ });
+
if (!result.ok) {
throw new Error(result.message || result.data?.message || `HTTP ${result.status}`);
}
diff --git a/app/utils/api.js b/app/utils/api.js
index ee12017..35de4e2 100644
--- a/app/utils/api.js
+++ b/app/utils/api.js
@@ -382,19 +382,36 @@ export async function confirmDepositPayment(bookingId) {
export async function adminConfirmDeposit(reservationId, adminId, comment = null) {
const token = AuthService.getToken();
+ const endpoint = `${API_BASE}/Reservations/AdminConfirmDeposit/admin-confirm-deposit`;
+ const payload = { reservationId, adminId, comment };
- const res = await fetch(`${API_BASE}/Reservations/AdminConfirmDeposit/admin-confirm-deposit`, {
+ console.log('[API] AdminConfirmDeposit request', {
+ method: 'PUT',
+ endpoint,
+ payload,
+ hasToken: Boolean(token),
+ tokenPreview: token ? `${token.slice(0, 18)}...${token.slice(-8)}` : null,
+ });
+
+ const res = await fetch(endpoint, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
...(token && { Authorization: `Bearer ${token}` }),
},
- body: JSON.stringify({ reservationId, adminId, comment }),
+ body: JSON.stringify(payload),
});
const text = await res.text();
let data = null;
+ console.log('[API] AdminConfirmDeposit raw response', {
+ status: res.status,
+ ok: res.ok,
+ endpoint,
+ rawText: text,
+ });
+
try {
data = text ? JSON.parse(text) : null;
if (data && typeof data === 'object' && 'data' in data) {
@@ -406,6 +423,13 @@ export async function adminConfirmDeposit(reservationId, adminId, comment = null
const message = typeof data === 'object' && data?.message ? data.message : null;
+ console.log('[API] AdminConfirmDeposit parsed response', {
+ status: res.status,
+ ok: res.ok,
+ message,
+ data,
+ });
+
return { status: res.status, data, ok: res.ok, message };
}