Compare commits

..

2 Commits

Author SHA1 Message Date
yotakii
94d651c29e Merge branch 'master' of https://git.atmata-group.com/ATMATA/zerp 2026-03-30 13:23:23 +03:00
yotakii
3e8985ffe0 expand contant types 2026-03-30 13:22:14 +03:00
5 changed files with 49 additions and 6 deletions

View File

@@ -42,7 +42,8 @@ router.post(
'/', '/',
authorize('contacts', 'contacts', 'create'), authorize('contacts', 'contacts', 'create'),
[ [
body('type').isIn(['INDIVIDUAL', 'COMPANY', 'HOLDING', 'GOVERNMENT']), body('type').isIn(['INDIVIDUAL', 'COMPANY', 'HOLDING', 'GOVERNMENT','ORGANIZATION',
'BANK','UNIVERSITY','SCHOOL','UN','NGO','INSTITUTION',]),
body('name').notEmpty().trim(), body('name').notEmpty().trim(),
body('email').optional().isEmail(), body('email').optional().isEmail(),
body('source').notEmpty(), body('source').notEmpty(),

View File

@@ -679,7 +679,7 @@ class ContactsService {
} }
// Validate type // Validate type
if (!['INDIVIDUAL', 'COMPANY', 'HOLDING', 'GOVERNMENT'].includes(row.type)) { if (!['INDIVIDUAL', 'COMPANY', 'HOLDING', 'GOVERNMENT', 'ORGANIZATION','BANK','UNIVERSITY','SCHOOL','UN','NGO','INSTITUTION',].includes(row.type)) {
results.errors.push({ results.errors.push({
row: rowNumber, row: rowNumber,
field: 'type', field: 'type',

View File

@@ -98,7 +98,14 @@ function ContactDetailContent() {
INDIVIDUAL: 'bg-blue-100 text-blue-700', INDIVIDUAL: 'bg-blue-100 text-blue-700',
COMPANY: 'bg-green-100 text-green-700', COMPANY: 'bg-green-100 text-green-700',
HOLDING: 'bg-purple-100 text-purple-700', HOLDING: 'bg-purple-100 text-purple-700',
GOVERNMENT: 'bg-orange-100 text-orange-700' GOVERNMENT: 'bg-orange-100 text-orange-700',
ORGANIZATION: 'bg-cyan-100 text-cyan-700',
BANK: 'bg-emerald-100 text-emerald-700',
UNIVERSITY: 'bg-indigo-100 text-indigo-700',
SCHOOL: 'bg-yellow-100 text-yellow-700',
UN: 'bg-sky-100 text-sky-700',
NGO: 'bg-pink-100 text-pink-700',
INSTITUTION: 'bg-gray-100 text-gray-700'
} }
return colors[type] || 'bg-gray-100 text-gray-700' return colors[type] || 'bg-gray-100 text-gray-700'
} }
@@ -108,7 +115,14 @@ function ContactDetailContent() {
INDIVIDUAL: 'فرد - Individual', INDIVIDUAL: 'فرد - Individual',
COMPANY: 'شركة - Company', COMPANY: 'شركة - Company',
HOLDING: 'مجموعة - Holding', HOLDING: 'مجموعة - Holding',
GOVERNMENT: 'حكومي - Government' GOVERNMENT: 'حكومي - Government',
ORGANIZATION: 'منظمات - Organizations',
BANK: 'بنوك - Banks',
UNIVERSITY: 'جامعات - Universities',
SCHOOL: 'مدارس - Schools',
UN: 'UN - United Nations',
NGO: 'NGO - Non-Governmental Organization',
INSTITUTION: 'مؤسسة - Institution'
} }
return labels[type] || type return labels[type] || type
} }

View File

@@ -195,7 +195,14 @@ function ContactsContent() {
INDIVIDUAL: 'bg-blue-100 text-blue-700', INDIVIDUAL: 'bg-blue-100 text-blue-700',
COMPANY: 'bg-green-100 text-green-700', COMPANY: 'bg-green-100 text-green-700',
HOLDING: 'bg-purple-100 text-purple-700', HOLDING: 'bg-purple-100 text-purple-700',
GOVERNMENT: 'bg-orange-100 text-orange-700' GOVERNMENT: 'bg-orange-100 text-orange-700',
ORGANIZATION: 'bg-cyan-100 text-cyan-700',
BANK: 'bg-emerald-100 text-emerald-700',
UNIVERSITY: 'bg-indigo-100 text-indigo-700',
SCHOOL: 'bg-yellow-100 text-yellow-700',
UN: 'bg-sky-100 text-sky-700',
NGO: 'bg-pink-100 text-pink-700',
INSTITUTION: 'bg-gray-100 text-gray-700'
} }
return colors[type] || 'bg-gray-100 text-gray-700' return colors[type] || 'bg-gray-100 text-gray-700'
} }
@@ -209,7 +216,14 @@ function ContactsContent() {
INDIVIDUAL: 'فرد', INDIVIDUAL: 'فرد',
COMPANY: 'شركة', COMPANY: 'شركة',
HOLDING: 'مجموعة', HOLDING: 'مجموعة',
GOVERNMENT: 'حكومي' GOVERNMENT: 'حكومي',
ORGANIZATION: 'منظمات',
BANK: 'بنوك',
UNIVERSITY: 'جامعات',
SCHOOL: 'مدارس',
UN: 'UN',
NGO: 'NGO',
INSTITUTION: 'مؤسسة'
} }
return labels[type] || type return labels[type] || type
} }
@@ -372,6 +386,13 @@ function ContactsContent() {
<option value="COMPANY">Companies</option> <option value="COMPANY">Companies</option>
<option value="HOLDING">Holdings</option> <option value="HOLDING">Holdings</option>
<option value="GOVERNMENT">Government</option> <option value="GOVERNMENT">Government</option>
<option value="ORGANIZATION">Organizations</option>
<option value="BANK">Banks</option>
<option value="UNIVERSITY">Universities</option>
<option value="SCHOOL">Schools</option>
<option value="UN">UN</option>
<option value="NGO">NGO</option>
<option value="INSTITUTION">Institution</option>
</select> </select>
{/* Status Filter */} {/* Status Filter */}

View File

@@ -175,6 +175,13 @@ export default function ContactForm({ contact, onSubmit, onCancel, submitting =
<option value="COMPANY">Company - شركة</option> <option value="COMPANY">Company - شركة</option>
<option value="HOLDING">Holding - مجموعة</option> <option value="HOLDING">Holding - مجموعة</option>
<option value="GOVERNMENT">Government - حكومي</option> <option value="GOVERNMENT">Government - حكومي</option>
<option value="ORGANIZATION">Organizations - منظمات</option>
<option value="BANK">Banks - بنوك</option>
<option value="UNIVERSITY">Universities - جامعات</option>
<option value="SCHOOL">Schools - مدارس</option>
<option value="UN">UN - الأمم المتحدة</option>
<option value="NGO">NGO - منظمة غير حكومية</option>
<option value="INSTITUTION">Institution - مؤسسة</option>
</select> </select>
{formErrors.type && <p className="text-red-500 text-xs mt-1">{formErrors.type}</p>} {formErrors.type && <p className="text-red-500 text-xs mt-1">{formErrors.type}</p>}
</div> </div>