Add full FOCO investor management system with CRUD, investments, and transactions

This commit is contained in:
sazzadulalambd
2026-04-22 01:02:45 +06:00
parent 5338038ea2
commit dab0c11b15
32 changed files with 7673 additions and 89 deletions

433
src/data/mockData.ts Normal file
View File

@@ -0,0 +1,433 @@
export interface User {
id: string;
name: string;
email: string;
phone: string;
role: 'biker' | 'admin' | 'manager' | 'staff' | 'accountant' | 'investor' | 'shop' | 'merchant';
avatar?: string;
status: 'active' | 'pending' | 'inactive';
createdAt: string;
}
export interface Bike {
id: string;
model: string;
brand: string;
image: string;
plateNumber: string;
status: 'available' | 'rented' | 'maintenance' | 'retired';
batteryLevel: number;
location: string;
assignedTo?: string;
investorId?: string;
purchasePrice?: number;
purchaseDate?: string;
currentRent?: number;
totalEarnings?: number;
}
export interface Rental {
id: string;
bikeId: string;
userId: string;
type: 'single' | 'shared' | 'rent-to-own';
status: 'active' | 'pending' | 'completed' | 'disputed';
startDate: string;
endDate?: string;
deposit: number;
dailyRate: number;
totalPaid: number;
}
export interface Transaction {
id: string;
userId?: string;
investorId?: string;
bikeId?: string;
type: 'rental_payment' | 'deposit' | 'withdrawal' | 'topup' | 'earning' | 'refund' | 'investment' | 'investment_return' | 'bike_earning' | 'referral_bonus' | 'penalty' | 'adjustment';
amount: number;
status: 'completed' | 'pending' | 'failed' | 'cancelled';
description: string;
paymentMethod?: 'bank' | 'mobile' | 'cash' | 'cheque';
referenceNumber?: string;
createdAt: string;
processedAt?: string;
}
export interface InvestmentPlan {
id: string;
investorId: string;
planName: string;
planType: 'silver' | 'gold' | 'platinum' | 'diamond';
bikeIds: string[];
totalInvestment: number;
monthlyReturn: number;
expectedRoi: number;
actualEarnings: number;
startDate: string;
endDate?: string;
status: 'active' | 'completed' | 'cancelled' | 'pending';
paymentMethod: 'bank' | 'mobile' | 'cash' | 'cheque';
transactionId?: string;
notes?: string;
createdAt: string;
}
export interface Investor {
id: string;
userId: string;
name: string;
email: string;
phone: string;
phoneAlt?: string;
address: string;
dateOfBirth?: string;
gender?: string;
occupation?: string;
nidNumber?: string;
nidFront?: string;
nidBack?: string;
passportNumber?: string;
tinNumber?: string;
bankName?: string;
bankAccountName?: string;
bankAccountNumber?: string;
bankBranch?: string;
bankRouting?: string;
mobileBanking?: string;
mobileBankingNumber?: string;
additionalMobileBanking?: { provider: string; number: string; verified: boolean }[];
emergencyContactName?: string;
emergencyContactRelation?: string;
emergencyContactPhone?: string;
totalInvested: number;
totalEarnings: number;
activeBikes: number;
withdrawalPending: number;
totalWithdrawn: number;
pendingEarnings: number;
roi: number;
status: 'active' | 'pending' | 'inactive' | 'suspended';
notes?: string;
createdAt: string;
updatedAt?: string;
kycStatus: 'verified' | 'pending' | 'rejected' | 'not_submitted';
kycSubmittedAt?: string;
kycDocuments?: { type: string; number?: string; url?: string; verified: boolean; uploadedAt?: string }[];
riskLevel: 'low' | 'medium' | 'high';
referralCode?: string;
referredBy?: string;
totalReferrals: number;
referralEarnings: number;
investments: InvestmentPlan[];
}
export interface KYCRequest {
id: string;
userId: string;
userName: string;
phone: string;
submittedAt: string;
status: 'pending' | 'approved' | 'rejected';
}
export interface Delivery {
id: string;
shopId: string;
riderId: string;
status: 'pending' | 'in_progress' | 'completed';
pickupLocation: string;
dropoffLocation: string;
createdAt: string;
}
export const users: User[] = [
{ id: 'u1', name: 'Rahim Ahmed', email: 'rahim@email.com', phone: '01712345678', role: 'biker', status: 'active', createdAt: '2024-01-15' },
{ id: 'u2', name: 'Karim Hasan', email: 'karim@email.com', phone: '01712345679', role: 'biker', status: 'active', createdAt: '2024-02-20' },
{ id: 'u3', name: 'Admin User', email: 'admin@jaiben.com', phone: '01710000001', role: 'admin', status: 'active', createdAt: '2023-06-01' },
{ id: 'u4', name: 'Manager User', email: 'manager@jaiben.com', phone: '01710000002', role: 'manager', status: 'active', createdAt: '2023-06-01' },
{ id: 'u5', name: 'Staff User', email: 'staff@jaiben.com', phone: '01710000003', role: 'staff', status: 'active', createdAt: '2023-07-01' },
{ id: 'u6', name: 'Accountant User', email: 'accountant@jaiben.com', phone: '01710000004', role: 'accountant', status: 'active', createdAt: '2023-07-01' },
{ id: 'u7', name: 'Investor User', email: 'investor@email.com', phone: '01720000001', role: 'investor', status: 'active', createdAt: '2023-08-01' },
{ id: 'u8', name: 'Shop Owner', email: 'shop@email.com', phone: '01730000001', role: 'shop', status: 'active', createdAt: '2023-09-01' },
{ id: 'u9', name: 'Merchant User', email: 'merchant@email.com', phone: '01740000001', role: 'merchant', status: 'active', createdAt: '2023-10-01' },
];
export const bikes: Bike[] = [
{ id: 'b1', model: 'Etron ET50', brand: 'Etron', image: 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400', plateNumber: ' Dhaka Metro Cha-1234', status: 'rented', batteryLevel: 78, location: 'Gulshan 1', assignedTo: 'u1', investorId: 'inv1', purchasePrice: 85000, purchaseDate: '2024-01-15', currentRent: 350, totalEarnings: 14250 },
{ id: 'b2', model: 'Yadea DT3', brand: 'Yadea', image: 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400', plateNumber: 'Dhaka Metro Cha-5678', status: 'available', batteryLevel: 95, location: 'Banani', investorId: 'inv1', purchasePrice: 65000, purchaseDate: '2024-01-20', currentRent: 0, totalEarnings: 12750 },
{ id: 'b3', model: 'AIMA Lightning', brand: 'AIMA', image: 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400', plateNumber: 'Dhaka Metro Cha-9012', status: 'rented', batteryLevel: 62, location: 'Uttara', assignedTo: 'u2', investorId: 'inv2', purchasePrice: 95000, purchaseDate: '2023-11-05', currentRent: 450, totalEarnings: 22500 },
{ id: 'b4', model: 'TVS iQube', brand: 'TVS', image: 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400', plateNumber: 'Dhaka Metro Cha-3456', status: 'maintenance', batteryLevel: 45, location: 'Workshop', investorId: 'inv2', purchasePrice: 72000, purchaseDate: '2023-12-01', currentRent: 0, totalEarnings: 8500 },
{ id: 'b5', model: 'Bajaj Chetak', brand: 'Bajaj', image: 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400', plateNumber: 'Dhaka Metro Cha-7890', status: 'available', batteryLevel: 100, location: 'Dhanmondi', investorId: 'inv2', purchasePrice: 68000, purchaseDate: '2023-11-10', currentRent: 0, totalEarnings: 20000 },
{ id: 'b6', model: 'Hero Photon', brand: 'Hero', image: 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400', plateNumber: 'Dhaka Metro Cha-1111', status: 'rented', batteryLevel: 88, location: 'Mirpur', investorId: 'inv2', purchasePrice: 55000, purchaseDate: '2024-02-01', currentRent: 300, totalEarnings: 4500 },
{ id: 'b7', model: 'Okinawa Praise', brand: 'Okinawa', image: 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400', plateNumber: 'Dhaka Metro Cha-2222', status: 'available', batteryLevel: 92, location: 'Gulshan 2', investorId: 'inv3', purchasePrice: 75000, purchaseDate: '2024-02-10', currentRent: 0, totalEarnings: 9500 },
{ id: 'b8', model: 'Bajaj Chetak', brand: 'Bajaj', image: 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400', plateNumber: 'Dhaka Metro Cha-3333', status: 'available', batteryLevel: 100, location: 'Dhanmondi', purchasePrice: 70000, purchaseDate: '2024-03-01', currentRent: 0, totalEarnings: 0 },
{ id: 'b9', model: 'TVS iQube', brand: 'TVS', image: 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400', plateNumber: 'Dhaka Metro Cha-4444', status: 'rented', batteryLevel: 75, location: 'Banani', purchasePrice: 75000, purchaseDate: '2024-03-05', currentRent: 380, totalEarnings: 1140 },
{ id: 'b10', model: 'Yadea DT3', brand: 'Yadea', image: 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400', plateNumber: 'Dhaka Metro Cha-5555', status: 'available', batteryLevel: 90, location: 'Uttara', purchasePrice: 68000, purchaseDate: '2024-03-10', currentRent: 0, totalEarnings: 0 },
];
export const rentals: Rental[] = [
{ id: 'r1', bikeId: 'b1', userId: 'u1', type: 'single', status: 'active', startDate: '2024-03-01', deposit: 5000, dailyRate: 350, totalPaid: 10500 },
{ id: 'r2', bikeId: 'b3', userId: 'u2', type: 'rent-to-own', status: 'active', startDate: '2024-02-15', deposit: 8000, dailyRate: 450, totalPaid: 18000 },
{ id: 'r3', bikeId: 'b2', userId: 'u1', type: 'single', status: 'completed', startDate: '2024-01-10', endDate: '2024-01-25', deposit: 5000, dailyRate: 350, totalPaid: 5250 },
];
export const transactions: Transaction[] = [
// Biker transactions
{ id: 't1', userId: 'u1', type: 'rental_payment', amount: 350, status: 'completed', description: 'Daily Rental - Mar 21', createdAt: '2024-03-21' },
{ id: 't2', userId: 'u1', type: 'rental_payment', amount: 350, status: 'completed', description: 'Daily Rental - Mar 20', createdAt: '2024-03-20' },
{ id: 't3', userId: 'u1', type: 'deposit', amount: 5000, status: 'completed', description: 'Security Deposit Paid', createdAt: '2024-03-01' },
{ id: 't4', userId: 'u1', type: 'topup', amount: 2000, status: 'completed', description: 'Wallet Top Up', createdAt: '2024-03-15' },
// Investor 1 (inv1) - Hasan Mahmud - Multiple investment transactions
{ id: 'invt1', investorId: 'inv1', type: 'investment', amount: 85000, status: 'completed', description: 'Investment - Etron ET50 (Gold Plan)', paymentMethod: 'bank', referenceNumber: 'INV/2024/001', createdAt: '2024-01-15', processedAt: '2024-01-15' },
{ id: 'invt2', investorId: 'inv1', type: 'investment', amount: 65000, status: 'completed', description: 'Investment - Yadea DT3 (Gold Plan)', paymentMethod: 'mobile', referenceNumber: 'INV/2024/002', createdAt: '2024-01-20', processedAt: '2024-01-20' },
{ id: 'invt3', investorId: 'inv1', type: 'bike_earning', bikeId: 'b1', amount: 2500, status: 'completed', description: 'Monthly Earnings - Bike b1 (Etron ET50)', createdAt: '2024-02-15', processedAt: '2024-02-15' },
{ id: 'invt4', investorId: 'inv1', type: 'bike_earning', bikeId: 'b2', amount: 2125, status: 'completed', description: 'Monthly Earnings - Bike b2 (Yadea DT3)', createdAt: '2024-02-15', processedAt: '2024-02-15' },
{ id: 'invt5', investorId: 'inv1', type: 'bike_earning', bikeId: 'b1', amount: 2500, status: 'completed', description: 'Monthly Earnings - Bike b1 (Etron ET50)', createdAt: '2024-03-15', processedAt: '2024-03-15' },
{ id: 'invt6', investorId: 'inv1', type: 'bike_earning', bikeId: 'b2', amount: 2125, status: 'completed', description: 'Monthly Earnings - Bike b2 (Yadea DT3)', createdAt: '2024-03-15', processedAt: '2024-03-15' },
{ id: 'invt7', investorId: 'inv1', type: 'withdrawal', amount: 15000, status: 'completed', description: 'Withdrawal via Bank Transfer', paymentMethod: 'bank', referenceNumber: 'WDL/2024/015', createdAt: '2024-02-20', processedAt: '2024-02-21' },
{ id: 'invt8', investorId: 'inv1', type: 'withdrawal', amount: 10000, status: 'completed', description: 'Withdrawal via Bkash', paymentMethod: 'mobile', referenceNumber: 'WDL/2024/022', createdAt: '2024-03-10', processedAt: '2024-03-10' },
{ id: 'invt9', investorId: 'inv1', type: 'withdrawal', amount: 20000, status: 'completed', description: 'Withdrawal via Bank Transfer', paymentMethod: 'bank', referenceNumber: 'WDL/2024/028', createdAt: '2024-03-18', processedAt: '2024-03-19' },
{ id: 'invt10', investorId: 'inv1', type: 'withdrawal', amount: 3000, status: 'pending', description: 'Withdrawal Request - Bkash', paymentMethod: 'mobile', referenceNumber: 'WDL/2024/035', createdAt: '2024-03-20' },
{ id: 'invt11', investorId: 'inv1', type: 'referral_bonus', amount: 1500, status: 'completed', description: 'Referral Bonus - New Investor Signup', createdAt: '2024-02-01', processedAt: '2024-02-01' },
{ id: 'invt12', investorId: 'inv1', type: 'referral_bonus', amount: 1000, status: 'completed', description: 'Referral Bonus - New Investor Signup', createdAt: '2024-03-05', processedAt: '2024-03-05' },
// Investor 2 (inv2) - Ahmed Khan - Platinum Plan
{ id: 'invt13', investorId: 'inv2', type: 'investment', amount: 95000, status: 'completed', description: 'Investment - AIMA Lightning (Platinum Plan)', paymentMethod: 'bank', referenceNumber: 'INV/2023/089', createdAt: '2023-11-05', processedAt: '2023-11-05' },
{ id: 'invt14', investorId: 'inv2', type: 'investment', amount: 72000, status: 'completed', description: 'Investment - TVS iQube (Platinum Plan)', paymentMethod: 'bank', referenceNumber: 'INV/2023/095', createdAt: '2023-12-01', processedAt: '2023-12-01' },
{ id: 'invt15', investorId: 'inv2', type: 'investment', amount: 68000, status: 'completed', description: 'Investment - Bajaj Chetak (Platinum Plan)', paymentMethod: 'mobile', referenceNumber: 'INV/2023/102', createdAt: '2023-11-10', processedAt: '2023-11-10' },
{ id: 'invt16', investorId: 'inv2', type: 'investment', amount: 55000, status: 'completed', description: 'Investment - Hero Photon (Platinum Plan)', paymentMethod: 'bank', referenceNumber: 'INV/2024/008', createdAt: '2024-02-01', processedAt: '2024-02-01' },
{ id: 'invt17', investorId: 'inv2', type: 'bike_earning', bikeId: 'b3', amount: 3750, status: 'completed', description: 'Monthly Earnings - Bike b3 (AIMA Lightning)', createdAt: '2023-12-15', processedAt: '2023-12-15' },
{ id: 'invt18', investorId: 'inv2', type: 'bike_earning', bikeId: 'b4', amount: 1415, status: 'completed', description: 'Monthly Earnings - Bike b4 (TVS iQube)', createdAt: '2023-12-15', processedAt: '2023-12-15' },
{ id: 'invt19', investorId: 'inv2', type: 'bike_earning', bikeId: 'b5', amount: 3335, status: 'completed', description: 'Monthly Earnings - Bike b5 (Bajaj Chetak)', createdAt: '2023-12-15', processedAt: '2023-12-15' },
{ id: 'invt20', investorId: 'inv2', type: 'bike_earning', bikeId: 'b3', amount: 3750, status: 'completed', description: 'Monthly Earnings - Bike b3 (AIMA Lightning)', createdAt: '2024-01-15', processedAt: '2024-01-15' },
{ id: 'invt21', investorId: 'inv2', type: 'bike_earning', bikeId: 'b4', amount: 1415, status: 'completed', description: 'Monthly Earnings - Bike b4 (TVS iQube)', createdAt: '2024-01-15', processedAt: '2024-01-15' },
{ id: 'invt22', investorId: 'inv2', type: 'bike_earning', bikeId: 'b5', amount: 3335, status: 'completed', description: 'Monthly Earnings - Bike b5 (Bajaj Chetak)', createdAt: '2024-01-15', processedAt: '2024-01-15' },
{ id: 'invt23', investorId: 'inv2', type: 'bike_earning', bikeId: 'b6', amount: 750, status: 'completed', description: 'Monthly Earnings - Bike b6 (Hero Photon)', createdAt: '2024-03-15', processedAt: '2024-03-15' },
{ id: 'invt24', investorId: 'inv2', type: 'bike_earning', bikeId: 'b3', amount: 3750, status: 'completed', description: 'Monthly Earnings - Bike b3 (AIMA Lightning)', createdAt: '2024-02-15', processedAt: '2024-02-15' },
{ id: 'invt25', investorId: 'inv2', type: 'bike_earning', bikeId: 'b4', amount: 1415, status: 'completed', description: 'Monthly Earnings - Bike b4 (TVS iQube)', createdAt: '2024-02-15', processedAt: '2024-02-15' },
{ id: 'invt26', investorId: 'inv2', type: 'bike_earning', bikeId: 'b5', amount: 3335, status: 'completed', description: 'Monthly Earnings - Bike b5 (Bajaj Chetak)', createdAt: '2024-02-15', processedAt: '2024-02-15' },
{ id: 'invt27', investorId: 'inv2', type: 'bike_earning', bikeId: 'b3', amount: 3750, status: 'completed', description: 'Monthly Earnings - Bike b3 (AIMA Lightning)', createdAt: '2024-03-15', processedAt: '2024-03-15' },
{ id: 'invt28', investorId: 'inv2', type: 'bike_earning', bikeId: 'b4', amount: 1415, status: 'completed', description: 'Monthly Earnings - Bike b4 (TVS iQube)', createdAt: '2024-03-15', processedAt: '2024-03-15' },
{ id: 'invt29', investorId: 'inv2', type: 'bike_earning', bikeId: 'b5', amount: 3335, status: 'completed', description: 'Monthly Earnings - Bike b5 (Bajaj Chetak)', createdAt: '2024-03-15', processedAt: '2024-03-15' },
{ id: 'invt30', investorId: 'inv2', type: 'withdrawal', amount: 25000, status: 'completed', description: 'Withdrawal via Bank Transfer', paymentMethod: 'bank', referenceNumber: 'WDL/2024/010', createdAt: '2024-01-20', processedAt: '2024-01-21' },
{ id: 'invt31', investorId: 'inv2', type: 'withdrawal', amount: 25000, status: 'completed', description: 'Withdrawal via Bank Transfer', paymentMethod: 'bank', referenceNumber: 'WDL/2024/018', createdAt: '2024-02-15', processedAt: '2024-02-16' },
{ id: 'invt32', investorId: 'inv2', type: 'withdrawal', amount: 25000, status: 'completed', description: 'Withdrawal via Nagad', paymentMethod: 'mobile', referenceNumber: 'WDL/2024/025', createdAt: '2024-03-12', processedAt: '2024-03-12' },
{ id: 'invt33', investorId: 'inv2', type: 'referral_bonus', amount: 2500, status: 'completed', description: 'Referral Bonus - Investor Referral Program', createdAt: '2024-01-10', processedAt: '2024-01-10' },
{ id: 'invt34', investorId: 'inv2', type: 'referral_bonus', amount: 5000, status: 'completed', description: 'Referral Bonus - Multiple Referrals Bonus', createdAt: '2024-02-20', processedAt: '2024-02-20' },
// Investor 3 (inv3) - Sadia Islam - Silver Plan
{ id: 'invt35', investorId: 'inv3', type: 'investment', amount: 75000, status: 'completed', description: 'Investment - Okinawa Praise (Silver Plan)', paymentMethod: 'bank', referenceNumber: 'INV/2024/012', createdAt: '2024-02-10', processedAt: '2024-02-10' },
{ id: 'invt36', investorId: 'inv3', type: 'bike_earning', bikeId: 'b7', amount: 1585, status: 'completed', description: 'Monthly Earnings - Bike b7 (Okinawa Praise)', createdAt: '2024-03-15', processedAt: '2024-03-15' },
{ id: 'invt37', investorId: 'inv3', type: 'investment_return', amount: 4500, status: 'completed', description: 'Investment Return - Q1 2024', paymentMethod: 'bank', referenceNumber: 'RET/2024/Q1/001', createdAt: '2024-03-31', processedAt: '2024-03-31' },
{ id: 'invt38', investorId: 'inv3', type: 'withdrawal', amount: 5000, status: 'pending', description: 'Withdrawal Request - Bkash', paymentMethod: 'mobile', referenceNumber: 'WDL/2024/032', createdAt: '2024-03-19' },
{ id: 'invt39', investorId: 'inv3', type: 'withdrawal', amount: 15000, status: 'completed', description: 'Withdrawal via Bank Transfer', paymentMethod: 'bank', referenceNumber: 'WDL/2024/008', createdAt: '2024-03-05', processedAt: '2024-03-06' },
// Adjustment transactions
{ id: 'adj1', investorId: 'inv1', type: 'adjustment', amount: -500, status: 'completed', description: 'Bike Maintenance Deduction', createdAt: '2024-02-10', processedAt: '2024-02-10' },
{ id: 'adj2', investorId: 'inv2', type: 'adjustment', amount: -300, status: 'completed', description: 'Service Charge Deduction', createdAt: '2024-01-20', processedAt: '2024-01-20' },
{ id: 'adj3', investorId: 'inv2', type: 'penalty', amount: -1000, status: 'completed', description: 'Late Payment Penalty', createdAt: '2024-02-25', processedAt: '2024-02-25' },
];
export const investors: Investor[] = [
{
id: 'inv1',
userId: 'u7',
name: 'Md. Hasan Mahmud',
email: 'hasan.mahmud@email.com',
phone: '01712345678',
phoneAlt: '01812345678',
address: 'House 12, Road 5, Dhanmondi, Dhaka 1205',
dateOfBirth: '1985-03-15',
gender: 'male',
occupation: 'Business',
nidNumber: '1234567890',
bankName: 'Islami Bank Bangladesh Ltd',
bankAccountName: 'Hasan Mahmud',
bankAccountNumber: '2050 1500 2345',
bankBranch: 'Dhanmondi Branch',
bankRouting: '140',
mobileBanking: 'Bkash',
mobileBankingNumber: '01712345678',
additionalMobileBanking: [
{ provider: 'Nagad', number: '01712345679', verified: true }
],
emergencyContactName: 'Fatema Begum',
emergencyContactRelation: 'Wife',
emergencyContactPhone: '01712345679',
totalInvested: 150000,
totalEarnings: 14250,
activeBikes: 2,
withdrawalPending: 3000,
totalWithdrawn: 45000,
pendingEarnings: 4625,
roi: 19,
status: 'active',
notes: 'Long-term investor, reliable payment history',
createdAt: '2024-01-15',
updatedAt: '2024-03-20',
kycStatus: 'verified',
kycSubmittedAt: '2024-01-10',
kycDocuments: [
{ type: 'nid', number: '1234567890', verified: true, uploadedAt: '2024-01-10' },
{ type: 'bank_statement', verified: true, uploadedAt: '2024-01-10' }
],
riskLevel: 'low',
referralCode: 'INV2024H1',
referredBy: undefined,
totalReferrals: 2,
referralEarnings: 2500,
investments: [
{ id: 'ip1', investorId: 'inv1', planName: 'Gold EV Fleet 2024', planType: 'gold', bikeIds: ['b1'], totalInvestment: 85000, monthlyReturn: 2500, expectedRoi: 18, actualEarnings: 10000, startDate: '2024-01-15', endDate: '2025-01-14', status: 'active', paymentMethod: 'bank', transactionId: 'invt1', createdAt: '2024-01-15' },
{ id: 'ip2', investorId: 'inv1', planName: 'Gold City Commuter', planType: 'gold', bikeIds: ['b2'], totalInvestment: 65000, monthlyReturn: 2125, expectedRoi: 18, actualEarnings: 4250, startDate: '2024-01-20', endDate: '2025-01-19', status: 'active', paymentMethod: 'mobile', transactionId: 'invt2', createdAt: '2024-01-20' }
]
},
{
id: 'inv2',
userId: 'u8',
name: 'Ahmed Khan',
email: 'ahmed.khan@email.com',
phone: '01722345678',
phoneAlt: '01922345678',
address: 'Flat 3B, House 45, Gulshan Avenue, Dhaka 1212',
dateOfBirth: '1978-07-22',
gender: 'male',
occupation: 'Real Estate',
nidNumber: '2345678901',
bankName: 'Standard Chartered Bank',
bankAccountName: 'Ahmed Khan',
bankAccountNumber: '2150 5678 9012',
bankBranch: 'Gulshan Branch',
bankRouting: '270',
mobileBanking: 'Nagad',
mobileBankingNumber: '01722345678',
additionalMobileBanking: [
{ provider: 'Bkash', number: '01722345679', verified: true },
{ provider: 'Rocket', number: '01722345680', verified: false }
],
emergencyContactName: 'Rahima Khan',
emergencyContactRelation: 'Wife',
emergencyContactPhone: '01722345679',
totalInvested: 290000,
totalEarnings: 36250,
activeBikes: 4,
withdrawalPending: 0,
totalWithdrawn: 75000,
pendingEarnings: 10840,
roi: 17,
status: 'active',
notes: 'Premium investor with multiple bike investments',
createdAt: '2023-11-01',
updatedAt: '2024-03-18',
kycStatus: 'verified',
kycSubmittedAt: '2023-10-25',
kycDocuments: [
{ type: 'nid', number: '2345678901', verified: true, uploadedAt: '2023-10-25' },
{ type: 'bank_statement', verified: true, uploadedAt: '2023-10-25' },
{ type: 'tin_certificate', number: '234567890', verified: true, uploadedAt: '2023-10-25' }
],
riskLevel: 'low',
referralCode: 'INV2024A2',
totalReferrals: 5,
referralEarnings: 7500,
investments: [
{ id: 'ip3', investorId: 'inv2', planName: 'Platinum Premium Fleet', planType: 'platinum', bikeIds: ['b3'], totalInvestment: 95000, monthlyReturn: 3750, expectedRoi: 20, actualEarnings: 15000, startDate: '2023-11-05', endDate: '2024-11-04', status: 'active', paymentMethod: 'bank', transactionId: 'invt13', createdAt: '2023-11-05' },
{ id: 'ip4', investorId: 'inv2', planName: 'Platinum Urban Ride', planType: 'platinum', bikeIds: ['b4'], totalInvestment: 72000, monthlyReturn: 1415, expectedRoi: 18, actualEarnings: 5660, startDate: '2023-12-01', endDate: '2024-11-30', status: 'active', paymentMethod: 'bank', transactionId: 'invt14', createdAt: '2023-12-01' },
{ id: 'ip5', investorId: 'inv2', planName: 'Platinum City Electric', planType: 'platinum', bikeIds: ['b5'], totalInvestment: 68000, monthlyReturn: 3335, expectedRoi: 20, actualEarnings: 13340, startDate: '2023-11-10', endDate: '2024-11-09', status: 'active', paymentMethod: 'mobile', transactionId: 'invt15', createdAt: '2023-11-10' },
{ id: 'ip6', investorId: 'inv2', planName: 'Platinum New Entry', planType: 'platinum', bikeIds: ['b6'], totalInvestment: 55000, monthlyReturn: 750, expectedRoi: 16, actualEarnings: 750, startDate: '2024-02-01', endDate: '2025-01-31', status: 'active', paymentMethod: 'bank', transactionId: 'invt16', createdAt: '2024-02-01' }
]
},
{
id: 'inv3',
userId: 'u9',
name: 'Sadia Islam',
email: 'sadia.islam@email.com',
phone: '01732345678',
phoneAlt: '01632345678',
address: 'Road 8, House 22, Baridhara, Dhaka 1212',
dateOfBirth: '1990-12-05',
gender: 'female',
occupation: 'Engineer',
nidNumber: '3456789012',
bankName: 'BRAC Bank',
bankAccountName: 'Sadia Islam',
bankAccountNumber: '1510 8901 2345',
bankBranch: 'Baridhara Branch',
bankRouting: '180',
mobileBanking: 'Rocket',
mobileBankingNumber: '01732345678',
additionalMobileBanking: [],
emergencyContactName: 'Abul Hasan',
emergencyContactRelation: 'Brother',
emergencyContactPhone: '01732345679',
totalInvested: 75000,
totalEarnings: 6085,
activeBikes: 1,
withdrawalPending: 5000,
totalWithdrawn: 15000,
pendingEarnings: 1585,
roi: 12,
status: 'pending',
notes: 'New investor, first investment',
createdAt: '2024-02-01',
updatedAt: '2024-03-15',
kycStatus: 'pending',
kycSubmittedAt: '2024-02-01',
kycDocuments: [
{ type: 'nid', number: '3456789012', verified: false, uploadedAt: '2024-02-01' }
],
riskLevel: 'medium',
referralCode: 'INV2024S3',
totalReferrals: 0,
referralEarnings: 0,
investments: [
{ id: 'ip7', investorId: 'inv3', planName: 'Silver Starter Pack', planType: 'silver', bikeIds: ['b7'], totalInvestment: 75000, monthlyReturn: 1585, expectedRoi: 12, actualEarnings: 6085, startDate: '2024-02-10', status: 'active', paymentMethod: 'bank', transactionId: 'invt35', createdAt: '2024-02-10' }
]
},
];
export const kycRequests: KYCRequest[] = [
{ id: 'kyc1', userId: 'u10', userName: 'New Biker Rahim', phone: '01712345670', submittedAt: '2024-03-20', status: 'pending' },
{ id: 'kyc2', userId: 'u11', userName: 'New Biker Karim', phone: '01712345671', submittedAt: '2024-03-19', status: 'pending' },
{ id: 'kyc3', userId: 'u12', userName: 'New Biker Jamal', phone: '01712345672', submittedAt: '2024-03-18', status: 'approved' },
];
export const deliveries: Delivery[] = [
{ id: 'd1', shopId: 'u8', riderId: 'u1', status: 'in_progress', pickupLocation: 'Gulshan 1', dropoffLocation: 'Banani 11', createdAt: '2024-03-21' },
{ id: 'd2', shopId: 'u8', riderId: 'u2', status: 'pending', pickupLocation: 'Gulshan 2', dropoffLocation: 'Uttara', createdAt: '2024-03-21' },
{ id: 'd3', shopId: 'u8', riderId: 'u1', status: 'completed', pickupLocation: 'Dhanmondi', dropoffLocation: 'Mirpur 1', createdAt: '2024-03-20' },
];
export const stats = {
biker: {
activeRental: 1,
walletBalance: 1250,
totalRides: 45,
daysRemaining: 14,
},
admin: {
totalBikers: 156,
activeRentals: 89,
dailyRevenue: 45600,
monthlyRevenue: 1250000,
fleetUtilization: 78,
},
investor: {
totalInvested: 150000,
totalEarnings: 28500,
activeBikes: 2,
},
shop: {
todayDeliveries: 23,
activeRiders: 8,
completedToday: 19,
},
};
export const availableBikes: Bike[] = [
{ id: 'b2', model: 'Yadea DT3', brand: 'Yadea', image: 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400', plateNumber: 'Dhaka Metro Cha-5678', status: 'available', batteryLevel: 95, location: 'Banani' },
{ id: 'b5', model: 'Bajaj Chetak', brand: 'Bajaj', image: 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400', plateNumber: 'Dhaka Metro Cha-7890', status: 'available', batteryLevel: 100, location: 'Dhanmondi' },
{ id: 'b6', model: 'Hero Photon', brand: 'Hero', image: 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400', plateNumber: 'Dhaka Metro Cha-1111', status: 'available', batteryLevel: 88, location: 'Mirpur' },
{ id: 'b7', model: 'Okinawa Praise', brand: 'Okinawa', image: 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400', plateNumber: 'Dhaka Metro Cha-2222', status: 'available', batteryLevel: 92, location: 'Gulshan 2' },
];