import { FileText, Calendar, Building, Plus, Eye } from 'lucide-react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../ui/card'; import { Badge } from '../ui/badge'; import { Button } from '../ui/button'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '../ui/tabs'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '../ui/table'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '../ui/dialog'; import { Input } from '../ui/input'; import { Label } from '../ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../ui/select'; import { Textarea } from '../ui/textarea'; import { useState } from 'react'; import { User } from '../../lib/mock-data'; import { toast } from 'sonner'; interface ResignationPageProps { currentUser: User | null; onViewDetails: (id: string) => void; } // Mock dealer data for auto-fetch const mockDealerData: Record = { 'DL-MH-001': { dealerName: 'Amit Sharma Motors', address: '123, MG Road, Bandra West', cityCategory: 'Tier 1', domainName: 'Mumbai Central', dealershipName: 'Royal Enfield Mumbai', gst: '27AABCU9603R1ZX', salesCode: 'SAL-MH-001', serviceCode: 'SRV-MH-001', accessoriesCode: 'ACC-MH-001', gmaCode: 'GMA-MH-001' }, 'DL-KA-045': { dealerName: 'Priya Automobiles', address: '456, Brigade Road, Whitefield', cityCategory: 'Tier 1', domainName: 'Bangalore South', dealershipName: 'Royal Enfield Bangalore', gst: '29AABCU9603R1ZX', salesCode: 'SAL-KA-045', serviceCode: 'SRV-KA-045', accessoriesCode: 'ACC-KA-045', gmaCode: 'GMA-KA-045' } }; // Mock resignation requests export const mockResignationRequests = [ { id: 'RES-001', dealerCode: 'DL-MH-001', dealerName: 'Amit Sharma Motors', location: 'Mumbai, Maharashtra', dealershipType: 'Main Dealer', formatCategory: 'A+', resignationReason: 'Personal Health Reasons', status: 'ASM Review', currentStage: 'ASM', submittedOn: '2025-10-08', submittedBy: 'DD Lead' }, { id: 'RES-002', dealerCode: 'DL-KA-045', dealerName: 'Priya Automobiles', location: 'Bangalore, Karnataka', dealershipType: 'Studio', formatCategory: 'A', resignationReason: 'Relocating to Different City', status: 'DD Lead Review', currentStage: 'DD Lead', submittedOn: '2025-10-03', submittedBy: 'DD Lead' }, { id: 'RES-003', dealerCode: 'DL-TN-028', dealerName: 'Rahul Motors', location: 'Chennai, Tamil Nadu', dealershipType: 'Main Dealer', formatCategory: 'B', resignationReason: 'Starting Own Venture', status: 'NBH Approved', currentStage: 'Legal', submittedOn: '2025-10-05', submittedBy: 'DD Lead' } ]; const getStatusColor = (status: string) => { if (status.includes('Approved')) return 'bg-green-100 text-green-700 border-green-300'; if (status.includes('Review') || status.includes('Pending')) return 'bg-yellow-100 text-yellow-700 border-yellow-300'; if (status.includes('Rejected')) return 'bg-red-100 text-red-700 border-red-300'; return 'bg-blue-100 text-blue-700 border-blue-300'; }; export function ResignationPage({ currentUser, onViewDetails }: ResignationPageProps) { const [isDialogOpen, setIsDialogOpen] = useState(false); const [dealerCode, setDealerCode] = useState(''); const [autoFilledData, setAutoFilledData] = useState(null); const [formData, setFormData] = useState({ inaugurationMonth: '', inaugurationYear: '', loaMonth: '', loaYear: '', loiMonth: '', loiYear: '', lastSixMonthsSales: '', numberOfDealerships: '', numberOfStudios: '', constitution: '', dealershipType: '', typeOfClosure: '', formatCategory: '', dealerScoreCardBand: '', resignationReason: '', customerDescription: '', document: null as File | null }); const handleDealerCodeChange = (code: string) => { setDealerCode(code); if (mockDealerData[code]) { setAutoFilledData(mockDealerData[code]); toast.success('Dealer details loaded successfully'); } else { setAutoFilledData(null); if (code) { toast.error('Dealer code not found'); } } }; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (!autoFilledData) { toast.error('Please enter a valid dealer code'); return; } toast.success('Resignation request submitted successfully'); setIsDialogOpen(false); // Reset form setDealerCode(''); setAutoFilledData(null); setFormData({ inaugurationMonth: '', inaugurationYear: '', loaMonth: '', loaYear: '', loiMonth: '', loiYear: '', lastSixMonthsSales: '', numberOfDealerships: '', numberOfStudios: '', constitution: '', dealershipType: '', typeOfClosure: '', formatCategory: '', dealerScoreCardBand: '', resignationReason: '', customerDescription: '', document: null }); }; const isDDLead = currentUser?.role === 'DD Lead'; // Helper function to check if request is at current user's level const isRequestAtMyLevel = (request: any) => { if (!currentUser) return false; const roleToStageMapping: Record = { 'DD Lead': ['DD Lead'], 'DD-ZM': ['DD-ZM'], 'RBM': ['RBM'], 'DD AM': ['ASM', 'DD AM'], 'ZBH': ['ZBH'], 'NBH': ['NBH'], 'Legal Admin': ['Legal'], 'DD Admin': ['DD Admin'], 'Super Admin': ['DD Admin', 'NBH', 'Legal', 'ZBH', 'RBM', 'ASM', 'DD Lead'] }; const userStages = roleToStageMapping[currentUser.role] || []; return userStages.some(stage => request.currentStage.includes(stage) || request.status.includes(stage) ); }; const openRequests = mockResignationRequests.filter(req => !req.status.includes('Completed') && !req.status.includes('Closed') && isRequestAtMyLevel(req) ); const completedRequests = mockResignationRequests.filter(req => req.status.includes('Completed') || req.status.includes('Closed') || req.status.includes('Final Approval') ); return (
{/* Header Stats */}
All Requests {mockResignationRequests.length}

Total Requests

Open {openRequests.length}

Requires Your Action

Completed {completedRequests.length}

Finalized

{/* Main Content */}
Resignation Requests Track and manage dealer resignation requests {!isDDLead && ( • Note: Only DD Lead can create resignation requests. Current role: {currentUser?.role || 'Not logged in'} )}
{isDDLead && ( Create Resignation Request Fill in the details to create a new resignation request
{/* Dealer Code - Auto-fetch trigger */}
handleDealerCodeChange(e.target.value)} placeholder="e.g., DL-MH-001" required />
{/* Auto-filled data */} {autoFilledData && (

{autoFilledData.dealerName}

{autoFilledData.gst}

{autoFilledData.address}

{autoFilledData.cityCategory}

{autoFilledData.domainName}

{autoFilledData.dealershipName}

{autoFilledData.salesCode}

{autoFilledData.serviceCode}

{autoFilledData.accessoriesCode}

{autoFilledData.gmaCode}

)} {/* Date fields */}
setFormData({...formData, inaugurationMonth: e.target.value})} required /> setFormData({...formData, inaugurationYear: e.target.value})} required />
setFormData({...formData, loaMonth: e.target.value})} required /> setFormData({...formData, loaYear: e.target.value})} required />
setFormData({...formData, loiMonth: e.target.value})} required /> setFormData({...formData, loiYear: e.target.value})} required />
setFormData({...formData, lastSixMonthsSales: e.target.value})} required />
{/* Number fields */}
setFormData({...formData, numberOfDealerships: e.target.value})} required />
setFormData({...formData, numberOfStudios: e.target.value})} required />
{/* Dropdown fields */}
{formData.dealershipType !== 'studio' && (
)}
{/* Text fields */}
setFormData({...formData, resignationReason: e.target.value})} placeholder="Brief reason for resignation" required />