web changes
This commit is contained in:
parent
8fb9b9dc26
commit
ac4cc64cb6
@ -480,6 +480,8 @@ public function createPassword(Request $request)
|
||||
'emirates_id_employer' => $pending['emirates_id_employer'] ?? null,
|
||||
'emirates_id_issue_place' => $pending['emirates_id_issue_place'] ?? null,
|
||||
'emirates_id_occupation' => $pending['emirates_id_occupation'] ?? null,
|
||||
'emirates_id_card_number' => $pending['emirates_id_card_number'] ?? null,
|
||||
'emirates_id_gender' => $pending['emirates_id_gender'] ?? null,
|
||||
'nationality' => $pending['emirates_id_nationality'] ?? null,
|
||||
'address' => $pending['address'] ?? null,
|
||||
]);
|
||||
@ -510,6 +512,8 @@ public function createPassword(Request $request)
|
||||
'emirates_id_employer' => $pending['emirates_id_employer'] ?? null,
|
||||
'emirates_id_issue_place' => $pending['emirates_id_issue_place'] ?? null,
|
||||
'emirates_id_occupation' => $pending['emirates_id_occupation'] ?? null,
|
||||
'emirates_id_card_number' => $pending['emirates_id_card_number'] ?? null,
|
||||
'emirates_id_gender' => $pending['emirates_id_gender'] ?? null,
|
||||
'nationality' => $pending['emirates_id_nationality'] ?? null,
|
||||
]);
|
||||
|
||||
|
||||
@ -51,6 +51,8 @@ private function buildProfileData($user, $profile)
|
||||
'employer' => $profile->emirates_id_employer ?? 'Msj International Technical Services L.L.C UAE',
|
||||
'issue_place' => $profile->emirates_id_issue_place ?? 'Dubai',
|
||||
'occupation' => $profile->emirates_id_occupation ?? 'Electrician',
|
||||
'card_number' => $profile->emirates_id_card_number ?? '151023946',
|
||||
'gender' => $profile->emirates_id_gender ?? 'M',
|
||||
],
|
||||
'fcm_token' => $user->fcm_token ?? 'fcm_token_example',
|
||||
'address' => $profile->address ?? 'Villa 45, Street 12',
|
||||
@ -83,6 +85,8 @@ public function index(Request $request)
|
||||
'emirates_id_employer' => 'Msj International Technical Services L.L.C UAE',
|
||||
'emirates_id_issue_place' => 'Dubai',
|
||||
'emirates_id_occupation' => 'Electrician',
|
||||
'emirates_id_card_number' => '151023946',
|
||||
'emirates_id_gender' => 'M',
|
||||
'address' => 'Villa 45, Street 12',
|
||||
]);
|
||||
}
|
||||
@ -115,6 +119,8 @@ public function edit(Request $request)
|
||||
'emirates_id_employer' => 'Msj International Technical Services L.L.C UAE',
|
||||
'emirates_id_issue_place' => 'Dubai',
|
||||
'emirates_id_occupation' => 'Electrician',
|
||||
'emirates_id_card_number' => '151023946',
|
||||
'emirates_id_gender' => 'M',
|
||||
'address' => 'Villa 45, Street 12',
|
||||
]);
|
||||
}
|
||||
|
||||
@ -29,6 +29,8 @@ class EmployerProfile extends Model
|
||||
'emirates_id_employer',
|
||||
'emirates_id_issue_place',
|
||||
'emirates_id_occupation',
|
||||
'emirates_id_card_number',
|
||||
'emirates_id_gender',
|
||||
'address',
|
||||
'property_type',
|
||||
'profile_photo_url',
|
||||
|
||||
@ -43,6 +43,8 @@ class Sponsor extends Authenticatable
|
||||
'emirates_id_employer',
|
||||
'emirates_id_issue_place',
|
||||
'emirates_id_occupation',
|
||||
'emirates_id_card_number',
|
||||
'emirates_id_gender',
|
||||
];
|
||||
|
||||
protected $hidden = [
|
||||
|
||||
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('employer_profiles', function (Blueprint $table) {
|
||||
$table->string('emirates_id_card_number')->nullable();
|
||||
$table->string('emirates_id_gender')->nullable();
|
||||
});
|
||||
|
||||
Schema::table('sponsors', function (Blueprint $table) {
|
||||
$table->string('emirates_id_card_number')->nullable();
|
||||
$table->string('emirates_id_gender')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('employer_profiles', function (Blueprint $table) {
|
||||
$table->dropColumn(['emirates_id_card_number', 'emirates_id_gender']);
|
||||
});
|
||||
|
||||
Schema::table('sponsors', function (Blueprint $table) {
|
||||
$table->dropColumn(['emirates_id_card_number', 'emirates_id_gender']);
|
||||
});
|
||||
}
|
||||
};
|
||||
@ -286,9 +286,8 @@ export default function EmployersIndex({ employers: initialEmployers, sponsors,
|
||||
<TableHead onClick={() => handleSort('name')} className="font-bold text-slate-500 text-[10px] uppercase tracking-widest h-14 pl-8 cursor-pointer select-none">
|
||||
Employer {sortField === 'name' && (sortOrder === 'desc' ? '↓' : '↑')}
|
||||
</TableHead>
|
||||
<TableHead className="font-bold text-slate-500 text-[10px] uppercase tracking-widest h-14">Company Name</TableHead>
|
||||
<TableHead className="font-bold text-slate-500 text-[10px] uppercase tracking-widest h-14">Subscription Plan</TableHead>
|
||||
<TableHead className="font-bold text-slate-500 text-[10px] uppercase tracking-widest h-14">Verification Status</TableHead>
|
||||
<TableHead className="font-bold text-slate-500 text-[10px] uppercase tracking-widest h-14">Country</TableHead>
|
||||
<TableHead onClick={() => handleSort('status')} className="font-bold text-slate-500 text-[10px] uppercase tracking-widest h-14 cursor-pointer select-none">
|
||||
Status {sortField === 'status' && (sortOrder === 'desc' ? '↓' : '↑')}
|
||||
</TableHead>
|
||||
@ -310,11 +309,6 @@ export default function EmployersIndex({ employers: initialEmployers, sponsors,
|
||||
</div>
|
||||
</div>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<div className="text-xs font-bold text-slate-700">
|
||||
{emp.employer_profile?.company_name || 'N/A'}
|
||||
</div>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<span className={`px-2 py-0.5 rounded-lg text-[10px] font-black uppercase tracking-tight ${
|
||||
emp.subscription_status === 'active' ? 'bg-blue-50 text-blue-600 border border-blue-100' : 'bg-slate-100 text-slate-500'
|
||||
@ -323,10 +317,8 @@ export default function EmployersIndex({ employers: initialEmployers, sponsors,
|
||||
</span>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<span className={`text-xs font-bold uppercase ${
|
||||
emp.employer_profile?.verification_status === 'approved' ? 'text-emerald-600' : 'text-amber-500'
|
||||
}`}>
|
||||
{emp.employer_profile?.verification_status || 'pending'}
|
||||
<span className="text-xs font-bold text-slate-700">
|
||||
{emp.employer_profile?.country || 'United Arab Emirates'}
|
||||
</span>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
@ -410,7 +402,7 @@ export default function EmployersIndex({ employers: initialEmployers, sponsors,
|
||||
))
|
||||
) : (
|
||||
<TableRow>
|
||||
<TableCell colSpan={6} className="py-12 text-center text-slate-400 font-semibold text-sm">
|
||||
<TableCell colSpan={5} className="py-12 text-center text-slate-400 font-semibold text-sm">
|
||||
No employers found.
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
@ -478,10 +470,6 @@ export default function EmployersIndex({ employers: initialEmployers, sponsors,
|
||||
Employer Profile
|
||||
</h3>
|
||||
<div className="grid grid-cols-2 gap-4 text-xs">
|
||||
<div>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Company / Household</span>
|
||||
<span className="font-bold text-slate-800">{selectedEmployer?.employer_profile?.company_name || 'N/A'}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Email Address</span>
|
||||
<span className="font-bold text-slate-800">{selectedEmployer?.email || 'N/A'}</span>
|
||||
@ -535,28 +523,52 @@ export default function EmployersIndex({ employers: initialEmployers, sponsors,
|
||||
<div className="bg-white p-5 border border-slate-200 rounded-2xl shadow-xs space-y-4">
|
||||
<h3 className="text-xs font-black text-slate-700 uppercase tracking-widest border-b border-slate-100 pb-2 flex items-center gap-2">
|
||||
<ShieldCheck className="w-4 h-4 text-[#0F6E56]" />
|
||||
Emirates ID & Document Extracted Details
|
||||
Emirates ID Details
|
||||
</h3>
|
||||
<div className="grid grid-cols-2 gap-4 text-xs">
|
||||
<div>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Emirates ID Number</span>
|
||||
<span className="font-mono font-bold text-slate-800">{selectedEmployer?.employer_profile?.emirates_id_number || 'Not Extracted / Pending'}</span>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">ID Number</span>
|
||||
<span className="font-mono font-bold text-slate-800">{selectedEmployer?.employer_profile?.emirates_id_number || 'N/A'}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Emirates ID Expiry</span>
|
||||
<span className="font-bold text-slate-800">{formatDate(selectedEmployer?.employer_profile?.emirates_id_expiry)}</span>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Card Number</span>
|
||||
<span className="font-mono font-bold text-slate-800">{selectedEmployer?.employer_profile?.emirates_id_card_number || 'N/A'}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Verification Status</span>
|
||||
<span className={`font-bold uppercase ${
|
||||
selectedEmployer?.employer_profile?.verification_status === 'approved' ? 'text-emerald-600' : 'text-amber-500'
|
||||
}`}>
|
||||
{selectedEmployer?.employer_profile?.verification_status || 'Pending'}
|
||||
</span>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Full Name</span>
|
||||
<span className="font-bold text-slate-800">{selectedEmployer?.employer_profile?.emirates_id_name || 'N/A'}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Trade License Expiry</span>
|
||||
<span className="font-bold text-slate-800">{formatDate(selectedEmployer?.sponsor?.license_expiry)}</span>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Date of Birth</span>
|
||||
<span className="font-bold text-slate-800">{selectedEmployer?.employer_profile?.emirates_id_dob || 'N/A'}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Nationality</span>
|
||||
<span className="font-bold text-slate-800">{selectedEmployer?.employer_profile?.nationality || 'N/A'}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Gender</span>
|
||||
<span className="font-bold text-slate-800">{selectedEmployer?.employer_profile?.emirates_id_gender || 'N/A'}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Issue Date</span>
|
||||
<span className="font-bold text-slate-800">{selectedEmployer?.employer_profile?.emirates_id_issue_date || 'N/A'}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Expiry Date</span>
|
||||
<span className="font-bold text-slate-800">{selectedEmployer?.employer_profile?.emirates_id_expiry || 'N/A'}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Occupation</span>
|
||||
<span className="font-bold text-slate-800">{selectedEmployer?.employer_profile?.emirates_id_occupation || 'N/A'}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Employer</span>
|
||||
<span className="font-bold text-slate-800">{selectedEmployer?.employer_profile?.emirates_id_employer || 'N/A'}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-[10px] font-black text-slate-400 uppercase tracking-wider block mb-0.5">Issuing Place</span>
|
||||
<span className="font-bold text-slate-800">{selectedEmployer?.employer_profile?.emirates_id_issue_place || 'N/A'}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -590,15 +602,7 @@ export default function EmployersIndex({ employers: initialEmployers, sponsors,
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<div className="space-y-1">
|
||||
<label className="text-[10px] font-black text-slate-400 uppercase tracking-widest">Company Name</label>
|
||||
<input
|
||||
type="text"
|
||||
className="w-full px-4 py-2.5 border border-slate-200 rounded-xl text-sm font-semibold focus:ring-4 focus:ring-teal-500/10 outline-none"
|
||||
value={editForm.company_name}
|
||||
onChange={e => setEditForm({ ...editForm, company_name: e.target.value })}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
<div className="space-y-1">
|
||||
<label className="text-[10px] font-black text-slate-400 uppercase tracking-widest">Email Address</label>
|
||||
|
||||
@ -250,9 +250,7 @@ export default function WorkerManagement({ workers }) {
|
||||
className="w-full pl-10 pr-4 py-2.5 bg-slate-50 border border-slate-100 rounded-xl text-sm focus:bg-white focus:ring-4 focus:ring-[#0F6E56]/10 outline-none transition-all font-medium"
|
||||
/>
|
||||
</div>
|
||||
<button className="p-2.5 bg-white border border-slate-200 rounded-xl text-slate-400 hover:bg-slate-50 transition-colors">
|
||||
<Filter className="w-4 h-4" />
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<div className="flex items-center gap-2 w-full md:w-auto">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user