@rocketlink/crm-model 1.0.134 → 1.0.136

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.
@@ -0,0 +1,5 @@
1
+ import { PaginatedRequest } from "./common/paginated.request.dto";
2
+ export interface JobsRequest extends PaginatedRequest {
3
+ id?: string;
4
+ }
5
+ //# sourceMappingURL=job.request.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job.request.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/job.request.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,EAAE,CAAC,EAAE,MAAM,CAAC;CACb"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/dist/index.d.ts CHANGED
@@ -16,6 +16,7 @@ export * from './dtos/field.request.dto';
16
16
  export * from './dtos/hook.request.dto';
17
17
  export * from './dtos/hookProfile.request.dto';
18
18
  export * from './dtos/hookOutbox.request.dto';
19
+ export * from './dtos/job.request.dto';
19
20
  export * from './dtos/lead.request.dto';
20
21
  export * from './dtos/mid.request.dto';
21
22
  export * from './dtos/adapter.request.dto';
@@ -35,6 +36,7 @@ export * from './model/field.model';
35
36
  export * from './model/gateway.model';
36
37
  export * from './model/hook.model';
37
38
  export * from './model/hookOutbox.model';
39
+ export * from './model/job.model';
38
40
  export * from './model/hookProfile.model';
39
41
  export * from './model/lead.model';
40
42
  export * from './model/mid.model';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC7G,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AAGpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAElC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAG/C,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,kDAAkD,CAAC;AAGjE,cAAc,sDAAsD,CAAC;AACrE,cAAc,2DAA2D,CAAC;AAC1E,cAAc,wDAAwD,CAAC;AAGvE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0CAA0C,CAAC;AACzD,cAAc,iDAAiD,CAAC;AAChE,cAAc,8CAA8C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC7G,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AAGpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAElC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAG/C,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,kDAAkD,CAAC;AAGjE,cAAc,sDAAsD,CAAC;AACrE,cAAc,2DAA2D,CAAC;AAC1E,cAAc,wDAAwD,CAAC;AAGvE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0CAA0C,CAAC;AACzD,cAAc,iDAAiD,CAAC;AAChE,cAAc,8CAA8C,CAAC"}
package/dist/index.js CHANGED
@@ -41,6 +41,7 @@ __exportStar(require("./dtos/field.request.dto"), exports);
41
41
  __exportStar(require("./dtos/hook.request.dto"), exports);
42
42
  __exportStar(require("./dtos/hookProfile.request.dto"), exports);
43
43
  __exportStar(require("./dtos/hookOutbox.request.dto"), exports);
44
+ __exportStar(require("./dtos/job.request.dto"), exports);
44
45
  __exportStar(require("./dtos/lead.request.dto"), exports);
45
46
  __exportStar(require("./dtos/mid.request.dto"), exports);
46
47
  __exportStar(require("./dtos/adapter.request.dto"), exports);
@@ -62,6 +63,7 @@ __exportStar(require("./model/field.model"), exports);
62
63
  __exportStar(require("./model/gateway.model"), exports);
63
64
  __exportStar(require("./model/hook.model"), exports);
64
65
  __exportStar(require("./model/hookOutbox.model"), exports);
66
+ __exportStar(require("./model/job.model"), exports);
65
67
  __exportStar(require("./model/hookProfile.model"), exports);
66
68
  __exportStar(require("./model/lead.model"), exports);
67
69
  __exportStar(require("./model/mid.model"), exports);
@@ -1,3 +1,4 @@
1
+ import type { Campaign } from './campaign.model';
1
2
  export declare const HOOK_OUTBOX_STATUS: {
2
3
  PENDING: string;
3
4
  SENT: string;
@@ -8,6 +9,7 @@ export interface HookOutbox {
8
9
  id?: number;
9
10
  hookId?: number;
10
11
  campaignId?: number;
12
+ campaign?: Campaign;
11
13
  triggerId?: string;
12
14
  hookUrl?: string;
13
15
  payloadJson?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"hookOutbox.model.d.ts","sourceRoot":"","sources":["../../src/model/hookOutbox.model.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE9F,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB"}
1
+ {"version":3,"file":"hookOutbox.model.d.ts","sourceRoot":"","sources":["../../src/model/hookOutbox.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAChD,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE9F,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB"}
@@ -0,0 +1,6 @@
1
+ export interface Job {
2
+ id?: string | number;
3
+ createdAt?: Date;
4
+ updatedAt?: Date;
5
+ }
6
+ //# sourceMappingURL=job.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job.model.d.ts","sourceRoot":"","sources":["../../src/model/job.model.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IAClB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -30,4 +30,8 @@ export declare function addDaysToDateString(value: string, days: number, formatS
30
30
  export declare function subtractDaysFromDateString(value: string, days: number, formatString?: string): string;
31
31
  export declare function addMonthsToDate(date: Date, months: number): Date;
32
32
  export declare function addPeriodToDate(date: Date, period: number, unit: INTERVAL_UNIT): Date;
33
+ export type FormatDateForUiOptions = {
34
+ includeSeconds?: boolean;
35
+ };
36
+ export declare function formatDateForUi(value: string | Date | null | undefined, options?: FormatDateForUiOptions): string;
33
37
  //# sourceMappingURL=dateUtil.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dateUtil.d.ts","sourceRoot":"","sources":["../../src/util/dateUtil.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;CAOV,CAAC;AAEX,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAK/E,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,GAAE,MAAyB,GAAG,MAAM,CAKzF;AAED,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAElD;AAED,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAE5C;AAED,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAEjD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAExD;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGnD;AAKD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAShD;AAKD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,MAAyB,GAAG,MAAM,CAM/F;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAKD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAK5D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAKnE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,GAAE,MAAyB,GAAG,MAAM,CAIhH;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,GAAE,MAAyB,GAAG,MAAM,CAIvH;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKhE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAUrF"}
1
+ {"version":3,"file":"dateUtil.d.ts","sourceRoot":"","sources":["../../src/util/dateUtil.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;CAOV,CAAC;AAEX,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAK/E,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,GAAE,MAAyB,GAAG,MAAM,CAKzF;AAED,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAElD;AAED,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAE5C;AAED,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAEjD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAExD;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGnD;AAKD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAShD;AAKD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,MAAyB,GAAG,MAAM,CAM/F;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAKD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAK5D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAKnE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,GAAE,MAAyB,GAAG,MAAM,CAIhH;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,GAAE,MAAyB,GAAG,MAAM,CAIvH;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKhE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAUrF;AAMD,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,EACvC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,MAAM,CAgDR"}
@@ -20,6 +20,7 @@ exports.addDaysToDateString = addDaysToDateString;
20
20
  exports.subtractDaysFromDateString = subtractDaysFromDateString;
21
21
  exports.addMonthsToDate = addMonthsToDate;
22
22
  exports.addPeriodToDate = addPeriodToDate;
23
+ exports.formatDateForUi = formatDateForUi;
23
24
  const date_fns_1 = require("date-fns");
24
25
  exports.FORMATS = {
25
26
  ISO_DATE: 'yyyy-MM-dd', // "2026-01-07"
@@ -140,3 +141,51 @@ function addPeriodToDate(date, period, unit) {
140
141
  }
141
142
  return date;
142
143
  }
144
+ function formatDateForUi(value, options) {
145
+ if (!value)
146
+ return '-';
147
+ let date;
148
+ let hasTime = false;
149
+ let hasSeconds = false;
150
+ if (value instanceof Date) {
151
+ if (!(0, date_fns_1.isValid)(value))
152
+ return '-';
153
+ date = value;
154
+ hasSeconds = value.getSeconds() !== 0;
155
+ hasTime =
156
+ value.getHours() !== 0 ||
157
+ value.getMinutes() !== 0 ||
158
+ hasSeconds;
159
+ }
160
+ else {
161
+ const raw = value.trim();
162
+ if (!raw)
163
+ return '-';
164
+ // dd.MM.yy or dd.MM.yyyy
165
+ const dot = raw.match(/^(\d{2})\.(\d{2})\.(\d{2}|\d{4})$/);
166
+ if (dot) {
167
+ const [, dd, mm, yy] = dot;
168
+ const year = yy.length === 2 ? 2000 + Number(yy) : Number(yy);
169
+ date = new Date(year, Number(mm) - 1, Number(dd));
170
+ if (!(0, date_fns_1.isValid)(date))
171
+ return '-';
172
+ }
173
+ else {
174
+ // normalize "YYYY-MM-DD HH:mm[:ss]" → ISO
175
+ const normalized = raw.replace(' ', 'T');
176
+ date = new Date(normalized);
177
+ if (!(0, date_fns_1.isValid)(date))
178
+ return '-';
179
+ hasTime = /\d{1,2}:\d{2}/.test(raw);
180
+ hasSeconds = /\d{1,2}:\d{2}:\d{2}/.test(raw);
181
+ }
182
+ }
183
+ const base = `${(0, date_fns_1.format)(date, 'dd')} ${date.toLocaleString('en-US', {
184
+ month: 'short',
185
+ })} ${(0, date_fns_1.format)(date, 'yyyy')}`;
186
+ if (!hasTime)
187
+ return base;
188
+ const showSeconds = options?.includeSeconds ?? false;
189
+ const time = (0, date_fns_1.format)(date, showSeconds ? 'HH:mm:ss' : 'HH:mm');
190
+ return `${base}, ${time}`;
191
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rocketlink/crm-model",
3
- "version": "1.0.134",
3
+ "version": "1.0.136",
4
4
  "description": "Shared DTOs and Models for CRM Rocketlink",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -0,0 +1,5 @@
1
+ import { PaginatedRequest } from "./common/paginated.request.dto";
2
+
3
+ export interface JobsRequest extends PaginatedRequest {
4
+ id?: string;
5
+ }
package/src/index.ts CHANGED
@@ -20,6 +20,7 @@ export * from './dtos/field.request.dto';
20
20
  export * from './dtos/hook.request.dto';
21
21
  export * from './dtos/hookProfile.request.dto';
22
22
  export * from './dtos/hookOutbox.request.dto';
23
+ export * from './dtos/job.request.dto';
23
24
  export * from './dtos/lead.request.dto';
24
25
  export * from './dtos/mid.request.dto';
25
26
  export * from './dtos/adapter.request.dto';
@@ -42,6 +43,7 @@ export * from './model/field.model';
42
43
  export * from './model/gateway.model';
43
44
  export * from './model/hook.model';
44
45
  export * from './model/hookOutbox.model';
46
+ export * from './model/job.model';
45
47
  export * from './model/hookProfile.model';
46
48
  export * from './model/lead.model';
47
49
  export * from './model/mid.model';
@@ -69,4 +71,4 @@ export * from './gateways/adapters/dtos/transaction-finxp.request.dto';
69
71
  export * from './gateways/providers/model/genesis.constants';
70
72
  export * from './gateways/providers/model/genesis.model';
71
73
  export * from './gateways/providers/model/novalNetManual.model';
72
- export * from './gateways/providers/model/finXpManual.model';
74
+ export * from './gateways/providers/model/finXpManual.model';
@@ -1,4 +1,5 @@
1
- export const HOOK_OUTBOX_STATUS = {
1
+ import type { Campaign } from './campaign.model'
2
+ export const HOOK_OUTBOX_STATUS = {
2
3
  PENDING: 'PENDING',
3
4
  SENT: 'SENT',
4
5
  FAILED: 'FAILED'
@@ -9,8 +10,9 @@ export interface HookOutbox {
9
10
  id?: number;
10
11
  hookId?: number;
11
12
  campaignId?: number;
13
+ campaign?: Campaign;
12
14
  triggerId?: string;
13
- hookUrl?: string;
15
+ hookUrl?: string;
14
16
  payloadJson?: string;
15
17
  status?: HOOK_OUTBOX_STATUS;
16
18
  statusDescription?: string;
@@ -0,0 +1,5 @@
1
+ export interface Job {
2
+ id?: string | number;
3
+ createdAt?: Date;
4
+ updatedAt?: Date;
5
+ }
@@ -138,4 +138,65 @@ export function addPeriodToDate(date: Date, period: number, unit: INTERVAL_UNIT)
138
138
  date = addDaysToDate(date, period);
139
139
  }
140
140
  return date;
141
+ }
142
+
143
+ // ============================================
144
+ // UI-friendly formatting (used by admin-ts)
145
+ // "15 Jan 2024, 10:30:40" or "15 Jan 2024, 10:30" or just "15 Jan 2024".
146
+ // ============================================
147
+ export type FormatDateForUiOptions = {
148
+ includeSeconds?: boolean;
149
+ };
150
+
151
+ export function formatDateForUi(
152
+ value: string | Date | null | undefined,
153
+ options?: FormatDateForUiOptions
154
+ ): string {
155
+ if (!value) return '-';
156
+
157
+ let date: Date;
158
+ let hasTime = false;
159
+ let hasSeconds = false;
160
+
161
+ if (value instanceof Date) {
162
+ if (!isValid(value)) return '-';
163
+ date = value;
164
+
165
+ hasSeconds = value.getSeconds() !== 0;
166
+ hasTime =
167
+ value.getHours() !== 0 ||
168
+ value.getMinutes() !== 0 ||
169
+ hasSeconds;
170
+ } else {
171
+ const raw = value.trim();
172
+ if (!raw) return '-';
173
+
174
+ // dd.MM.yy or dd.MM.yyyy
175
+ const dot = raw.match(/^(\d{2})\.(\d{2})\.(\d{2}|\d{4})$/);
176
+ if (dot) {
177
+ const [, dd, mm, yy] = dot;
178
+ const year = yy.length === 2 ? 2000 + Number(yy) : Number(yy);
179
+ date = new Date(year, Number(mm) - 1, Number(dd));
180
+ if (!isValid(date)) return '-';
181
+ } else {
182
+ // normalize "YYYY-MM-DD HH:mm[:ss]" → ISO
183
+ const normalized = raw.replace(' ', 'T');
184
+ date = new Date(normalized);
185
+ if (!isValid(date)) return '-';
186
+
187
+ hasTime = /\d{1,2}:\d{2}/.test(raw);
188
+ hasSeconds = /\d{1,2}:\d{2}:\d{2}/.test(raw);
189
+ }
190
+ }
191
+
192
+ const base = `${format(date, 'dd')} ${date.toLocaleString('en-US', {
193
+ month: 'short',
194
+ })} ${format(date, 'yyyy')}`;
195
+
196
+ if (!hasTime) return base;
197
+
198
+ const showSeconds = options?.includeSeconds ?? false;
199
+
200
+ const time = format(date, showSeconds ? 'HH:mm:ss' : 'HH:mm');
201
+ return `${base}, ${time}`;
141
202
  }