79 lines
2.2 KiB
Dart
79 lines
2.2 KiB
Dart
import 'package:pshared/data/dto/invitation/invitation.dart';
|
|
import 'package:pshared/models/invitation/invitation.dart';
|
|
import 'package:pshared/models/invitation/status.dart';
|
|
import 'package:pshared/models/organization/bound.dart';
|
|
import 'package:pshared/models/permissions/bound.dart';
|
|
import 'package:pshared/models/storable.dart';
|
|
|
|
|
|
extension InvitationModelMapper on Invitation {
|
|
InvitationDTO toDTO() => InvitationDTO(
|
|
id: storable.id,
|
|
createdAt: storable.createdAt,
|
|
updatedAt: storable.updatedAt,
|
|
permissionRef: permissionBound.permissionRef,
|
|
organizationRef: permissionBound.organizationRef,
|
|
roleRef: roleRef,
|
|
inviterRef: inviterRef,
|
|
status: _statusToValue(status),
|
|
expiresAt: expiresAt,
|
|
content: InvitationContentDTO(
|
|
email: content.email,
|
|
name: content.name,
|
|
comment: content.comment,
|
|
),
|
|
isArchived: isArchived,
|
|
);
|
|
}
|
|
|
|
extension InvitationDTOMapper on InvitationDTO {
|
|
Invitation toDomain() => Invitation(
|
|
storable: newStorable(id: id, createdAt: createdAt, updatedAt: updatedAt),
|
|
permissionBound: newPermissionBound(
|
|
organizationBound: newOrganizationBound(organizationRef: organizationRef),
|
|
permissionRef: permissionRef,
|
|
),
|
|
roleRef: roleRef,
|
|
inviterRef: inviterRef,
|
|
status: _statusFromValue(status),
|
|
expiresAt: expiresAt.toUtc(),
|
|
content: InvitationContent(
|
|
email: content.email,
|
|
name: content.name,
|
|
comment: content.comment,
|
|
),
|
|
isArchived: isArchived,
|
|
);
|
|
}
|
|
|
|
InvitationStatus _statusFromValue(String value) {
|
|
switch (value) {
|
|
case 'sent':
|
|
return InvitationStatus.sent;
|
|
case 'accepted':
|
|
return InvitationStatus.accepted;
|
|
case 'declined':
|
|
return InvitationStatus.declined;
|
|
case 'revoked':
|
|
return InvitationStatus.revoked;
|
|
case 'created':
|
|
default:
|
|
return InvitationStatus.created;
|
|
}
|
|
}
|
|
|
|
String _statusToValue(InvitationStatus status) {
|
|
switch (status) {
|
|
case InvitationStatus.sent:
|
|
return 'sent';
|
|
case InvitationStatus.accepted:
|
|
return 'accepted';
|
|
case InvitationStatus.declined:
|
|
return 'declined';
|
|
case InvitationStatus.revoked:
|
|
return 'revoked';
|
|
case InvitationStatus.created:
|
|
return 'created';
|
|
}
|
|
}
|