orbitx-core-models 11.115.0 → 11.121.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.
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/interfaces/agent.interface.d.ts +1 -0
- package/dist/interfaces/agent.interface.d.ts.map +1 -1
- package/dist/interfaces/request.interface.d.ts +23 -10
- package/dist/interfaces/request.interface.d.ts.map +1 -1
- package/dist/interfaces/request.interface.js +78 -0
- package/dist/interfaces/ticket.interface.d.ts +55 -0
- package/dist/interfaces/ticket.interface.d.ts.map +1 -0
- package/dist/interfaces/ticket.interface.js +2 -0
- package/dist/interfaces/user.interface.d.ts +1 -0
- package/dist/interfaces/user.interface.d.ts.map +1 -1
- package/dist/models/agent.model.d.ts.map +1 -1
- package/dist/models/agent.model.js +6 -0
- package/dist/models/request.model.d.ts.map +1 -1
- package/dist/models/request.model.js +11 -39
- package/dist/models/ticket.model.d.ts +9 -0
- package/dist/models/ticket.model.d.ts.map +1 -0
- package/dist/models/ticket.model.js +149 -0
- package/dist/models/user.model.d.ts.map +1 -1
- package/dist/models/user.model.js +8 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ import { Counter } from "./models/counter.model";
|
|
|
31
31
|
import { Employee } from "./models/employee.model";
|
|
32
32
|
import { CallSession } from "./models/callSession.model";
|
|
33
33
|
import { Request } from "./models/request.model";
|
|
34
|
+
import { Ticket } from "./models/ticket.model";
|
|
34
35
|
import { Role } from "./models/role.model";
|
|
35
36
|
import { IChat } from "./interfaces/chat.interface";
|
|
36
37
|
import { IMacro } from "./interfaces/macro.interface";
|
|
@@ -63,7 +64,8 @@ import { ISession } from "./interfaces/session.interface";
|
|
|
63
64
|
import { ILoginOtp } from "./interfaces/loginOtp.interface";
|
|
64
65
|
import { IEmployee } from "./interfaces/employee.interface";
|
|
65
66
|
import { ICallSession, CallSessionStatus, CallSessionDirection } from "./interfaces/callSession.interface";
|
|
66
|
-
import { IRequest, IRequestAttachment,
|
|
67
|
+
import { IRequest, IRequestAttachment, RequestCategory, RequestStatus, REQUEST_CATEGORIES, REQUEST_SUBCATEGORIES_BY_CATEGORY } from "./interfaces/request.interface";
|
|
68
|
+
import { ITicket, ITicketAttachment, TicketCategory, TicketOwnerType, TicketSource, TicketStatus } from "./interfaces/ticket.interface";
|
|
67
69
|
import { IRole } from "./interfaces/role.interface";
|
|
68
70
|
import { Dashboard, PermissionNode, DASHBOARDS } from "./permissions/types";
|
|
69
71
|
import { opsTree } from "./permissions/trees/ops.tree";
|
|
@@ -73,6 +75,6 @@ import { clientTree } from "./permissions/trees/client.tree";
|
|
|
73
75
|
import { getTree, getAllKeys, getParentKey, getAncestorKeys } from "./permissions/treeUtils";
|
|
74
76
|
import { resolveEffectivePermissions, hasPermission, validateGrantedKeys, validateExtraKeys, getFullAccessKeys, PermissionSource, ValidationResult } from "./permissions/resolve";
|
|
75
77
|
import { roleSeeds, RoleSeed } from "./permissions/seeds/roles.seed";
|
|
76
|
-
export { Chat, Message, User, Vertical, Macro, Partner, Company, CompanySettings, Review, Wallet, StripeLog, Transaction, Lead, TierConfig, TierProgress, MonthlyTierSnapshot, Product, Plan, PlanOption, Addon, Subscription, Visitor, Group, Agent, LeadLedger, Invoice, LeadDispute, Session, LoginOtp, Counter, Employee, CallSession, Request, Role, opsTree, employeeTree, partnerTree, clientTree, DASHBOARDS, getTree, getAllKeys, getParentKey, getAncestorKeys, resolveEffectivePermissions, hasPermission, validateGrantedKeys, validateExtraKeys, getFullAccessKeys, roleSeeds, };
|
|
77
|
-
export type { IChat, IMessage, IUser, IVertical, IMacro, IPartner, ICompany, IOnboardingStep, ITwilioConfig, ICompanySettings, ICallConnectSettings, ILeadConfig, ILeadFields, IReview, IWallet, IStripeLog, ITransaction, ILead, ITierConfig, ITierProgress, IMonthlyTierSnapshot, IProduct, IPlan, IPlanOption, IAddon, ISubscription, IVisitor, IGroup, IAgent, ILeadLedger, IInvoice, ILeadDispute, ISession, ILoginOtp, IEmployee, ICallSession, CallSessionStatus, CallSessionDirection, IRequest, IRequestAttachment,
|
|
78
|
+
export { Chat, Message, User, Vertical, Macro, Partner, Company, CompanySettings, Review, Wallet, StripeLog, Transaction, Lead, TierConfig, TierProgress, MonthlyTierSnapshot, Product, Plan, PlanOption, Addon, Subscription, Visitor, Group, Agent, LeadLedger, Invoice, LeadDispute, Session, LoginOtp, Counter, Employee, CallSession, Request, Ticket, Role, opsTree, employeeTree, partnerTree, clientTree, DASHBOARDS, getTree, getAllKeys, getParentKey, getAncestorKeys, resolveEffectivePermissions, hasPermission, validateGrantedKeys, validateExtraKeys, getFullAccessKeys, roleSeeds, };
|
|
79
|
+
export type { IChat, IMessage, IUser, IVertical, IMacro, IPartner, ICompany, IOnboardingStep, ITwilioConfig, ICompanySettings, ICallConnectSettings, ILeadConfig, ILeadFields, IReview, IWallet, IStripeLog, ITransaction, ILead, ITierConfig, ITierProgress, IMonthlyTierSnapshot, IProduct, IPlan, IPlanOption, IAddon, ISubscription, IVisitor, IGroup, IAgent, ILeadLedger, IInvoice, ILeadDispute, ISession, ILoginOtp, IEmployee, ICallSession, CallSessionStatus, CallSessionDirection, IRequest, IRequestAttachment, RequestCategory, RequestStatus, REQUEST_CATEGORIES, REQUEST_SUBCATEGORIES_BY_CATEGORY, ITicket, ITicketAttachment, TicketCategory, TicketOwnerType, TicketSource, TicketStatus, IRole, Dashboard, PermissionNode, PermissionSource, ValidationResult, RoleSeed, };
|
|
78
80
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.roleSeeds = exports.getFullAccessKeys = exports.validateExtraKeys = exports.validateGrantedKeys = exports.hasPermission = exports.resolveEffectivePermissions = exports.getAncestorKeys = exports.getParentKey = exports.getAllKeys = exports.getTree = exports.DASHBOARDS = exports.clientTree = exports.partnerTree = exports.employeeTree = exports.opsTree = exports.Role = exports.Request = exports.CallSession = exports.Employee = exports.Counter = exports.LoginOtp = exports.Session = exports.LeadDispute = exports.Invoice = exports.LeadLedger = exports.Agent = exports.Group = exports.Visitor = exports.Subscription = exports.Addon = exports.PlanOption = exports.Plan = exports.Product = exports.MonthlyTierSnapshot = exports.TierProgress = exports.TierConfig = exports.Lead = exports.Transaction = exports.StripeLog = exports.Wallet = exports.Review = exports.CompanySettings = exports.Company = exports.Partner = exports.Macro = exports.Vertical = exports.User = exports.Message = exports.Chat = void 0;
|
|
3
|
+
exports.roleSeeds = exports.getFullAccessKeys = exports.validateExtraKeys = exports.validateGrantedKeys = exports.hasPermission = exports.resolveEffectivePermissions = exports.getAncestorKeys = exports.getParentKey = exports.getAllKeys = exports.getTree = exports.DASHBOARDS = exports.clientTree = exports.partnerTree = exports.employeeTree = exports.opsTree = exports.Role = exports.Ticket = exports.Request = exports.CallSession = exports.Employee = exports.Counter = exports.LoginOtp = exports.Session = exports.LeadDispute = exports.Invoice = exports.LeadLedger = exports.Agent = exports.Group = exports.Visitor = exports.Subscription = exports.Addon = exports.PlanOption = exports.Plan = exports.Product = exports.MonthlyTierSnapshot = exports.TierProgress = exports.TierConfig = exports.Lead = exports.Transaction = exports.StripeLog = exports.Wallet = exports.Review = exports.CompanySettings = exports.Company = exports.Partner = exports.Macro = exports.Vertical = exports.User = exports.Message = exports.Chat = void 0;
|
|
4
4
|
// MODELS
|
|
5
5
|
const chat_model_1 = require("./models/chat.model");
|
|
6
6
|
Object.defineProperty(exports, "Chat", { enumerable: true, get: function () { return chat_model_1.Chat; } });
|
|
@@ -68,6 +68,8 @@ const callSession_model_1 = require("./models/callSession.model");
|
|
|
68
68
|
Object.defineProperty(exports, "CallSession", { enumerable: true, get: function () { return callSession_model_1.CallSession; } });
|
|
69
69
|
const request_model_1 = require("./models/request.model");
|
|
70
70
|
Object.defineProperty(exports, "Request", { enumerable: true, get: function () { return request_model_1.Request; } });
|
|
71
|
+
const ticket_model_1 = require("./models/ticket.model");
|
|
72
|
+
Object.defineProperty(exports, "Ticket", { enumerable: true, get: function () { return ticket_model_1.Ticket; } });
|
|
71
73
|
const role_model_1 = require("./models/role.model");
|
|
72
74
|
Object.defineProperty(exports, "Role", { enumerable: true, get: function () { return role_model_1.Role; } });
|
|
73
75
|
// PERMISSIONS
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/agent.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE5C,KAAK,SAAS,GAAG,YAAY,GAAG,iBAAiB,GAAG,OAAO,CAAC;AAC5D,KAAK,aAAa,GAAG,MAAM,CAAC;AAC5B,KAAK,cAAc,GAAG,WAAW,GAAG,MAAM,CAAC;AAE3C,MAAM,WAAW,MAAO,SAAQ,QAAQ;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAI1B,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC5C,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,UAAU,EAAE,OAAO,CAAC;CACrB"}
|
|
1
|
+
{"version":3,"file":"agent.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/agent.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE5C,KAAK,SAAS,GAAG,YAAY,GAAG,iBAAiB,GAAG,OAAO,CAAC;AAC5D,KAAK,aAAa,GAAG,MAAM,CAAC;AAC5B,KAAK,cAAc,GAAG,WAAW,GAAG,MAAM,CAAC;AAE3C,MAAM,WAAW,MAAO,SAAQ,QAAQ;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAI1B,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC5C,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,UAAU,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
import { Document, Types } from "mongoose";
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Category/sub-category taxonomy -- mirrors the Client Dashboard's real
|
|
4
|
+
* NewRequest.tsx form (src/constants/requestForm.ts) verbatim. That frontend
|
|
5
|
+
* form is the actual product surface; this model was previously out of sync
|
|
6
|
+
* with it (a narrower, unused 5-category enum) until reconciled 2026-09-13.
|
|
7
|
+
* Keep both copies in sync if the taxonomy ever changes.
|
|
8
|
+
*/
|
|
9
|
+
export declare const REQUEST_SUBCATEGORIES_BY_CATEGORY: {
|
|
10
|
+
readonly "Account Information Update": readonly ["Basic Information", "Website URL"];
|
|
11
|
+
readonly "Contact Information": readonly ["Firm Name", "Firm Owner", "Owner's Phone", "Owner's Email", "Firm's Representative", "Representative's Phone", "Representative's Email", "Firm Address", "City", "State"];
|
|
12
|
+
readonly "Office hours": readonly ["Time Zone", "Hours"];
|
|
13
|
+
readonly "Call Connect hours": readonly ["Call connect number", "Call Connect Time Zone", "Hours", "Twilio call transcript email", "SMS number (review)", "Fax Number (review)"];
|
|
14
|
+
readonly "Lead Form": readonly ["Enable Field", "Disable Field", "Visitor Name", "Phone number", "Email Address", "City", "State", "Address", "Zip code", "Lead Transcript Email"];
|
|
15
|
+
readonly "Seats Purchase": readonly ["Add", "Remove", "Number of seats"];
|
|
16
|
+
readonly Script: readonly ["Folder", "Business Description", "Coverage Area", "Business Questions", "Services", "Text Area"];
|
|
17
|
+
readonly "Feature/Add-ons update": readonly ["Add", "Remove", "Intake Questions", "User Seats", "Email Lead Notification", "Basic Call Connect", "Custom Branding", "Custom Greeting", "Multilingual Chat", "HIPAA Compliant Leads", "Secure Leads", "Google Analytics", "Advanced Call Connect", "Custom Reporting", "Custom Email Routing", "Appointment Scheduling", "Retainer Signing", "Custom CRM Integration", "Advanced Script Customization", "Team Notifications"];
|
|
18
|
+
readonly "Plan Upgrade": readonly ["Subscription Plan", "Starter / Pro / Advance"];
|
|
19
|
+
readonly "Custom Plan": readonly ["Desired add-on list"];
|
|
20
|
+
};
|
|
21
|
+
export declare const REQUEST_CATEGORIES: RequestCategory[];
|
|
22
|
+
export type RequestCategory = keyof typeof REQUEST_SUBCATEGORIES_BY_CATEGORY;
|
|
3
23
|
export type RequestStatus = "pending" | "in_progress" | "resolved";
|
|
4
|
-
export interface IRequestDetails {
|
|
5
|
-
subcategory?: string;
|
|
6
|
-
reason?: string;
|
|
7
|
-
plan?: string;
|
|
8
|
-
folder?: string;
|
|
9
|
-
macro?: string;
|
|
10
|
-
}
|
|
11
24
|
export interface IRequestAttachment {
|
|
12
25
|
url: string;
|
|
13
26
|
s3Key: string;
|
|
@@ -19,8 +32,8 @@ export interface IRequest extends Document {
|
|
|
19
32
|
requestId: string;
|
|
20
33
|
companyId: Types.ObjectId;
|
|
21
34
|
category: RequestCategory;
|
|
22
|
-
|
|
23
|
-
description
|
|
35
|
+
subCategory: string;
|
|
36
|
+
description: string;
|
|
24
37
|
attachment?: IRequestAttachment;
|
|
25
38
|
requestedBy: Types.ObjectId;
|
|
26
39
|
status: RequestStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/request.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE3C,
|
|
1
|
+
{"version":3,"file":"request.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/request.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;;;CAoEpC,CAAC;AAEX,eAAO,MAAM,kBAAkB,EAE1B,eAAe,EAAE,CAAC;AAEvB,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,iCAAiC,CAAC;AAE7E,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAS,SAAQ,QAAQ;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC1B,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC5B,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB"}
|
|
@@ -1,2 +1,80 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.REQUEST_CATEGORIES = exports.REQUEST_SUBCATEGORIES_BY_CATEGORY = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Category/sub-category taxonomy -- mirrors the Client Dashboard's real
|
|
6
|
+
* NewRequest.tsx form (src/constants/requestForm.ts) verbatim. That frontend
|
|
7
|
+
* form is the actual product surface; this model was previously out of sync
|
|
8
|
+
* with it (a narrower, unused 5-category enum) until reconciled 2026-09-13.
|
|
9
|
+
* Keep both copies in sync if the taxonomy ever changes.
|
|
10
|
+
*/
|
|
11
|
+
exports.REQUEST_SUBCATEGORIES_BY_CATEGORY = {
|
|
12
|
+
"Account Information Update": ["Basic Information", "Website URL"],
|
|
13
|
+
"Contact Information": [
|
|
14
|
+
"Firm Name",
|
|
15
|
+
"Firm Owner",
|
|
16
|
+
"Owner's Phone",
|
|
17
|
+
"Owner's Email",
|
|
18
|
+
"Firm's Representative",
|
|
19
|
+
"Representative's Phone",
|
|
20
|
+
"Representative's Email",
|
|
21
|
+
"Firm Address",
|
|
22
|
+
"City",
|
|
23
|
+
"State",
|
|
24
|
+
],
|
|
25
|
+
"Office hours": ["Time Zone", "Hours"],
|
|
26
|
+
"Call Connect hours": [
|
|
27
|
+
"Call connect number",
|
|
28
|
+
"Call Connect Time Zone",
|
|
29
|
+
"Hours",
|
|
30
|
+
"Twilio call transcript email",
|
|
31
|
+
"SMS number (review)",
|
|
32
|
+
"Fax Number (review)",
|
|
33
|
+
],
|
|
34
|
+
"Lead Form": [
|
|
35
|
+
"Enable Field",
|
|
36
|
+
"Disable Field",
|
|
37
|
+
"Visitor Name",
|
|
38
|
+
"Phone number",
|
|
39
|
+
"Email Address",
|
|
40
|
+
"City",
|
|
41
|
+
"State",
|
|
42
|
+
"Address",
|
|
43
|
+
"Zip code",
|
|
44
|
+
"Lead Transcript Email",
|
|
45
|
+
],
|
|
46
|
+
"Seats Purchase": ["Add", "Remove", "Number of seats"],
|
|
47
|
+
Script: [
|
|
48
|
+
"Folder",
|
|
49
|
+
"Business Description",
|
|
50
|
+
"Coverage Area",
|
|
51
|
+
"Business Questions",
|
|
52
|
+
"Services",
|
|
53
|
+
"Text Area",
|
|
54
|
+
],
|
|
55
|
+
"Feature/Add-ons update": [
|
|
56
|
+
"Add",
|
|
57
|
+
"Remove",
|
|
58
|
+
"Intake Questions",
|
|
59
|
+
"User Seats",
|
|
60
|
+
"Email Lead Notification",
|
|
61
|
+
"Basic Call Connect",
|
|
62
|
+
"Custom Branding",
|
|
63
|
+
"Custom Greeting",
|
|
64
|
+
"Multilingual Chat",
|
|
65
|
+
"HIPAA Compliant Leads",
|
|
66
|
+
"Secure Leads",
|
|
67
|
+
"Google Analytics",
|
|
68
|
+
"Advanced Call Connect",
|
|
69
|
+
"Custom Reporting",
|
|
70
|
+
"Custom Email Routing",
|
|
71
|
+
"Appointment Scheduling",
|
|
72
|
+
"Retainer Signing",
|
|
73
|
+
"Custom CRM Integration",
|
|
74
|
+
"Advanced Script Customization",
|
|
75
|
+
"Team Notifications",
|
|
76
|
+
],
|
|
77
|
+
"Plan Upgrade": ["Subscription Plan", "Starter / Pro / Advance"],
|
|
78
|
+
"Custom Plan": ["Desired add-on list"],
|
|
79
|
+
};
|
|
80
|
+
exports.REQUEST_CATEGORIES = Object.keys(exports.REQUEST_SUBCATEGORIES_BY_CATEGORY);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Document, Types } from "mongoose";
|
|
2
|
+
/**
|
|
3
|
+
* Categories match the real NewTicket.tsx form (identical in Partner and
|
|
4
|
+
* Client dashboards) verbatim. "dispute-billable-lead" deliberately does NOT
|
|
5
|
+
* auto-link to the existing LeadDispute/Stripe refund-credit system --
|
|
6
|
+
* that's a separate, more specialized pipeline (see leadDispute.interface.ts).
|
|
7
|
+
* A ticket in this category just gives Ops a place to see the report and
|
|
8
|
+
* manually open the real Dispute tool once they've identified the invoice
|
|
9
|
+
* line item. Revisit auto-linking as a later phase.
|
|
10
|
+
*/
|
|
11
|
+
export type TicketCategory = "dispute-billable-lead" | "chat-dispute" | "invoice-dispute";
|
|
12
|
+
/** Who this ticket belongs to -- Company (Client Dashboard) or Partner. */
|
|
13
|
+
export type TicketOwnerType = "Company" | "Partner";
|
|
14
|
+
/**
|
|
15
|
+
* How the ticket was created. "email" is reserved for the not-yet-built
|
|
16
|
+
* inbound tickets@orbitxpro.com pipeline -- an email-created ticket has no
|
|
17
|
+
* category (an agent classifies it manually) and no requestedBy (no logged
|
|
18
|
+
* -in user), only a requesterEmail matched against a saved Company/Partner
|
|
19
|
+
* contact email.
|
|
20
|
+
*/
|
|
21
|
+
export type TicketSource = "dashboard" | "email";
|
|
22
|
+
export type TicketStatus = "open" | "in_progress" | "resolved";
|
|
23
|
+
export interface ITicketAttachment {
|
|
24
|
+
url: string;
|
|
25
|
+
s3Key: string;
|
|
26
|
+
fileName: string;
|
|
27
|
+
mimeType: string;
|
|
28
|
+
size: number;
|
|
29
|
+
}
|
|
30
|
+
export interface ITicket extends Document {
|
|
31
|
+
ticketId: string;
|
|
32
|
+
ownerType: TicketOwnerType;
|
|
33
|
+
ownerId: Types.ObjectId;
|
|
34
|
+
source: TicketSource;
|
|
35
|
+
/** Required when source is "dashboard"; left unset for "email" until an agent triages it. */
|
|
36
|
+
category?: TicketCategory;
|
|
37
|
+
/** dispute-billable-lead / chat-dispute only */
|
|
38
|
+
disputeReason?: string;
|
|
39
|
+
/** dispute-billable-lead / chat-dispute only */
|
|
40
|
+
chatId?: string;
|
|
41
|
+
/** invoice-dispute only -- free-text reference, matches the UI's free-text field */
|
|
42
|
+
invoiceId?: string;
|
|
43
|
+
description?: string;
|
|
44
|
+
attachments: ITicketAttachment[];
|
|
45
|
+
requestedBy?: Types.ObjectId;
|
|
46
|
+
/** Sender's email for an email-created ticket, or the requester's known email for reference. */
|
|
47
|
+
requesterEmail?: string;
|
|
48
|
+
status: TicketStatus;
|
|
49
|
+
remarks?: string;
|
|
50
|
+
resolvedBy?: Types.ObjectId;
|
|
51
|
+
resolvedAt?: Date;
|
|
52
|
+
createdAt?: Date;
|
|
53
|
+
updatedAt?: Date;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=ticket.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ticket.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/ticket.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG,uBAAuB,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAE1F,2EAA2E;AAC3E,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAQ,SAAQ,QAAQ;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC7B,gGAAgG;IAChG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC5B,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/user.interface.ts"],"names":[],"mappings":"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"}
|
|
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,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,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,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IAIf,MAAM,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IACxC,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,IAAI,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;IAC/C,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;IAC/C,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAED,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;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB;AACD,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.model.d.ts","sourceRoot":"","sources":["../../src/models/agent.model.ts"],"names":[],"mappings":"AAEA,OAAiB,EAAU,KAAK,EAAE,MAAM,UAAU,CAAC;AAEnD,OAAO,EAAC,MAAM,EAAC,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.model.d.ts","sourceRoot":"","sources":["../../src/models/agent.model.ts"],"names":[],"mappings":"AAEA,OAAiB,EAAU,KAAK,EAAE,MAAM,UAAU,CAAC;AAEnD,OAAO,EAAC,MAAM,EAAC,MAAM,+BAA+B,CAAC;AA8JrD,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,CAAgD,CAAC;AACjF,eAAe,KAAK,CAAC"}
|
|
@@ -110,6 +110,12 @@ const agentSchema = new mongoose_1.Schema({
|
|
|
110
110
|
default: false,
|
|
111
111
|
index: true,
|
|
112
112
|
},
|
|
113
|
+
// Auto-lockout after too many wrong passwords in a row -- same pattern
|
|
114
|
+
// as User.failedLoginAttempts.
|
|
115
|
+
failedLoginAttempts: {
|
|
116
|
+
type: Number,
|
|
117
|
+
default: 0,
|
|
118
|
+
},
|
|
113
119
|
lastLogin: {
|
|
114
120
|
type: Date,
|
|
115
121
|
default: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.model.d.ts","sourceRoot":"","sources":["../../src/models/request.model.ts"],"names":[],"mappings":"AAAA,OAAO,QAAoB,MAAM,UAAU,CAAC;AAE5C,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"request.model.d.ts","sourceRoot":"","sources":["../../src/models/request.model.ts"],"names":[],"mappings":"AAAA,OAAO,QAAoB,MAAM,UAAU,CAAC;AAE5C,OAAO,EACL,QAAQ,EAIT,MAAM,iCAAiC,CAAC;AAyGzC,eAAO,MAAM,OAAO;;;;OAAqD,CAAC;AAC1E,eAAe,OAAO,CAAC"}
|
|
@@ -36,13 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.Request = void 0;
|
|
37
37
|
const mongoose_1 = __importStar(require("mongoose"));
|
|
38
38
|
const counter_model_1 = require("./counter.model");
|
|
39
|
-
const
|
|
40
|
-
subcategory: { type: String, trim: true, maxlength: 150 },
|
|
41
|
-
reason: { type: String, trim: true, maxlength: 150 },
|
|
42
|
-
plan: { type: String, trim: true, maxlength: 150 },
|
|
43
|
-
folder: { type: String, trim: true, maxlength: 150 },
|
|
44
|
-
macro: { type: String, trim: true, maxlength: 150 },
|
|
45
|
-
}, { _id: false });
|
|
39
|
+
const request_interface_1 = require("../interfaces/request.interface");
|
|
46
40
|
const requestAttachmentSchema = new mongoose_1.Schema({
|
|
47
41
|
url: { type: String, required: true, trim: true },
|
|
48
42
|
s3Key: { type: String, required: true, trim: true },
|
|
@@ -65,23 +59,19 @@ const requestSchema = new mongoose_1.Schema({
|
|
|
65
59
|
},
|
|
66
60
|
category: {
|
|
67
61
|
type: String,
|
|
68
|
-
enum:
|
|
69
|
-
"business_information",
|
|
70
|
-
"contact_information",
|
|
71
|
-
"cancellation",
|
|
72
|
-
"change_plan",
|
|
73
|
-
"script",
|
|
74
|
-
],
|
|
62
|
+
enum: request_interface_1.REQUEST_CATEGORIES,
|
|
75
63
|
required: [true, "Request category is required"],
|
|
76
64
|
index: true,
|
|
77
65
|
},
|
|
78
|
-
|
|
79
|
-
type:
|
|
80
|
-
required: [true, "Request
|
|
81
|
-
|
|
66
|
+
subCategory: {
|
|
67
|
+
type: String,
|
|
68
|
+
required: [true, "Request sub-category is required"],
|
|
69
|
+
trim: true,
|
|
70
|
+
maxlength: 150,
|
|
82
71
|
},
|
|
83
72
|
description: {
|
|
84
73
|
type: String,
|
|
74
|
+
required: [true, "Request description is required"],
|
|
85
75
|
trim: true,
|
|
86
76
|
maxlength: [5000, "Description cannot exceed 5000 characters"],
|
|
87
77
|
},
|
|
@@ -114,27 +104,9 @@ const requestSchema = new mongoose_1.Schema({
|
|
|
114
104
|
toObject: { virtuals: true },
|
|
115
105
|
});
|
|
116
106
|
requestSchema.pre("validate", function () {
|
|
117
|
-
const
|
|
118
|
-
if (
|
|
119
|
-
|
|
120
|
-
this.invalidate("details.subcategory", "Request sub-category is required");
|
|
121
|
-
}
|
|
122
|
-
if (this.category === "cancellation" && !details.reason) {
|
|
123
|
-
this.invalidate("details.reason", "Cancellation reason is required");
|
|
124
|
-
}
|
|
125
|
-
if (this.category === "change_plan" && !details.plan) {
|
|
126
|
-
this.invalidate("details.plan", "Requested plan is required");
|
|
127
|
-
}
|
|
128
|
-
if (this.category === "script") {
|
|
129
|
-
if (!details.folder) {
|
|
130
|
-
this.invalidate("details.folder", "Script folder is required");
|
|
131
|
-
}
|
|
132
|
-
if (!details.macro) {
|
|
133
|
-
this.invalidate("details.macro", "Script macro is required");
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
if (this.category !== "cancellation" && !this.description) {
|
|
137
|
-
this.invalidate("description", "Request description is required");
|
|
107
|
+
const validSubcategories = request_interface_1.REQUEST_SUBCATEGORIES_BY_CATEGORY[this.category];
|
|
108
|
+
if (validSubcategories && !validSubcategories.includes(this.subCategory)) {
|
|
109
|
+
this.invalidate("subCategory", `"${this.subCategory}" is not a valid sub-category for "${this.category}"`);
|
|
138
110
|
}
|
|
139
111
|
});
|
|
140
112
|
requestSchema.pre("save", async function () {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import mongoose from "mongoose";
|
|
2
|
+
import { ITicket } from "../interfaces/ticket.interface";
|
|
3
|
+
export declare const Ticket: mongoose.Model<ITicket, {}, {}, {}, mongoose.Document<unknown, {}, ITicket, {}, {}> & ITicket & Required<{
|
|
4
|
+
_id: unknown;
|
|
5
|
+
}> & {
|
|
6
|
+
__v: number;
|
|
7
|
+
}, any>;
|
|
8
|
+
export default Ticket;
|
|
9
|
+
//# sourceMappingURL=ticket.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ticket.model.d.ts","sourceRoot":"","sources":["../../src/models/ticket.model.ts"],"names":[],"mappings":"AAAA,OAAO,QAAoB,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAqB,MAAM,gCAAgC,CAAC;AA+H5E,eAAO,MAAM,MAAM;;;;OAAkD,CAAC;AACtE,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
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.Ticket = void 0;
|
|
37
|
+
const mongoose_1 = __importStar(require("mongoose"));
|
|
38
|
+
const counter_model_1 = require("./counter.model");
|
|
39
|
+
const ticketAttachmentSchema = new mongoose_1.Schema({
|
|
40
|
+
url: { type: String, required: true, trim: true },
|
|
41
|
+
s3Key: { type: String, required: true, trim: true },
|
|
42
|
+
fileName: { type: String, required: true, trim: true },
|
|
43
|
+
mimeType: { type: String, required: true, trim: true },
|
|
44
|
+
size: { type: Number, required: true, min: 0 },
|
|
45
|
+
}, { _id: false });
|
|
46
|
+
const ticketSchema = new mongoose_1.Schema({
|
|
47
|
+
ticketId: {
|
|
48
|
+
type: String,
|
|
49
|
+
unique: true,
|
|
50
|
+
immutable: true,
|
|
51
|
+
index: true,
|
|
52
|
+
},
|
|
53
|
+
ownerType: {
|
|
54
|
+
type: String,
|
|
55
|
+
enum: ["Company", "Partner"],
|
|
56
|
+
required: [true, "Ticket owner type is required"],
|
|
57
|
+
index: true,
|
|
58
|
+
},
|
|
59
|
+
ownerId: {
|
|
60
|
+
type: mongoose_1.Schema.Types.ObjectId,
|
|
61
|
+
refPath: "ownerType",
|
|
62
|
+
required: [true, "Ticket owner is required"],
|
|
63
|
+
index: true,
|
|
64
|
+
},
|
|
65
|
+
source: {
|
|
66
|
+
type: String,
|
|
67
|
+
enum: ["dashboard", "email"],
|
|
68
|
+
default: "dashboard",
|
|
69
|
+
index: true,
|
|
70
|
+
},
|
|
71
|
+
category: {
|
|
72
|
+
type: String,
|
|
73
|
+
enum: ["dispute-billable-lead", "chat-dispute", "invoice-dispute"],
|
|
74
|
+
index: true,
|
|
75
|
+
},
|
|
76
|
+
disputeReason: { type: String, trim: true, maxlength: 150 },
|
|
77
|
+
chatId: { type: String, trim: true, maxlength: 150 },
|
|
78
|
+
invoiceId: { type: String, trim: true, maxlength: 150 },
|
|
79
|
+
description: {
|
|
80
|
+
type: String,
|
|
81
|
+
trim: true,
|
|
82
|
+
maxlength: [5000, "Description cannot exceed 5000 characters"],
|
|
83
|
+
},
|
|
84
|
+
attachments: {
|
|
85
|
+
type: [ticketAttachmentSchema],
|
|
86
|
+
default: [],
|
|
87
|
+
},
|
|
88
|
+
requestedBy: {
|
|
89
|
+
type: mongoose_1.Schema.Types.ObjectId,
|
|
90
|
+
ref: "User",
|
|
91
|
+
},
|
|
92
|
+
requesterEmail: {
|
|
93
|
+
type: String,
|
|
94
|
+
trim: true,
|
|
95
|
+
lowercase: true,
|
|
96
|
+
},
|
|
97
|
+
status: {
|
|
98
|
+
type: String,
|
|
99
|
+
enum: ["open", "in_progress", "resolved"],
|
|
100
|
+
default: "open",
|
|
101
|
+
index: true,
|
|
102
|
+
},
|
|
103
|
+
remarks: {
|
|
104
|
+
type: String,
|
|
105
|
+
trim: true,
|
|
106
|
+
maxlength: [5000, "Remarks cannot exceed 5000 characters"],
|
|
107
|
+
},
|
|
108
|
+
resolvedBy: {
|
|
109
|
+
type: mongoose_1.Schema.Types.ObjectId,
|
|
110
|
+
ref: "User",
|
|
111
|
+
},
|
|
112
|
+
resolvedAt: Date,
|
|
113
|
+
}, {
|
|
114
|
+
timestamps: true,
|
|
115
|
+
toJSON: { virtuals: true },
|
|
116
|
+
toObject: { virtuals: true },
|
|
117
|
+
});
|
|
118
|
+
ticketSchema.pre("validate", function () {
|
|
119
|
+
if (this.source === "dashboard") {
|
|
120
|
+
if (!this.category) {
|
|
121
|
+
this.invalidate("category", "Ticket category is required");
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (!this.description) {
|
|
125
|
+
this.invalidate("description", "Ticket description is required");
|
|
126
|
+
}
|
|
127
|
+
if (["dispute-billable-lead", "chat-dispute"].includes(this.category)) {
|
|
128
|
+
if (!this.disputeReason) {
|
|
129
|
+
this.invalidate("disputeReason", "Dispute reason is required");
|
|
130
|
+
}
|
|
131
|
+
if (!this.chatId) {
|
|
132
|
+
this.invalidate("chatId", "Chat ID is required");
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (this.category === "invoice-dispute" && !this.invoiceId) {
|
|
136
|
+
this.invalidate("invoiceId", "Invoice ID is required");
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
ticketSchema.pre("save", async function () {
|
|
141
|
+
if (!this.isNew || this.ticketId)
|
|
142
|
+
return;
|
|
143
|
+
const counter = await counter_model_1.Counter.findByIdAndUpdate("ticketId", { $inc: { seq: 1 } }, { new: true, upsert: true, setDefaultsOnInsert: true });
|
|
144
|
+
this.ticketId = `TCK-${String(counter.seq).padStart(6, "0")}`;
|
|
145
|
+
});
|
|
146
|
+
ticketSchema.index({ ownerType: 1, ownerId: 1, createdAt: -1 });
|
|
147
|
+
ticketSchema.index({ ownerType: 1, ownerId: 1, status: 1, createdAt: -1 });
|
|
148
|
+
exports.Ticket = mongoose_1.default.model("Ticket", ticketSchema);
|
|
149
|
+
exports.default = exports.Ticket;
|
|
@@ -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;
|
|
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;AAsQrD,eAAO,MAAM,IAAI;;;;OAA4C,CAAC"}
|
|
@@ -196,6 +196,14 @@ const userSchema = new mongoose_1.Schema({
|
|
|
196
196
|
type: Boolean,
|
|
197
197
|
default: false,
|
|
198
198
|
},
|
|
199
|
+
// Auto-lockout after too many wrong passwords in a row -- reset to 0 on
|
|
200
|
+
// a successful login, incremented on each failure in auth.controller.js.
|
|
201
|
+
// Reaching the threshold there sets lockedOut = true; only an admin
|
|
202
|
+
// toggling Locked Out back to "No" on the Profile clears it.
|
|
203
|
+
failedLoginAttempts: {
|
|
204
|
+
type: Number,
|
|
205
|
+
default: 0,
|
|
206
|
+
},
|
|
199
207
|
userId: {
|
|
200
208
|
type: String,
|
|
201
209
|
unique: true,
|