Dealer_Onboard_Frontend/src/features/onboarding/components/application-details/applicationDetails.shared.ts

177 lines
5.6 KiB
TypeScript

export interface ProcessStage {
id: number | string;
name: string;
status: 'completed' | 'active' | 'pending';
date?: string;
description?: string;
evaluators?: string[];
documentsUploaded?: number;
isParallel?: boolean;
isLocked?: boolean;
lockMessage?: string;
branches?: {
name: string;
color: string;
stages: ProcessStage[];
}[];
}
export const KT_MATRIX_CRITERIA = [
{
name: 'Age',
weight: 5,
maxScore: 10,
options: [
{ label: '20 to 40 years old', value: '20-40', score: 10 },
{ label: '40 to 50 years old', value: '40-50', score: 5 },
{ label: 'Above 50 years old', value: 'above-50', score: 0 },
],
},
{
name: 'Qualification',
weight: 5,
maxScore: 10,
options: [
{ label: 'Post Graduate', value: 'post-graduate', score: 10 },
{ label: 'Graduate', value: 'graduate', score: 5 },
{ label: 'SSLC', value: 'sslc', score: 0 },
],
},
{
name: 'Local Knowledge and Influence',
weight: 5,
maxScore: 10,
options: [
{ label: 'Excellent PR', value: 'excellent', score: 10 },
{ label: 'Good PR', value: 'good', score: 5 },
{ label: 'Poor PR', value: 'poor', score: 0 },
],
},
{
name: 'Base Location vs Applied Location',
weight: 10,
maxScore: 10,
options: [
{ label: 'Native of the Applied location', value: 'native', score: 10 },
{ label: 'Willing to relocate', value: 'relocate', score: 5 },
{ label: 'Will manage remotely with occasional visits', value: 'remote', score: 0 },
],
},
{
name: 'Why Interested in Royal Enfield Business?',
weight: 10,
maxScore: 10,
options: [
{ label: 'Passion', value: 'passion', score: 10 },
{ label: 'Business expansion / Status symbol', value: 'business', score: 5 },
],
},
{
name: 'Passion for Royal Enfield',
weight: 10,
maxScore: 10,
options: [
{ label: 'Currently owns a Royal Enfield', value: 'owns', score: 10 },
{ label: 'Owned by Immediate Relative', value: 'relative', score: 5 },
{ label: 'Does not own Royal Enfield', value: 'none', score: 0 },
],
},
{
name: 'Passion For Rides',
weight: 10,
maxScore: 10,
options: [
{ label: 'Goes for long rides regularly', value: 'regular', score: 10 },
{ label: 'Goes for long rides rarely', value: 'rarely', score: 5 },
{ label: "Doesn't go for rides", value: 'never', score: 0 },
],
},
{
name: 'With Whom Partnering?',
weight: 5,
maxScore: 10,
options: [
{ label: 'Within family', value: 'family', score: 10 },
{ label: 'Outside family', value: 'outside', score: 0 },
],
},
{
name: 'Who Will Manage the Firm?',
weight: 10,
maxScore: 10,
options: [
{ label: 'Owner managed', value: 'owner', score: 10 },
{ label: 'Partly owner / partly manager model', value: 'partly', score: 5 },
{ label: 'Fully manager model', value: 'manager', score: 0 },
],
},
{
name: 'Business Acumen',
weight: 5,
maxScore: 10,
options: [
{ label: 'Has similar automobile experience', value: 'automobile', score: 10 },
{ label: 'Has successful business but not automobile', value: 'other-business', score: 5 },
{ label: 'No business experience', value: 'no-experience', score: 0 },
],
},
{
name: 'Time Availability',
weight: 5,
maxScore: 10,
options: [
{ label: 'Full Time Availability for RE Business', value: 'full-time', score: 10 },
{ label: 'Part Time Availability for RE Business', value: 'part-time', score: 5 },
{ label: 'Not Available personally, Manager will handle', value: 'manager', score: 0 },
],
},
{
name: 'Property Ownership',
weight: 5,
maxScore: 10,
options: [
{ label: 'Has own property in proposed location', value: 'own', score: 10 },
{ label: 'Will rent / lease', value: 'rent', score: 0 },
],
},
{
name: 'Investment in the Business',
weight: 5,
maxScore: 10,
options: [
{ label: 'Full own funds', value: 'own-funds', score: 10 },
{ label: 'Partially from the bank', value: 'partial-bank', score: 5 },
{ label: 'Completely bank funded', value: 'full-bank', score: 0 },
],
},
{
name: 'Will Expand to Other 2W/4W OEMs?',
weight: 5,
maxScore: 10,
options: [
{ label: 'No', value: 'no', score: 10 },
{ label: 'Yes', value: 'yes', score: 0 },
],
},
{
name: 'Plans of Expansion with RE',
weight: 5,
maxScore: 10,
options: [
{ label: 'Immediate blood relation will join & expand', value: 'blood-relation', score: 10 },
{ label: 'Wants to expand by himself into more clusters', value: 'self-expand', score: 5 },
{ label: 'No plans for expansion', value: 'no-plans', score: 0 },
],
},
];
export function auditLogActionBadgeClass(action: string): string {
const a = String(action || '').toUpperCase();
if (a.includes('REJECT') || a.includes('DELET') || a.includes('DISQUALIF')) return 'border-red-200 bg-red-50/90 text-red-800';
if (a === 'CREATED' || a.includes('APPROV') || a.includes('COMPLETE')) return 'border-emerald-200 bg-emerald-50/90 text-emerald-900';
if (a.includes('DOCUMENT') || a.includes('UPLOAD') || a.includes('ATTACHMENT')) return 'border-sky-200 bg-sky-50/80 text-sky-900';
if (a.includes('PAYMENT') || a.includes('SECURITY') || a.includes('DEPOSIT')) return 'border-violet-200 bg-violet-50/80 text-violet-900';
if (a.includes('FDD') || a.includes('QUESTIONNAIRE') || a.includes('INTERVIEW')) return 'border-red-200 bg-red-50/80 text-red-900';
return 'border-slate-200 bg-slate-50 text-slate-700';
}