253 lines
6.5 KiB
Dart
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?,
|
|
);
|
|
}
|
|
}
|