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 */}
+
+
+
+
+
الرئيسية
عقاراتنا
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 ───