Skip to content

Commit

Permalink
feat(app): #15 created model and mappers
Browse files Browse the repository at this point in the history
  • Loading branch information
konnofuente committed Aug 7, 2024
1 parent bd418cc commit 546a38d
Show file tree
Hide file tree
Showing 22 changed files with 678 additions and 120 deletions.
1 change: 1 addition & 0 deletions lib/app/config/routes/app_routes.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,6 @@ class AppRoutes {
GetPage(name: AppRouteNames.createAssociationLoader, page: () => CreateAssociationLoading()),
GetPage(name: AppRouteNames.associationPage, page: () => AssociationPage()),
GetPage(name: AppRouteNames.createTontinePage, page: () => CreateTontinePage()),
GetPage(name: AppRouteNames.createTontinePage, page: () => CreateTontinePage()),
];
}
2 changes: 1 addition & 1 deletion lib/app/manzon.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class _ManzonAppState extends State<ManzonApp> {
translations: widget.translations,
locale: Get.deviceLocale,
fallbackLocale: Locale('en', 'US'),
initialRoute: AppRouteNames.createTontinePage,
initialRoute: AppRouteNames.home,
getPages: AppRoutes.routes
),
),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:equatable/equatable.dart';

class ContributionEntity extends Equatable {
class AssociationContributionEntity extends Equatable {
final String id;
final String name;
final String associationId;
Expand All @@ -12,7 +12,7 @@ class ContributionEntity extends Equatable {
final int currentCycle;
final List<String> transactions;

ContributionEntity({
AssociationContributionEntity({
required this.id,
required this.name,
required this.associationId,
Expand Down
40 changes: 40 additions & 0 deletions lib/domain/entities/cycle_entity.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import 'package:equatable/equatable.dart';
import 'package:manzon/domain/entities/export_domain_entities.dart';


class CycleEntity extends Equatable {
final String id;
final int number;
final int sequenceNumber;
final String tontineId;
final MemberEntity receiver;
final DateTime startDate;
final DateTime endDate;
final bool isCompleted;
final List<TontineContributionEntity> contributions;

CycleEntity({
required this.id,
required this.number,
required this.sequenceNumber,
required this.tontineId,
required this.receiver,
required this.startDate,
required this.endDate,
required this.isCompleted,
required this.contributions,
});

@override
List<Object?> get props => [
id,
number,
sequenceNumber,
tontineId,
receiver,
startDate,
endDate,
isCompleted,
contributions
];
}
4 changes: 3 additions & 1 deletion lib/domain/entities/export_domain_entities.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,6 @@ export './member_entity.dart';
export './association_member_ship.dart';
export './association_entity.dart';
export './tontine_entity.dart';
export './contribution_entity.dart';
export 'association_contribution_entity.dart';
export './cycle_entity.dart';
export './tontine_contribution_entity.dart';
21 changes: 21 additions & 0 deletions lib/domain/entities/tontine_contribution_entity.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import 'member_entity.dart';
import 'package:equatable/equatable.dart';

class TontineContributionEntity extends Equatable {
final String id;
final MemberEntity member;
final double amount;
final DateTime date;
final String status;

TontineContributionEntity({
required this.id,
required this.member,
required this.amount,
required this.date,
required this.status,
});

@override
List<Object?> get props => [id, member, amount, date, status];
}
52 changes: 33 additions & 19 deletions lib/domain/entities/tontine_entity.dart
Original file line number Diff line number Diff line change
@@ -1,41 +1,55 @@
import 'cycle_entity.dart';
import 'member_entity.dart';
import 'package:equatable/equatable.dart';

class TontineEntity extends Equatable {
final String? uniqueId;
final String id;
final String name;
final String associationId;
final List<String> members;
final double balance;
final String contributionFrequency;
final double contributionAmount;
final String? contributionFrequency;
final String? receiverFrequency;
final List<MemberEntity>? members;
final List<String>? membersId;
final List<MemberEntity>? orderList;
final List<CycleEntity>? cycles;
final String associationId;
final double? balance;
final int cycleDuration;
final List<String>? transactions;
final int currentCycle;
final List<String> transactions;

TontineEntity({
this.uniqueId,
TontineEntity( {
required this.id,
this.membersId,
required this.name,
required this.associationId,
required this.members,
required this.balance,
required this.contributionFrequency,
required this.contributionAmount,
this.contributionFrequency,
this.receiverFrequency,
required this.members,
this.orderList,
this.cycles,
required this.associationId,
this.balance,
required this.cycleDuration,
this.transactions,
required this.currentCycle,
required this.transactions,
});

@override
List<Object?> get props => [
uniqueId,
id,
name,
associationId,
contributionAmount,
contributionFrequency,
receiverFrequency,
members,
membersId,
orderList,
cycles,
associationId,
balance,
contributionFrequency,
contributionAmount,
cycleDuration,
currentCycle,
transactions,
currentCycle,
];
}
}
13 changes: 6 additions & 7 deletions lib/infrastructure/mappers/contribution_mapper.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
import 'package:manzon/domain/entities/export_domain_entities.dart';
import 'package:manzon/infrastructure/models/export_infrastruture_models.dart';




class ContributionMapper {
static ContributionModel toModel(ContributionEntity contributionEntity) {
return ContributionModel(
static AssociationContributionModel toModel(
AssociationContributionEntity contributionEntity) {
return AssociationContributionModel(
id: contributionEntity.id,
name: contributionEntity.name,
associationId: contributionEntity.associationId,
Expand All @@ -20,8 +18,9 @@ class ContributionMapper {
);
}

static ContributionEntity toEntity(ContributionModel contributionModel) {
return ContributionEntity(
static AssociationContributionEntity toEntity(
AssociationContributionModel contributionModel) {
return AssociationContributionEntity(
id: contributionModel.id,
name: contributionModel.name,
associationId: contributionModel.associationId,
Expand Down
34 changes: 34 additions & 0 deletions lib/infrastructure/mappers/cycle_mapper.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import 'package:manzon/domain/entities/cycle_entity.dart';
import 'package:manzon/infrastructure/models/cycle_model.dart';
import 'package:manzon/infrastructure/mappers/member_mapper.dart';
import 'package:manzon/infrastructure/mappers/tontine_contribution_mapper.dart';

class CycleMapper {
static CycleModel toModel(CycleEntity entity) {
return CycleModel(
id: entity.id,
number: entity.number,
sequenceNumber: entity.sequenceNumber,
tontineId: entity.tontineId,
receiver: MemberMapper.toModel(entity.receiver),
startDate: entity.startDate,
endDate: entity.endDate,
isCompleted: entity.isCompleted,
contributions: entity.contributions.map((e) => TontineContributionMapper.toModel(e)).toList(),
);
}

static CycleEntity toEntity(CycleModel model) {
return CycleEntity(
id: model.id,
number: model.number,
sequenceNumber: model.sequenceNumber,
tontineId: model.tontineId,
receiver: MemberMapper.toModel(model.receiver),
startDate: model.startDate,
endDate: model.endDate,
isCompleted: model.isCompleted,
contributions: model.contributions.map((e) => TontineContributionMapper.toModel(e)).toList(),
);
}
}
25 changes: 25 additions & 0 deletions lib/infrastructure/mappers/tontine_contribution_mapper.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import 'package:manzon/infrastructure/mappers/member_mapper.dart';
import 'package:manzon/domain/entities/tontine_contribution_entity.dart';
import 'package:manzon/infrastructure/models/tontine_contribution_model.dart';

class TontineContributionMapper {
static TontineContributionModel toModel(TontineContributionEntity entity) {
return TontineContributionModel(
id: entity.id,
member: MemberMapper.toModel(entity.member),
amount: entity.amount,
date: entity.date,
status: entity.status,
);
}

static TontineContributionEntity toEntity(TontineContributionModel model) {
return TontineContributionEntity(
id: model.id,
member: MemberMapper.toModel(model.member),
amount: model.amount,
date: model.date,
status: model.status,
);
}
}
62 changes: 35 additions & 27 deletions lib/infrastructure/mappers/tontine_mapper.dart
Original file line number Diff line number Diff line change
@@ -1,36 +1,44 @@
import '../../domain/entities/export_domain_entities.dart';
import 'package:manzon/infrastructure/models/export_infrastruture_models.dart';


import 'package:manzon/domain/entities/tontine_entity.dart';
import 'package:manzon/infrastructure/mappers/cycle_mapper.dart';
import 'package:manzon/infrastructure/models/tontine_model.dart';
import 'package:manzon/infrastructure/mappers/member_mapper.dart';

class TontineMapper {
static TontineModel toModel(TontineEntity tontineEntity) {
static TontineModel toModel(TontineEntity entity) {
return TontineModel(
uniqueId: tontineEntity.uniqueId,
name: tontineEntity.name,
associationId: tontineEntity.associationId,
members: tontineEntity.members,
balance: tontineEntity.balance,
contributionFrequency: tontineEntity.contributionFrequency,
contributionAmount: tontineEntity.contributionAmount,
cycleDuration: tontineEntity.cycleDuration,
currentCycle: tontineEntity.currentCycle,
transactions: tontineEntity.transactions,
id: entity.id,
name: entity.name,
contributionAmount: entity.contributionAmount,
contributionFrequency: entity.contributionFrequency,
receiverFrequency: entity.receiverFrequency,
members: entity.members?.map((e) => MemberMapper.toModel(e)).toList(),
membersId: entity.membersId,
orderList: entity.orderList?.map((e) => MemberMapper.toModel(e)).toList(),
cycles: entity.cycles?.map((e) => CycleMapper.toModel(e)).toList(),
associationId: entity.associationId,
balance: entity.balance,
cycleDuration: entity.cycleDuration,
transactions: entity.transactions,
currentCycle: entity.currentCycle,
);
}

static TontineEntity toEntity(TontineModel tontineModel) {
static TontineEntity toEntity(TontineModel model) {
return TontineEntity(
uniqueId: tontineModel.uniqueId,
name: tontineModel.name,
associationId: tontineModel.associationId,
members: tontineModel.members,
balance: tontineModel.balance,
contributionFrequency: tontineModel.contributionFrequency,
contributionAmount: tontineModel.contributionAmount,
cycleDuration: tontineModel.cycleDuration,
currentCycle: tontineModel.currentCycle,
transactions: tontineModel.transactions,
id: model.id,
name: model.name,
contributionAmount: model.contributionAmount,
contributionFrequency: model.contributionFrequency,
receiverFrequency: model.receiverFrequency,
members: model.members?.map((e) => MemberMapper.toModel(e)).toList(),
membersId: model.membersId,
orderList: model.orderList?.map((e) => MemberMapper.toModel(e)).toList(),
cycles: model.cycles?.map((e) => CycleMapper.toModel(e)).toList(),
associationId: model.associationId,
balance: model.balance,
cycleDuration: model.cycleDuration,
transactions: model.transactions,
currentCycle: model.currentCycle,
);
}
}
}
9 changes: 4 additions & 5 deletions lib/infrastructure/models/contribution_model.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import 'package:manzon/domain/entities/export_domain_entities.dart';


class ContributionModel extends ContributionEntity {
ContributionModel({
class AssociationContributionModel extends AssociationContributionEntity {
AssociationContributionModel({
required String id,
required String name,
required String associationId,
Expand All @@ -26,8 +25,8 @@ class ContributionModel extends ContributionEntity {
transactions: transactions,
);

factory ContributionModel.fromJson(Map<String, dynamic> json) {
return ContributionModel(
factory AssociationContributionModel.fromJson(Map<String, dynamic> json) {
return AssociationContributionModel(
id: json['id'],
name: json['name'],
associationId: json['associationId'],
Expand Down
Loading

0 comments on commit 546a38d

Please sign in to comment.