@routebot/constants 0.3.11 → 0.3.14

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,4 +1,5 @@
1
1
  const { USAGE_TYPES } = require("./usage.constants");
2
+ const { PERMISSION_TYPES } = require("./permission.constants");
2
3
 
3
4
  const COMPANY_DOMAINS = {
4
5
  STUDENT: "STUDENT",
@@ -6,10 +7,13 @@ const COMPANY_DOMAINS = {
6
7
  };
7
8
 
8
9
  const COMPANY_FEATURES = {
9
- SMS_COMMUNICATION: "smsCommunication",
10
- PHONE_APP: "phoneApp",
11
10
  ACCOUNTING: "accounting",
12
11
  INVENTORY: "inventory",
12
+ PHONE_APP: "phoneApp",
13
+ SERVICE_REPORTS: "serviceReports",
14
+ SHIFT_MANAGEMENT: "shiftManagement",
15
+ SMS_COMMUNICATION: "smsCommunication",
16
+ TRANSFERS: "transfers",
13
17
  WEBSITE_NOTIFICATIONS: "websiteNotifications",
14
18
  };
15
19
 
@@ -56,46 +60,83 @@ const PLAN_QUOTAS = {
56
60
 
57
61
  const PLAN_FEATURES = {
58
62
  [PLANS.DEMO]: {
59
- [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
60
- [COMPANY_FEATURES.PHONE_APP]: false,
61
63
  [COMPANY_FEATURES.ACCOUNTING]: false,
62
64
  [COMPANY_FEATURES.INVENTORY]: false,
65
+ [COMPANY_FEATURES.PHONE_APP]: false,
66
+ [COMPANY_FEATURES.SERVICE_REPORTS]: false,
67
+ [COMPANY_FEATURES.SHIFT_MANAGEMENT]: false,
68
+ [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
69
+ [COMPANY_FEATURES.TRANSFERS]: false,
63
70
  [COMPANY_FEATURES.WEBSITE_NOTIFICATIONS]: false,
64
71
  },
72
+
65
73
  [PLANS.FREE]: {
66
- [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
67
- [COMPANY_FEATURES.PHONE_APP]: false,
68
74
  [COMPANY_FEATURES.ACCOUNTING]: false,
69
75
  [COMPANY_FEATURES.INVENTORY]: false,
76
+ [COMPANY_FEATURES.PHONE_APP]: false,
77
+ [COMPANY_FEATURES.SERVICE_REPORTS]: false,
78
+ [COMPANY_FEATURES.SHIFT_MANAGEMENT]: false,
79
+ [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
80
+ [COMPANY_FEATURES.TRANSFERS]: false,
70
81
  [COMPANY_FEATURES.WEBSITE_NOTIFICATIONS]: false,
71
82
  },
72
83
  [PLANS.PRO]: {
73
- [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
74
- [COMPANY_FEATURES.PHONE_APP]: false,
75
84
  [COMPANY_FEATURES.ACCOUNTING]: false,
76
85
  [COMPANY_FEATURES.INVENTORY]: false,
86
+ [COMPANY_FEATURES.PHONE_APP]: false,
87
+ [COMPANY_FEATURES.SERVICE_REPORTS]: false,
88
+ [COMPANY_FEATURES.SHIFT_MANAGEMENT]: false,
89
+ [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
90
+ [COMPANY_FEATURES.TRANSFERS]: false,
77
91
  [COMPANY_FEATURES.WEBSITE_NOTIFICATIONS]: false,
78
92
  },
79
93
  [PLANS.ENTERPRISE]: {
80
- [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
81
- [COMPANY_FEATURES.PHONE_APP]: false,
82
94
  [COMPANY_FEATURES.ACCOUNTING]: false,
83
95
  [COMPANY_FEATURES.INVENTORY]: false,
96
+ [COMPANY_FEATURES.PHONE_APP]: false,
97
+ [COMPANY_FEATURES.SERVICE_REPORTS]: false,
98
+ [COMPANY_FEATURES.SHIFT_MANAGEMENT]: false,
99
+ [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
100
+ [COMPANY_FEATURES.TRANSFERS]: false,
84
101
  [COMPANY_FEATURES.WEBSITE_NOTIFICATIONS]: false,
85
102
  },
86
103
  [PLANS.UNLIMITED]: {
87
- [COMPANY_FEATURES.SMS_COMMUNICATION]: true,
88
- [COMPANY_FEATURES.PHONE_APP]: true,
89
- [COMPANY_FEATURES.ACCOUNTING]: true,
90
- [COMPANY_FEATURES.INVENTORY]: true,
91
- [COMPANY_FEATURES.WEBSITE_NOTIFICATIONS]: true,
104
+ [COMPANY_FEATURES.ACCOUNTING]: false,
105
+ [COMPANY_FEATURES.INVENTORY]: false,
106
+ [COMPANY_FEATURES.PHONE_APP]: false,
107
+ [COMPANY_FEATURES.SERVICE_REPORTS]: false,
108
+ [COMPANY_FEATURES.SHIFT_MANAGEMENT]: false,
109
+ [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
110
+ [COMPANY_FEATURES.TRANSFERS]: false,
111
+ [COMPANY_FEATURES.WEBSITE_NOTIFICATIONS]: false,
92
112
  },
93
113
  };
94
114
 
115
+ const FEATURE_PERMISSION_DEPENDENCIES = {
116
+ [PERMISSION_TYPES.ACCESS_TO_ACCOUNTING]: [COMPANY_FEATURES.ACCOUNTING],
117
+ [PERMISSION_TYPES.ACCESS_TO_INVENTORY]: [COMPANY_FEATURES.INVENTORY],
118
+ [PERMISSION_TYPES.ACCESS_TO_WRITE_INVENTORY]: [COMPANY_FEATURES.INVENTORY],
119
+ [PERMISSION_TYPES.ACCESS_TO_SERVISTESIN]: [COMPANY_FEATURES.PHONE_APP],
120
+ [PERMISSION_TYPES.ACCESS_TO_LIVE]: [COMPANY_FEATURES.PHONE_APP],
121
+ [PERMISSION_TYPES.ACCESS_TO_SERVICE_REPORTS]: [COMPANY_FEATURES.SERVICE_REPORTS],
122
+ [PERMISSION_TYPES.ACCESS_TO_TRANSFERS]: [COMPANY_FEATURES.TRANSFERS],
123
+ [PERMISSION_TYPES.ACCESS_TO_SHIFTS]: [COMPANY_FEATURES.SHIFT_MANAGEMENT],
124
+ };
125
+
126
+ const isPermissionAvailableForCompanyFeature = (companyFeatures = {}, permissionType) => {
127
+ const featureKeys = FEATURE_PERMISSION_DEPENDENCIES[permissionType];
128
+
129
+ if (!featureKeys || featureKeys.length === 0) return true;
130
+
131
+ return featureKeys.some((featureKey) => !!companyFeatures[featureKey]);
132
+ };
133
+
95
134
  module.exports = {
96
135
  PLANS,
97
136
  PLAN_QUOTAS,
98
137
  COMPANY_FEATURES,
99
138
  COMPANY_DOMAINS,
100
139
  PLAN_FEATURES,
140
+ FEATURE_PERMISSION_DEPENDENCIES,
141
+ isPermissionAvailableForCompanyFeature,
101
142
  };
@@ -21,6 +21,13 @@ const CLIENT_ROLES = {
21
21
  DEMO: "demo",
22
22
  };
23
23
 
24
+ const CLIENT_STATUSES = {
25
+ ACTIVE: "ACTIVE",
26
+ PENDING: "PENDING",
27
+ DISABLED: "DISABLED",
28
+ REMOVED: "REMOVED",
29
+ };
30
+
24
31
  const SCHOOL_TYPES = {
25
32
  SCHOOL: "1",
26
33
  PERSONEL: "2",
@@ -169,4 +176,5 @@ module.exports = {
169
176
  isSchoolPersonel,
170
177
  QR_CODE_TYPES,
171
178
  COLORS,
179
+ CLIENT_STATUSES,
172
180
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@routebot/constants",
3
- "version": "0.3.11",
3
+ "version": "0.3.14",
4
4
  "description": "Shared constants for RouteBot FE/BE",
5
5
  "main": "index.js",
6
6
  "files": [