rez_core 5.0.72 → 5.0.74

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rez_core",
3
- "version": "5.0.72",
3
+ "version": "5.0.74",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "private": false,
@@ -47,6 +47,7 @@
47
47
  "cron-parser": "^5.4.0",
48
48
  "crypto": "^1.0.1",
49
49
  "crypto-js": "^4.2.0",
50
+ "dayjs": "^1.11.19",
50
51
  "dotenv": "^16.4.7",
51
52
  "exceljs": "^4.4.0",
52
53
  "firebase-admin": "^13.5.0",
@@ -10,6 +10,7 @@ import { EntityRelationService } from 'src/module/meta/service/entity-relation.s
10
10
  import { ResolverService } from 'src/module/meta/service/resolver.service';
11
11
  import { LoggingService } from 'src/utils/service/loggingUtil.service';
12
12
  import { ConfigService } from '@nestjs/config';
13
+ import dayjs from 'dayjs';
13
14
 
14
15
  @Injectable()
15
16
  export class FilterService {
@@ -913,6 +914,29 @@ export class FilterService {
913
914
  return d.toISOString().split('T')[0];
914
915
  };
915
916
 
917
+ // FOR BUSINESS DATES
918
+ function moveBusinessDays(date: Date, days: number, dir: number): Date {
919
+ let result = new Date(date);
920
+
921
+ while (days > 0) {
922
+ result.setDate(result.getDate() + dir);
923
+
924
+ const day = result.getDay(); // 0 = Sun, 6 = Sat
925
+
926
+ if (day !== 0 && day !== 6) {
927
+ days--;
928
+ }
929
+ }
930
+
931
+ return result;
932
+ }
933
+
934
+ /** Return true if date is a weekday */
935
+ function isBusinessDay(date: Date): boolean {
936
+ const d = date.getDay();
937
+ return d !== 0 && d !== 6;
938
+ }
939
+
916
940
  switch (op) {
917
941
  // ============================================
918
942
  // BASIC COMPARISONS
@@ -1094,40 +1118,76 @@ export class FilterService {
1094
1118
  const targetDate = subtractBusinessDays(numVal);
1095
1119
 
1096
1120
  return {
1097
- query: `${dateColumn} <= :${key}`,
1121
+ query: `${dateColumn} < :${key} AND EXTRACT(DOW FROM ${dateColumn}) NOT IN (0, 6)`,
1098
1122
  params: { [key]: targetDate },
1099
1123
  };
1100
1124
  }
1101
1125
 
1102
1126
  case 'is_after_business_days': {
1103
- if (isNaN(numVal)) {
1104
- throw new BadRequestException(
1105
- 'Value must be a number for is_after_business_days',
1106
- );
1107
- }
1127
+ const days = Number(val);
1108
1128
 
1109
- const businessAfter = (() => {
1110
- let d = new Date();
1111
- let count = 0;
1129
+ // Start from today
1130
+ const targetDate = dayjs().startOf('day');
1131
+ let count = 0;
1112
1132
 
1113
- while (count < numVal) {
1114
- d.setDate(d.getDate() + 1);
1115
- const day = d.getDay(); // 0=Sun, 6=Sat
1116
- if (day !== 0 && day !== 6) count++;
1117
- }
1118
-
1119
- // DB shift -1 day
1120
- d.setDate(d.getDate() - 1);
1133
+ while (count < days) {
1134
+ targetDate.add(1, 'day'); // move forward
1135
+ const day = targetDate.day(); // 0 = Sun, 6 = Sat
1121
1136
 
1122
- return d.toISOString().split('T')[0];
1123
- })();
1137
+ if (day !== 0 && day !== 6) {
1138
+ // skip weekends
1139
+ count++;
1140
+ }
1141
+ }
1124
1142
 
1125
1143
  return {
1126
- query: `${dateColumn} > :${key}`,
1127
- params: { [key]: businessAfter },
1144
+ query: `DATE(e.${attr}) > :${key}`,
1145
+ params: { [key]: targetDate.format('YYYY-MM-DD') },
1128
1146
  };
1129
1147
  }
1130
1148
 
1149
+ // case 'is_before_business_days': {
1150
+ // if (isNaN(numVal)) {
1151
+ // throw new BadRequestException('Value must be a number');
1152
+ // }
1153
+
1154
+ // const targetDate = subtractBusinessDays(numVal);
1155
+
1156
+ // return {
1157
+ // query: `${dateColumn} <= :${key}`,
1158
+ // params: { [key]: targetDate },
1159
+ // };
1160
+ // }
1161
+
1162
+ // case 'is_after_business_days': {
1163
+ // if (isNaN(numVal)) {
1164
+ // throw new BadRequestException(
1165
+ // 'Value must be a number for is_after_business_days',
1166
+ // );
1167
+ // }
1168
+
1169
+ // const businessAfter = (() => {
1170
+ // let d = new Date();
1171
+ // let count = 0;
1172
+
1173
+ // while (count < numVal) {
1174
+ // d.setDate(d.getDate() + 1);
1175
+ // const day = d.getDay(); // 0=Sun, 6=Sat
1176
+ // if (day !== 0 && day !== 6) count++;
1177
+ // }
1178
+
1179
+ // // DB shift -1 day
1180
+ // d.setDate(d.getDate() - 1);
1181
+
1182
+ // return d.toISOString().split('T')[0];
1183
+ // })();
1184
+
1185
+ // return {
1186
+ // query: `${dateColumn} > :${key}`,
1187
+ // params: { [key]: businessAfter },
1188
+ // };
1189
+ // }
1190
+
1131
1191
  // ============================================
1132
1192
  // IN LAST DAY (range: today to N days before)
1133
1193
  // ============================================
@@ -420,7 +420,7 @@ export class WrapperService {
420
420
  content: base64Content,
421
421
  type:
422
422
  response.headers['content-type'] || 'application/octet-stream',
423
- filename: `attachment-${attachmentId}`,
423
+ filename: url.fileName,
424
424
  disposition: 'attachment',
425
425
  });
426
426
  }
@@ -2,7 +2,7 @@ import { readFileSync } from 'fs';
2
2
  import * as yaml from 'js-yaml';
3
3
  import { join } from 'path';
4
4
 
5
- const YAML_CONFIG = `/uat.properties.yaml`;
5
+ const YAML_CONFIG = `/dev.properties.yaml`;
6
6
 
7
7
  export default () => {
8
8
  return yaml.load(
@@ -1,31 +1,22 @@
1
- DB_HOST: '43.205.35.45'
2
- DB_PORT: '5432'
1
+ DB_HOST: '13.235.102.26'
2
+ DB_PORT: '3306'
3
3
  DB_USER: 'root'
4
- DB_PASS: 'Rezolut123'
5
- DB_NAME: 'universal'
6
- DB_SCHEMA: 'preprod_ether_crm'
7
- PORT: 5001
8
- MS_PORT: 4021
9
- SSO_HOST: 'localhost'
10
- SSO_PORT: 4023
11
- ADM_HOST: 'localhost'
12
- ADM_PORT: 4020
4
+ DB_PASS: 'Ether@123'
5
+ DB_NAME: 'ether_uat'
13
6
  MASTER_KEY: '0QZ2eRJv5oVILYnyBlC+FbSGVQiWKReh'
14
7
  MASTER_IV: 'heuUQf5uPVtkotrFAOKUVw=='
15
8
  SECRET_KEY: '1hard_to_guess_secret7890a'
16
9
  CLIENT_ID: '324529881356-596sc8ksrb9lg01i7sktofqqqf0fv2ug.apps.googleusercontent.com'
17
10
  CLIENT_SECRET: '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'
18
- CALLBACK_URL: 'https://api.eth-qa.rezolut.in/api/enrol/auth/google/callback'
19
- DOMAIN_URL: 'eth-qa.rezolut.in/enrol'
20
- BASE_URL: 'https://ether-dev.rezolut.in'
21
- FE_URL: 'http://localhost:3000'
11
+ CALLBACK_URL: 'http://ether.rezolut.in/api/admin/auth/google/callback'
12
+ DOMAIN_URL: 'rezolut.in'
22
13
  OTP_EXPIRY: '10'
23
14
  OTP_LENGTH: '6'
24
15
  VERIFY_OTP: 'true'
25
16
  DEFAULT_OTP: '123456'
26
- DEFAULT_ADMIN: 'ADMIN'
27
- REDIRECT_BE_URL: 'http://localhost:4010/api'
28
17
  PROFILE: 'UAT'
18
+ DEFAULT_ADMIN: 'ADMIN'
19
+ TOKEN_EXPIRY: 1
29
20
  AWS:
30
21
  S3:
31
22
  AWS_ACCESS_KEY_ID: 'AKIAYYKIBDDSQF3KILGE'
@@ -35,17 +26,6 @@ AWS:
35
26
  EMAIL_USER: 'poornima.rezolut@gmail.com'
36
27
  EMAIL_PASSWORD: 'dakd fyau uvbv zwsb'
37
28
 
38
- student:
39
- syncApiUrl: 'https://api.staging.stellarworldschool.com/crm/enrol/users'
40
- paymentAPIKey: '3PKPjFTc5I1buIZTF8tbpxuD0ieimZc7NtVBbpKlq82ZfwdZN9v63dCgMZ5fglpg'
41
- syncApiToken: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7fSwiaWF0IjoxNjYzODIzNTI5LCJhdWQiOiJhMzQzaXVia3ZqYnN2YnJpdWV3YnZqa2VidmpraWVia2IiLCJpc3MiOiJFdGhlciJ9.aYup7bZdiBZvWQ7a1D7iep7Y_8Q8Ns4nxUpzXw8vgR2kTBXBxlDIPPybZFnBzweNKC7O2z9bEo6O0pbXCBHaMg'
42
- lead_xcode: '314b0a5afed44676b736c0e5368c3db863275d80d443777bd1214afde4c82631'
43
29
  FIREBASE_PROJECT_ID: 'sample-d7855'
44
30
  FIREBASE_CLIENT_EMAIL: 'firebase-adminsdk-fbsvc@sample-d7855.iam.gserviceaccount.com'
45
31
  FIREBASE_PRIVATE_KEY: '-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCwGkpDLqFYgDEW\nnrraMja7ICmd05rJlsTachdcbB25Jm2cWMv1ROfNqWEZE3b14pUJOQgCAPI79Lgj\n+nQ0ATsUWK8Th2esKT9kaHg54UZg/qKNcnM5njVn+xIXc+i/AP/eSGBLich+uljU\nRMFuKrpcN1yNa3t0ib+kZxLHE43aFM9aJYOhET6/37DUdFMZ7GyzSLH3tuy1gB2G\negFyC7ulLnyMBFtL37XOtnP3BPwbjVWdP0qv9I6c0aacS5dQ4PNjCBklnkr6tPsc\n0MYr3VUrqNd/xNNOgk26TwoOaePjjjeaSeOGO2FcBG6WsYSLoZ3zmrlCT4vBlXL7\nPaZGQGfjAgMBAAECggEAHtsMZgcWmCYl87uuK6sesdzpzdCUz3uOVGQnObdr4dQc\n4ocgfYIsR3nFHJqvflfMG0iV4Zv+1YiEdzFcCPyqOF9tlbNk8+JqTBKN9j5FkZss\nKjKCg/b3jpeMTPWvM0BelLkDvliO+7108QR3C/GKo7vDiLfrcrjsDkdNH/qKIUq3\nkHeQE0QDLaoe3sLL4mjPp5A4SnnNBInk1gQZS2iVhTgDAAlSOz7JocyVZr3QhxmF\nUlKYzzJVx8zxIJm3ymH6z6NQNbWnBGWF1eeSZgYRkJG1q+Aqm3kRU/uT3V0HPsvZ\nrg4JGkzM/qFA2mpKuj4ysWGfvERKaEe4Ua84SvbcYQKBgQDjjvgBpQL2V71Ssr2E\nWJO/8Bv3TutWODWEvTRv3woQmuZwT81yIR3R8Ir59xLK0oBQCAONvKnrB5RM5yXQ\nmR6hvyKHFUKWTRqwGCFiD4fh0joO4zQTaFDdbqMYyeTJ4r2W66wXbRXtUvuwhDlg\nmDKamZ1E+EAoYkog6/iNYIcwswKBgQDGHO0n2r8yXYm7dM+EYONGLh76IvxVXJDn\nN8igi1zI2fV3cfUuwXaVlMYUa//aRkNXrBvPdXZEvfRRRLkm6dYLbFZ4Sq6T+NUT\noYNan13R59E6UcA/Oi5jitq9l4Wwn8pDaCbmmR1xdj7+r+H9A5N3BXHeuPLy0f48\nyEY8GF8kEQKBgQDCzhmyDrlCekoxCaMEMXAK2FqYlI8S+HuYbwD85EuRe4nai/as\nxXzpxKq04rbLuvjtim7AX8p20b47N4Y/1VVL0nyUd7bRRKCcL4wkjncc8wOQyyBB\nnQPdDGHDTtL1oY38LTTduR0UVf3xVsBn2OM5RlhEOuFxsPMUy+2z2fbh0QKBgBz3\nMb14AChvAKpFw+mI+PHT4HeWEeqxJAaKY20Fs0UyiO8z3DM/2gS4wdVOjRPu3f29\njjtg4y/dzhDryV5lJgR5jJL96FR+NzktjjT7xA3ipPav6TnVWd73+E9sDgHq+vms\nCrQAgwuJzGAUeygxE6h9RU7ZH7xc850TcyFqNs7hAoGBAMviFpBfpZz/amStyan+\nIPBGpDNV8dUrRE1POIdi6M44mlrI5hkD1ldVl3wjDJtg4VGkMosltLtvC0dDcIou\nuWZT8ENKM2G400PvQ9JJYah9dTkYQL1qMxvpX+biMoRSiAswPwRQjmBQUaz1aN1g\nmXv1VJBLLZVg8x1ckLDjeD20\n-----END PRIVATE KEY-----\n'
46
- SUBJECT_PREFIX: true
47
-
48
- GRAYLOG_URL: 'http://35.154.14.223:12201/gelf'
49
-
50
- SERVICES: 'ADM,SSO'
51
- appcode: 'CRM'