import 'package:comwell_key_app/domain/models/address.dart';
import 'package:comwell_key_app/domain/models/user.dart';
import 'package:comwell_key_app/services/models/simple_user_dto.dart';
import 'package:comwell_key_app/services/models/user_dto.dart';
extension UserMapper on UserDto {
User toUser() {
return User(
userId: userId,
hmsId: hmsId ?? "",
firstName: firstName,
lastName: lastName,
email: email,
emailVerified: emailVerified,
phoneNumber: phoneNumber,
address: Address(
street: addressStreet,
city: addressCity,
country: addressCountry,
zipCode: addressZip,
),
birthDate: birthDate ?? DateTime.now(),
shopperReference: userId,
points: points,
gender: gender ?? "",
isClubMember: isClubMember,
createDate: createDate,
companyId: companyId ?? "",
companyName: companyName ?? "",
symplifyId: symplifyId ?? "",
signUpDate: signUpDate,
signUpCampaign: signUpCampaign ?? "",
signUpSource: signUpSource ?? "",
locale: locale ?? "",
wasRecentlyCreated: wasRecentlyCreated,
nationality: nationality ?? "",
);
}
}
extension UserDtoMapper on User {
UserDto toUserDto() {
return UserDto(
id: 0,
userId: userId,
hmsId: hmsId,
firstName: firstName,
lastName: lastName,
email: email,
emailVerified: emailVerified,
isClubMember: isClubMember,
birthDate: birthDate,
createDate: createDate,
companyId: companyId,
companyName: companyName,
symplifyId: symplifyId,
phoneNumber: phoneNumber,
gender: gender,
addressStreet: address.street,
addressZip: address.zipCode,
addressCity: address.city,
addressCountry: address.country,
points: points,
signUpDate: signUpDate,
signUpCampaign: signUpCampaign,
signUpSource: signUpSource,
locale: null,
wasRecentlyCreated: wasRecentlyCreated,
permissions: null,
// Permissions are not stored in User model
nationality: nationality,
);
}
}
extension SimpleUserDtoMapper on User {
SimpleUserDto toSimpleUserDto() {
return SimpleUserDto(
firstName: firstName,
lastName: lastName,
birthDate: birthDate?.toIso8601String(),
phoneNumber: phoneNumber,
gender: gender,
addressStreet: address.street,
addressZip: address.zipCode,
addressCity: address.city,
addressCountry: address.country,
locale: locale.isNotEmpty ? locale : null,
permissions: {}, // Permissions are not stored in User model
);
}
}