@unchainedshop/core-quotations 2.0.0-beta8 → 2.0.0-beta9

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/jest.config.js CHANGED
@@ -2,4 +2,13 @@
2
2
  export default {
3
3
  preset: 'ts-jest',
4
4
  testEnvironment: 'node',
5
+ extensionsToTreatAsEsm: ['.ts'],
6
+ transform: {
7
+ '^.+\\.tsx?$': [
8
+ 'ts-jest',
9
+ {
10
+ useESM: true,
11
+ },
12
+ ],
13
+ },
5
14
  };
@@ -4,9 +4,9 @@ import { QuotationError } from './QuotationError';
4
4
  const baseDirector = BaseDirector('QuotationDirector', {
5
5
  adapterSortKey: 'orderIndex',
6
6
  });
7
- const findAppropriateAdapters = (quotationContext, requestContext) => baseDirector.getAdapters({
7
+ const findAppropriateAdapters = (quotationContext, unchainedAPI) => baseDirector.getAdapters({
8
8
  adapterFilter: (Adapter) => {
9
- const activated = Adapter.isActivatedFor(quotationContext, requestContext);
9
+ const activated = Adapter.isActivatedFor(quotationContext, unchainedAPI);
10
10
  if (!activated) {
11
11
  log(`Quotation Director -> ${Adapter.key} (${Adapter.version}) skipped`, {
12
12
  level: LogLevel.Warning,
@@ -17,9 +17,9 @@ const findAppropriateAdapters = (quotationContext, requestContext) => baseDirect
17
17
  });
18
18
  export const QuotationDirector = {
19
19
  ...baseDirector,
20
- actions: async (quotationContext, requestContext) => {
21
- const context = { ...quotationContext, ...requestContext };
22
- const Adapter = findAppropriateAdapters(quotationContext, requestContext)?.shift();
20
+ actions: async (quotationContext, unchainedAPI) => {
21
+ const context = { ...quotationContext, ...unchainedAPI };
22
+ const Adapter = findAppropriateAdapters(quotationContext, unchainedAPI)?.shift();
23
23
  if (!Adapter) {
24
24
  throw new Error('No suitable quotation plugin available for this context');
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"QuotationDirector.js","sourceRoot":"","sources":["../../src/director/QuotationDirector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QuotationDirector.js","sourceRoot":"","sources":["../../src/director/QuotationDirector.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
1
  import { ModuleInput } from '@unchainedshop/types/core';
2
- import { QuotationsModule, QuotationsSettingsOptions } from '@unchainedshop/types/quotations';
2
+ import { QuotationQuery, QuotationsModule, QuotationsSettingsOptions } from '@unchainedshop/types/quotations';
3
+ export declare const buildFindSelector: (query?: QuotationQuery) => {
4
+ userId?: string;
5
+ $text?: any;
6
+ };
3
7
  export declare const configureQuotationsModule: ({ db, options: quotationsOptions, }: ModuleInput<QuotationsSettingsOptions>) => Promise<QuotationsModule>;
@@ -8,7 +8,7 @@ import { QuotationStatus } from '../db/QuotationStatus';
8
8
  import { QuotationDirector } from '../quotations-index';
9
9
  import { quotationsSettings } from '../quotations-settings';
10
10
  const QUOTATION_EVENTS = ['QUOTATION_REQUEST_CREATE', 'QUOTATION_REMOVE', 'QUOTATION_UPDATE'];
11
- const buildFindSelector = (query = {}) => {
11
+ export const buildFindSelector = (query = {}) => {
12
12
  const selector = {};
13
13
  if (query.userId) {
14
14
  selector.userId = query.userId;
@@ -41,9 +41,9 @@ export const configureQuotationsModule = async ({ db, options: quotationsOptions
41
41
  // }
42
42
  // return quotationNumber;
43
43
  };
44
- const findNextStatus = async (quotation, requestContext) => {
44
+ const findNextStatus = async (quotation, unchainedAPI) => {
45
45
  let status = quotation.status;
46
- const director = await QuotationDirector.actions({ quotation }, requestContext);
46
+ const director = await QuotationDirector.actions({ quotation }, unchainedAPI);
47
47
  if (status === QuotationStatus.REQUESTED) {
48
48
  if (!(await director.isManualRequestVerificationRequired())) {
49
49
  status = QuotationStatus.PROCESSING;
@@ -56,7 +56,7 @@ export const configureQuotationsModule = async ({ db, options: quotationsOptions
56
56
  }
57
57
  return status;
58
58
  };
59
- const updateStatus = async (quotationId, { status, info = '' }, userId) => {
59
+ const updateStatus = async (quotationId, { status, info = '' }) => {
60
60
  const selector = generateDbFilterById(quotationId);
61
61
  const quotation = await Quotations.findOne(selector, {});
62
62
  if (quotation.status === status)
@@ -65,7 +65,6 @@ export const configureQuotationsModule = async ({ db, options: quotationsOptions
65
65
  const $set = {
66
66
  status,
67
67
  updated: new Date(),
68
- updatedBy: userId,
69
68
  };
70
69
  switch (status) {
71
70
  // explicitly use fallthrough here!
@@ -102,38 +101,38 @@ export const configureQuotationsModule = async ({ db, options: quotationsOptions
102
101
  await emit('QUOTATION_UPDATE', { quotation, field: 'status' });
103
102
  return updatedQuotation;
104
103
  };
105
- const processQuotation = async (initialQuotation, params, requestContext) => {
106
- const { modules, userId } = requestContext;
104
+ const processQuotation = async (initialQuotation, params, unchainedAPI) => {
105
+ const { modules } = unchainedAPI;
107
106
  const quotationId = initialQuotation._id;
108
107
  let quotation = initialQuotation;
109
- let nextStatus = await findNextStatus(quotation, requestContext);
110
- const director = await QuotationDirector.actions({ quotation }, requestContext);
108
+ let nextStatus = await findNextStatus(quotation, unchainedAPI);
109
+ const director = await QuotationDirector.actions({ quotation }, unchainedAPI);
111
110
  if (quotation.status === QuotationStatus.REQUESTED && nextStatus !== QuotationStatus.REQUESTED) {
112
111
  await director.submitRequest(params.quotationContext);
113
112
  }
114
113
  quotation = await modules.quotations.findQuotation({ quotationId });
115
- nextStatus = await findNextStatus(quotation, requestContext);
114
+ nextStatus = await findNextStatus(quotation, unchainedAPI);
116
115
  if (nextStatus !== QuotationStatus.PROCESSING) {
117
116
  await director.verifyRequest(params.quotationContext);
118
117
  }
119
118
  quotation = await modules.quotations.findQuotation({ quotationId });
120
- nextStatus = await findNextStatus(quotation, requestContext);
119
+ nextStatus = await findNextStatus(quotation, unchainedAPI);
121
120
  if (nextStatus === QuotationStatus.REJECTED) {
122
121
  await director.rejectRequest(params.quotationContext);
123
122
  }
124
123
  quotation = await modules.quotations.findQuotation({ quotationId });
125
- nextStatus = await findNextStatus(quotation, requestContext);
124
+ nextStatus = await findNextStatus(quotation, unchainedAPI);
126
125
  if (nextStatus === QuotationStatus.PROPOSED) {
127
126
  const proposal = await director.quote();
128
- quotation = await modules.quotations.updateProposal(quotation._id, proposal, userId);
129
- nextStatus = await findNextStatus(quotation, requestContext);
127
+ quotation = await modules.quotations.updateProposal(quotation._id, proposal);
128
+ nextStatus = await findNextStatus(quotation, unchainedAPI);
130
129
  }
131
- return updateStatus(quotation._id, { status: nextStatus, info: 'quotation processed' }, requestContext.userId);
130
+ return updateStatus(quotation._id, { status: nextStatus, info: 'quotation processed' });
132
131
  };
133
- const sendStatusToCustomer = async (quotation, requestContext) => {
134
- const { modules, userId } = requestContext;
132
+ const sendStatusToCustomer = async (quotation, unchainedAPI) => {
133
+ const { modules } = unchainedAPI;
135
134
  const user = await modules.users.findUserById(quotation.userId);
136
- const locale = modules.users.userLocale(user, requestContext);
135
+ const locale = modules.users.userLocale(user);
137
136
  await modules.worker.addWork({
138
137
  type: 'MESSAGE',
139
138
  retries: 0,
@@ -142,18 +141,17 @@ export const configureQuotationsModule = async ({ db, options: quotationsOptions
142
141
  template: 'QUOTATION_STATUS',
143
142
  quotationId: quotation._id,
144
143
  },
145
- }, userId);
144
+ });
146
145
  return quotation;
147
146
  };
148
- const updateQuotationFields = (fieldKeys) => async (quotationId, values, userId) => {
147
+ const updateQuotationFields = (fieldKeys) => async (quotationId, values) => {
149
148
  log(`Update quotation fields ${fieldKeys.join(', ').toUpperCase()}`, {
150
149
  quotationId,
151
- userId,
152
150
  });
153
151
  const modifier = {
154
152
  $set: fieldKeys.reduce((set, key) => ({ ...set, [key]: values[key] }), {}),
155
153
  };
156
- await mutations.update(quotationId, modifier, userId);
154
+ await mutations.update(quotationId, modifier);
157
155
  const selector = generateDbFilterById(quotationId);
158
156
  const quotation = await Quotations.findOne(selector, {});
159
157
  await emit('QUOTATION_UPDATE', { quotation, fields: fieldKeys });
@@ -165,12 +163,17 @@ export const configureQuotationsModule = async ({ db, options: quotationsOptions
165
163
  const quotationCount = await Quotations.countDocuments(buildFindSelector(query));
166
164
  return quotationCount;
167
165
  },
166
+ openQuotationWithProduct: async ({ productId }) => {
167
+ const selector = { productId };
168
+ selector.status = { $in: [QuotationStatus.REQUESTED, QuotationStatus.PROPOSED] };
169
+ return Quotations.findOne(selector);
170
+ },
168
171
  findQuotation: async ({ quotationId }, options) => {
169
172
  const selector = generateDbFilterById(quotationId);
170
173
  return Quotations.findOne(selector, options);
171
174
  },
172
175
  findQuotations: async ({ limit, offset, sort, ...query }, options) => {
173
- const defaultSortOption = [{ key: 'created', value: SortDirection.DESC }];
176
+ const defaultSortOption = [{ key: 'created', value: SortDirection.ASC }];
174
177
  const quotations = Quotations.find(buildFindSelector(query), {
175
178
  limit,
176
179
  skip: offset,
@@ -190,7 +193,7 @@ export const configureQuotationsModule = async ({ db, options: quotationsOptions
190
193
  return quotation.status === QuotationStatus.PROPOSED && !isExpired(quotation);
191
194
  },
192
195
  // Processing
193
- fullfillQuotation: async (quotationId, info, requestContext) => {
196
+ fullfillQuotation: async (quotationId, info, unchainedAPI) => {
194
197
  const selector = generateDbFilterById(quotationId);
195
198
  const quotation = await Quotations.findOne(selector, {});
196
199
  if (quotation.status === QuotationStatus.FULLFILLED)
@@ -198,51 +201,50 @@ export const configureQuotationsModule = async ({ db, options: quotationsOptions
198
201
  let updatedQuotation = await updateStatus(quotation._id, {
199
202
  status: QuotationStatus.FULLFILLED,
200
203
  info: JSON.stringify(info),
201
- }, requestContext.userId);
202
- updatedQuotation = await processQuotation(updatedQuotation, {}, requestContext);
203
- return sendStatusToCustomer(updatedQuotation, requestContext);
204
+ });
205
+ updatedQuotation = await processQuotation(updatedQuotation, {}, unchainedAPI);
206
+ return sendStatusToCustomer(updatedQuotation, unchainedAPI);
204
207
  },
205
- proposeQuotation: async (quotation, { quotationContext }, requestContext) => {
208
+ proposeQuotation: async (quotation, { quotationContext }, unchainedAPI) => {
206
209
  if (quotation.status !== QuotationStatus.PROCESSING)
207
210
  return quotation;
208
211
  let updatedQuotation = await updateStatus(quotation._id, {
209
212
  status: QuotationStatus.PROPOSED,
210
213
  info: 'proposed manually',
211
- }, requestContext.userId);
212
- updatedQuotation = await processQuotation(updatedQuotation, { quotationContext }, requestContext);
213
- return sendStatusToCustomer(updatedQuotation, requestContext);
214
+ });
215
+ updatedQuotation = await processQuotation(updatedQuotation, { quotationContext }, unchainedAPI);
216
+ return sendStatusToCustomer(updatedQuotation, unchainedAPI);
214
217
  },
215
- rejectQuotation: async (quotation, { quotationContext }, requestContext) => {
218
+ rejectQuotation: async (quotation, { quotationContext }, unchainedAPI) => {
216
219
  if (quotation.status === QuotationStatus.FULLFILLED)
217
220
  return quotation;
218
221
  let updatedQuotation = await updateStatus(quotation._id, {
219
222
  status: QuotationStatus.REJECTED,
220
223
  info: 'rejected manually',
221
- }, requestContext.userId);
222
- updatedQuotation = await processQuotation(updatedQuotation, { quotationContext }, requestContext);
223
- return sendStatusToCustomer(updatedQuotation, requestContext);
224
+ });
225
+ updatedQuotation = await processQuotation(updatedQuotation, { quotationContext }, unchainedAPI);
226
+ return sendStatusToCustomer(updatedQuotation, unchainedAPI);
224
227
  },
225
- verifyQuotation: async (quotation, { quotationContext }, requestContext) => {
228
+ verifyQuotation: async (quotation, { quotationContext }, unchainedAPI) => {
226
229
  if (quotation.status !== QuotationStatus.REQUESTED)
227
230
  return quotation;
228
231
  let updatedQuotation = await updateStatus(quotation._id, {
229
232
  status: QuotationStatus.PROCESSING,
230
233
  info: 'verified elligibility manually',
231
- }, requestContext.userId);
232
- updatedQuotation = await processQuotation(updatedQuotation, { quotationContext }, requestContext);
233
- return sendStatusToCustomer(updatedQuotation, requestContext);
234
+ });
235
+ updatedQuotation = await processQuotation(updatedQuotation, { quotationContext }, unchainedAPI);
236
+ return sendStatusToCustomer(updatedQuotation, unchainedAPI);
234
237
  },
235
- transformItemConfiguration: async (quotation, configuration, requestContext) => {
236
- const director = await QuotationDirector.actions({ quotation }, requestContext);
238
+ transformItemConfiguration: async (quotation, configuration, unchainedAPI) => {
239
+ const director = await QuotationDirector.actions({ quotation }, unchainedAPI);
237
240
  return director.transformItemConfiguration(configuration);
238
241
  },
239
242
  // Mutations
240
- create: async ({ countryCode, ...quotationData }, requestContext) => {
241
- const { services, userId } = requestContext;
242
- log('Create Quotation', { userId });
243
+ create: async ({ countryCode, ...quotationData }, unchainedAPI) => {
244
+ const { services } = unchainedAPI;
243
245
  const currency = await services.countries.resolveDefaultCurrencyCode({
244
246
  isoCode: countryCode,
245
- }, requestContext);
247
+ }, unchainedAPI);
246
248
  const quotationId = await mutations.create({
247
249
  ...quotationData,
248
250
  configuration: quotationData.configuration || [],
@@ -250,10 +252,10 @@ export const configureQuotationsModule = async ({ db, options: quotationsOptions
250
252
  currency,
251
253
  log: [],
252
254
  status: QuotationStatus.REQUESTED,
253
- }, userId);
255
+ });
254
256
  const newQuotation = await Quotations.findOne(generateDbFilterById(quotationId), {});
255
- let quotation = await processQuotation(newQuotation, {}, requestContext);
256
- quotation = await sendStatusToCustomer(quotation, requestContext);
257
+ let quotation = await processQuotation(newQuotation, {}, unchainedAPI);
258
+ quotation = await sendStatusToCustomer(quotation, unchainedAPI);
257
259
  await emit('QUOTATION_REQUEST_CREATE', { quotation });
258
260
  return quotation;
259
261
  },
@@ -1 +1 @@
1
- {"version":3,"file":"configureQuotationsModule.js","sourceRoot":"","sources":["../../src/module/configureQuotationsModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configureQuotationsModule.js","sourceRoot":"","sources":["../../src/module/configureQuotationsModule.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/core-quotations",
3
- "version": "2.0.0-beta8",
3
+ "version": "2.0.0-beta9",
4
4
  "main": "lib/quotations-index.js",
5
5
  "exports": {
6
6
  ".": "./lib/quotations-index.js",
@@ -12,7 +12,8 @@
12
12
  "clean": "rm -rf lib",
13
13
  "build": "npm run clean && tsc",
14
14
  "watch": "tsc -w",
15
- "test": "jest --watch"
15
+ "test": "NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit",
16
+ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch --detectOpenHandles --forceExit"
16
17
  },
17
18
  "repository": {
18
19
  "type": "git",
@@ -30,17 +31,17 @@
30
31
  },
31
32
  "homepage": "https://github.com/unchainedshop/unchained#readme",
32
33
  "dependencies": {
33
- "@unchainedshop/events": "^2.0.0-beta8",
34
- "@unchainedshop/logger": "^2.0.0-beta8",
35
- "@unchainedshop/utils": "^2.0.0-beta8",
36
- "simpl-schema": "^3.0.1"
34
+ "@unchainedshop/events": "^2.0.0-beta9",
35
+ "@unchainedshop/logger": "^2.0.0-beta9",
36
+ "@unchainedshop/utils": "^2.0.0-beta9",
37
+ "simpl-schema": "^3.2.0"
37
38
  },
38
39
  "devDependencies": {
39
40
  "@types/locale": "^0.1.1",
40
- "@types/node": "^18.11.9",
41
- "@unchainedshop/types": "^2.0.0-beta8",
41
+ "@types/node": "^18.11.12",
42
+ "@unchainedshop/types": "^2.0.0-beta9",
42
43
  "jest": "^29.3.1",
43
44
  "ts-jest": "^29.0.3",
44
- "typescript": "^4.9.3"
45
+ "typescript": "^4.9.4"
45
46
  }
46
47
  }
@@ -1,4 +1,3 @@
1
- import { Context } from '@unchainedshop/types/api';
2
1
  import { LogLevel, log } from '@unchainedshop/logger';
3
2
  import {
4
3
  IQuotationAdapter,
@@ -6,16 +5,17 @@ import {
6
5
  QuotationContext,
7
6
  } from '@unchainedshop/types/quotations';
8
7
  import { BaseDirector } from '@unchainedshop/utils';
8
+ import { UnchainedCore } from '@unchainedshop/types/core';
9
9
  import { QuotationError } from './QuotationError';
10
10
 
11
11
  const baseDirector = BaseDirector<IQuotationAdapter>('QuotationDirector', {
12
12
  adapterSortKey: 'orderIndex',
13
13
  });
14
14
 
15
- const findAppropriateAdapters = (quotationContext: QuotationContext, requestContext: Context) =>
15
+ const findAppropriateAdapters = (quotationContext: QuotationContext, unchainedAPI: UnchainedCore) =>
16
16
  baseDirector.getAdapters({
17
17
  adapterFilter: (Adapter: IQuotationAdapter) => {
18
- const activated = Adapter.isActivatedFor(quotationContext, requestContext);
18
+ const activated = Adapter.isActivatedFor(quotationContext, unchainedAPI);
19
19
  if (!activated) {
20
20
  log(`Quotation Director -> ${Adapter.key} (${Adapter.version}) skipped`, {
21
21
  level: LogLevel.Warning,
@@ -28,10 +28,10 @@ const findAppropriateAdapters = (quotationContext: QuotationContext, requestCont
28
28
  export const QuotationDirector: IQuotationDirector = {
29
29
  ...baseDirector,
30
30
 
31
- actions: async (quotationContext, requestContext) => {
32
- const context = { ...quotationContext, ...requestContext };
31
+ actions: async (quotationContext, unchainedAPI) => {
32
+ const context = { ...quotationContext, ...unchainedAPI };
33
33
 
34
- const Adapter = findAppropriateAdapters(quotationContext, requestContext)?.shift();
34
+ const Adapter = findAppropriateAdapters(quotationContext, unchainedAPI)?.shift();
35
35
 
36
36
  if (!Adapter) {
37
37
  throw new Error('No suitable quotation plugin available for this context');
@@ -1,6 +1,7 @@
1
- import { Context, SortDirection, SortOption } from '@unchainedshop/types/api';
2
- import { Update } from '@unchainedshop/types/common';
3
- import { ModuleInput, ModuleMutations } from '@unchainedshop/types/core';
1
+ import { SortDirection, SortOption } from '@unchainedshop/types/api';
2
+ import { Query, Update } from '@unchainedshop/types/common';
3
+ import { ModuleInput, ModuleMutations, UnchainedCore } from '@unchainedshop/types/core';
4
+
4
5
  import {
5
6
  Quotation,
6
7
  QuotationQuery,
@@ -18,7 +19,7 @@ import { quotationsSettings } from '../quotations-settings';
18
19
 
19
20
  const QUOTATION_EVENTS: string[] = ['QUOTATION_REQUEST_CREATE', 'QUOTATION_REMOVE', 'QUOTATION_UPDATE'];
20
21
 
21
- const buildFindSelector = (query: QuotationQuery = {}) => {
22
+ export const buildFindSelector = (query: QuotationQuery = {}) => {
22
23
  const selector: { userId?: string; $text?: any } = {};
23
24
  if (query.userId) {
24
25
  selector.userId = query.userId;
@@ -67,10 +68,10 @@ export const configureQuotationsModule = async ({
67
68
 
68
69
  const findNextStatus = async (
69
70
  quotation: Quotation,
70
- requestContext: Context,
71
+ unchainedAPI: UnchainedCore,
71
72
  ): Promise<QuotationStatus> => {
72
73
  let status = quotation.status as QuotationStatus;
73
- const director = await QuotationDirector.actions({ quotation }, requestContext);
74
+ const director = await QuotationDirector.actions({ quotation }, unchainedAPI);
74
75
 
75
76
  if (status === QuotationStatus.REQUESTED) {
76
77
  if (!(await director.isManualRequestVerificationRequired())) {
@@ -85,11 +86,7 @@ export const configureQuotationsModule = async ({
85
86
  return status;
86
87
  };
87
88
 
88
- const updateStatus: QuotationsModule['updateStatus'] = async (
89
- quotationId,
90
- { status, info = '' },
91
- userId,
92
- ) => {
89
+ const updateStatus: QuotationsModule['updateStatus'] = async (quotationId, { status, info = '' }) => {
93
90
  const selector = generateDbFilterById(quotationId);
94
91
  const quotation = await Quotations.findOne(selector, {});
95
92
 
@@ -99,7 +96,6 @@ export const configureQuotationsModule = async ({
99
96
  const $set: Partial<Quotation> = {
100
97
  status,
101
98
  updated: new Date(),
102
- updatedBy: userId,
103
99
  };
104
100
 
105
101
  switch (status) {
@@ -147,80 +143,72 @@ export const configureQuotationsModule = async ({
147
143
  const processQuotation = async (
148
144
  initialQuotation: Quotation,
149
145
  params: { quotationContext?: any },
150
- requestContext: Context,
146
+ unchainedAPI: UnchainedCore,
151
147
  ) => {
152
- const { modules, userId } = requestContext;
148
+ const { modules } = unchainedAPI;
153
149
 
154
150
  const quotationId = initialQuotation._id;
155
151
  let quotation = initialQuotation;
156
- let nextStatus = await findNextStatus(quotation, requestContext);
157
- const director = await QuotationDirector.actions({ quotation }, requestContext);
152
+ let nextStatus = await findNextStatus(quotation, unchainedAPI);
153
+ const director = await QuotationDirector.actions({ quotation }, unchainedAPI);
158
154
 
159
155
  if (quotation.status === QuotationStatus.REQUESTED && nextStatus !== QuotationStatus.REQUESTED) {
160
156
  await director.submitRequest(params.quotationContext);
161
157
  }
162
158
 
163
159
  quotation = await modules.quotations.findQuotation({ quotationId });
164
- nextStatus = await findNextStatus(quotation, requestContext);
160
+ nextStatus = await findNextStatus(quotation, unchainedAPI);
165
161
  if (nextStatus !== QuotationStatus.PROCESSING) {
166
162
  await director.verifyRequest(params.quotationContext);
167
163
  }
168
164
 
169
165
  quotation = await modules.quotations.findQuotation({ quotationId });
170
- nextStatus = await findNextStatus(quotation, requestContext);
166
+ nextStatus = await findNextStatus(quotation, unchainedAPI);
171
167
  if (nextStatus === QuotationStatus.REJECTED) {
172
168
  await director.rejectRequest(params.quotationContext);
173
169
  }
174
170
 
175
171
  quotation = await modules.quotations.findQuotation({ quotationId });
176
- nextStatus = await findNextStatus(quotation, requestContext);
172
+ nextStatus = await findNextStatus(quotation, unchainedAPI);
177
173
  if (nextStatus === QuotationStatus.PROPOSED) {
178
174
  const proposal = await director.quote();
179
- quotation = await modules.quotations.updateProposal(quotation._id, proposal, userId);
180
- nextStatus = await findNextStatus(quotation, requestContext);
175
+ quotation = await modules.quotations.updateProposal(quotation._id, proposal);
176
+ nextStatus = await findNextStatus(quotation, unchainedAPI);
181
177
  }
182
178
 
183
- return updateStatus(
184
- quotation._id,
185
- { status: nextStatus, info: 'quotation processed' },
186
- requestContext.userId,
187
- );
179
+ return updateStatus(quotation._id, { status: nextStatus, info: 'quotation processed' });
188
180
  };
189
181
 
190
- const sendStatusToCustomer = async (quotation: Quotation, requestContext: Context) => {
191
- const { modules, userId } = requestContext;
182
+ const sendStatusToCustomer = async (quotation: Quotation, unchainedAPI: UnchainedCore) => {
183
+ const { modules } = unchainedAPI;
192
184
 
193
185
  const user = await modules.users.findUserById(quotation.userId);
194
- const locale = modules.users.userLocale(user, requestContext);
195
-
196
- await modules.worker.addWork(
197
- {
198
- type: 'MESSAGE',
199
- retries: 0,
200
- input: {
201
- locale,
202
- template: 'QUOTATION_STATUS',
203
- quotationId: quotation._id,
204
- },
186
+ const locale = modules.users.userLocale(user);
187
+
188
+ await modules.worker.addWork({
189
+ type: 'MESSAGE',
190
+ retries: 0,
191
+ input: {
192
+ locale,
193
+ template: 'QUOTATION_STATUS',
194
+ quotationId: quotation._id,
205
195
  },
206
- userId,
207
- );
196
+ });
208
197
 
209
198
  return quotation;
210
199
  };
211
200
 
212
201
  const updateQuotationFields =
213
- (fieldKeys: Array<string>) => async (quotationId: string, values: any, userId?: string) => {
202
+ (fieldKeys: Array<string>) => async (quotationId: string, values: any) => {
214
203
  log(`Update quotation fields ${fieldKeys.join(', ').toUpperCase()}`, {
215
204
  quotationId,
216
- userId,
217
205
  });
218
206
 
219
207
  const modifier = {
220
208
  $set: fieldKeys.reduce((set, key) => ({ ...set, [key]: values[key] }), {}),
221
209
  };
222
210
 
223
- await mutations.update(quotationId, modifier, userId);
211
+ await mutations.update(quotationId, modifier);
224
212
 
225
213
  const selector = generateDbFilterById(quotationId);
226
214
  const quotation = await Quotations.findOne(selector, {});
@@ -236,6 +224,12 @@ export const configureQuotationsModule = async ({
236
224
  const quotationCount = await Quotations.countDocuments(buildFindSelector(query));
237
225
  return quotationCount;
238
226
  },
227
+ openQuotationWithProduct: async ({ productId }) => {
228
+ const selector: Query = { productId };
229
+ selector.status = { $in: [QuotationStatus.REQUESTED, QuotationStatus.PROPOSED] };
230
+
231
+ return Quotations.findOne(selector);
232
+ },
239
233
 
240
234
  findQuotation: async ({ quotationId }, options) => {
241
235
  const selector = generateDbFilterById(quotationId);
@@ -243,7 +237,7 @@ export const configureQuotationsModule = async ({
243
237
  },
244
238
 
245
239
  findQuotations: async ({ limit, offset, sort, ...query }, options) => {
246
- const defaultSortOption: Array<SortOption> = [{ key: 'created', value: SortDirection.DESC }];
240
+ const defaultSortOption: Array<SortOption> = [{ key: 'created', value: SortDirection.ASC }];
247
241
  const quotations = Quotations.find(buildFindSelector(query), {
248
242
  limit,
249
243
  skip: offset,
@@ -268,112 +262,91 @@ export const configureQuotationsModule = async ({
268
262
  },
269
263
 
270
264
  // Processing
271
- fullfillQuotation: async (quotationId, info, requestContext) => {
265
+ fullfillQuotation: async (quotationId, info, unchainedAPI) => {
272
266
  const selector = generateDbFilterById(quotationId);
273
267
  const quotation = await Quotations.findOne(selector, {});
274
268
 
275
269
  if (quotation.status === QuotationStatus.FULLFILLED) return quotation;
276
270
 
277
- let updatedQuotation = await updateStatus(
278
- quotation._id,
279
- {
280
- status: QuotationStatus.FULLFILLED,
281
- info: JSON.stringify(info),
282
- },
283
- requestContext.userId,
284
- );
271
+ let updatedQuotation = await updateStatus(quotation._id, {
272
+ status: QuotationStatus.FULLFILLED,
273
+ info: JSON.stringify(info),
274
+ });
285
275
 
286
- updatedQuotation = await processQuotation(updatedQuotation, {}, requestContext);
276
+ updatedQuotation = await processQuotation(updatedQuotation, {}, unchainedAPI);
287
277
 
288
- return sendStatusToCustomer(updatedQuotation, requestContext);
278
+ return sendStatusToCustomer(updatedQuotation, unchainedAPI);
289
279
  },
290
280
 
291
- proposeQuotation: async (quotation, { quotationContext }, requestContext) => {
281
+ proposeQuotation: async (quotation, { quotationContext }, unchainedAPI) => {
292
282
  if (quotation.status !== QuotationStatus.PROCESSING) return quotation;
293
283
 
294
- let updatedQuotation = await updateStatus(
295
- quotation._id,
296
- {
297
- status: QuotationStatus.PROPOSED,
298
- info: 'proposed manually',
299
- },
300
- requestContext.userId,
301
- );
284
+ let updatedQuotation = await updateStatus(quotation._id, {
285
+ status: QuotationStatus.PROPOSED,
286
+ info: 'proposed manually',
287
+ });
302
288
 
303
- updatedQuotation = await processQuotation(updatedQuotation, { quotationContext }, requestContext);
289
+ updatedQuotation = await processQuotation(updatedQuotation, { quotationContext }, unchainedAPI);
304
290
 
305
- return sendStatusToCustomer(updatedQuotation, requestContext);
291
+ return sendStatusToCustomer(updatedQuotation, unchainedAPI);
306
292
  },
307
293
 
308
- rejectQuotation: async (quotation, { quotationContext }, requestContext) => {
294
+ rejectQuotation: async (quotation, { quotationContext }, unchainedAPI) => {
309
295
  if (quotation.status === QuotationStatus.FULLFILLED) return quotation;
310
296
 
311
- let updatedQuotation = await updateStatus(
312
- quotation._id,
313
- {
314
- status: QuotationStatus.REJECTED,
315
- info: 'rejected manually',
316
- },
317
- requestContext.userId,
318
- );
297
+ let updatedQuotation = await updateStatus(quotation._id, {
298
+ status: QuotationStatus.REJECTED,
299
+ info: 'rejected manually',
300
+ });
319
301
 
320
- updatedQuotation = await processQuotation(updatedQuotation, { quotationContext }, requestContext);
302
+ updatedQuotation = await processQuotation(updatedQuotation, { quotationContext }, unchainedAPI);
321
303
 
322
- return sendStatusToCustomer(updatedQuotation, requestContext);
304
+ return sendStatusToCustomer(updatedQuotation, unchainedAPI);
323
305
  },
324
306
 
325
- verifyQuotation: async (quotation, { quotationContext }, requestContext) => {
307
+ verifyQuotation: async (quotation, { quotationContext }, unchainedAPI) => {
326
308
  if (quotation.status !== QuotationStatus.REQUESTED) return quotation;
327
309
 
328
- let updatedQuotation = await updateStatus(
329
- quotation._id,
330
- {
331
- status: QuotationStatus.PROCESSING,
332
- info: 'verified elligibility manually',
333
- },
334
- requestContext.userId,
335
- );
310
+ let updatedQuotation = await updateStatus(quotation._id, {
311
+ status: QuotationStatus.PROCESSING,
312
+ info: 'verified elligibility manually',
313
+ });
336
314
 
337
- updatedQuotation = await processQuotation(updatedQuotation, { quotationContext }, requestContext);
315
+ updatedQuotation = await processQuotation(updatedQuotation, { quotationContext }, unchainedAPI);
338
316
 
339
- return sendStatusToCustomer(updatedQuotation, requestContext);
317
+ return sendStatusToCustomer(updatedQuotation, unchainedAPI);
340
318
  },
341
319
 
342
- transformItemConfiguration: async (quotation, configuration, requestContext) => {
343
- const director = await QuotationDirector.actions({ quotation }, requestContext);
320
+ transformItemConfiguration: async (quotation, configuration, unchainedAPI) => {
321
+ const director = await QuotationDirector.actions({ quotation }, unchainedAPI);
344
322
  return director.transformItemConfiguration(configuration);
345
323
  },
346
324
 
347
325
  // Mutations
348
- create: async ({ countryCode, ...quotationData }, requestContext) => {
349
- const { services, userId } = requestContext;
350
-
351
- log('Create Quotation', { userId });
326
+ create: async ({ countryCode, ...quotationData }, unchainedAPI) => {
327
+ const { services } = unchainedAPI;
352
328
 
353
329
  const currency = await services.countries.resolveDefaultCurrencyCode(
354
330
  {
355
331
  isoCode: countryCode,
356
332
  },
357
- requestContext,
333
+ unchainedAPI,
358
334
  );
359
335
 
360
- const quotationId = await mutations.create(
361
- {
362
- ...quotationData,
363
- configuration: quotationData.configuration || [],
364
- countryCode,
365
- currency,
366
- log: [],
367
- status: QuotationStatus.REQUESTED,
368
- },
369
- userId,
370
- );
336
+ const quotationId = await mutations.create({
337
+ ...quotationData,
338
+ configuration: quotationData.configuration || [],
339
+ countryCode,
340
+ currency,
341
+ log: [],
342
+ status: QuotationStatus.REQUESTED,
343
+ });
371
344
 
372
345
  const newQuotation = await Quotations.findOne(generateDbFilterById(quotationId), {});
373
346
 
374
- let quotation = await processQuotation(newQuotation, {}, requestContext);
347
+ let quotation = await processQuotation(newQuotation, {}, unchainedAPI);
375
348
 
376
- quotation = await sendStatusToCustomer(quotation, requestContext);
349
+ quotation = await sendStatusToCustomer(quotation, unchainedAPI);
377
350
 
378
351
  await emit('QUOTATION_REQUEST_CREATE', { quotation });
379
352
 
@@ -1,73 +1,21 @@
1
- import { Context } from '@unchainedshop/types/api';
2
- import { QuotationsModule } from '@unchainedshop/types/quotations';
3
- import { UsersModule } from '@unchainedshop/types/user';
4
- import { assert } from 'chai';
5
- import { configureQuotationsModule } from '@unchainedshop/core-quotations';
6
- import { configureUsersModule } from '@unchainedshop/core-users';
7
- import { initDb } from '@unchainedshop/mongodb';
8
- import '../plugins/manual';
1
+ import {buildFindSelector} from '../src/module/configureQuotationsModule'
9
2
 
10
- describe('Test exports', () => {
11
- const context: {
12
- modules: { quotations: QuotationsModule; users: UsersModule };
13
- services: { countries: { resolveDefaultCurrencyCode: () => string } };
14
- userId: string;
15
- } = {
16
- modules: {
17
- quotations: null,
18
- users: null,
19
- },
20
- services: {
21
- countries: {
22
- resolveDefaultCurrencyCode: () => 'CHF',
23
- },
24
- },
25
- userId: 'Test-User-1234',
26
- };
27
-
28
- before(async () => {
29
- const db = await initDb();
30
- const quotationsModule = await configureQuotationsModule({ db }).catch(
31
- (error) => {
32
- console.error(error);
33
- throw error;
34
- }
35
- );
36
-
37
- const usersModules = await configureUsersModule({ db }).catch((error) => {
38
- console.error(error);
39
- throw error;
3
+ describe('Quotation', () => {
4
+ describe("buildFindSelector", () => {
5
+ it('Return correct filter object when passed no argument', async () => {
6
+ expect(buildFindSelector({})).toEqual({})
40
7
  });
41
8
 
42
- context.modules.quotations = quotationsModule;
43
- context.modules.users = usersModules;
44
- });
45
-
46
- it('Insert quotation', async () => {
47
- let quotation = await context.modules.quotations.create(
48
- {
49
- countryCode: 'CH',
50
- productId: 'Product-123',
51
- userId: 'Test-User-1',
52
- },
53
- context as Context
54
- );
55
-
56
- assert.ok(quotation);
57
- const quotationId = quotation._id;
58
- quotation = await context.modules.quotations.findQuotation({
59
- quotationId,
9
+ it('Return correct filter object when passed queryString and userId', async () => {
10
+ expect(buildFindSelector({queryString: "hello world", userId: "admin-id"})).toEqual({ userId: 'admin-id', '$text': { '$search': 'hello world' } })
60
11
  });
61
12
 
62
- assert.ok(quotation);
63
-
64
- await context.modules.quotations.updateProposal(
65
- quotationId,
66
- {
67
- price: 1000,
68
- meta: { something: 'Test' },
69
- },
70
- context.userId
71
- );
72
- });
13
+ it('Return correct filter object when passed userId', async () => {
14
+ expect(buildFindSelector({ userId: "admin-id"})).toEqual({ userId: 'admin-id' })
15
+ });
16
+ it('Return correct filter object when passed queryString', async () => {
17
+ expect(buildFindSelector({queryString: "hello world"})).toEqual({ '$text': { '$search': 'hello world' } })
18
+ });
19
+ })
20
+
73
21
  });