@routebot/constants 0.3.12 → 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
  };
@@ -25,6 +25,7 @@ const CLIENT_STATUSES = {
25
25
  ACTIVE: "ACTIVE",
26
26
  PENDING: "PENDING",
27
27
  DISABLED: "DISABLED",
28
+ REMOVED: "REMOVED",
28
29
  };
29
30
 
30
31
  const SCHOOL_TYPES = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@routebot/constants",
3
- "version": "0.3.12",
3
+ "version": "0.3.14",
4
4
  "description": "Shared constants for RouteBot FE/BE",
5
5
  "main": "index.js",
6
6
  "files": [