gemcap-be-common 1.3.87 → 1.3.89
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/models/Prospect.model.d.ts +36 -36
- package/models/Prospect.model.js +18 -18
- package/models/Prospect.model.ts +50 -50
- package/models/ProspectFile.model.d.ts +10 -3
- package/models/ProspectFile.model.js +9 -3
- package/models/ProspectFile.model.ts +12 -4
- package/models/_models.js +1 -1
- package/models/_models.ts +1 -1
- package/package.json +1 -1
- package/services/crm-prospects.service.js +5 -5
- package/services/crm-prospects.service.ts +7 -7
- package/tsconfig.tsbuildinfo +1 -1
- /package/models/{CRMProspectExternalUpdate.model.d.ts → ProspectExternalUpdate.model.d.ts} +0 -0
- /package/models/{CRMProspectExternalUpdate.model.js → ProspectExternalUpdate.model.js} +0 -0
- /package/models/{CRMProspectExternalUpdate.model.ts → ProspectExternalUpdate.model.ts} +0 -0
- /package/models/{CRMProspectInternalUpdate.model.d.ts → ProspectInternalUpdate.model.d.ts} +0 -0
- /package/models/{CRMProspectInternalUpdate.model.js → ProspectInternalUpdate.model.js} +0 -0
- /package/models/{CRMProspectInternalUpdate.model.ts → ProspectInternalUpdate.model.ts} +0 -0
- /package/models/{CRMProspectSharepoint.model.d.ts → ProspectSharepoint.model.d.ts} +0 -0
- /package/models/{CRMProspectSharepoint.model.js → ProspectSharepoint.model.js} +0 -0
- /package/models/{CRMProspectSharepoint.model.ts → ProspectSharepoint.model.ts} +0 -0
|
@@ -56,26 +56,26 @@ export declare enum EProspectDeclineReason {
|
|
|
56
56
|
DATA_QUALITY = "DATA_QUALITY",
|
|
57
57
|
DID_NOT_HEAR_BACK = "DID_NOT_HEAR_BACK"
|
|
58
58
|
}
|
|
59
|
-
interface
|
|
59
|
+
interface IProspectProduct {
|
|
60
60
|
commitment: number;
|
|
61
61
|
expected: number;
|
|
62
62
|
maturity: number;
|
|
63
63
|
}
|
|
64
|
-
export interface
|
|
64
|
+
export interface IProspectBase {
|
|
65
65
|
isDeclined: boolean;
|
|
66
66
|
name: string;
|
|
67
67
|
industryId: mongoose.Types.ObjectId;
|
|
68
68
|
status: EProspectStatus;
|
|
69
|
-
revolver:
|
|
70
|
-
term:
|
|
69
|
+
revolver: IProspectProduct;
|
|
70
|
+
term: IProspectProduct;
|
|
71
71
|
}
|
|
72
|
-
export interface
|
|
72
|
+
export interface IProspectInfoRow {
|
|
73
73
|
_id: string;
|
|
74
74
|
name: string;
|
|
75
75
|
value: string;
|
|
76
76
|
extraValue?: string;
|
|
77
77
|
}
|
|
78
|
-
export interface
|
|
78
|
+
export interface IProspectInfoStageOne {
|
|
79
79
|
companyLegalName: string;
|
|
80
80
|
companyLegalAddress: string;
|
|
81
81
|
companyCorrespondenceAddress: string;
|
|
@@ -85,7 +85,7 @@ export interface ICRMProspectInfoStageOne {
|
|
|
85
85
|
[ExternalProspectStageOneTables.litigation]: unknown[];
|
|
86
86
|
[ExternalProspectStageOneTables.detailsOfCurrentDebt]: unknown[];
|
|
87
87
|
}
|
|
88
|
-
export interface
|
|
88
|
+
export interface IProspectInfoStageTwo {
|
|
89
89
|
[ExternalProspectStageTwoTables.listOfShareholders]: unknown[];
|
|
90
90
|
[ExternalProspectStageTwoTables.listOfOfficers]: unknown[];
|
|
91
91
|
[ExternalProspectStageTwoTables.listOfManagers]: unknown[];
|
|
@@ -104,14 +104,14 @@ export interface ICRMProspectInfoStageTwo {
|
|
|
104
104
|
[ExternalProspectStageTwoTables.inventoryInformation]: unknown[];
|
|
105
105
|
[ExternalProspectStageTwoTables.equipment]: unknown[];
|
|
106
106
|
}
|
|
107
|
-
export interface
|
|
108
|
-
stageOne:
|
|
109
|
-
stageTwo:
|
|
107
|
+
export interface IProspectExternalInfo {
|
|
108
|
+
stageOne: IProspectInfoStageOne;
|
|
109
|
+
stageTwo: IProspectInfoStageTwo;
|
|
110
110
|
}
|
|
111
|
-
export interface
|
|
111
|
+
export interface IProspectExternalNew {
|
|
112
112
|
isLocked: boolean;
|
|
113
113
|
lastSentDate: Date;
|
|
114
|
-
info:
|
|
114
|
+
info: IProspectExternalInfo;
|
|
115
115
|
}
|
|
116
116
|
export declare enum EProspectFileGroups {
|
|
117
117
|
borrowingBase = "borrowingBase",
|
|
@@ -144,27 +144,27 @@ export declare const prospectFileGroupsMap: {
|
|
|
144
144
|
};
|
|
145
145
|
export declare const NO_ROW_ID = "__no_row__";
|
|
146
146
|
export declare const initialFileGroups: () => {};
|
|
147
|
-
export declare const externalProspectInitialInfo: () =>
|
|
148
|
-
export interface
|
|
147
|
+
export declare const externalProspectInitialInfo: () => IProspectExternalNew;
|
|
148
|
+
export interface IProspectFile {
|
|
149
149
|
fileId: string;
|
|
150
150
|
filename: string;
|
|
151
151
|
uploadedAt: Date;
|
|
152
152
|
sharepointId?: string;
|
|
153
153
|
sharepointWebUrl?: string;
|
|
154
154
|
}
|
|
155
|
-
export type
|
|
155
|
+
export type TProspectFiles = {
|
|
156
156
|
[K in typeof prospectFileGroups[number]]: {
|
|
157
|
-
[rowId: string]:
|
|
157
|
+
[rowId: string]: IProspectFile[];
|
|
158
158
|
};
|
|
159
159
|
};
|
|
160
|
-
export type
|
|
161
|
-
export interface
|
|
162
|
-
files:
|
|
163
|
-
auditorFiles:
|
|
164
|
-
auditorSharedFiles:
|
|
160
|
+
export type TProspectAuditorFiles = Map<string, IProspectFile[]>;
|
|
161
|
+
export interface IProspectFiles {
|
|
162
|
+
files: TProspectFiles;
|
|
163
|
+
auditorFiles: TProspectAuditorFiles;
|
|
164
|
+
auditorSharedFiles: IProspectFile[];
|
|
165
165
|
acceptedFiles: string[];
|
|
166
166
|
}
|
|
167
|
-
export interface
|
|
167
|
+
export interface IProspect extends IProspectBase, IProspectExternalNew, IProspectFiles {
|
|
168
168
|
probability: number;
|
|
169
169
|
businessDescription: string;
|
|
170
170
|
comments: string;
|
|
@@ -199,28 +199,28 @@ export interface ICRMProspect extends ICRMProspectBase, ICRMProspectExternalNew,
|
|
|
199
199
|
underwriterIds: mongoose.Types.ObjectId[];
|
|
200
200
|
auditorIds: mongoose.Types.ObjectId[];
|
|
201
201
|
}
|
|
202
|
-
export interface
|
|
202
|
+
export interface IProspectBaseWithId extends IProspectBase {
|
|
203
203
|
_id: string;
|
|
204
204
|
}
|
|
205
|
-
export interface
|
|
205
|
+
export interface IProspectWithId extends IProspect {
|
|
206
206
|
_id: string;
|
|
207
207
|
}
|
|
208
|
-
export type
|
|
209
|
-
auditorFiles:
|
|
208
|
+
export type IProspectExternal = Pick<IProspectWithId, 'info' | 'files' | 'isLocked' | 'status' | '_id'> & {
|
|
209
|
+
auditorFiles: IProspectFile[];
|
|
210
210
|
};
|
|
211
|
-
export type
|
|
212
|
-
auditorFiles:
|
|
213
|
-
auditorSharedFiles:
|
|
211
|
+
export type IProspectExternalAuditors = Pick<IProspectWithId, 'info' | 'files' | 'isLocked'> & {
|
|
212
|
+
auditorFiles: IProspectFile[];
|
|
213
|
+
auditorSharedFiles: IProspectFile[];
|
|
214
214
|
};
|
|
215
|
-
export interface
|
|
215
|
+
export interface IProspectDoc extends IProspect, Document {
|
|
216
216
|
}
|
|
217
217
|
export declare const baseFields: string[];
|
|
218
|
-
export declare const
|
|
219
|
-
export declare const
|
|
220
|
-
export declare const
|
|
221
|
-
export type
|
|
222
|
-
export declare const
|
|
218
|
+
export declare const ProspectInfoExternalValidationSchema: Joi.ObjectSchema<any>;
|
|
219
|
+
export declare const ProspectInfoValidationSchema: Joi.ObjectSchema<any>;
|
|
220
|
+
export declare const ProspectValidationSchema: Joi.ObjectSchema<any>;
|
|
221
|
+
export type ProspectModel = Model<IProspect, object, object>;
|
|
222
|
+
export declare const ProspectSchema: mongoose.Schema<IProspect, ProspectModel, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, IProspect, mongoose.Document<unknown, {}, mongoose.FlatRecord<IProspect>> & mongoose.FlatRecord<IProspect> & {
|
|
223
223
|
_id: mongoose.Types.ObjectId;
|
|
224
224
|
}>;
|
|
225
|
-
export declare const
|
|
225
|
+
export declare const Prospect: ProspectModel;
|
|
226
226
|
export {};
|
package/models/Prospect.model.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.Prospect = exports.ProspectSchema = exports.ProspectValidationSchema = exports.ProspectInfoValidationSchema = exports.ProspectInfoExternalValidationSchema = exports.baseFields = exports.externalProspectInitialInfo = exports.initialFileGroups = exports.NO_ROW_ID = exports.prospectFileGroupsMap = exports.prospectFileGroups = exports.EProspectFileGroups = exports.EProspectDeclineReason = exports.EProspectStatusDict = exports.EProspectStatus = exports.prospectFieldsDictionary = void 0;
|
|
7
7
|
const mongoose_1 = __importDefault(require("mongoose"));
|
|
8
8
|
const joi_1 = __importDefault(require("joi"));
|
|
9
9
|
const _models_1 = require("./_models");
|
|
@@ -262,31 +262,31 @@ const externalProspectInitialInfo = () => ({
|
|
|
262
262
|
});
|
|
263
263
|
exports.externalProspectInitialInfo = externalProspectInitialInfo;
|
|
264
264
|
exports.baseFields = ['_id', 'industry', 'status', 'revolverAmount', 'termAmount', 'keyDates'];
|
|
265
|
-
const
|
|
265
|
+
const ProspectInfoRowValidationSchema = joi_1.default.object({
|
|
266
266
|
_id: joi_1.default.string().allow(exports.NO_ROW_ID),
|
|
267
267
|
name: joi_1.default.string().allow('', null),
|
|
268
268
|
value: joi_1.default.string().allow('', null),
|
|
269
269
|
extraValue: joi_1.default.string().allow('', null),
|
|
270
270
|
});
|
|
271
|
-
exports.
|
|
271
|
+
exports.ProspectInfoExternalValidationSchema = joi_1.default.object({
|
|
272
272
|
companyLegalName: joi_1.default.string().allow('', null),
|
|
273
273
|
companyLegalAddress: joi_1.default.string().allow('', null),
|
|
274
274
|
companyCorrespondenceAddress: joi_1.default.string().allow('', null),
|
|
275
275
|
DBANames: joi_1.default.string().allow('', null),
|
|
276
276
|
websiteAddress: joi_1.default.string().allow('', null),
|
|
277
277
|
businessDescription: joi_1.default.string().allow('', null),
|
|
278
|
-
listOfShareholders: joi_1.default.array().items(
|
|
279
|
-
listOfOfficers: joi_1.default.array().items(
|
|
280
|
-
listOfManagers: joi_1.default.array().items(
|
|
281
|
-
addressesOfOffices: joi_1.default.array().items(
|
|
282
|
-
addressesOfWarehouses: joi_1.default.array().items(
|
|
283
|
-
top5Customers: joi_1.default.array().items(
|
|
278
|
+
listOfShareholders: joi_1.default.array().items(ProspectInfoRowValidationSchema),
|
|
279
|
+
listOfOfficers: joi_1.default.array().items(ProspectInfoRowValidationSchema),
|
|
280
|
+
listOfManagers: joi_1.default.array().items(ProspectInfoRowValidationSchema),
|
|
281
|
+
addressesOfOffices: joi_1.default.array().items(ProspectInfoRowValidationSchema),
|
|
282
|
+
addressesOfWarehouses: joi_1.default.array().items(ProspectInfoRowValidationSchema),
|
|
283
|
+
top5Customers: joi_1.default.array().items(ProspectInfoRowValidationSchema),
|
|
284
284
|
});
|
|
285
|
-
exports.
|
|
285
|
+
exports.ProspectInfoValidationSchema = joi_1.default.object({
|
|
286
286
|
isLocked: joi_1.default.boolean().allow(null),
|
|
287
287
|
lastSentDate: joi_1.default.date().allow(null),
|
|
288
288
|
});
|
|
289
|
-
exports.
|
|
289
|
+
exports.ProspectValidationSchema = joi_1.default.object({
|
|
290
290
|
_id: joi_1.default.string(),
|
|
291
291
|
isDeclined: joi_1.default.boolean().allow(null),
|
|
292
292
|
name: joi_1.default.string().required(),
|
|
@@ -336,7 +336,7 @@ exports.CRMProspectValidationSchema = joi_1.default.object({
|
|
|
336
336
|
underwriterIds: joi_1.default.array().items(joi_1.default.string()),
|
|
337
337
|
auditorIds: joi_1.default.array().items(joi_1.default.string()),
|
|
338
338
|
acceptedFiles: joi_1.default.array().items(joi_1.default.string()).allow(null),
|
|
339
|
-
}).concat(exports.
|
|
339
|
+
}).concat(exports.ProspectInfoValidationSchema);
|
|
340
340
|
const contactSchema = new mongoose_1.default.Schema({
|
|
341
341
|
name: {
|
|
342
342
|
type: String,
|
|
@@ -364,7 +364,7 @@ const contactSchema = new mongoose_1.default.Schema({
|
|
|
364
364
|
default: '',
|
|
365
365
|
},
|
|
366
366
|
}, { _id: false });
|
|
367
|
-
const
|
|
367
|
+
const ProspectInfoSchema = {
|
|
368
368
|
isLocked: {
|
|
369
369
|
type: Boolean,
|
|
370
370
|
},
|
|
@@ -381,11 +381,11 @@ const fileDetailsSchema = new mongoose_1.default.Schema({
|
|
|
381
381
|
filename: { type: String },
|
|
382
382
|
uploadedAt: { type: Date },
|
|
383
383
|
}, { _id: false });
|
|
384
|
-
const
|
|
384
|
+
const ProspectFilesSchema = {
|
|
385
385
|
type: mongoose_1.default.Schema.Types.Mixed,
|
|
386
386
|
default: (0, exports.initialFileGroups)(),
|
|
387
387
|
};
|
|
388
|
-
exports.
|
|
388
|
+
exports.ProspectSchema = new mongoose_1.default.Schema({
|
|
389
389
|
isDeclined: {
|
|
390
390
|
type: Boolean,
|
|
391
391
|
},
|
|
@@ -491,8 +491,8 @@ exports.CRMProspectSchema = new mongoose_1.default.Schema({
|
|
|
491
491
|
type: String,
|
|
492
492
|
},
|
|
493
493
|
contacts: [contactSchema],
|
|
494
|
-
...
|
|
495
|
-
files:
|
|
494
|
+
...ProspectInfoSchema,
|
|
495
|
+
files: ProspectFilesSchema,
|
|
496
496
|
auditorSharedFiles: [fileDetailsSchema],
|
|
497
497
|
auditorFiles: {
|
|
498
498
|
type: Map,
|
|
@@ -514,4 +514,4 @@ exports.CRMProspectSchema = new mongoose_1.default.Schema({
|
|
|
514
514
|
timestamps: { createdAt: true, updatedAt: true },
|
|
515
515
|
versionKey: false,
|
|
516
516
|
});
|
|
517
|
-
exports.
|
|
517
|
+
exports.Prospect = mongoose_1.default.model(_models_1.MODEL_NAMES.CRMProspects, exports.ProspectSchema);
|
package/models/Prospect.model.ts
CHANGED
|
@@ -69,29 +69,29 @@ export enum EProspectDeclineReason {
|
|
|
69
69
|
DID_NOT_HEAR_BACK = 'DID_NOT_HEAR_BACK',
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
interface
|
|
72
|
+
interface IProspectProduct {
|
|
73
73
|
commitment: number;
|
|
74
74
|
expected: number;
|
|
75
75
|
maturity: number;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
export interface
|
|
78
|
+
export interface IProspectBase {
|
|
79
79
|
isDeclined: boolean;
|
|
80
80
|
name: string;
|
|
81
81
|
industryId: mongoose.Types.ObjectId;
|
|
82
82
|
status: EProspectStatus;
|
|
83
|
-
revolver:
|
|
84
|
-
term:
|
|
83
|
+
revolver: IProspectProduct;
|
|
84
|
+
term: IProspectProduct;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
export interface
|
|
87
|
+
export interface IProspectInfoRow {
|
|
88
88
|
_id: string;
|
|
89
89
|
name: string;
|
|
90
90
|
value: string;
|
|
91
91
|
extraValue?: string;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
export interface
|
|
94
|
+
export interface IProspectInfoStageOne {
|
|
95
95
|
companyLegalName: string;
|
|
96
96
|
companyLegalAddress: string;
|
|
97
97
|
companyCorrespondenceAddress: string;
|
|
@@ -102,7 +102,7 @@ export interface ICRMProspectInfoStageOne {
|
|
|
102
102
|
[ExternalProspectStageOneTables.detailsOfCurrentDebt]: unknown[],
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
export interface
|
|
105
|
+
export interface IProspectInfoStageTwo {
|
|
106
106
|
[ExternalProspectStageTwoTables.listOfShareholders]: unknown[];
|
|
107
107
|
[ExternalProspectStageTwoTables.listOfOfficers]: unknown[];
|
|
108
108
|
[ExternalProspectStageTwoTables.listOfManagers]: unknown[];
|
|
@@ -122,15 +122,15 @@ export interface ICRMProspectInfoStageTwo {
|
|
|
122
122
|
[ExternalProspectStageTwoTables.equipment]: unknown[],
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
export interface
|
|
126
|
-
stageOne:
|
|
127
|
-
stageTwo:
|
|
125
|
+
export interface IProspectExternalInfo {
|
|
126
|
+
stageOne: IProspectInfoStageOne;
|
|
127
|
+
stageTwo: IProspectInfoStageTwo;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
export interface
|
|
130
|
+
export interface IProspectExternalNew {
|
|
131
131
|
isLocked: boolean;
|
|
132
132
|
lastSentDate: Date;
|
|
133
|
-
info:
|
|
133
|
+
info: IProspectExternalInfo;
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
export enum EProspectFileGroups {
|
|
@@ -191,7 +191,7 @@ export const initialFileGroups = () => prospectFileGroups.reduce((acc, g) => {
|
|
|
191
191
|
return { ...acc, [g]: { [NO_ROW_ID]: [] } };
|
|
192
192
|
}, {});
|
|
193
193
|
|
|
194
|
-
export const externalProspectInitialInfo = ():
|
|
194
|
+
export const externalProspectInitialInfo = (): IProspectExternalNew => ({
|
|
195
195
|
isLocked: false,
|
|
196
196
|
lastSentDate: null,
|
|
197
197
|
info: {
|
|
@@ -329,7 +329,7 @@ export const externalProspectInitialInfo = (): ICRMProspectExternalNew => ({
|
|
|
329
329
|
},
|
|
330
330
|
});
|
|
331
331
|
|
|
332
|
-
export interface
|
|
332
|
+
export interface IProspectFile {
|
|
333
333
|
fileId: string;
|
|
334
334
|
filename: string;
|
|
335
335
|
uploadedAt: Date;
|
|
@@ -337,20 +337,20 @@ export interface ICRMProspectFile {
|
|
|
337
337
|
sharepointWebUrl?: string;
|
|
338
338
|
}
|
|
339
339
|
|
|
340
|
-
export type
|
|
341
|
-
[K in typeof prospectFileGroups[number]]: { [rowId: string]:
|
|
340
|
+
export type TProspectFiles = {
|
|
341
|
+
[K in typeof prospectFileGroups[number]]: { [rowId: string]: IProspectFile[] };
|
|
342
342
|
};
|
|
343
343
|
|
|
344
|
-
export type
|
|
344
|
+
export type TProspectAuditorFiles = Map<string, IProspectFile[]>;
|
|
345
345
|
|
|
346
|
-
export interface
|
|
347
|
-
files:
|
|
348
|
-
auditorFiles:
|
|
349
|
-
auditorSharedFiles:
|
|
346
|
+
export interface IProspectFiles {
|
|
347
|
+
files: TProspectFiles;
|
|
348
|
+
auditorFiles: TProspectAuditorFiles;
|
|
349
|
+
auditorSharedFiles: IProspectFile[];
|
|
350
350
|
acceptedFiles: string[];
|
|
351
351
|
}
|
|
352
352
|
|
|
353
|
-
export interface
|
|
353
|
+
export interface IProspect extends IProspectBase, IProspectExternalNew, IProspectFiles {
|
|
354
354
|
probability: number;
|
|
355
355
|
businessDescription: string;
|
|
356
356
|
comments: string;
|
|
@@ -386,56 +386,56 @@ export interface ICRMProspect extends ICRMProspectBase, ICRMProspectExternalNew,
|
|
|
386
386
|
auditorIds: mongoose.Types.ObjectId[];
|
|
387
387
|
}
|
|
388
388
|
|
|
389
|
-
export interface
|
|
389
|
+
export interface IProspectBaseWithId extends IProspectBase {
|
|
390
390
|
_id: string;
|
|
391
391
|
}
|
|
392
392
|
|
|
393
|
-
export interface
|
|
393
|
+
export interface IProspectWithId extends IProspect {
|
|
394
394
|
_id: string;
|
|
395
395
|
}
|
|
396
396
|
|
|
397
|
-
export type
|
|
398
|
-
Pick<
|
|
399
|
-
& { auditorFiles:
|
|
397
|
+
export type IProspectExternal =
|
|
398
|
+
Pick<IProspectWithId, 'info' | 'files' | 'isLocked' | 'status' | '_id'>
|
|
399
|
+
& { auditorFiles: IProspectFile[] }
|
|
400
400
|
|
|
401
|
-
export type
|
|
402
|
-
auditorFiles:
|
|
403
|
-
auditorSharedFiles:
|
|
401
|
+
export type IProspectExternalAuditors = Pick<IProspectWithId, 'info' | 'files' | 'isLocked'> & {
|
|
402
|
+
auditorFiles: IProspectFile[];
|
|
403
|
+
auditorSharedFiles: IProspectFile[];
|
|
404
404
|
}
|
|
405
405
|
|
|
406
|
-
export interface
|
|
406
|
+
export interface IProspectDoc extends IProspect, Document {
|
|
407
407
|
}
|
|
408
408
|
|
|
409
409
|
export const baseFields = ['_id', 'industry', 'status', 'revolverAmount', 'termAmount', 'keyDates'];
|
|
410
410
|
|
|
411
|
-
const
|
|
411
|
+
const ProspectInfoRowValidationSchema = Joi.object({
|
|
412
412
|
_id: Joi.string().allow(NO_ROW_ID),
|
|
413
413
|
name: Joi.string().allow('', null),
|
|
414
414
|
value: Joi.string().allow('', null),
|
|
415
415
|
extraValue: Joi.string().allow('', null),
|
|
416
416
|
});
|
|
417
417
|
|
|
418
|
-
export const
|
|
418
|
+
export const ProspectInfoExternalValidationSchema = Joi.object({
|
|
419
419
|
companyLegalName: Joi.string().allow('', null),
|
|
420
420
|
companyLegalAddress: Joi.string().allow('', null),
|
|
421
421
|
companyCorrespondenceAddress: Joi.string().allow('', null),
|
|
422
422
|
DBANames: Joi.string().allow('', null),
|
|
423
423
|
websiteAddress: Joi.string().allow('', null),
|
|
424
424
|
businessDescription: Joi.string().allow('', null),
|
|
425
|
-
listOfShareholders: Joi.array().items(
|
|
426
|
-
listOfOfficers: Joi.array().items(
|
|
427
|
-
listOfManagers: Joi.array().items(
|
|
428
|
-
addressesOfOffices: Joi.array().items(
|
|
429
|
-
addressesOfWarehouses: Joi.array().items(
|
|
430
|
-
top5Customers: Joi.array().items(
|
|
425
|
+
listOfShareholders: Joi.array().items(ProspectInfoRowValidationSchema),
|
|
426
|
+
listOfOfficers: Joi.array().items(ProspectInfoRowValidationSchema),
|
|
427
|
+
listOfManagers: Joi.array().items(ProspectInfoRowValidationSchema),
|
|
428
|
+
addressesOfOffices: Joi.array().items(ProspectInfoRowValidationSchema),
|
|
429
|
+
addressesOfWarehouses: Joi.array().items(ProspectInfoRowValidationSchema),
|
|
430
|
+
top5Customers: Joi.array().items(ProspectInfoRowValidationSchema),
|
|
431
431
|
});
|
|
432
432
|
|
|
433
|
-
export const
|
|
433
|
+
export const ProspectInfoValidationSchema = Joi.object({
|
|
434
434
|
isLocked: Joi.boolean().allow(null),
|
|
435
435
|
lastSentDate: Joi.date().allow(null),
|
|
436
436
|
});
|
|
437
437
|
|
|
438
|
-
export const
|
|
438
|
+
export const ProspectValidationSchema = Joi.object({
|
|
439
439
|
_id: Joi.string(),
|
|
440
440
|
isDeclined: Joi.boolean().allow(null),
|
|
441
441
|
name: Joi.string().required(),
|
|
@@ -485,9 +485,9 @@ export const CRMProspectValidationSchema = Joi.object({
|
|
|
485
485
|
underwriterIds: Joi.array().items(Joi.string()),
|
|
486
486
|
auditorIds: Joi.array().items(Joi.string()),
|
|
487
487
|
acceptedFiles: Joi.array().items(Joi.string()).allow(null),
|
|
488
|
-
}).concat(
|
|
488
|
+
}).concat(ProspectInfoValidationSchema);
|
|
489
489
|
|
|
490
|
-
export type
|
|
490
|
+
export type ProspectModel = Model<IProspect, object, object>;
|
|
491
491
|
|
|
492
492
|
const contactSchema = new mongoose.Schema({
|
|
493
493
|
name: {
|
|
@@ -518,7 +518,7 @@ const contactSchema = new mongoose.Schema({
|
|
|
518
518
|
}, { _id: false });
|
|
519
519
|
|
|
520
520
|
|
|
521
|
-
const
|
|
521
|
+
const ProspectInfoSchema = {
|
|
522
522
|
isLocked: {
|
|
523
523
|
type: Boolean,
|
|
524
524
|
},
|
|
@@ -531,18 +531,18 @@ const CRMProspectInfoSchema = {
|
|
|
531
531
|
},
|
|
532
532
|
};
|
|
533
533
|
|
|
534
|
-
const fileDetailsSchema = new mongoose.Schema<
|
|
534
|
+
const fileDetailsSchema = new mongoose.Schema<IProspectFile>({
|
|
535
535
|
fileId: { type: String },
|
|
536
536
|
filename: { type: String },
|
|
537
537
|
uploadedAt: { type: Date },
|
|
538
538
|
}, { _id: false });
|
|
539
539
|
|
|
540
|
-
const
|
|
540
|
+
const ProspectFilesSchema = {
|
|
541
541
|
type: mongoose.Schema.Types.Mixed,
|
|
542
542
|
default: initialFileGroups(),
|
|
543
543
|
};
|
|
544
544
|
|
|
545
|
-
export const
|
|
545
|
+
export const ProspectSchema = new mongoose.Schema<IProspect, ProspectModel>(
|
|
546
546
|
{
|
|
547
547
|
isDeclined: {
|
|
548
548
|
type: Boolean,
|
|
@@ -649,8 +649,8 @@ export const CRMProspectSchema = new mongoose.Schema<ICRMProspect, CRMProspectMo
|
|
|
649
649
|
type: String,
|
|
650
650
|
},
|
|
651
651
|
contacts: [contactSchema],
|
|
652
|
-
...
|
|
653
|
-
files:
|
|
652
|
+
...ProspectInfoSchema,
|
|
653
|
+
files: ProspectFilesSchema,
|
|
654
654
|
auditorSharedFiles: [fileDetailsSchema],
|
|
655
655
|
auditorFiles: {
|
|
656
656
|
type: Map,
|
|
@@ -675,4 +675,4 @@ export const CRMProspectSchema = new mongoose.Schema<ICRMProspect, CRMProspectMo
|
|
|
675
675
|
},
|
|
676
676
|
);
|
|
677
677
|
|
|
678
|
-
export const
|
|
678
|
+
export const Prospect = mongoose.model<IProspect, ProspectModel>(MODEL_NAMES.CRMProspects, ProspectSchema);
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
/// <reference types="mongoose/types/virtuals" />
|
|
24
24
|
/// <reference types="mongoose/types/inferschematype" />
|
|
25
25
|
import mongoose from 'mongoose';
|
|
26
|
-
export interface
|
|
26
|
+
export interface IProspectFile {
|
|
27
27
|
prospectId: mongoose.Types.ObjectId;
|
|
28
28
|
group?: string;
|
|
29
29
|
rowId?: string;
|
|
@@ -32,10 +32,17 @@ export interface ICRMProspectFile {
|
|
|
32
32
|
filename: string;
|
|
33
33
|
uploadedAt: Date;
|
|
34
34
|
sharepointId?: string;
|
|
35
|
+
sharepointFolderId?: string;
|
|
36
|
+
sharepointDriveId?: string;
|
|
35
37
|
sharepointWebUrl?: string;
|
|
36
38
|
}
|
|
37
|
-
export interface
|
|
39
|
+
export interface IProspectFileDoc extends IProspectFile, mongoose.Document {
|
|
38
40
|
}
|
|
39
|
-
export declare const
|
|
41
|
+
export declare const ProspectFileSchema: mongoose.Schema<IProspectFileDoc, mongoose.Model<IProspectFileDoc, any, any, any, mongoose.Document<unknown, any, IProspectFileDoc> & IProspectFileDoc & {
|
|
42
|
+
_id: mongoose.Types.ObjectId;
|
|
43
|
+
}, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, IProspectFileDoc, mongoose.Document<unknown, {}, mongoose.FlatRecord<IProspectFileDoc>> & mongoose.FlatRecord<IProspectFileDoc> & {
|
|
44
|
+
_id: mongoose.Types.ObjectId;
|
|
45
|
+
}>;
|
|
46
|
+
export declare const ProspectFile: mongoose.Model<IProspectFileDoc, {}, {}, {}, mongoose.Document<unknown, {}, IProspectFileDoc> & IProspectFileDoc & {
|
|
40
47
|
_id: mongoose.Types.ObjectId;
|
|
41
48
|
}, any>;
|
|
@@ -3,10 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.ProspectFile = exports.ProspectFileSchema = void 0;
|
|
7
7
|
const mongoose_1 = __importDefault(require("mongoose"));
|
|
8
8
|
const _models_1 = require("./_models");
|
|
9
|
-
|
|
9
|
+
exports.ProspectFileSchema = new mongoose_1.default.Schema({
|
|
10
10
|
prospectId: {
|
|
11
11
|
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
12
12
|
ref: _models_1.MODEL_NAMES.CRMProspects,
|
|
@@ -39,6 +39,12 @@ const CRMProspectFileSchema = new mongoose_1.default.Schema({
|
|
|
39
39
|
sharepointId: {
|
|
40
40
|
type: String,
|
|
41
41
|
},
|
|
42
|
+
sharepointFolderId: {
|
|
43
|
+
type: String,
|
|
44
|
+
},
|
|
45
|
+
sharepointDriveId: {
|
|
46
|
+
type: String,
|
|
47
|
+
},
|
|
42
48
|
sharepointWebUrl: {
|
|
43
49
|
type: String,
|
|
44
50
|
},
|
|
@@ -46,4 +52,4 @@ const CRMProspectFileSchema = new mongoose_1.default.Schema({
|
|
|
46
52
|
timestamps: true,
|
|
47
53
|
versionKey: false,
|
|
48
54
|
});
|
|
49
|
-
exports.
|
|
55
|
+
exports.ProspectFile = mongoose_1.default.model(_models_1.MODEL_NAMES.CRMProspectFiles, exports.ProspectFileSchema);
|
|
@@ -2,7 +2,7 @@ import mongoose from 'mongoose';
|
|
|
2
2
|
|
|
3
3
|
import { MODEL_NAMES } from './_models';
|
|
4
4
|
|
|
5
|
-
export interface
|
|
5
|
+
export interface IProspectFile {
|
|
6
6
|
prospectId: mongoose.Types.ObjectId;
|
|
7
7
|
group?: string;
|
|
8
8
|
rowId?: string;
|
|
@@ -11,13 +11,15 @@ export interface ICRMProspectFile {
|
|
|
11
11
|
filename: string;
|
|
12
12
|
uploadedAt: Date;
|
|
13
13
|
sharepointId?: string;
|
|
14
|
+
sharepointFolderId?: string;
|
|
15
|
+
sharepointDriveId?: string;
|
|
14
16
|
sharepointWebUrl?: string;
|
|
15
17
|
}
|
|
16
18
|
|
|
17
|
-
export interface
|
|
19
|
+
export interface IProspectFileDoc extends IProspectFile, mongoose.Document {
|
|
18
20
|
}
|
|
19
21
|
|
|
20
|
-
const
|
|
22
|
+
export const ProspectFileSchema = new mongoose.Schema<IProspectFileDoc>({
|
|
21
23
|
prospectId: {
|
|
22
24
|
type: mongoose.Schema.Types.ObjectId,
|
|
23
25
|
ref: MODEL_NAMES.CRMProspects,
|
|
@@ -50,6 +52,12 @@ const CRMProspectFileSchema = new mongoose.Schema<ICRMProspectFileDoc>({
|
|
|
50
52
|
sharepointId: {
|
|
51
53
|
type: String,
|
|
52
54
|
},
|
|
55
|
+
sharepointFolderId: {
|
|
56
|
+
type: String,
|
|
57
|
+
},
|
|
58
|
+
sharepointDriveId: {
|
|
59
|
+
type: String,
|
|
60
|
+
},
|
|
53
61
|
sharepointWebUrl: {
|
|
54
62
|
type: String,
|
|
55
63
|
},
|
|
@@ -58,4 +66,4 @@ const CRMProspectFileSchema = new mongoose.Schema<ICRMProspectFileDoc>({
|
|
|
58
66
|
versionKey: false,
|
|
59
67
|
});
|
|
60
68
|
|
|
61
|
-
export const
|
|
69
|
+
export const ProspectFile = mongoose.model<IProspectFileDoc>(MODEL_NAMES.CRMProspectFiles, ProspectFileSchema);
|
package/models/_models.js
CHANGED
|
@@ -42,7 +42,7 @@ exports.MODEL_NAMES = {
|
|
|
42
42
|
complianceItemGroups: 'complianceItemGroups',
|
|
43
43
|
CRMAuditors: 'auditors',
|
|
44
44
|
CRMProspects: 'crm_prospects',
|
|
45
|
-
CRMProspectFiles: '
|
|
45
|
+
CRMProspectFiles: 'crm_prospect_files',
|
|
46
46
|
CRMProspectIndustries: 'crm_prospect_industries',
|
|
47
47
|
CRMProspectSources: 'crm_prospect_sources',
|
|
48
48
|
CRMProspectExternalUpdates: 'crm_prospect_external_updates',
|
package/models/_models.ts
CHANGED
|
@@ -39,7 +39,7 @@ export const MODEL_NAMES = {
|
|
|
39
39
|
complianceItemGroups: 'complianceItemGroups',
|
|
40
40
|
CRMAuditors: 'auditors',
|
|
41
41
|
CRMProspects: 'crm_prospects',
|
|
42
|
-
CRMProspectFiles: '
|
|
42
|
+
CRMProspectFiles: 'crm_prospect_files',
|
|
43
43
|
CRMProspectIndustries: 'crm_prospect_industries',
|
|
44
44
|
CRMProspectSources: 'crm_prospect_sources',
|
|
45
45
|
CRMProspectExternalUpdates: 'crm_prospect_external_updates',
|
package/package.json
CHANGED
|
@@ -9,17 +9,17 @@ const Prospect_model_1 = require("../models/Prospect.model");
|
|
|
9
9
|
const ProspectFile_model_1 = require("../models/ProspectFile.model");
|
|
10
10
|
class CrmProspectsService {
|
|
11
11
|
async resetFiles() {
|
|
12
|
-
await ProspectFile_model_1.
|
|
12
|
+
await ProspectFile_model_1.ProspectFile.deleteMany({});
|
|
13
13
|
await this.migrateFiles();
|
|
14
14
|
}
|
|
15
15
|
async migrateFiles() {
|
|
16
|
-
const prospects = await Prospect_model_1.
|
|
16
|
+
const prospects = await Prospect_model_1.Prospect.find().lean();
|
|
17
17
|
for (const prospect of prospects) {
|
|
18
18
|
const { _id: prospectId, files, auditorFiles, auditorSharedFiles } = prospect;
|
|
19
19
|
for (const [group, rowMap] of Object.entries(files || {})) {
|
|
20
20
|
for (const [rowId, fileArray] of Object.entries(rowMap)) {
|
|
21
21
|
for (const file of fileArray) {
|
|
22
|
-
await ProspectFile_model_1.
|
|
22
|
+
await ProspectFile_model_1.ProspectFile.create({
|
|
23
23
|
prospectId,
|
|
24
24
|
group,
|
|
25
25
|
rowId,
|
|
@@ -33,7 +33,7 @@ class CrmProspectsService {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
for (const file of auditorSharedFiles) {
|
|
36
|
-
await ProspectFile_model_1.
|
|
36
|
+
await ProspectFile_model_1.ProspectFile.create({
|
|
37
37
|
prospectId,
|
|
38
38
|
fileId: file.fileId,
|
|
39
39
|
filename: file.filename,
|
|
@@ -44,7 +44,7 @@ class CrmProspectsService {
|
|
|
44
44
|
}
|
|
45
45
|
for (const [auditorId, fileArray] of Object.entries(auditorFiles)) {
|
|
46
46
|
for (const file of fileArray) {
|
|
47
|
-
await ProspectFile_model_1.
|
|
47
|
+
await ProspectFile_model_1.ProspectFile.create({
|
|
48
48
|
prospectId,
|
|
49
49
|
auditorId: new mongoose_1.default.Types.ObjectId(auditorId),
|
|
50
50
|
fileId: file.fileId,
|