diff --git a/app/register/owner/page.js b/app/register/owner/page.js index ac8ee12..b767dc4 100644 --- a/app/register/owner/page.js +++ b/app/register/owner/page.js @@ -24,7 +24,8 @@ export default function OwnerRegisterPage() { const [isLoading, setIsLoading] = useState(false); const [formData, setFormData] = useState({ - name: '', + firstName: '', + lastName: '', email: '', phone: '', whatsapp: '', @@ -67,8 +68,9 @@ export default function OwnerRegisterPage() { const validateStep1 = () => { const newErrors = {}; - if (!formData.name) newErrors.name = 'الاسم الكامل مطلوب'; - else if (formData.name.length < 3) newErrors.name = 'الاسم يجب أن يكون 3 أحرف على الأقل'; + if (!formData.firstName) newErrors.firstName = 'الاسم الأول مطلوب'; + if (!formData.lastName) newErrors.lastName = 'اسم العائلة مطلوب'; + if (!formData.email) newErrors.email = 'البريد الإلكتروني مطلوب'; else if (!validateEmail(formData.email)) newErrors.email = 'البريد الإلكتروني غير صالح'; @@ -122,8 +124,8 @@ export default function OwnerRegisterPage() { console.log('[OwnerRegister] Submitting owner registration...'); const payload = { - FullName: formData.name, - name: formData.name, + firstName: formData.firstName, + lastName: formData.lastName, email: formData.email, phoneNumber: formData.phone || '', whatsAppNumber: formData.whatsapp, @@ -290,18 +292,28 @@ export default function OwnerRegisterPage() { {/* ─── STEP 1: Form ─── */} {step === 1 && ( <> - - -
-
- + +
+ +
+
+ +
+ { setFormData({...formData, firstName: e.target.value}); setErrors({...errors, firstName: null}); }} + className={`w-full pr-12 pl-4 py-3 bg-white/5 border rounded-xl focus:outline-none focus:ring-2 focus:ring-amber-500 focus:border-transparent text-white placeholder-gray-500 transition-all ${errors.firstName ? 'border-red-500' : 'border-gray-700'}`} + placeholder="الاسم الأول" />
- { setFormData({...formData, name: e.target.value}); setErrors({...errors, name: null}); }} - className={`w-full pr-12 pl-4 py-3 bg-white/5 border rounded-xl focus:outline-none focus:ring-2 focus:ring-amber-500 focus:border-transparent text-white placeholder-gray-500 transition-all ${errors.name ? 'border-red-500' : 'border-gray-700'}`} - placeholder="أدخل اسمك الكامل" /> + {errors.firstName &&

{errors.firstName}

} +
+
+ + { setFormData({...formData, lastName: e.target.value}); setErrors({...errors, lastName: null}); }} + className={`w-full px-4 py-3 bg-white/5 border rounded-xl focus:outline-none focus:ring-2 focus:ring-amber-500 focus:border-transparent text-white placeholder-gray-500 transition-all ${errors.lastName ? 'border-red-500' : 'border-gray-700'}`} + placeholder="اسم العائلة" /> + {errors.lastName &&

{errors.lastName}

}
- {errors.name &&

{errors.name}

}
diff --git a/app/register/tenant/page.js b/app/register/tenant/page.js index 0a77ba6..a2ca205 100644 --- a/app/register/tenant/page.js +++ b/app/register/tenant/page.js @@ -24,9 +24,11 @@ export default function TenantRegisterPage() { const [isLoading, setIsLoading] = useState(false); const [formData, setFormData] = useState({ - name: '', + firstName: '', + lastName: '', email: '', phone: '', + whatsapp: '', password: '', confirmPassword: '', customerType: CustomerType.PERSONAL, @@ -66,8 +68,9 @@ export default function TenantRegisterPage() { const validateStep1 = () => { const newErrors = {}; - if (!formData.name) newErrors.name = 'الاسم الكامل مطلوب'; - else if (formData.name.length < 3) newErrors.name = 'الاسم يجب أن يكون 3 أحرف على الأقل'; + if (!formData.firstName) newErrors.firstName = 'الاسم الأول مطلوب'; + if (!formData.lastName) newErrors.lastName = 'اسم العائلة مطلوب'; + if (!formData.email) newErrors.email = 'البريد الإلكتروني مطلوب'; else if (!validateEmail(formData.email)) newErrors.email = 'البريد الإلكتروني غير صالح'; @@ -119,8 +122,8 @@ export default function TenantRegisterPage() { console.log('[CustomerRegister] Submitting customer registration...'); const payload = { - FullName: formData.name, - name: formData.name, + firstName: formData.firstName, + lastName: formData.lastName, email: formData.email, phoneNumber: formData.phone, password: formData.password, @@ -284,18 +287,28 @@ export default function TenantRegisterPage() { {/* ─── STEP 1: Form ─── */} {step === 1 && ( <> - - -
-
- + +
+ +
+
+ +
+ { setFormData({...formData, firstName: e.target.value}); setErrors({...errors, firstName: null}); }} + className={`w-full pr-12 pl-4 py-3 bg-white/5 border rounded-xl focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent text-white placeholder-gray-500 transition-all ${errors.firstName ? 'border-red-500' : 'border-gray-700'}`} + placeholder="الاسم الأول" />
- { setFormData({...formData, name: e.target.value}); setErrors({...errors, name: null}); }} - className={`w-full pr-12 pl-4 py-3 bg-white/5 border rounded-xl focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent text-white placeholder-gray-500 transition-all ${errors.name ? 'border-red-500' : 'border-gray-700'}`} - placeholder="أدخل اسمك الكامل" /> + {errors.firstName &&

{errors.firstName}

} +
+
+ + { setFormData({...formData, lastName: e.target.value}); setErrors({...errors, lastName: null}); }} + className={`w-full px-4 py-3 bg-white/5 border rounded-xl focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent text-white placeholder-gray-500 transition-all ${errors.lastName ? 'border-red-500' : 'border-gray-700'}`} + placeholder="اسم العائلة" /> + {errors.lastName &&

{errors.lastName}

}
- {errors.name &&

{errors.name}

}
diff --git a/app/utils/api.js b/app/utils/api.js index c11b0c8..df4396e 100644 --- a/app/utils/api.js +++ b/app/utils/api.js @@ -81,9 +81,7 @@ export async function getRentProperties() { } export async function getRentProperty(id) { - const items = await apiFetch('/RentProperties/GetRentProperties'); - if (!Array.isArray(items)) return items; - return items.find(p => p.id == id) || items[0]; + return apiFetch(`/RentProperties/GetRentPropertyById/${id}`); } export async function getRentPropertyLocations(params = {}) { @@ -190,15 +188,18 @@ 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('FirstName', data.firstName || data.FirstName || ''); + formData.append('LastName', data.lastName || data.LastName || ''); formData.append('Email', data.email || ''); formData.append('PhoneNumber', data.phoneNumber || ''); formData.append('WhatsAppNumber', data.whatsAppNumber || ''); + formData.append('NationalNumber', data.nationalNumber || ''); formData.append('Password', data.password || ''); formData.append('Type', String(data.ownerType ?? data.Type ?? 0)); + formData.append('Language', '0'); - if (frontImage) formData.append('FrontIdCarImage', frontImage); - if (backImage) formData.append('RearIdCarImage', backImage); + if (frontImage) formData.append('FrontIdCarImagePath', frontImage); + if (backImage) formData.append('RearIdCarImagePath', backImage); return multipartAuthFetch('/Owner/Add', formData); } @@ -207,14 +208,18 @@ 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('FirstName', data.firstName || data.FirstName || ''); + formData.append('LastName', data.lastName || data.LastName || ''); formData.append('Email', data.email || ''); formData.append('PhoneNumber', data.phoneNumber || ''); + formData.append('WhatsAppNumber', data.whatsAppNumber || ''); + formData.append('NationalNumber', data.nationalNumber || ''); formData.append('Password', data.password || ''); formData.append('Type', String(data.customerType ?? data.Type ?? 0)); + formData.append('Language', '0'); - if (frontImage) formData.append('FrontIdCarImage', frontImage); - if (backImage) formData.append('RearIdCarImage', backImage); + if (frontImage) formData.append('FrontIdCarImagePath', frontImage); + if (backImage) formData.append('RearIdCarImagePath', backImage); return multipartAuthFetch('/Customer/Add', formData); }