Files
2026-10-01 16:03:32 +05:30

253 lines
6.5 KiB
Dart

class Dealer {
Dealer({
required this.id,
required this.name,
required this.code,
this.district,
this.address,
this.phone,
});
final String id;
final String name;
final String code;
final String? district;
final String? address;
final String? phone;
factory Dealer.fromJson(Map<String, dynamic> json) {
return Dealer(
id: json['id'] as String,
name: json['name'] as String,
code: json['code'] as String,
district: json['district'] as String?,
address: json['address'] as String?,
phone: json['phone'] as String?,
);
}
}
class AppUser {
AppUser({
required this.id,
required this.name,
required this.phone,
required this.role,
this.dealerId,
this.assignedDealerIds = const [],
this.dealers = const [],
});
final String id;
final String name;
final String phone;
final String role;
final String? dealerId;
final List<String> assignedDealerIds;
final List<Dealer> dealers;
factory AppUser.fromJson(Map<String, dynamic> json) {
return AppUser(
id: json['id'] as String,
name: json['name'] as String,
phone: json['phone'] as String,
role: json['role'] as String,
dealerId: json['dealerId'] as String?,
assignedDealerIds: ((json['assignedDealerIds'] as List?) ?? const [])
.map((id) => id as String)
.toList(),
dealers: ((json['dealers'] as List?) ?? const [])
.map((item) => Dealer.fromJson(item as Map<String, dynamic>))
.toList(),
);
}
}
class LoginRequestItem {
LoginRequestItem({
required this.id,
required this.name,
required this.phone,
this.dealerName,
required this.createdAt,
});
final String id;
final String name;
final String phone;
final String? dealerName;
final DateTime createdAt;
factory LoginRequestItem.fromJson(Map<String, dynamic> json) {
final user = json['user'] as Map<String, dynamic>;
return LoginRequestItem(
id: json['id'] as String,
name: user['name'] as String,
phone: user['phone'] as String,
dealerName: json['dealerName'] as String?,
createdAt: DateTime.parse(json['createdAt'] as String),
);
}
}
class DealerLoginStatus {
DealerLoginStatus({required this.status, this.token, this.user});
final String status;
final String? token;
final AppUser? user;
factory DealerLoginStatus.fromJson(Map<String, dynamic> json) {
return DealerLoginStatus(
status: json['status'] as String,
token: json['token'] as String?,
user: json['user'] is Map<String, dynamic>
? AppUser.fromJson(json['user'] as Map<String, dynamic>)
: null,
);
}
}
class StockItem {
StockItem({
required this.id,
required this.chassisNumber,
required this.engineNumber,
required this.model,
required this.color,
required this.currentDealerId,
this.dealerName,
required this.dateReceived,
required this.currentStage,
required this.stageLogDates,
this.paymentType,
this.leaseProviderType,
this.financeCompanyName,
this.plateNumber,
required this.ageInDays,
required this.badge,
});
final String id;
final String chassisNumber;
final String engineNumber;
final String model;
final String color;
final String currentDealerId;
final String? dealerName;
final DateTime dateReceived;
final String currentStage;
final Map<String, DateTime> stageLogDates;
final String? paymentType;
final String? leaseProviderType;
final String? financeCompanyName;
final String? plateNumber;
final int ageInDays;
final String badge;
factory StockItem.fromJson(Map<String, dynamic> json) {
final rawLogs = json['stageLogDates'];
final logs = <String, DateTime>{};
if (rawLogs is Map) {
rawLogs.forEach((key, value) {
if (value != null) {
logs[key.toString()] = DateTime.parse(value.toString());
}
});
}
return StockItem(
id: json['id'] as String,
chassisNumber: json['chassisNumber'] as String,
engineNumber: json['engineNumber'] as String,
model: json['model'] as String,
color: json['color'] as String,
currentDealerId: json['currentDealerId'] as String,
dealerName: json['dealerName'] as String?,
dateReceived: DateTime.parse(json['dateReceived'] as String),
currentStage: json['currentStage'] as String,
stageLogDates: logs,
paymentType: json['paymentType'] as String?,
leaseProviderType: json['leaseProviderType'] as String?,
financeCompanyName: json['financeCompanyName'] as String?,
plateNumber: json['plateNumber'] as String?,
ageInDays: (json['ageInDays'] as num).toInt(),
badge: json['badge'] as String,
);
}
}
class EventPlan {
EventPlan({
required this.id,
required this.dealerId,
this.dealerName,
required this.planType,
this.month,
this.year,
required this.title,
required this.description,
required this.expense,
required this.imageUrls,
required this.createdAt,
});
final String id;
final String dealerId;
final String? dealerName;
final String planType;
final int? month;
final int? year;
final String title;
final String description;
final double expense;
final List<String> imageUrls;
final DateTime createdAt;
factory EventPlan.fromJson(Map<String, dynamic> json) {
return EventPlan(
id: json['id'] as String,
dealerId: json['dealerId'] as String,
dealerName: json['dealerName'] as String?,
planType: json['planType'] as String,
month: json['month'] as int?,
year: json['year'] as int?,
title: json['title'] as String,
description: json['description'] as String,
expense: (json['expense'] as num).toDouble(),
imageUrls: ((json['imageUrls'] as List?) ?? const [])
.map((url) => url as String)
.toList(),
createdAt: DateTime.parse(json['createdAt'] as String),
);
}
}
class ServicePoint {
ServicePoint({
required this.id,
required this.name,
required this.district,
this.address,
this.phone,
this.notes,
});
final String id;
final String name;
final String district;
final String? address;
final String? phone;
final String? notes;
factory ServicePoint.fromJson(Map<String, dynamic> json) {
return ServicePoint(
id: json['id'] as String,
name: json['name'] as String,
district: json['district'] as String,
address: json['address'] as String?,
phone: json['phone'] as String?,
notes: json['notes'] as String?,
);
}
}