@zeeshan60/event-processor 1.0.48 → 1.0.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ActivityEventHandler.d.ts.map +1 -1
- package/dist/ActivityEventHandler.js +3 -7
- package/dist/ActivityEventHandler.js.map +1 -1
- package/dist/EventProcessorSDK.d.ts +8 -0
- package/dist/EventProcessorSDK.d.ts.map +1 -1
- package/dist/EventProcessorSDK.js +24 -2
- package/dist/EventProcessorSDK.js.map +1 -1
- package/dist/GroupEventHandler.d.ts +6 -11
- package/dist/GroupEventHandler.d.ts.map +1 -1
- package/dist/GroupEventHandler.js +42 -359
- package/dist/GroupEventHandler.js.map +1 -1
- package/dist/GroupEvents.d.ts +10 -28
- package/dist/GroupEvents.d.ts.map +1 -1
- package/dist/GroupEvents.js +11 -55
- package/dist/GroupEvents.js.map +1 -1
- package/dist/GroupTransactionEventHandler.d.ts +6 -12
- package/dist/GroupTransactionEventHandler.d.ts.map +1 -1
- package/dist/GroupTransactionEventHandler.js +46 -39
- package/dist/GroupTransactionEventHandler.js.map +1 -1
- package/dist/GroupTransactionEvents.d.ts +29 -157
- package/dist/GroupTransactionEvents.d.ts.map +1 -1
- package/dist/GroupTransactionEvents.js +25 -307
- package/dist/GroupTransactionEvents.js.map +1 -1
- package/dist/TransactionEvents.d.ts.map +1 -1
- package/dist/TransactionEvents.js.map +1 -1
- package/dist/UserEvents.d.ts.map +1 -1
- package/dist/UserEvents.js +1 -0
- package/dist/UserEvents.js.map +1 -1
- package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts +2 -0
- package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMFriendModelStore.js +20 -0
- package/dist/__tests__/test-helpers/IMFriendModelStore.js.map +1 -1
- package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts +1 -0
- package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMGroupModelStore.js +9 -0
- package/dist/__tests__/test-helpers/IMGroupModelStore.js.map +1 -1
- package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts +1 -0
- package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.js +11 -0
- package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.js.map +1 -1
- package/dist/__tests__/test-helpers/IMUserModelStore.d.ts +1 -0
- package/dist/__tests__/test-helpers/IMUserModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMUserModelStore.js +10 -0
- package/dist/__tests__/test-helpers/IMUserModelStore.js.map +1 -1
- package/dist/client/controllers/ExpenseAccountController.d.ts +2 -1
- package/dist/client/controllers/ExpenseAccountController.d.ts.map +1 -1
- package/dist/client/controllers/ExpenseAccountController.js +43 -51
- package/dist/client/controllers/ExpenseAccountController.js.map +1 -1
- package/dist/client/controllers/ExpenseController.d.ts.map +1 -1
- package/dist/client/controllers/ExpenseController.js +11 -0
- package/dist/client/controllers/ExpenseController.js.map +1 -1
- package/dist/client/controllers/FriendController.d.ts.map +1 -1
- package/dist/client/controllers/FriendController.js +14 -0
- package/dist/client/controllers/FriendController.js.map +1 -1
- package/dist/client/controllers/GroupController.d.ts +21 -0
- package/dist/client/controllers/GroupController.d.ts.map +1 -0
- package/dist/client/controllers/GroupController.js +262 -0
- package/dist/client/controllers/GroupController.js.map +1 -0
- package/dist/client/controllers/GroupTransactionController.d.ts +23 -0
- package/dist/client/controllers/GroupTransactionController.d.ts.map +1 -0
- package/dist/client/controllers/GroupTransactionController.js +172 -0
- package/dist/client/controllers/GroupTransactionController.js.map +1 -0
- package/dist/client/controllers/TransactionController.d.ts.map +1 -1
- package/dist/client/controllers/TransactionController.js +14 -2
- package/dist/client/controllers/TransactionController.js.map +1 -1
- package/dist/client/controllers/UserController.d.ts.map +1 -1
- package/dist/client/controllers/UserController.js +15 -1
- package/dist/client/controllers/UserController.js.map +1 -1
- package/dist/common/EventTypes.d.ts +2 -9
- package/dist/common/EventTypes.d.ts.map +1 -1
- package/dist/common/EventTypes.js +2 -9
- package/dist/common/EventTypes.js.map +1 -1
- package/dist/contracts/groups/index.d.ts +13 -1
- package/dist/contracts/groups/index.d.ts.map +1 -1
- package/dist/converters/GroupConverters.d.ts +4 -10
- package/dist/converters/GroupConverters.d.ts.map +1 -1
- package/dist/converters/GroupConverters.js +5 -28
- package/dist/converters/GroupConverters.js.map +1 -1
- package/dist/converters/GroupTransactionConverters.d.ts +4 -40
- package/dist/converters/GroupTransactionConverters.d.ts.map +1 -1
- package/dist/converters/GroupTransactionConverters.js +33 -154
- package/dist/converters/GroupTransactionConverters.js.map +1 -1
- package/dist/converters/eventConverter.d.ts.map +1 -1
- package/dist/converters/eventConverter.js +4 -18
- package/dist/converters/eventConverter.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/store/FriendModelStore.d.ts +2 -0
- package/dist/store/FriendModelStore.d.ts.map +1 -1
- package/dist/store/GroupModelStore.d.ts +1 -0
- package/dist/store/GroupModelStore.d.ts.map +1 -1
- package/dist/store/GroupTransactionModelStore.d.ts +1 -0
- package/dist/store/GroupTransactionModelStore.d.ts.map +1 -1
- package/dist/store/UserModelStore.d.ts +1 -0
- package/dist/store/UserModelStore.d.ts.map +1 -1
- package/dist/utils/ActivityUtil.d.ts +3 -0
- package/dist/utils/ActivityUtil.d.ts.map +1 -0
- package/dist/utils/ActivityUtil.js +15 -0
- package/dist/utils/ActivityUtil.js.map +1 -0
- package/dist/utils/BalanceUtil.d.ts +1 -0
- package/dist/utils/BalanceUtil.d.ts.map +1 -1
- package/dist/utils/BalanceUtil.js +40 -0
- package/dist/utils/BalanceUtil.js.map +1 -1
- package/dist/utils/GroupUtil.d.ts +29 -0
- package/dist/utils/GroupUtil.d.ts.map +1 -0
- package/dist/utils/GroupUtil.js +762 -0
- package/dist/utils/GroupUtil.js.map +1 -0
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FriendController.js","sourceRoot":"","sources":["../../../src/client/controllers/FriendController.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FriendController.js","sourceRoot":"","sources":["../../../src/client/controllers/FriendController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { GroupAddMembersRequest, GroupCreateRequest, GroupRemoveMembersRequest, GroupResponse, GroupSummariesResponse, GroupUpdateRequest } from "../../contracts/groups";
|
|
2
|
+
export declare class GroupController {
|
|
3
|
+
private get modelStore();
|
|
4
|
+
private get groupEventHandler();
|
|
5
|
+
private get userModelStore();
|
|
6
|
+
private get friendModelStore();
|
|
7
|
+
private get groupTransactionModelStore();
|
|
8
|
+
private get currencyStore();
|
|
9
|
+
private get balanceUtil();
|
|
10
|
+
createGroup(userId: string, request: GroupCreateRequest): Promise<string>;
|
|
11
|
+
updateGroup(userId: string, groupId: string, request: GroupUpdateRequest): Promise<void>;
|
|
12
|
+
addMembers(userId: string, groupId: string, request: GroupAddMembersRequest): Promise<void>;
|
|
13
|
+
removeMembers(userId: string, groupId: string, request: GroupRemoveMembersRequest): Promise<void>;
|
|
14
|
+
deleteGroup(userId: string, groupId: string): Promise<void>;
|
|
15
|
+
getGroup(userId: string, groupId: string): Promise<GroupResponse>;
|
|
16
|
+
getAllGroups(userId: string): Promise<GroupSummariesResponse>;
|
|
17
|
+
private calculateGroupBalance;
|
|
18
|
+
private mapMembersToResponse;
|
|
19
|
+
private calculateMemberBalance;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=GroupController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupController.d.ts","sourceRoot":"","sources":["../../../src/client/controllers/GroupController.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAElB,yBAAyB,EACzB,aAAa,EACb,sBAAsB,EAEtB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAOhC,qBAAa,eAAe;IAC1B,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,0BAA0B,GAGrC;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,WAAW,GAEtB;IAEK,WAAW,CACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC;IAmCZ,WAAW,CACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC;IA+BV,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC;IAiCV,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC;IAiCV,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B3D,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAyCjE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;YA8CrD,qBAAqB;YA+BrB,oBAAoB;YAuDpB,sBAAsB;CA6BrC"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GroupController = void 0;
|
|
4
|
+
const GroupEvents_1 = require("../../GroupEvents");
|
|
5
|
+
const EventProcessorSDK_1 = require("../../EventProcessorSDK");
|
|
6
|
+
const uuid_1 = require("uuid");
|
|
7
|
+
const BalanceUtil_1 = require("../../utils/BalanceUtil");
|
|
8
|
+
class GroupController {
|
|
9
|
+
get modelStore() {
|
|
10
|
+
return EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig().groupModelStore;
|
|
11
|
+
}
|
|
12
|
+
get groupEventHandler() {
|
|
13
|
+
return EventProcessorSDK_1.EventProcessorSDK.getInstance().getGroupEventHandler();
|
|
14
|
+
}
|
|
15
|
+
get userModelStore() {
|
|
16
|
+
return EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig().userModelStore;
|
|
17
|
+
}
|
|
18
|
+
get friendModelStore() {
|
|
19
|
+
return EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig().friendModelStore;
|
|
20
|
+
}
|
|
21
|
+
get groupTransactionModelStore() {
|
|
22
|
+
return EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig()
|
|
23
|
+
.groupTransactionModelStore;
|
|
24
|
+
}
|
|
25
|
+
get currencyStore() {
|
|
26
|
+
return EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig().currencyStore;
|
|
27
|
+
}
|
|
28
|
+
get balanceUtil() {
|
|
29
|
+
return new BalanceUtil_1.BalanceUtil(this.userModelStore, this.currencyStore);
|
|
30
|
+
}
|
|
31
|
+
async createGroup(userId, request) {
|
|
32
|
+
const groupId = (0, uuid_1.v4)();
|
|
33
|
+
const streamId = (0, uuid_1.v4)();
|
|
34
|
+
const createdAt = new Date();
|
|
35
|
+
const members = request.memberIds ?? [];
|
|
36
|
+
if (!members.includes(userId)) {
|
|
37
|
+
members.push(userId);
|
|
38
|
+
}
|
|
39
|
+
const event = new GroupEvents_1.GroupCreated({
|
|
40
|
+
eventId: (0, uuid_1.v4)(),
|
|
41
|
+
userId,
|
|
42
|
+
groupId,
|
|
43
|
+
name: request.name.trim(),
|
|
44
|
+
description: request.description?.trim(),
|
|
45
|
+
photoUrl: request.photoUrl,
|
|
46
|
+
members,
|
|
47
|
+
createdAt,
|
|
48
|
+
createdBy: userId,
|
|
49
|
+
streamId,
|
|
50
|
+
version: 1,
|
|
51
|
+
systemGenerated: false,
|
|
52
|
+
});
|
|
53
|
+
await this.groupEventHandler.handleEvent(event);
|
|
54
|
+
console.log("[GroupController.createGroup] Group created", {
|
|
55
|
+
requestParams: { userId, request },
|
|
56
|
+
groupId,
|
|
57
|
+
});
|
|
58
|
+
return groupId;
|
|
59
|
+
}
|
|
60
|
+
async updateGroup(userId, groupId, request) {
|
|
61
|
+
const groupModel = await this.modelStore.findByUserIdAndGroupIdAndDeletedIsFalse(userId, groupId);
|
|
62
|
+
if (!groupModel) {
|
|
63
|
+
throw new Error(`Group not found: ${groupId}`);
|
|
64
|
+
}
|
|
65
|
+
const createdAt = new Date();
|
|
66
|
+
const event = new GroupEvents_1.GroupUpdated({
|
|
67
|
+
eventId: (0, uuid_1.v4)(),
|
|
68
|
+
userId,
|
|
69
|
+
name: request.name.trim(),
|
|
70
|
+
description: request.description?.trim(),
|
|
71
|
+
photoUrl: request.photoUrl,
|
|
72
|
+
createdAt,
|
|
73
|
+
createdBy: userId,
|
|
74
|
+
streamId: groupModel.streamId,
|
|
75
|
+
version: groupModel.version + 1,
|
|
76
|
+
systemGenerated: false,
|
|
77
|
+
});
|
|
78
|
+
await this.groupEventHandler.handleEvent(event);
|
|
79
|
+
console.log("[GroupController.updateGroup] Group updated", {
|
|
80
|
+
requestParams: { userId, groupId, request },
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
async addMembers(userId, groupId, request) {
|
|
84
|
+
const groupModel = await this.modelStore.findByUserIdAndGroupIdAndDeletedIsFalse(userId, groupId);
|
|
85
|
+
if (!groupModel) {
|
|
86
|
+
throw new Error(`Group not found: ${groupId}`);
|
|
87
|
+
}
|
|
88
|
+
if (!request.memberIds || request.memberIds.length === 0) {
|
|
89
|
+
throw new Error("No members to add");
|
|
90
|
+
}
|
|
91
|
+
const createdAt = new Date();
|
|
92
|
+
const event = new GroupEvents_1.GroupMembersAdded({
|
|
93
|
+
eventId: (0, uuid_1.v4)(),
|
|
94
|
+
userId,
|
|
95
|
+
members: request.memberIds,
|
|
96
|
+
createdAt,
|
|
97
|
+
createdBy: userId,
|
|
98
|
+
streamId: groupModel.streamId,
|
|
99
|
+
version: groupModel.version + 1,
|
|
100
|
+
systemGenerated: false,
|
|
101
|
+
});
|
|
102
|
+
await this.groupEventHandler.handleEvent(event);
|
|
103
|
+
console.log("[GroupController.addMembers] Members added", {
|
|
104
|
+
requestParams: { userId, groupId, request },
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
async removeMembers(userId, groupId, request) {
|
|
108
|
+
const groupModel = await this.modelStore.findByUserIdAndGroupIdAndDeletedIsFalse(userId, groupId);
|
|
109
|
+
if (!groupModel) {
|
|
110
|
+
throw new Error(`Group not found: ${groupId}`);
|
|
111
|
+
}
|
|
112
|
+
if (!request.memberIds || request.memberIds.length === 0) {
|
|
113
|
+
throw new Error("No members to remove");
|
|
114
|
+
}
|
|
115
|
+
const createdAt = new Date();
|
|
116
|
+
const event = new GroupEvents_1.GroupMembersRemoved({
|
|
117
|
+
eventId: (0, uuid_1.v4)(),
|
|
118
|
+
userId,
|
|
119
|
+
members: request.memberIds,
|
|
120
|
+
createdAt,
|
|
121
|
+
createdBy: userId,
|
|
122
|
+
streamId: groupModel.streamId,
|
|
123
|
+
version: groupModel.version + 1,
|
|
124
|
+
systemGenerated: false,
|
|
125
|
+
});
|
|
126
|
+
await this.groupEventHandler.handleEvent(event);
|
|
127
|
+
console.log("[GroupController.removeMembers] Members removed", {
|
|
128
|
+
requestParams: { userId, groupId, request },
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
async deleteGroup(userId, groupId) {
|
|
132
|
+
const groupModel = await this.modelStore.findByUserIdAndGroupIdAndDeletedIsFalse(userId, groupId);
|
|
133
|
+
if (!groupModel) {
|
|
134
|
+
throw new Error(`Group not found: ${groupId}`);
|
|
135
|
+
}
|
|
136
|
+
const createdAt = new Date();
|
|
137
|
+
const event = new GroupEvents_1.GroupDeleted({
|
|
138
|
+
eventId: (0, uuid_1.v4)(),
|
|
139
|
+
userId,
|
|
140
|
+
createdAt,
|
|
141
|
+
createdBy: userId,
|
|
142
|
+
streamId: groupModel.streamId,
|
|
143
|
+
version: groupModel.version + 1,
|
|
144
|
+
systemGenerated: false,
|
|
145
|
+
});
|
|
146
|
+
await this.groupEventHandler.handleEvent(event);
|
|
147
|
+
console.log("[GroupController.deleteGroup] Group deleted", {
|
|
148
|
+
requestParams: { userId, groupId },
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
async getGroup(userId, groupId) {
|
|
152
|
+
const groupModel = await this.modelStore.findByUserIdAndGroupIdAndDeletedIsFalse(userId, groupId);
|
|
153
|
+
if (!groupModel) {
|
|
154
|
+
throw new Error(`Group not found: ${groupId}`);
|
|
155
|
+
}
|
|
156
|
+
const transactions = await this.groupTransactionModelStore.findByUserIdAndGroupIdWhereDeletedIsFalse(userId, groupId);
|
|
157
|
+
const balance = await this.calculateGroupBalance(transactions, userId);
|
|
158
|
+
const members = await this.mapMembersToResponse(groupModel.members ?? [], userId, groupId);
|
|
159
|
+
const response = {
|
|
160
|
+
id: groupModel.groupId,
|
|
161
|
+
name: groupModel.name,
|
|
162
|
+
photoUrl: groupModel.photoUrl,
|
|
163
|
+
description: groupModel.description,
|
|
164
|
+
members,
|
|
165
|
+
balance,
|
|
166
|
+
};
|
|
167
|
+
console.log("[GroupController.getGroup] Returning group", {
|
|
168
|
+
requestParams: { userId, groupId },
|
|
169
|
+
response,
|
|
170
|
+
});
|
|
171
|
+
return response;
|
|
172
|
+
}
|
|
173
|
+
async getAllGroups(userId) {
|
|
174
|
+
const groups = await this.modelStore.findAllByUserIdAndDeletedIsFalse(userId);
|
|
175
|
+
const groupSummaries = [];
|
|
176
|
+
const allTransactions = [];
|
|
177
|
+
for (const group of groups) {
|
|
178
|
+
const transactions = await this.groupTransactionModelStore.findByUserIdAndGroupIdWhereDeletedIsFalse(userId, group.groupId);
|
|
179
|
+
allTransactions.push(...transactions);
|
|
180
|
+
const balance = await this.calculateGroupBalance(transactions, userId);
|
|
181
|
+
groupSummaries.push({
|
|
182
|
+
id: group.groupId,
|
|
183
|
+
name: group.name,
|
|
184
|
+
photoUrl: group.photoUrl,
|
|
185
|
+
description: group.description,
|
|
186
|
+
memberCount: group.members?.length ?? 0,
|
|
187
|
+
balance,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
const totalBalance = await this.calculateGroupBalance(allTransactions, userId);
|
|
191
|
+
const response = {
|
|
192
|
+
groups: groupSummaries,
|
|
193
|
+
balance: totalBalance,
|
|
194
|
+
};
|
|
195
|
+
console.log("[GroupController.getAllGroups] Returning all groups", {
|
|
196
|
+
requestParams: { userId },
|
|
197
|
+
response,
|
|
198
|
+
});
|
|
199
|
+
return response;
|
|
200
|
+
}
|
|
201
|
+
async calculateGroupBalance(transactions, userId) {
|
|
202
|
+
if (transactions.length === 0) {
|
|
203
|
+
return { main: undefined, other: [] };
|
|
204
|
+
}
|
|
205
|
+
const currencyBalances = new Map();
|
|
206
|
+
for (const transaction of transactions) {
|
|
207
|
+
const totalOwedToYou = transaction.whoOweYou.reduce((sum, m) => sum + m.amount, 0);
|
|
208
|
+
const totalYouOwe = transaction.whoYouOwe.reduce((sum, m) => sum + m.amount, 0);
|
|
209
|
+
const netAmount = totalOwedToYou - totalYouOwe;
|
|
210
|
+
const existing = currencyBalances.get(transaction.currency) || 0;
|
|
211
|
+
currencyBalances.set(transaction.currency, existing + netAmount);
|
|
212
|
+
}
|
|
213
|
+
return this.balanceUtil.convertCurrencyBalancesToResponse(currencyBalances, userId);
|
|
214
|
+
}
|
|
215
|
+
async mapMembersToResponse(memberIds, userId, groupId) {
|
|
216
|
+
const members = [];
|
|
217
|
+
const transactions = await this.groupTransactionModelStore.findByUserIdAndGroupIdWhereDeletedIsFalse(userId, groupId);
|
|
218
|
+
for (const memberId of memberIds) {
|
|
219
|
+
if (memberId === userId) {
|
|
220
|
+
const user = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(memberId);
|
|
221
|
+
if (user) {
|
|
222
|
+
members.push({
|
|
223
|
+
memberId: user.userId,
|
|
224
|
+
memberPhoneNumber: user.phoneNumber,
|
|
225
|
+
memberEmail: user.email,
|
|
226
|
+
memberName: user.displayName,
|
|
227
|
+
userBalanceWithThisMember: undefined,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
const friend = await this.friendModelStore.findByUserIdAndFriendIdAndDeletedIsFalse(userId, memberId);
|
|
233
|
+
if (friend) {
|
|
234
|
+
const memberBalance = await this.calculateMemberBalance(transactions, memberId, userId);
|
|
235
|
+
members.push({
|
|
236
|
+
memberId: friend.friendId ?? friend.streamId,
|
|
237
|
+
memberPhoneNumber: friend.friendPhoneNumber,
|
|
238
|
+
memberEmail: friend.friendEmail,
|
|
239
|
+
memberName: friend.friendDisplayName,
|
|
240
|
+
userBalanceWithThisMember: memberBalance,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return members;
|
|
246
|
+
}
|
|
247
|
+
async calculateMemberBalance(transactions, memberId, userId) {
|
|
248
|
+
const currencyBalances = new Map();
|
|
249
|
+
for (const transaction of transactions) {
|
|
250
|
+
const owedByMember = transaction.whoOweYou.find((m) => m.memberId === memberId);
|
|
251
|
+
const owedToMember = transaction.whoYouOwe.find((m) => m.memberId === memberId);
|
|
252
|
+
const netAmount = (owedByMember?.amount ?? 0) - (owedToMember?.amount ?? 0);
|
|
253
|
+
if (netAmount !== 0) {
|
|
254
|
+
const existing = currencyBalances.get(transaction.currency) || 0;
|
|
255
|
+
currencyBalances.set(transaction.currency, existing + netAmount);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return this.balanceUtil.convertCurrencyBalancesToResponse(currencyBalances, userId);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
exports.GroupController = GroupController;
|
|
262
|
+
//# sourceMappingURL=GroupController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupController.js","sourceRoot":"","sources":["../../../src/client/controllers/GroupController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { GroupTransactionResponse, GroupTransactionsByMonthResponse, GroupTransactionSpecificAmountsRequest, GroupTransactionTheyPaidSplitEquallyRequest, GroupTransactionYouPaidSplitEquallyRequest } from "../../contracts/groups";
|
|
2
|
+
export declare class GroupTransactionController {
|
|
3
|
+
private get groupTransactionModelStore();
|
|
4
|
+
private get groupTransactionEventHandler();
|
|
5
|
+
private get groupModelStore();
|
|
6
|
+
private get userModelStore();
|
|
7
|
+
private get currencyStore();
|
|
8
|
+
private get balanceUtil();
|
|
9
|
+
createYouPaidSplitEqually(userId: string, groupId: string, request: GroupTransactionYouPaidSplitEquallyRequest): Promise<string>;
|
|
10
|
+
createTheyPaidSplitEqually(userId: string, groupId: string, request: GroupTransactionTheyPaidSplitEquallyRequest): Promise<string>;
|
|
11
|
+
createSpecificAmounts(userId: string, groupId: string, request: GroupTransactionSpecificAmountsRequest): Promise<string>;
|
|
12
|
+
updateYouPaidSplitEqually(userId: string, groupId: string, request: GroupTransactionYouPaidSplitEquallyRequest): Promise<void>;
|
|
13
|
+
updateTheyPaidSplitEqually(userId: string, groupId: string, request: GroupTransactionTheyPaidSplitEquallyRequest): Promise<void>;
|
|
14
|
+
updateSpecificAmounts(userId: string, groupId: string, request: GroupTransactionSpecificAmountsRequest): Promise<void>;
|
|
15
|
+
deleteTransaction(userId: string, groupId: string, transactionId: string): Promise<void>;
|
|
16
|
+
getTransaction(userId: string, transactionId: string): Promise<GroupTransactionResponse | undefined>;
|
|
17
|
+
getTransactionsByMonth(userId: string, groupId: string, timeZone: string): Promise<GroupTransactionsByMonthResponse>;
|
|
18
|
+
private calculateTotalOwed;
|
|
19
|
+
private findExistingTransaction;
|
|
20
|
+
private groupTransactionsByMonth;
|
|
21
|
+
private startOfMonth;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=GroupTransactionController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupTransactionController.d.ts","sourceRoot":"","sources":["../../../src/client/controllers/GroupTransactionController.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,wBAAwB,EACxB,gCAAgC,EAChC,sCAAsC,EAEtC,2CAA2C,EAC3C,0CAA0C,EAC3C,MAAM,wBAAwB,CAAC;AAQhC,qBAAa,0BAA0B;IACrC,OAAO,KAAK,0BAA0B,GAGrC;IAED,OAAO,KAAK,4BAA4B,GAEvC;IAED,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,WAAW,GAEtB;IAEK,yBAAyB,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,0CAA0C,GAClD,OAAO,CAAC,MAAM,CAAC;IAaZ,0BAA0B,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,2CAA2C,GACnD,OAAO,CAAC,MAAM,CAAC;IAaZ,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,sCAAsC,GAC9C,OAAO,CAAC,MAAM,CAAC;IAaZ,yBAAyB,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,0CAA0C,GAClD,OAAO,CAAC,IAAI,CAAC;IAuBV,0BAA0B,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,2CAA2C,GACnD,OAAO,CAAC,IAAI,CAAC;IAuBV,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,sCAAsC,GAC9C,OAAO,CAAC,IAAI,CAAC;IAuBV,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAyBV,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC;IA+B1C,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gCAAgC,CAAC;IA6D5C,OAAO,CAAC,kBAAkB;YASZ,uBAAuB;IAsBrC,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,YAAY;CAMrB"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GroupTransactionController = void 0;
|
|
4
|
+
const GroupTransactionEvents_1 = require("../../GroupTransactionEvents");
|
|
5
|
+
const EventProcessorSDK_1 = require("../../EventProcessorSDK");
|
|
6
|
+
const uuid_1 = require("uuid");
|
|
7
|
+
const BalanceUtil_1 = require("../../utils/BalanceUtil");
|
|
8
|
+
const GroupUtil_1 = require("../../utils/GroupUtil");
|
|
9
|
+
class GroupTransactionController {
|
|
10
|
+
get groupTransactionModelStore() {
|
|
11
|
+
return EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig()
|
|
12
|
+
.groupTransactionModelStore;
|
|
13
|
+
}
|
|
14
|
+
get groupTransactionEventHandler() {
|
|
15
|
+
return EventProcessorSDK_1.EventProcessorSDK.getInstance().getGroupTransactionEventHandler();
|
|
16
|
+
}
|
|
17
|
+
get groupModelStore() {
|
|
18
|
+
return EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig().groupModelStore;
|
|
19
|
+
}
|
|
20
|
+
get userModelStore() {
|
|
21
|
+
return EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig().userModelStore;
|
|
22
|
+
}
|
|
23
|
+
get currencyStore() {
|
|
24
|
+
return EventProcessorSDK_1.EventProcessorSDK.getInstance().getStoreConfig().currencyStore;
|
|
25
|
+
}
|
|
26
|
+
get balanceUtil() {
|
|
27
|
+
return new BalanceUtil_1.BalanceUtil(this.userModelStore, this.currencyStore);
|
|
28
|
+
}
|
|
29
|
+
async createYouPaidSplitEqually(userId, groupId, request) {
|
|
30
|
+
const event = (0, GroupUtil_1.buildYouPaidSplitEquallyEvent)(userId, groupId, request);
|
|
31
|
+
await this.groupTransactionEventHandler.handleEvent(event);
|
|
32
|
+
const transactionId = event.transactionId;
|
|
33
|
+
console.log("[GroupTransactionController.createYouPaidSplitEqually] Transaction created", { requestParams: { userId, groupId, request }, transactionId });
|
|
34
|
+
return transactionId;
|
|
35
|
+
}
|
|
36
|
+
async createTheyPaidSplitEqually(userId, groupId, request) {
|
|
37
|
+
const event = (0, GroupUtil_1.buildTheyPaidSplitEquallyEvent)(userId, groupId, request);
|
|
38
|
+
await this.groupTransactionEventHandler.handleEvent(event);
|
|
39
|
+
const transactionId = event.transactionId;
|
|
40
|
+
console.log("[GroupTransactionController.createTheyPaidSplitEqually] Transaction created", { requestParams: { userId, groupId, request }, transactionId });
|
|
41
|
+
return transactionId;
|
|
42
|
+
}
|
|
43
|
+
async createSpecificAmounts(userId, groupId, request) {
|
|
44
|
+
const event = (0, GroupUtil_1.buildSpecificAmountsEvent)(userId, groupId, request);
|
|
45
|
+
await this.groupTransactionEventHandler.handleEvent(event);
|
|
46
|
+
const transactionId = event.transactionId;
|
|
47
|
+
console.log("[GroupTransactionController.createSpecificAmounts] Transaction created", { requestParams: { userId, groupId, request }, transactionId });
|
|
48
|
+
return transactionId;
|
|
49
|
+
}
|
|
50
|
+
async updateYouPaidSplitEqually(userId, groupId, request) {
|
|
51
|
+
if (!request.transactionId) {
|
|
52
|
+
throw new Error("transactionId is required for update");
|
|
53
|
+
}
|
|
54
|
+
const existingModel = await this.findExistingTransaction(userId, groupId, request.transactionId);
|
|
55
|
+
const event = (0, GroupUtil_1.buildYouPaidSplitEquallyEvent)(userId, groupId, request, existingModel);
|
|
56
|
+
await this.groupTransactionEventHandler.handleEvent(event);
|
|
57
|
+
console.log("[GroupTransactionController.updateYouPaidSplitEqually] Transaction updated", { requestParams: { userId, groupId, request } });
|
|
58
|
+
}
|
|
59
|
+
async updateTheyPaidSplitEqually(userId, groupId, request) {
|
|
60
|
+
if (!request.transactionId) {
|
|
61
|
+
throw new Error("transactionId is required for update");
|
|
62
|
+
}
|
|
63
|
+
const existingModel = await this.findExistingTransaction(userId, groupId, request.transactionId);
|
|
64
|
+
const event = (0, GroupUtil_1.buildTheyPaidSplitEquallyEvent)(userId, groupId, request, existingModel);
|
|
65
|
+
await this.groupTransactionEventHandler.handleEvent(event);
|
|
66
|
+
console.log("[GroupTransactionController.updateTheyPaidSplitEqually] Transaction updated", { requestParams: { userId, groupId, request } });
|
|
67
|
+
}
|
|
68
|
+
async updateSpecificAmounts(userId, groupId, request) {
|
|
69
|
+
if (!request.transactionId) {
|
|
70
|
+
throw new Error("transactionId is required for update");
|
|
71
|
+
}
|
|
72
|
+
const existingModel = await this.findExistingTransaction(userId, groupId, request.transactionId);
|
|
73
|
+
const event = (0, GroupUtil_1.buildSpecificAmountsEvent)(userId, groupId, request, existingModel);
|
|
74
|
+
await this.groupTransactionEventHandler.handleEvent(event);
|
|
75
|
+
console.log("[GroupTransactionController.updateSpecificAmounts] Transaction updated", { requestParams: { userId, groupId, request } });
|
|
76
|
+
}
|
|
77
|
+
async deleteTransaction(userId, groupId, transactionId) {
|
|
78
|
+
const existingModel = await this.findExistingTransaction(userId, groupId, transactionId);
|
|
79
|
+
const event = new GroupTransactionEvents_1.GroupTransactionDeleted({
|
|
80
|
+
eventId: (0, uuid_1.v4)(),
|
|
81
|
+
userId,
|
|
82
|
+
createdAt: new Date(),
|
|
83
|
+
createdBy: userId,
|
|
84
|
+
streamId: existingModel.streamId,
|
|
85
|
+
version: existingModel.version + 1,
|
|
86
|
+
systemGenerated: false,
|
|
87
|
+
});
|
|
88
|
+
await this.groupTransactionEventHandler.handleEvent(event);
|
|
89
|
+
console.log("[GroupTransactionController.deleteTransaction] Transaction deleted", { requestParams: { userId, groupId, transactionId } });
|
|
90
|
+
}
|
|
91
|
+
async getTransaction(userId, transactionId) {
|
|
92
|
+
const transaction = await this.groupTransactionModelStore.findByUserIdAndTransactionId(userId, transactionId);
|
|
93
|
+
if (!transaction) {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
const user = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(userId);
|
|
97
|
+
const toCurrency = user?.currency ?? "USD";
|
|
98
|
+
const currencyRates = (await this.currencyStore.getCurrencyRates())?.rates ?? {};
|
|
99
|
+
const response = (0, GroupUtil_1.toGroupTransactionResponse)(transaction, toCurrency, currencyRates);
|
|
100
|
+
console.log("[GroupTransactionController.getTransaction] Returning transaction", { requestParams: { userId, transactionId }, response });
|
|
101
|
+
return response;
|
|
102
|
+
}
|
|
103
|
+
async getTransactionsByMonth(userId, groupId, timeZone) {
|
|
104
|
+
if (!timeZone || timeZone.trim() === "") {
|
|
105
|
+
throw new Error("Invalid timezone");
|
|
106
|
+
}
|
|
107
|
+
const transactions = await this.groupTransactionModelStore.findByUserIdAndGroupIdWhereDeletedIsFalse(userId, groupId);
|
|
108
|
+
const user = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(userId);
|
|
109
|
+
const toCurrency = user?.currency ?? "USD";
|
|
110
|
+
const currencyRates = (await this.currencyStore.getCurrencyRates())?.rates ?? {};
|
|
111
|
+
const sortedTransactions = transactions
|
|
112
|
+
.sort((a, b) => b.transactionDate.getTime() - a.transactionDate.getTime() ||
|
|
113
|
+
b.createdAt.getTime() - a.createdAt.getTime())
|
|
114
|
+
.map((t) => (0, GroupUtil_1.toGroupTransactionResponse)(t, toCurrency, currencyRates));
|
|
115
|
+
const groupedByMonth = this.groupTransactionsByMonth(sortedTransactions, timeZone);
|
|
116
|
+
const balance = await this.balanceUtil.calculateBalance(transactions.map((t) => ({
|
|
117
|
+
...t,
|
|
118
|
+
description: t.description ?? "",
|
|
119
|
+
recipientUserId: "",
|
|
120
|
+
logicalTransactionId: t.transactionId,
|
|
121
|
+
amount: this.calculateTotalOwed(t),
|
|
122
|
+
isOwed: t.whoOweYou.length > 0,
|
|
123
|
+
history: { changes: [] },
|
|
124
|
+
})), userId);
|
|
125
|
+
const response = {
|
|
126
|
+
perMonth: groupedByMonth,
|
|
127
|
+
balance,
|
|
128
|
+
};
|
|
129
|
+
console.log("[GroupTransactionController.getTransactionsByMonth] Returning transactions by month", {
|
|
130
|
+
requestParams: { userId, groupId, timeZone },
|
|
131
|
+
response,
|
|
132
|
+
});
|
|
133
|
+
return response;
|
|
134
|
+
}
|
|
135
|
+
calculateTotalOwed(model) {
|
|
136
|
+
const totalOwedToYou = model.whoOweYou.reduce((sum, m) => sum + m.amount, 0);
|
|
137
|
+
const totalYouOwe = model.whoYouOwe.reduce((sum, m) => sum + m.amount, 0);
|
|
138
|
+
return totalOwedToYou > 0 ? totalOwedToYou : totalYouOwe;
|
|
139
|
+
}
|
|
140
|
+
async findExistingTransaction(userId, groupId, transactionId) {
|
|
141
|
+
const transactions = await this.groupTransactionModelStore.findByUserIdAndGroupIdWhereDeletedIsFalse(userId, groupId);
|
|
142
|
+
const existingModel = transactions.find((t) => t.transactionId === transactionId);
|
|
143
|
+
if (!existingModel) {
|
|
144
|
+
throw new Error(`Transaction not found: ${transactionId}`);
|
|
145
|
+
}
|
|
146
|
+
return existingModel;
|
|
147
|
+
}
|
|
148
|
+
groupTransactionsByMonth(transactions, timeZone) {
|
|
149
|
+
const grouped = new Map();
|
|
150
|
+
for (const transaction of transactions) {
|
|
151
|
+
const monthStart = this.startOfMonth(transaction.date, timeZone);
|
|
152
|
+
if (!grouped.has(monthStart)) {
|
|
153
|
+
grouped.set(monthStart, []);
|
|
154
|
+
}
|
|
155
|
+
grouped.get(monthStart).push(transaction);
|
|
156
|
+
}
|
|
157
|
+
return Array.from(grouped.entries())
|
|
158
|
+
.sort((a, b) => new Date(b[0]).getTime() - new Date(a[0]).getTime())
|
|
159
|
+
.map(([date, txs]) => ({
|
|
160
|
+
date,
|
|
161
|
+
transactions: txs,
|
|
162
|
+
}));
|
|
163
|
+
}
|
|
164
|
+
startOfMonth(dateString, timeZone) {
|
|
165
|
+
const date = new Date(dateString);
|
|
166
|
+
const year = date.toLocaleString("en-US", { year: "numeric", timeZone });
|
|
167
|
+
const month = date.toLocaleString("en-US", { month: "2-digit", timeZone });
|
|
168
|
+
return new Date(`${year}-${month}-01T00:00:00.000Z`).toISOString();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
exports.GroupTransactionController = GroupTransactionController;
|
|
172
|
+
//# sourceMappingURL=GroupTransactionController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupTransactionController.js","sourceRoot":"","sources":["../../../src/client/controllers/GroupTransactionController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionController.d.ts","sourceRoot":"","sources":["../../../src/client/controllers/TransactionController.ts"],"names":[],"mappings":"AASA,OAAO,EACL,wBAAwB,EACxB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EAMrB,MAAM,8BAA8B,CAAC;AAQtC,qBAAa,qBAAqB;IAChC,OAAO,KAAK,UAAU,GAGrB;IAED,OAAO,KAAK,uBAAuB,GAElC;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,wBAAwB,GAEnC;IAED,OAAO,CAAC,eAAe;IAYjB,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"TransactionController.d.ts","sourceRoot":"","sources":["../../../src/client/controllers/TransactionController.ts"],"names":[],"mappings":"AASA,OAAO,EACL,wBAAwB,EACxB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EAMrB,MAAM,8BAA8B,CAAC;AAQtC,qBAAa,qBAAqB;IAChC,OAAO,KAAK,UAAU,GAGrB;IAED,OAAO,KAAK,uBAAuB,GAElC;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,wBAAwB,GAEnC;IAED,OAAO,CAAC,eAAe;IAYjB,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC;IAmFZ,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC;IAsGV,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IA4CV,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,CAAC;IAwDjB,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC;IAgFhC,OAAO,CAAC,wBAAwB;IAwBhC,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,qBAAqB;IAgE7B,OAAO,CAAC,oBAAoB;IAsC5B,OAAO,CAAC,oCAAoC;CAoB7C"}
|
|
@@ -102,6 +102,10 @@ class TransactionController {
|
|
|
102
102
|
});
|
|
103
103
|
this.transactionMigrationUtil.scheduleResolveTempData(userId);
|
|
104
104
|
}
|
|
105
|
+
console.log("[TransactionController.addTransaction] Transaction created", {
|
|
106
|
+
request: { userId, ...request },
|
|
107
|
+
response: { streamId },
|
|
108
|
+
});
|
|
105
109
|
return streamId;
|
|
106
110
|
}
|
|
107
111
|
async updateTransaction(userId, transactionId, request) {
|
|
@@ -129,8 +133,10 @@ class TransactionController {
|
|
|
129
133
|
: transactionModel.recurringDetails;
|
|
130
134
|
const { amount, isOwed } = (0, splitTypeUtils_1.calculateAmountAndIsOwed)(totalAmount, transactionModel.amount, splitType, transactionModel.isOwed);
|
|
131
135
|
const recurringChanged = recurring !== transactionModel.recurring ||
|
|
132
|
-
recurringDetails?.frequency !==
|
|
133
|
-
|
|
136
|
+
recurringDetails?.frequency !==
|
|
137
|
+
transactionModel.recurringDetails?.frequency ||
|
|
138
|
+
recurringDetails?.interval !==
|
|
139
|
+
transactionModel.recurringDetails?.interval;
|
|
134
140
|
const hasChanges = description !== transactionModel.description ||
|
|
135
141
|
currency !== transactionModel.currency ||
|
|
136
142
|
splitType !== transactionModel.splitType ||
|
|
@@ -171,6 +177,9 @@ class TransactionController {
|
|
|
171
177
|
});
|
|
172
178
|
this.transactionMigrationUtil.scheduleResolveTempData(userId);
|
|
173
179
|
}
|
|
180
|
+
console.log("[TransactionController.updateTransaction] Transaction updated", {
|
|
181
|
+
request: { userId, transactionId, ...request },
|
|
182
|
+
});
|
|
174
183
|
}
|
|
175
184
|
async deleteTransaction(userId, transactionId) {
|
|
176
185
|
const transactionModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(transactionId);
|
|
@@ -199,6 +208,9 @@ class TransactionController {
|
|
|
199
208
|
});
|
|
200
209
|
this.transactionMigrationUtil.scheduleResolveTempData(userId);
|
|
201
210
|
}
|
|
211
|
+
console.log("[TransactionController.deleteTransaction] Transaction deleted", {
|
|
212
|
+
request: { userId, transactionId },
|
|
213
|
+
});
|
|
202
214
|
}
|
|
203
215
|
async getTransaction(userId, transactionId) {
|
|
204
216
|
const transactionModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(transactionId);
|