orbitx-core-models 11.52.0 → 11.54.0

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.
@@ -1,29 +1,30 @@
1
+ import { Types } from "mongoose";
1
2
  export interface IChat {
2
3
  _id?: string;
3
4
  chatNumber?: number;
4
- companyId: string;
5
- visitorId: string;
6
- groupId: string;
5
+ companyId: Types.ObjectId;
6
+ visitorId: Types.ObjectId;
7
+ groupId: Types.ObjectId;
7
8
  domain?: string;
8
- currentOwnerId: string;
9
+ currentOwnerId: Types.ObjectId;
9
10
  ownershipType: "ORBITXPRO" | "CLIENT" | "SHARED";
10
11
  participants: Array<{
11
- userId: string;
12
+ userId: Types.ObjectId;
12
13
  role: "owner" | "viewer";
13
14
  ownerType?: "ORBITXPRO" | "CLIENT";
14
15
  joinedAt?: Date;
15
16
  leftAt?: Date;
16
17
  }>;
17
18
  joinRequests: Array<{
18
- requesterId: string;
19
- targetId?: string;
19
+ requesterId: Types.ObjectId;
20
+ targetId?: Types.ObjectId;
20
21
  status: "pending" | "approved" | "rejected" | "expired";
21
22
  createdAt?: Date;
22
23
  resolvedAt?: Date;
23
24
  }>;
24
25
  transferHistory: Array<{
25
- fromUserId?: string;
26
- toUserId?: string;
26
+ fromUserId?: Types.ObjectId;
27
+ toUserId?: Types.ObjectId;
27
28
  type?: "AGENT_TO_AGENT" | "OXP_TO_CLIENT" | "CLIENT_TAKEOVER";
28
29
  at?: Date;
29
30
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"chat.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/chat.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACjD,YAAY,EAAE,KAAK,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;QACzB,SAAS,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;QACnC,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,MAAM,CAAC,EAAE,IAAI,CAAC;KACf,CAAC,CAAC;IACH,YAAY,EAAE,KAAK,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;QACxD,SAAS,CAAC,EAAE,IAAI,CAAC;QACjB,UAAU,CAAC,EAAE,IAAI,CAAC;KACnB,CAAC,CAAC;IACH,eAAe,EAAE,KAAK,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,gBAAgB,GAAG,eAAe,GAAG,iBAAiB,CAAC;QAC9D,EAAE,CAAC,EAAE,IAAI,CAAC;KACX,CAAC,CAAC;IACH,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IACnD,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACvC,eAAe,EACX,UAAU,GACV,oBAAoB,GACpB,wBAAwB,GACxB,sBAAsB,CAAC;IAC3B,YAAY,EAAE,WAAW,GAAG,YAAY,GAAG,gBAAgB,GAAG,YAAY,CAAC;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB"}
1
+ {"version":3,"file":"chat.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/chat.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC1B,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC1B,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC/B,aAAa,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACjD,YAAY,EAAE,KAAK,CAAC;QAClB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC;QACvB,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;QACzB,SAAS,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;QACnC,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,MAAM,CAAC,EAAE,IAAI,CAAC;KACf,CAAC,CAAC;IACH,YAAY,EAAE,KAAK,CAAC;QAClB,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC;QAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;QAC1B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;QACxD,SAAS,CAAC,EAAE,IAAI,CAAC;QACjB,UAAU,CAAC,EAAE,IAAI,CAAC;KACnB,CAAC,CAAC;IACH,eAAe,EAAE,KAAK,CAAC;QACrB,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;QAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;QAC1B,IAAI,CAAC,EAAE,gBAAgB,GAAG,eAAe,GAAG,iBAAiB,CAAC;QAC9D,EAAE,CAAC,EAAE,IAAI,CAAC;KACX,CAAC,CAAC;IACH,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IACnD,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACvC,eAAe,EACX,UAAU,GACV,oBAAoB,GACpB,wBAAwB,GACxB,sBAAsB,CAAC;IAC3B,YAAY,EAAE,WAAW,GAAG,YAAY,GAAG,gBAAgB,GAAG,YAAY,CAAC;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB"}
@@ -53,10 +53,6 @@ export interface IWidgetConfig {
53
53
  animation?: "bounce-in" | "fade" | "slide-up";
54
54
  features?: ("file-upload" | "emoji-support" | "sound" | "email-transcript")[];
55
55
  }
56
- export interface IAvatar {
57
- name?: string;
58
- url?: string;
59
- }
60
56
  export interface ICompany {
61
57
  _id?: Types.ObjectId;
62
58
  basicInfo: IBasicInfo;
@@ -68,8 +64,18 @@ export interface ICompany {
68
64
  stripeCustomerId?: string;
69
65
  isSubscriptionActive?: boolean;
70
66
  subscription?: Types.ObjectId;
71
- avatars?: IAvatar[];
72
67
  createdAt?: Date;
73
68
  updatedAt?: Date;
69
+ hubspotIntegration?: IHubspotIntegration;
70
+ }
71
+ export interface IHubspotIntegration {
72
+ isConnected: boolean;
73
+ isSyncActive: boolean;
74
+ accessToken?: string;
75
+ refreshToken?: string;
76
+ tokenExpiresAt?: Date;
77
+ hubId?: string;
78
+ accountName?: string;
79
+ lastSyncedAt?: Date;
74
80
  }
75
81
  //# sourceMappingURL=company.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"company.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/company.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"company.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/company.interface.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ // Then add it to the main interfaces:
4
+ // In IUser, ICompany, and IPartner, add:
@@ -40,5 +40,16 @@ export interface IPartner {
40
40
  status: "Active" | "Inactive";
41
41
  createdAt?: Date;
42
42
  updatedAt?: Date;
43
+ hubspotIntegration?: IHubspotIntegration;
44
+ }
45
+ export interface IHubspotIntegration {
46
+ isConnected: boolean;
47
+ isSyncActive: boolean;
48
+ accessToken?: string;
49
+ refreshToken?: string;
50
+ tokenExpiresAt?: Date;
51
+ hubId?: string;
52
+ accountName?: string;
53
+ lastSyncedAt?: Date;
43
54
  }
44
55
  //# sourceMappingURL=partner.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"partner.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/partner.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,WAAW,CAAC;IACxB,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;IACzB,yBAAyB,EAAE,OAAO,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;IACrB,WAAW,EAAE,YAAY,CAAC;IAC1B,UAAU,EAAE,WAAW,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC9B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB"}
1
+ {"version":3,"file":"partner.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/partner.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,WAAW,CAAC;IACxB,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;IACzB,yBAAyB,EAAE,OAAO,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;IACrB,WAAW,EAAE,YAAY,CAAC;IAC1B,UAAU,EAAE,WAAW,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC9B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;CAC1C;AAGD,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB"}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ // Then add it to the main interfaces:
@@ -1,23 +1,29 @@
1
- import mongoose from "mongoose";
2
- export interface IUser extends mongoose.Document {
1
+ import { Document, Types } from "mongoose";
2
+ export interface IUser extends Document {
3
3
  name?: string;
4
4
  email?: string;
5
5
  username?: string;
6
6
  password?: string;
7
- profile?: string;
8
- role: "user" | "account-manager" | "manager-ops" | "admin" | "agent-chat" | "client-operator" | "partner";
9
- ownerType: "Company" | "Partner" | "ORBITXPRO";
10
- owner: mongoose.Types.ObjectId;
11
- maxConcurrentChats?: number;
12
- groupId?: mongoose.Types.ObjectId;
13
- currentStatus?: "online" | "offline" | "away";
14
- activeChats?: number;
7
+ profile: string;
8
+ role: "user" | "account-manager" | "manager-ops" | "admin" | "agent-chat";
9
+ ownerType?: "Company" | "Partner" | "ORBITXPRO";
10
+ owner?: Types.ObjectId;
15
11
  ipAddress?: string;
12
+ currentStatus: string;
16
13
  lastLogin?: Date;
17
14
  lockedOut?: boolean;
18
- userId: string;
19
- createdAt?: Date;
20
- updatedAt?: Date;
21
- comparePassword(inputPassword: string): Promise<boolean>;
15
+ userId?: string;
16
+ hubspotIntegration?: IHubspotIntegration;
17
+ compare: (inputPassword: string) => Promise<boolean>;
18
+ }
19
+ export interface IHubspotIntegration {
20
+ isConnected: boolean;
21
+ isSyncActive: boolean;
22
+ accessToken?: string;
23
+ refreshToken?: string;
24
+ tokenExpiresAt?: Date;
25
+ hubId?: string;
26
+ accountName?: string;
27
+ lastSyncedAt?: Date;
22
28
  }
23
29
  //# sourceMappingURL=user.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/user.interface.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,WAAW,KAAM,SAAQ,QAAQ,CAAC,QAAQ;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EACA,MAAM,GACN,iBAAiB,GACjB,aAAa,GACb,OAAO,GACP,YAAY,GACZ,iBAAiB,GACjB,SAAS,CAAC;IACd,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC/C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IAClC,aAAa,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D"}
1
+ {"version":3,"file":"user.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/user.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,WAAW,KAAM,SAAQ,QAAQ;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,aAAa,GAAG,OAAO,GAAG,YAAY,CAAC;IAC1E,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAChD,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,OAAO,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;AAGD,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"chat.model.d.ts","sourceRoot":"","sources":["../../src/models/chat.model.ts"],"names":[],"mappings":"AAAA,OAAO,QAAoB,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAqNrD,eAAO,MAAM,IAAI;;;;OAA4C,CAAC"}
1
+ {"version":3,"file":"chat.model.d.ts","sourceRoot":"","sources":["../../src/models/chat.model.ts"],"names":[],"mappings":"AAAA,OAAO,QAAoB,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAiOrD,eAAO,MAAM,IAAI;;;;OAA4C,CAAC"}
@@ -32,14 +32,10 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
35
  Object.defineProperty(exports, "__esModule", { value: true });
39
36
  exports.Chat = void 0;
40
37
  const mongoose_1 = __importStar(require("mongoose"));
41
- const mongoose_sequence_1 = __importDefault(require("mongoose-sequence"));
42
- const AutoIncrement = (0, mongoose_sequence_1.default)(mongoose_1.default);
38
+ const counter_model_1 = require("./counter.model");
43
39
  const chatSchema = new mongoose_1.Schema({
44
40
  // ─────────────────────────────────────────────
45
41
  // BASIC
@@ -206,11 +202,19 @@ const chatSchema = new mongoose_1.Schema({
206
202
  isDeleted: { type: Boolean, default: false },
207
203
  }, { timestamps: true });
208
204
  // ─────────────────────────────────────────────
209
- // AUTO INCREMENT
205
+ // AUTO INCREMENT (NATIVE HOOK)
210
206
  // ─────────────────────────────────────────────
211
- chatSchema.plugin(AutoIncrement, {
212
- inc_field: "chatNumber",
213
- start_seq: 1000,
207
+ chatSchema.pre("save", async function () {
208
+ // Only increment if this is a brand new chat document
209
+ if (this.isNew && !this.chatNumber) {
210
+ // Try to increment an existing counter
211
+ let counter = await counter_model_1.Counter.findByIdAndUpdate("chatNumber", { $inc: { seq: 1 } }, { new: true });
212
+ // If it doesn't exist yet, create it with your start_seq of 1000
213
+ if (!counter) {
214
+ counter = await counter_model_1.Counter.create({ _id: "chatNumber", seq: 1000 });
215
+ }
216
+ this.chatNumber = counter.seq;
217
+ }
214
218
  });
215
219
  // ─────────────────────────────────────────────
216
220
  // INDEXES (CRITICAL)
@@ -1 +1 @@
1
- {"version":3,"file":"company.model.d.ts","sourceRoot":"","sources":["../../src/models/company.model.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAU,KAAK,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAoB,MAAM,iCAAiC,CAAC;AAsN7E,eAAO,MAAM,OAAO;;;;OAAqD,CAAC;AAC1E,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"company.model.d.ts","sourceRoot":"","sources":["../../src/models/company.model.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAU,KAAK,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAoB,MAAM,iCAAiC,CAAC;AA4N7E,eAAO,MAAM,OAAO;;;;OAAqD,CAAC;AAC1E,eAAe,OAAO,CAAC"}
@@ -61,6 +61,16 @@ const hourSchema = new mongoose_1.Schema({
61
61
  }, { _id: false });
62
62
  // Company Schema
63
63
  const companySchema = new mongoose_1.Schema({
64
+ hubspotIntegration: {
65
+ isConnected: { type: Boolean, default: false },
66
+ isSyncActive: { type: Boolean, default: false },
67
+ accessToken: { type: String, default: null },
68
+ refreshToken: { type: String, default: null },
69
+ tokenExpiresAt: { type: Date, default: null },
70
+ hubId: { type: String, default: null },
71
+ accountName: { type: String, default: null },
72
+ lastSyncedAt: { type: Date, default: null }
73
+ },
64
74
  basicInfo: {
65
75
  companyId: {
66
76
  type: String,
@@ -203,12 +213,6 @@ const companySchema = new mongoose_1.Schema({
203
213
  type: mongoose_1.Schema.Types.ObjectId,
204
214
  ref: "Subscription",
205
215
  },
206
- avatars: [
207
- {
208
- name: { type: String, trim: true },
209
- url: { type: String, trim: true },
210
- },
211
- ],
212
216
  }, {
213
217
  timestamps: true,
214
218
  toJSON: { virtuals: true },
@@ -0,0 +1,8 @@
1
+ import { Model, Document } from "mongoose";
2
+ interface ICounter extends Document {
3
+ _id: string;
4
+ seq: number;
5
+ }
6
+ export declare const Counter: Model<ICounter>;
7
+ export {};
8
+ //# sourceMappingURL=counter.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counter.model.d.ts","sourceRoot":"","sources":["../../src/models/counter.model.ts"],"names":[],"mappings":"AAAA,OAAiB,EAAU,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE7D,UAAU,QAAS,SAAQ,QAAQ;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAOD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,QAAQ,CAGnC,CAAC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Counter = void 0;
37
+ const mongoose_1 = __importStar(require("mongoose"));
38
+ const counterSchema = new mongoose_1.Schema({
39
+ _id: { type: String, required: true },
40
+ seq: { type: Number, default: 0 },
41
+ });
42
+ exports.Counter = mongoose_1.default.model("Counter", counterSchema);
@@ -1 +1 @@
1
- {"version":3,"file":"partner.model.d.ts","sourceRoot":"","sources":["../../src/models/partner.model.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAU,KAAK,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EACL,QAAQ,EAGT,MAAM,iCAAiC,CAAC;AAiHzC,eAAO,MAAM,OAAO;;;;OAAqD,CAAC;AAC1E,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"partner.model.d.ts","sourceRoot":"","sources":["../../src/models/partner.model.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAU,KAAK,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EACL,QAAQ,EAGT,MAAM,iCAAiC,CAAC;AA4HzC,eAAO,MAAM,OAAO;;;;OAAqD,CAAC;AAC1E,eAAe,OAAO,CAAC"}
@@ -103,6 +103,16 @@ const payoutTierSchema = new mongoose_1.Schema({
103
103
  _id: false,
104
104
  });
105
105
  const partnerSchema = new mongoose_1.Schema({
106
+ hubspotIntegration: {
107
+ isConnected: { type: Boolean, default: false },
108
+ isSyncActive: { type: Boolean, default: false },
109
+ accessToken: { type: String, default: null },
110
+ refreshToken: { type: String, default: null },
111
+ tokenExpiresAt: { type: Date, default: null },
112
+ hubId: { type: String, default: null },
113
+ accountName: { type: String, default: null },
114
+ lastSyncedAt: { type: Date, default: null }
115
+ },
106
116
  accountInfo: accountInfoSchema,
107
117
  payoutTier: payoutTierSchema,
108
118
  referralLink: { type: String, trim: true },
@@ -1 +1 @@
1
- {"version":3,"file":"user.model.d.ts","sourceRoot":"","sources":["../../src/models/user.model.ts"],"names":[],"mappings":"AAAA,OAAO,QAAoB,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AA0IrD,eAAO,MAAM,IAAI;;;;OAA4C,CAAC"}
1
+ {"version":3,"file":"user.model.d.ts","sourceRoot":"","sources":["../../src/models/user.model.ts"],"names":[],"mappings":"AAAA,OAAO,QAAoB,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAuDrD,eAAO,MAAM,IAAI;;;;OAA4C,CAAC"}
@@ -40,115 +40,51 @@ exports.User = void 0;
40
40
  const mongoose_1 = __importStar(require("mongoose"));
41
41
  const argon2_1 = __importDefault(require("argon2"));
42
42
  const userSchema = new mongoose_1.Schema({
43
- name: { type: String, trim: true },
44
- email: {
45
- type: String,
46
- trim: true,
47
- lowercase: true,
48
- index: true,
49
- sparse: true,
50
- },
51
- username: {
52
- type: String,
53
- trim: true,
54
- index: true,
43
+ hubspotIntegration: {
44
+ isConnected: { type: Boolean, default: false },
45
+ isSyncActive: { type: Boolean, default: false },
46
+ accessToken: { type: String, default: null },
47
+ refreshToken: { type: String, default: null },
48
+ tokenExpiresAt: { type: Date, default: null },
49
+ hubId: { type: String, default: null },
50
+ accountName: { type: String, default: null },
51
+ lastSyncedAt: { type: Date, default: null }
55
52
  },
53
+ name: String,
54
+ email: String,
55
+ username: String,
56
56
  password: { type: String, select: false },
57
57
  profile: { type: String, default: "default.jpg" },
58
- // ─────────────────────────────────────────────
59
- // ROLE SYSTEM (EXTENDED, NOT BREAKING)
60
- // ─────────────────────────────────────────────
61
58
  role: {
62
59
  type: String,
63
- enum: [
64
- "user",
65
- "account-manager",
66
- "manager-ops",
67
- "admin",
68
- "agent-chat",
69
- "client-operator", // NEW
70
- "partner", // NEW
71
- ],
60
+ enum: ["user", "account-manager", "manager-ops", "admin", "agent-chat"],
72
61
  default: "user",
73
- index: true,
74
62
  },
75
- // ─────────────────────────────────────────────
76
- // MULTI-TENANT OWNERSHIP
77
- // ─────────────────────────────────────────────
78
63
  ownerType: {
79
64
  type: String,
80
65
  enum: ["Company", "Partner", "ORBITXPRO"],
81
- required: true,
82
- index: true,
83
- },
84
- owner: {
85
- type: mongoose_1.Schema.Types.ObjectId,
86
- refPath: "ownerType",
87
- required: true,
88
- index: true,
89
66
  },
90
- // ─────────────────────────────────────────────
91
- // CHAT FIELDS (FLAT — NO NESTING)
92
- // ─────────────────────────────────────────────
93
- maxConcurrentChats: {
94
- type: Number,
95
- default: 5,
96
- },
97
- groupId: {
98
- type: mongoose_1.Schema.Types.ObjectId,
99
- ref: "Group",
100
- index: true,
101
- },
102
- // persistent fallback only
103
- currentStatus: {
104
- type: String,
105
- enum: ["online", "offline", "away"],
106
- default: "offline",
107
- index: true,
108
- },
109
- // optional (derived from Redis ideally)
110
- activeChats: {
111
- type: Number,
112
- default: 0,
113
- },
114
- // ─────────────────────────────────────────────
115
- // SECURITY
116
- // ─────────────────────────────────────────────
67
+ owner: { type: mongoose_1.Schema.Types.ObjectId, refPath: "ownerType" },
117
68
  ipAddress: String,
69
+ currentStatus: { type: String, default: "Offline" },
118
70
  lastLogin: Date,
119
- lockedOut: {
120
- type: Boolean,
121
- default: false,
122
- },
123
- userId: {
124
- type: String,
125
- unique: true,
126
- index: true,
127
- },
128
- }, { timestamps: true });
129
- // ─────────────────────────────────────────────
130
- // PASSWORD HASH
131
- // ─────────────────────────────────────────────
132
- userSchema.pre("save", async function () {
71
+ lockedOut: { type: Boolean },
72
+ userId: { type: String, unique: true },
73
+ });
74
+ // Hash password before saving if modified
75
+ userSchema.pre("save", async function (next) {
133
76
  if (!this.isModified("password") || !this.password)
134
- return;
77
+ return next();
135
78
  this.password = await argon2_1.default.hash(this.password, {
136
- type: argon2_1.default.argon2id,
137
- timeCost: 3,
138
- memoryCost: 2 ** 16,
79
+ type: argon2_1.default.argon2i,
80
+ timeCost: 2,
139
81
  });
82
+ next();
140
83
  });
141
- // ─────────────────────────────────────────────
142
- // PASSWORD COMPARE (FIXED)
143
- // ─────────────────────────────────────────────
144
- userSchema.methods.comparePassword = async function (inputPassword) {
84
+ // Compare password
85
+ userSchema.methods.compare = async function (userPassword, inputPassword) {
145
86
  if (!this.password)
146
87
  return false;
147
- return await argon2_1.default.verify(this.password, inputPassword);
88
+ return await argon2_1.default.verify(userPassword, inputPassword);
148
89
  };
149
- // ─────────────────────────────────────────────
150
- // INDEXES (IMPORTANT)
151
- // ─────────────────────────────────────────────
152
- userSchema.index({ owner: 1, ownerType: 1 });
153
- userSchema.index({ role: 1, ownerType: 1 });
154
90
  exports.User = mongoose_1.default.model("User", userSchema);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orbitx-core-models",
3
- "version": "11.52.0",
3
+ "version": "11.54.0",
4
4
  "description": "Shared Mongoose models and interfaces for OrbitX services",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",