ui-soxo-bootstrap-core 2.4.24 → 2.4.25-dev.6

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.
Files changed (33) hide show
  1. package/.github/workflows/npm-publish.yml +37 -15
  2. package/README.md +260 -0
  3. package/core/components/extra-info/extra-info-details.js +109 -126
  4. package/core/components/landing-api/landing-api.js +22 -30
  5. package/core/lib/Store.js +20 -18
  6. package/core/lib/components/index.js +4 -1
  7. package/core/lib/components/sidemenu/sidemenu.js +153 -256
  8. package/core/lib/components/sidemenu/sidemenu.scss +39 -26
  9. package/core/lib/hooks/index.js +2 -12
  10. package/core/lib/hooks/use-otp-timer.js +99 -0
  11. package/core/lib/pages/login/login.js +255 -139
  12. package/core/lib/pages/login/login.scss +140 -32
  13. package/core/models/dashboard/dashboard.js +14 -0
  14. package/core/models/doctor/components/doctor-add/doctor-add.js +403 -0
  15. package/core/models/doctor/components/doctor-add/doctor-add.scss +32 -0
  16. package/core/models/menus/components/menu-add/menu-add.js +230 -268
  17. package/core/models/menus/components/menu-lists/menu-lists.js +126 -89
  18. package/core/models/menus/components/menu-lists/menu-lists.scss +9 -0
  19. package/core/models/menus/menus.js +247 -267
  20. package/core/models/roles/components/role-add/role-add.js +269 -227
  21. package/core/models/roles/components/role-list/role-list.js +8 -6
  22. package/core/models/roles/roles.js +182 -174
  23. package/core/models/users/components/user-add/user-add.js +619 -365
  24. package/core/models/users/components/user-add/user-edit.js +90 -0
  25. package/core/models/users/users.js +261 -165
  26. package/core/modules/index.js +5 -8
  27. package/core/modules/reporting/components/index.js +5 -0
  28. package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.js +65 -2
  29. package/core/modules/steps/action-buttons.js +79 -0
  30. package/core/modules/steps/steps.js +553 -0
  31. package/core/modules/steps/steps.scss +158 -0
  32. package/core/modules/steps/timeline.js +49 -0
  33. package/package.json +2 -2
@@ -0,0 +1,90 @@
1
+ import React, { useState } from 'react';
2
+ import { Modal, Button, Skeleton } from 'antd';
3
+ import { EditOutlined } from '@ant-design/icons';
4
+ import UserAdd from '../../../../models/users/components/user-add/user-add';
5
+ import { UsersAPI } from '../../..';
6
+
7
+ export default function UserEdit(record) {
8
+ const [visible, setVisible] = useState(false);
9
+ const [userData, setUserData] = useState({});
10
+ const [loading, setLoading] = useState(false);
11
+ // Handle edit button click
12
+ const handleEditClick = () => {
13
+ if (!record.id) {
14
+ console.warn('Invalid record: Missing ID');
15
+ return;
16
+ }
17
+
18
+ setVisible(true);
19
+ setLoading(true);
20
+ // Fetch user data from API
21
+ UsersAPI.getUser({ id: record.id })
22
+ .then((result) => {
23
+ if (result?.success && result?.result) {
24
+ // Map API data to form fields
25
+ const apiData = result.result;
26
+ // Parse `other_details` if it's a JSON string
27
+ let otherDetails = {};
28
+ if (apiData.other_details) {
29
+ // Try parsing other_details, handle error if invalid JSON
30
+ try {
31
+ otherDetails = JSON.parse(apiData.other_details);
32
+ } catch (err) {
33
+ console.warn('Failed to parse other_details:', apiData.other_details);
34
+ }
35
+ }
36
+ let orgDetails = {};
37
+ try {
38
+ // Parse organization_details if it's a JSON string
39
+ orgDetails = apiData.organization_details ? JSON.parse(apiData.organization_details) : {};
40
+ } catch (e) {
41
+ orgDetails = {};
42
+ }
43
+ // Construct mapped data object
44
+ const mappedData = {
45
+ id: apiData.id,
46
+ user_type: otherDetails.user_type || apiData.user_type,
47
+ name: apiData.name,
48
+ email: apiData.email,
49
+ mobile: apiData.mobile,
50
+ designation: apiData.designation_code,
51
+ department: apiData.department_id,
52
+ // Handle selected branches and default branch
53
+ selectedBranches: orgDetails.branch_ids || [],
54
+ defaultBranch: apiData.firm_id || null,
55
+ password: apiData.password,
56
+ user_group: apiData.user_group,
57
+ // Handle doctor codes
58
+ default_code: apiData.doctor_code,
59
+ doctor_code: apiData.doctor_code,
60
+ auth_type: apiData.auth_type,
61
+ FA: apiData.FA,
62
+ active: apiData.active ? true : false,
63
+ };
64
+ // Set form data state
65
+ setUserData(mappedData);
66
+ } else {
67
+ setUserData({});
68
+ }
69
+ })
70
+ .catch((err) => console.error(err))
71
+ .finally(() => setLoading(false));
72
+ };
73
+
74
+ return (
75
+ <div>
76
+ {/* { edit button } */}
77
+ <Button type="link" icon={<EditOutlined />} onClick={handleEditClick} disabled={!record.id} />
78
+ {/* { modal for edit button} */}
79
+ <Modal open={visible} onCancel={() => setVisible(false)} footer={null} destroyOnClose width={950} style={{ top: 10 }}>
80
+ {loading ? (
81
+ <div className="">
82
+ <Skeleton active />
83
+ </div>
84
+ ) : (
85
+ <UserAdd mode="Edit" formContent={userData} callback={() => setVisible(false)} edit={true} />
86
+ )}
87
+ </Modal>
88
+ </div>
89
+ );
90
+ }
@@ -15,171 +15,267 @@ import UserList from './components/user-list/user-list';
15
15
  import UserAdd from './components/user-add/user-add';
16
16
 
17
17
  class Users extends Base {
18
-
19
- constructor() {
20
-
21
- super();
22
-
23
- this.fields = [
24
- {
25
- field: 'name',
26
- caption: 'Name',
27
- },
28
- {
29
- field: 'url',
30
- caption: 'Url',
31
- },
32
- ];
33
- }
34
-
35
- /**
36
- * Link for redirection
37
- */
38
- get link() {
39
- return this.name.toLowerCase();
40
- }
41
-
42
-
43
- get getEndpoint() {
44
- return 'users';
45
- }
46
-
47
- get path() {
48
- return `users`;
49
- }
50
-
51
- get getName() {
52
- return this.modelName + `s`;
53
- }
54
-
55
- get modelName() {
56
- return `user`;
57
- }
58
-
59
- get route() {
60
- return 'users';
61
- }
62
-
63
- /**
64
- *
65
- */
66
- get columns() {
67
- return [
68
- {
69
- caption: 'Name',
70
- field: 'name',
71
- key: 'name',
72
- },
73
-
74
- {
75
- caption: 'Email',
76
- field: 'email',
77
- key: 'email',
78
- },
79
-
80
- // {
81
- // // field: '',
82
- // title: 'Detail',
83
- // render: record => {
84
- // return (
85
- // <ExtraInfoDetail icon={true} modeValue='UD' icon='Button' title='User Details' {...record} />
86
-
87
- // );
88
- // },
89
- // }
90
-
91
- // {
92
- // caption: 'Url',
93
- // field: 'url',
94
- // key: 'url',
95
- // },
96
-
97
- // {
98
- // caption: 'Route',
99
- // field: 'route',
100
- // key: 'route',
101
- // },
102
-
103
- // {
104
- // caption: 'Doc Url',
105
- // field: 'documentation_url',
106
- // key: 'documentation_url',
107
- // },
108
-
109
- // {
110
- // caption: 'Created at',
111
- // field: 'created_at',
112
- // key: 'created_at',
113
- // render: (ele) => {
114
- // return ele.created_at ? DateUtils.formatDate(ele.created_at) : null
115
- // },
116
- // },
117
- ];
118
- }
119
-
120
- ListComponent = UserList;
121
-
122
- DetailComponent = UserDetail;
123
-
124
- ModalAddComponent = (props) => <UserAdd model={this} {...props} />;
125
-
126
- login = (formBody) => {
127
-
128
- return ApiUtils.post({ url: 'auth/login', formBody, baseUrl: process.env.REACT_APP_baseurl })
129
- }
130
-
131
-
132
- /**
133
- *
134
- * @param {*} values
135
- * @param {*} user
136
- * @returns
137
- */
138
- update = ({ id, formBody, user }) => {
139
-
140
- return ApiUtils.put({ url: this.endpoint + '/' + id, formBody });
141
- };
142
-
143
-
144
- authStatus = () => {
145
-
146
- return ApiUtils.get({ url: 'auth/whoami', baseUrl: process.env.REACT_APP_baseurl })
147
- }
148
-
149
- logout = () => {
150
-
151
- return ApiUtils.put({ url: 'auth/logout', baseUrl: process.env.REACT_APP_baseurl })
152
- }
153
-
154
- /**
155
- * Cutsom Api for creating user
156
- *
157
- * @param {*} values
158
- * @returns
159
- */
160
- create = (formBody) => {
161
-
162
- return ApiUtils.post({ url: `users/create-user`, formBody });
163
- }
164
- /**
165
- * Get Ldap users
166
- * @returns
167
- */
168
- getLdapUsers = () => {
169
-
170
- return ApiUtils.get({ url: 'auth/ldap-users', baseUrl: process.env.REACT_APP_baseurl })
171
- }
172
-
173
- /**
174
- * Cutsom Api for updating user
175
- *
176
- * @param {*} values
177
- * @returns
178
- */
179
- updateUser = ({ id, formBody }) => {
180
- return ApiUtils.put({ url: `users/update-user/${id}`, formBody });
181
- }
182
-
18
+ constructor() {
19
+ super();
20
+
21
+ this.fields = [
22
+ {
23
+ field: 'name',
24
+ caption: 'Name',
25
+ },
26
+ {
27
+ field: 'url',
28
+ caption: 'Url',
29
+ },
30
+ ];
31
+ }
32
+
33
+ /**
34
+ * Link for redirection
35
+ */
36
+ get link() {
37
+ return this.name.toLowerCase();
38
+ }
39
+
40
+ get getEndpoint() {
41
+ return 'users';
42
+ }
43
+
44
+ get path() {
45
+ return `users`;
46
+ }
47
+
48
+ get getName() {
49
+ return this.modelName + `s`;
50
+ }
51
+
52
+ get modelName() {
53
+ return `user`;
54
+ }
55
+
56
+ get route() {
57
+ return 'users';
58
+ }
59
+
60
+ /**
61
+ *
62
+ */
63
+ get columns() {
64
+ return [
65
+ {
66
+ caption: 'Name',
67
+ field: 'name',
68
+ key: 'name',
69
+ },
70
+
71
+ {
72
+ caption: 'Email',
73
+ field: 'email',
74
+ key: 'email',
75
+ },
76
+
77
+ // {
78
+ // // field: '',
79
+ // title: 'Detail',
80
+ // render: record => {
81
+ // return (
82
+ // <ExtraInfoDetail icon={true} modeValue='UD' icon='Button' title='User Details' {...record} />
83
+
84
+ // );
85
+ // },
86
+ // }
87
+
88
+ // {
89
+ // caption: 'Url',
90
+ // field: 'url',
91
+ // key: 'url',
92
+ // },
93
+
94
+ // {
95
+ // caption: 'Route',
96
+ // field: 'route',
97
+ // key: 'route',
98
+ // },
99
+
100
+ // {
101
+ // caption: 'Doc Url',
102
+ // field: 'documentation_url',
103
+ // key: 'documentation_url',
104
+ // },
105
+
106
+ // {
107
+ // caption: 'Created at',
108
+ // field: 'created_at',
109
+ // key: 'created_at',
110
+ // render: (ele) => {
111
+ // return ele.created_at ? DateUtils.formatDate(ele.created_at) : null
112
+ // },
113
+ // },
114
+ ];
115
+ }
116
+
117
+ ListComponent = UserList;
118
+
119
+ DetailComponent = UserDetail;
120
+
121
+ ModalAddComponent = (props) => <UserAdd model={this} {...props} />;
122
+
123
+ login = (formBody) => {
124
+ return ApiUtils.post({ url: 'auth/login', formBody, baseUrl: process.env.REACT_APP_baseurl });
125
+ };
126
+
127
+ /**
128
+ *
129
+ * @param {*} values
130
+ * @param {*} user
131
+ * @returns
132
+ */
133
+ update = ({ id, formBody, user }) => {
134
+ return ApiUtils.put({ url: this.endpoint + '/' + id, formBody });
135
+ };
136
+
137
+ authStatus = () => {
138
+ return ApiUtils.get({ url: 'auth/whoami', baseUrl: process.env.REACT_APP_baseurl });
139
+ };
140
+
141
+ logout = () => {
142
+ return ApiUtils.put({ url: 'auth/logout', baseUrl: process.env.REACT_APP_baseurl });
143
+ };
144
+
145
+ /**
146
+ * Cutsom Api for creating user
147
+ *
148
+ * @param {*} values
149
+ * @returns
150
+ */
151
+ create = (formBody) => {
152
+ return ApiUtils.post({ url: `users/create-user`, formBody });
153
+ };
154
+
155
+ /**
156
+ * Get Branches
157
+ * @returns
158
+ *
159
+ */
160
+ getBranches = () => {
161
+ return ApiUtils.get({
162
+ url: `branch-master/get-records`,
163
+ headers: {
164
+ db_ptr: process.env.REACT_APP_HO_DB_PTR,
165
+ },
166
+ });
167
+ };
168
+
169
+ /**
170
+ * Get Designations
171
+ * @returns
172
+ *
173
+ */
174
+ getDesignations = () => {
175
+ return ApiUtils.get({
176
+ url: `designation?dg_active=Y`,
177
+ });
178
+ };
179
+
180
+ /**
181
+ * Get Departments
182
+ * @returns
183
+ *
184
+ */
185
+ getDepartments = () => {
186
+ return ApiUtils.get({
187
+ url: `department?dp_active=Y`,
188
+ });
189
+ };
190
+
191
+ /**
192
+ * Get All doctors with active ='Y'
193
+ * @returns
194
+ *
195
+ */
196
+ getDoctors = () => {
197
+ return ApiUtils.get({
198
+ url: `doctor?do_active=Y`,
199
+ });
200
+ };
201
+
202
+ /**
203
+ *Cutsom Api for creating doctor
204
+ * @returns
205
+ */
206
+
207
+ createDoctors = (formBody) => {
208
+ return ApiUtils.post({
209
+ url: `doctor/create-doctor`,
210
+ formBody,
211
+ });
212
+ };
213
+
214
+ /**
215
+ * get all doctors
216
+ * @returns
217
+ */
218
+
219
+ getAllDoctors = () => {
220
+ return ApiUtils.get({
221
+ url: 'doctor/get-all-doctor',
222
+ });
223
+ };
224
+
225
+ /**
226
+ * edit doctor with id
227
+ * @returns
228
+ */
229
+
230
+ getDoctor = (id) => {
231
+ return ApiUtils.get({
232
+ url: `doctor/get-doctor/${id}`,
233
+ });
234
+ };
235
+
236
+ /**
237
+ * Update a doctor by ID
238
+ * @param {Object} formBody - Data to update
239
+ * @param {string|number} id - Doctor ID
240
+ * @returns {Promise} API response
241
+ */
242
+ updateDoctors = (formBody, id) => {
243
+ return ApiUtils.put({
244
+ url: `doctor/update/${id}`,
245
+ formBody,
246
+ });
247
+ };
248
+
249
+ /**
250
+ * doctor code validation
251
+ *
252
+ */
253
+ getDoctorCode = (code) => {
254
+ return ApiUtils.get({
255
+ url: `doctor/validate/${code}`,
256
+ });
257
+ };
258
+
259
+ /**
260
+ * Get Ldap users
261
+ * @returns
262
+ */
263
+ getLdapUsers = () => {
264
+ return ApiUtils.get({ url: 'auth/ldap-users', baseUrl: process.env.REACT_APP_baseurl });
265
+ };
266
+
267
+ /**
268
+ * Cutsom Api for updating user
269
+ *
270
+ * @param {*} values
271
+ * @returns
272
+ */
273
+ updateUser = ({ id, formBody }) => {
274
+ return ApiUtils.put({ url: `users/update-user/${id}`, formBody });
275
+ };
276
+ getUser = ({ id }) => {
277
+ return ApiUtils.get({ url: `users/${id}` });
278
+ };
183
279
  }
184
280
 
185
281
  export default Users;
@@ -1,17 +1,13 @@
1
-
2
-
3
1
  import GenericList from './generic/components/generic-list/generic-list';
4
2
 
5
- import GenericAdd from './generic/components/generic-add/generic-add'
3
+ import GenericAdd from './generic/components/generic-add/generic-add';
6
4
 
7
- import GenericEdit from './generic/components/generic-edit/generic-edit'
5
+ import GenericEdit from './generic/components/generic-edit/generic-edit';
8
6
 
9
- import GenericDetail from './generic/components/generic-detail/generic-detail'
7
+ import GenericDetail from './generic/components/generic-detail/generic-detail';
10
8
 
11
9
  import ModuleRoutes from './module-routes/module-routes';
12
10
 
13
-
14
-
15
11
  // All Dashboard Components
16
12
 
17
13
  import DashboardCard from './dashboard/components/dashboard-card/dashboard-card';
@@ -26,10 +22,11 @@ import ReportingDashboard from '../modules/reporting/components/reporting-dashbo
26
22
 
27
23
  import ChangeInfo from './Informations/change-info/change-info';
28
24
  // All Dashboard Components Ends
29
-
25
+ import ProcessStepsPage from './steps/steps';
30
26
 
31
27
 
32
28
  export {
29
+ ProcessStepsPage,
33
30
  GenericList,
34
31
  GenericAdd,
35
32
 
@@ -0,0 +1,5 @@
1
+ import UserEdit from '../../../models/users/components/user-add/user-edit';
2
+
3
+ import UserAdd from '../../../models/users/components/user-add/user-add';
4
+
5
+ export { UserEdit, UserAdd };