diff --git a/app/ClientLayout.js b/app/ClientLayout.js index 1e85f1a..9883892 100644 --- a/app/ClientLayout.js +++ b/app/ClientLayout.js @@ -184,24 +184,45 @@ export default function ClientLayout({ children }) {
- - - - - - حمل التطببيق الان - - + {/* Download App Dropdown */} +
+ +
+
+ +
+ + + +
+
+

Android

+

تحميل APK

+
+
+
+
+ + + +
+
+

iOS

+

قريباً

+
+
+
+
+
+ الرئيسية عقاراتنا diff --git a/app/register/owner/page.js b/app/register/owner/page.js index 93f6d92..ac8ee12 100644 --- a/app/register/owner/page.js +++ b/app/register/owner/page.js @@ -132,7 +132,7 @@ export default function OwnerRegisterPage() { }; try { - const res = await addOwner(payload); + const res = await addOwner(payload, idImages.front, idImages.back); console.log('[OwnerRegister] addOwner response:', res); if (res.status === 200 || res.ok) { diff --git a/app/register/tenant/page.js b/app/register/tenant/page.js index 17344ca..0a77ba6 100644 --- a/app/register/tenant/page.js +++ b/app/register/tenant/page.js @@ -128,7 +128,7 @@ export default function TenantRegisterPage() { }; try { - const res = await addCustomer(payload); + const res = await addCustomer(payload, idImages.front, idImages.back); console.log('[CustomerRegister] addCustomer response:', res); if (res.status === 200 || res.ok) { diff --git a/app/utils/api.js b/app/utils/api.js index bdabfe6..c11b0c8 100644 --- a/app/utils/api.js +++ b/app/utils/api.js @@ -160,19 +160,63 @@ export async function getTerms() { * @param {Object} data — { name, email, phoneNumber, whatsAppNumber, password, ownerType } * @returns {Promise<{status, data, ok, message}>} */ -export async function addOwner(data) { - console.log('[Auth] Registering owner:', data.email); - return authFetch('/Owner/Add', data); +// Multipart form-data fetch for file uploads +async function multipartAuthFetch(endpoint, formData) { + console.log('[Auth] Multipart request:', `${API_BASE}${endpoint}`); + + const res = await fetch(`${API_BASE}${endpoint}`, { + method: 'POST', + // Don't set Content-Type — browser sets it with boundary + body: formData, + }); + + console.log('[Auth] Response status:', res.status, endpoint); + + const text = await res.text(); + let data = null; + try { + data = text ? JSON.parse(text) : null; + if (data && typeof data === 'object' && 'data' in data) { + data = data.data; + } + } catch { + data = text; + } + + return { status: res.status, data, ok: res.ok || res.status === 206, message: data?.message }; } -/** - * Register a new customer/tenant - * @param {Object} data — { name, email, phoneNumber, password, customerType } - * @returns {Promise<{status, data, ok, message}>} - */ -export async function addCustomer(data) { - console.log('[Auth] Registering customer:', data.email); - return authFetch('/Customer/Add', data); +export async function addOwner(data, frontImage = null, backImage = null) { + console.log('[Auth] Registering owner (multipart):', data.email); + + const formData = new FormData(); + formData.append('FullName', data.name || data.FullName || ''); + formData.append('Email', data.email || ''); + formData.append('PhoneNumber', data.phoneNumber || ''); + formData.append('WhatsAppNumber', data.whatsAppNumber || ''); + formData.append('Password', data.password || ''); + formData.append('Type', String(data.ownerType ?? data.Type ?? 0)); + + if (frontImage) formData.append('FrontIdCarImage', frontImage); + if (backImage) formData.append('RearIdCarImage', backImage); + + return multipartAuthFetch('/Owner/Add', formData); +} + +export async function addCustomer(data, frontImage = null, backImage = null) { + console.log('[Auth] Registering customer (multipart):', data.email); + + const formData = new FormData(); + formData.append('FullName', data.name || data.FullName || ''); + formData.append('Email', data.email || ''); + formData.append('PhoneNumber', data.phoneNumber || ''); + formData.append('Password', data.password || ''); + formData.append('Type', String(data.customerType ?? data.Type ?? 0)); + + if (frontImage) formData.append('FrontIdCarImage', frontImage); + if (backImage) formData.append('RearIdCarImage', backImage); + + return multipartAuthFetch('/Customer/Add', formData); } // ─── Auth: Login ───