mario-education 2.4.567-feedback → 2.4.568-feedback

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.
@@ -19,6 +19,13 @@ export declare type Teacher = {
19
19
  id: string;
20
20
  email: string;
21
21
  };
22
+ export declare type IUserRoleDataCheck = {
23
+ isHasTeacherData: boolean;
24
+ isHasEduTeacherData: boolean;
25
+ isHasAssistantData: boolean;
26
+ isHasCounselorData: boolean;
27
+ isHasSecondaryTeacherData: boolean;
28
+ };
22
29
  export declare const rolesSelect: string[];
23
30
  export declare const ROLES: {
24
31
  ADMIN: string;
@@ -41,4 +48,5 @@ export declare const statusCheck: {
41
48
  label: string;
42
49
  }[];
43
50
  export declare const gradeLevels: string[];
51
+ export declare const SPECIAL_ROLE: string[];
44
52
  export {};
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { IOptions, TypeControl } from "../configs/constants";
2
+ import { IOptions, IUserRoleDataCheck, TypeControl } from "../configs/constants";
3
3
  declare type UserDetail = {
4
4
  id?: string;
5
5
  firstName: string;
@@ -40,5 +40,6 @@ declare const useUserDetail: (id?: string | undefined) => {
40
40
  getFile: () => void;
41
41
  checkHasTeacher: boolean;
42
42
  setCheckHasTeacher: import("react").Dispatch<import("react").SetStateAction<boolean>>;
43
+ userHasData: IUserRoleDataCheck;
43
44
  };
44
45
  export default useUserDetail;
@@ -1,4 +1,5 @@
1
1
  import 'react-phone-number-input/style.css';
2
+ import { IUserRoleDataCheck } from '../configs/constants';
2
3
  interface IProps {
3
4
  userDetail: any;
4
5
  confirmData: any;
@@ -9,6 +10,7 @@ interface IProps {
9
10
  currentRoles: string[];
10
11
  checkHasTeacher: boolean;
11
12
  setCheckHasTeacher: (value: boolean) => void;
13
+ userHasData: IUserRoleDataCheck;
12
14
  }
13
- declare const Profile: ({ userDetail, confirmData, goBack, teacherOptions, id, handleDisableRoles, currentRoles, checkHasTeacher, setCheckHasTeacher }: IProps) => JSX.Element;
15
+ declare const Profile: ({ userDetail, confirmData, goBack, teacherOptions, id, checkHasTeacher, setCheckHasTeacher, userHasData, currentRoles }: IProps) => JSX.Element;
14
16
  export default Profile;
package/dist/index.js CHANGED
@@ -80610,6 +80610,9 @@ var getTeachers = function getTeachers(filters) {
80610
80610
  params: filters
80611
80611
  });
80612
80612
  };
80613
+ var userRoleHasDataApi = function userRoleHasDataApi(userId) {
80614
+ return marioCore.api.get(marioCore.BASE_URL + "/api/user/check-role-data/" + userId);
80615
+ };
80613
80616
 
80614
80617
  var useProfile = function useProfile() {
80615
80618
  var _useTranslation = marioCore.useTranslation(),
@@ -81369,6 +81372,7 @@ var statusCheck = [{
81369
81372
  label: 'Inactive'
81370
81373
  }];
81371
81374
  var gradeLevels = ["K", "G", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"];
81375
+ var SPECIAL_ROLE = ['Student'];
81372
81376
 
81373
81377
  var schema$n = yup.object({
81374
81378
  firstName: yup.string().required("First name is required"),
@@ -81383,14 +81387,15 @@ var Profile$1 = function Profile(_ref) {
81383
81387
  goBack = _ref.goBack,
81384
81388
  teacherOptions = _ref.teacherOptions,
81385
81389
  id = _ref.id,
81386
- handleDisableRoles = _ref.handleDisableRoles,
81387
- currentRoles = _ref.currentRoles,
81388
81390
  checkHasTeacher = _ref.checkHasTeacher,
81389
- setCheckHasTeacher = _ref.setCheckHasTeacher;
81391
+ setCheckHasTeacher = _ref.setCheckHasTeacher,
81392
+ userHasData = _ref.userHasData,
81393
+ currentRoles = _ref.currentRoles;
81390
81394
 
81391
81395
  var _useTranslation = marioCore.useTranslation(),
81392
81396
  t = _useTranslation.t;
81393
81397
 
81398
+ var roleClickRef = React.useRef(null);
81394
81399
  return React__default.createElement("div", {
81395
81400
  className: myProfile$1['edit-profile-container']
81396
81401
  }, React__default.createElement("div", {
@@ -81418,6 +81423,34 @@ var Profile$1 = function Profile(_ref) {
81418
81423
  });
81419
81424
  }
81420
81425
 
81426
+ var handleChange = function handleChange(e) {
81427
+ var selectedValues = e.target.value;
81428
+ var clickedRole = roleClickRef.current;
81429
+
81430
+ if (!!id && (userHasData.isHasTeacherData && clickedRole === 'Teacher' || userHasData.isHasAssistantData && clickedRole === 'Assistant' || userHasData.isHasCounselorData && clickedRole === 'Counselor' || userHasData.isHasSecondaryTeacherData && clickedRole === 'SecondaryTeacher' || clickedRole === 'Student' && (userHasData.isHasAssistantData || userHasData.isHasCounselorData || userHasData.isHasSecondaryTeacherData || userHasData.isHasTeacherData))) {
81431
+ alert('Please switch data before removing the role');
81432
+ } else {
81433
+ var hasSpecialRole = selectedValues.some(function (role) {
81434
+ return SPECIAL_ROLE.includes(role);
81435
+ });
81436
+
81437
+ if (hasSpecialRole) {
81438
+ if (clickedRole && !values.roles.includes(clickedRole)) {
81439
+ setFieldValue('roles', [clickedRole]);
81440
+ } else {
81441
+ var specialRole = selectedValues.find(function (role) {
81442
+ return SPECIAL_ROLE.includes(role);
81443
+ });
81444
+ setFieldValue('roles', specialRole ? [specialRole] : []);
81445
+ }
81446
+ } else {
81447
+ setFieldValue('roles', selectedValues);
81448
+ }
81449
+
81450
+ roleClickRef.current = null;
81451
+ }
81452
+ };
81453
+
81421
81454
  return React__default.createElement("div", {
81422
81455
  className: myProfile$1['edit-profile-container__form']
81423
81456
  }, React__default.createElement("div", {
@@ -81480,36 +81513,18 @@ var Profile$1 = function Profile(_ref) {
81480
81513
  return r;
81481
81514
  }).join(', ');
81482
81515
  },
81483
- onChange: function onChange(e) {
81484
- var SPECIAL = ['Student', 'General ED teacher'];
81485
- var current = values.roles || [];
81486
- var clicked = e.target.value[e.target.value.length - 1];
81487
- var next;
81488
-
81489
- if (SPECIAL.includes(clicked)) {
81490
- next = [clicked];
81491
- } else {
81492
- var withoutSpecial = current.filter(function (x) {
81493
- return !SPECIAL.includes(x);
81494
- });
81495
-
81496
- if (withoutSpecial.includes(clicked)) {
81497
- next = withoutSpecial.filter(function (x) {
81498
- return x !== clicked;
81499
- });
81500
- } else {
81501
- next = [].concat(withoutSpecial, [clicked]);
81502
- }
81503
- }
81504
-
81505
- setFieldValue('roles', next);
81506
- },
81516
+ onChange: handleChange,
81507
81517
  className: "" + myProfile$1["profile-value"]
81508
81518
  }, rolesSelect === null || rolesSelect === void 0 ? void 0 : rolesSelect.map(function (role) {
81509
81519
  return React__default.createElement(core$1.MenuItem, {
81510
81520
  key: role,
81511
81521
  value: role,
81512
- disabled: !!id ? currentRoles.concat(["Student", "Parent", "General ED teacher"]).includes(role) || currentRoles.every(handleDisableRoles) : ["Parent"].includes(role)
81522
+ disabled: !!id ? (currentRoles || []).some(function (r) {
81523
+ return ['Student', 'Parent', 'General ED teacher'].includes(r);
81524
+ }) || ["Parent"].includes(role) : ["Parent"].includes(role),
81525
+ onClick: function onClick() {
81526
+ roleClickRef.current = role;
81527
+ }
81513
81528
  }, React__default.createElement(core$1.Checkbox, {
81514
81529
  checked: values === null || values === void 0 ? void 0 : values.roles.includes(role)
81515
81530
  }), React__default.createElement(core$1.ListItemText, {
@@ -81833,6 +81848,16 @@ var useUserDetail = function useUserDetail(id) {
81833
81848
  checkHasTeacher = _useState8[0],
81834
81849
  setCheckHasTeacher = _useState8[1];
81835
81850
 
81851
+ var _useState9 = React.useState({
81852
+ isHasAssistantData: false,
81853
+ isHasCounselorData: false,
81854
+ isHasEduTeacherData: false,
81855
+ isHasSecondaryTeacherData: false,
81856
+ isHasTeacherData: false
81857
+ }),
81858
+ userHasData = _useState9[0],
81859
+ setUserHasData = _useState9[1];
81860
+
81836
81861
  var setEditedTrue = function setEditedTrue() {
81837
81862
  try {
81838
81863
  localStorage.setItem(window.location.href, "true");
@@ -81864,7 +81889,11 @@ var useUserDetail = function useUserDetail(id) {
81864
81889
  if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
81865
81890
  }, []);
81866
81891
  React.useEffect(function () {
81867
- !!id && getData();
81892
+ if (!!id) {
81893
+ getData();
81894
+ getUserRoleHasData();
81895
+ }
81896
+
81868
81897
  !id && getDataTeachers();
81869
81898
  }, [id]);
81870
81899
  var getData = React.useCallback(function () {
@@ -81881,7 +81910,9 @@ var useUserDetail = function useUserDetail(id) {
81881
81910
 
81882
81911
  setUserDetail(_extends({}, res.data, {
81883
81912
  dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), marioCore.DATE_FORMAT),
81884
- roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles,
81913
+ roles: res.data.roles.includes("EduTeacher") ? [].concat(res.data.roles.filter(function (r) {
81914
+ return r !== 'EduTeacher';
81915
+ }), [ROLES.EDUTEACHER]) : res.data.roles,
81885
81916
  currentGradeLevel: res.data.gradeLevel
81886
81917
  }));
81887
81918
  setCurrentRoles((_res$data$roles = res === null || res === void 0 ? void 0 : (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.roles) != null ? _res$data$roles : []);
@@ -81901,6 +81932,32 @@ var useUserDetail = function useUserDetail(id) {
81901
81932
  return Promise.reject(e);
81902
81933
  }
81903
81934
  }, [id]);
81935
+ var getUserRoleHasData = React.useCallback(function () {
81936
+ try {
81937
+ var _temp7 = function _temp7() {
81938
+ dispatch(marioCore.setLoading(false));
81939
+ };
81940
+
81941
+ dispatch(marioCore.setLoading(true));
81942
+
81943
+ var _temp8 = _catch(function () {
81944
+ return Promise.resolve(userRoleHasDataApi(id)).then(function (res) {
81945
+ setUserHasData(res.data);
81946
+ });
81947
+ }, function (err) {
81948
+ var _err$response2, _err$response2$data;
81949
+
81950
+ dispatch(marioCore.setAlert({
81951
+ type: "danger",
81952
+ message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message
81953
+ }));
81954
+ });
81955
+
81956
+ return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8));
81957
+ } catch (e) {
81958
+ return Promise.reject(e);
81959
+ }
81960
+ }, [id]);
81904
81961
  var backToList = React.useCallback(function (user) {
81905
81962
  !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
81906
81963
  }, []);
@@ -81911,7 +81968,7 @@ var useUserDetail = function useUserDetail(id) {
81911
81968
 
81912
81969
  var confirmData = React.useCallback(function (data) {
81913
81970
  try {
81914
- var _temp7 = function _temp7() {
81971
+ var _temp11 = function _temp11() {
81915
81972
  dispatch(marioCore.setLoading(false));
81916
81973
  };
81917
81974
 
@@ -81922,7 +81979,7 @@ var useUserDetail = function useUserDetail(id) {
81922
81979
 
81923
81980
  dispatch(marioCore.setLoading(true));
81924
81981
 
81925
- var _temp8 = _catch(function () {
81982
+ var _temp12 = _catch(function () {
81926
81983
  var next = !!id ? update$q : create$o;
81927
81984
  !id && delete data.id;
81928
81985
  data.teacherUserId = data.roles.includes(ROLES.STUDENT) ? data.teacherUserId : [];
@@ -81955,15 +82012,15 @@ var useUserDetail = function useUserDetail(id) {
81955
82012
  }));
81956
82013
  });
81957
82014
  }, function (err) {
81958
- var _err$response2, _err$response2$data;
82015
+ var _err$response3, _err$response3$data;
81959
82016
 
81960
82017
  dispatch(marioCore.setAlert({
81961
82018
  type: "danger",
81962
- message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message
82019
+ message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message
81963
82020
  }));
81964
82021
  });
81965
82022
 
81966
- return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8));
82023
+ return Promise.resolve(_temp12 && _temp12.then ? _temp12.then(_temp11) : _temp11(_temp12));
81967
82024
  } catch (e) {
81968
82025
  return Promise.reject(e);
81969
82026
  }
@@ -81971,13 +82028,13 @@ var useUserDetail = function useUserDetail(id) {
81971
82028
 
81972
82029
  var confirmChangePassword = function confirmChangePassword(data) {
81973
82030
  try {
81974
- var _temp11 = function _temp11() {
82031
+ var _temp15 = function _temp15() {
81975
82032
  dispatch(marioCore.setLoading(false));
81976
82033
  };
81977
82034
 
81978
82035
  dispatch(marioCore.setLoading(true));
81979
82036
 
81980
- var _temp12 = _catch(function () {
82037
+ var _temp16 = _catch(function () {
81981
82038
  return Promise.resolve(changePassword(data)).then(function () {
81982
82039
  dispatch(marioCore.setAlert({
81983
82040
  type: "success",
@@ -81993,7 +82050,7 @@ var useUserDetail = function useUserDetail(id) {
81993
82050
  }));
81994
82051
  });
81995
82052
 
81996
- return Promise.resolve(_temp12 && _temp12.then ? _temp12.then(_temp11) : _temp11(_temp12));
82053
+ return Promise.resolve(_temp16 && _temp16.then ? _temp16.then(_temp15) : _temp15(_temp16));
81997
82054
  } catch (e) {
81998
82055
  return Promise.reject(e);
81999
82056
  }
@@ -82001,13 +82058,13 @@ var useUserDetail = function useUserDetail(id) {
82001
82058
 
82002
82059
  var forgotPasswordRequest = React.useCallback(function (data) {
82003
82060
  try {
82004
- var _temp15 = function _temp15() {
82061
+ var _temp19 = function _temp19() {
82005
82062
  dispatch(marioCore.setLoading(false));
82006
82063
  };
82007
82064
 
82008
82065
  dispatch(marioCore.setLoading(true));
82009
82066
 
82010
- var _temp16 = _catch(function () {
82067
+ var _temp20 = _catch(function () {
82011
82068
  return Promise.resolve(forgotChangePassword(data)).then(function () {
82012
82069
  dispatch(marioCore.setAlert({
82013
82070
  type: "success",
@@ -82015,15 +82072,15 @@ var useUserDetail = function useUserDetail(id) {
82015
82072
  }));
82016
82073
  });
82017
82074
  }, function (err) {
82018
- var _err$response3, _err$response3$data;
82075
+ var _err$response4, _err$response4$data;
82019
82076
 
82020
82077
  dispatch(marioCore.setAlert({
82021
82078
  type: "danger",
82022
- message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message || "Error occured"
82079
+ message: ((_err$response4 = err.response) === null || _err$response4 === void 0 ? void 0 : (_err$response4$data = _err$response4.data) === null || _err$response4$data === void 0 ? void 0 : _err$response4$data.title) || err.message || "Error occured"
82023
82080
  }));
82024
82081
  });
82025
82082
 
82026
- return Promise.resolve(_temp16 && _temp16.then ? _temp16.then(_temp15) : _temp15(_temp16));
82083
+ return Promise.resolve(_temp20 && _temp20.then ? _temp20.then(_temp19) : _temp19(_temp20));
82027
82084
  } catch (e) {
82028
82085
  return Promise.reject(e);
82029
82086
  }
@@ -82031,7 +82088,7 @@ var useUserDetail = function useUserDetail(id) {
82031
82088
 
82032
82089
  var getDataTeachers = function getDataTeachers() {
82033
82090
  try {
82034
- var _temp18 = _catch(function () {
82091
+ var _temp22 = _catch(function () {
82035
82092
  return Promise.resolve(getTeachers({
82036
82093
  sortBy: "Email"
82037
82094
  })).then(function (res) {
@@ -82045,15 +82102,15 @@ var useUserDetail = function useUserDetail(id) {
82045
82102
  })) || []);
82046
82103
  });
82047
82104
  }, function (err) {
82048
- var _err$response4, _err$response4$data;
82105
+ var _err$response5, _err$response5$data;
82049
82106
 
82050
82107
  dispatch(marioCore.setAlert({
82051
82108
  type: "danger",
82052
- message: ((_err$response4 = err.response) === null || _err$response4 === void 0 ? void 0 : (_err$response4$data = _err$response4.data) === null || _err$response4$data === void 0 ? void 0 : _err$response4$data.title) || err.message
82109
+ message: ((_err$response5 = err.response) === null || _err$response5 === void 0 ? void 0 : (_err$response5$data = _err$response5.data) === null || _err$response5$data === void 0 ? void 0 : _err$response5$data.title) || err.message
82053
82110
  }));
82054
82111
  });
82055
82112
 
82056
- return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(function () {}) : void 0);
82113
+ return Promise.resolve(_temp22 && _temp22.then ? _temp22.then(function () {}) : void 0);
82057
82114
  } catch (e) {
82058
82115
  return Promise.reject(e);
82059
82116
  }
@@ -82061,9 +82118,9 @@ var useUserDetail = function useUserDetail(id) {
82061
82118
 
82062
82119
  var MAX_FILE_SIZE = 20097152;
82063
82120
 
82064
- var _useState9 = React.useState(""),
82065
- imagePreviewUrl = _useState9[0],
82066
- setImagePreviewUrl = _useState9[1];
82121
+ var _useState10 = React.useState(""),
82122
+ imagePreviewUrl = _useState10[0],
82123
+ setImagePreviewUrl = _useState10[1];
82067
82124
 
82068
82125
  var handleImageChange = function handleImageChange(e) {
82069
82126
  e.preventDefault();
@@ -82082,7 +82139,7 @@ var useUserDetail = function useUserDetail(id) {
82082
82139
  try {
82083
82140
  setImagePreviewUrl(reader.result);
82084
82141
 
82085
- var _temp21 = function () {
82142
+ var _temp25 = function () {
82086
82143
  if (!!newFile) {
82087
82144
  var formData = new FormData();
82088
82145
  var name = newFile.name;
@@ -82092,7 +82149,7 @@ var useUserDetail = function useUserDetail(id) {
82092
82149
 
82093
82150
  var imageUrl = res === null || res === void 0 ? void 0 : (_res$data4 = res.data) === null || _res$data4 === void 0 ? void 0 : _res$data4.key;
82094
82151
 
82095
- var _temp19 = function () {
82152
+ var _temp23 = function () {
82096
82153
  if (!!id) {
82097
82154
  return Promise.resolve(updateAvatarByAdminApi(userDetail.id || '', imageUrl)).then(function () {});
82098
82155
  } else {
@@ -82100,12 +82157,12 @@ var useUserDetail = function useUserDetail(id) {
82100
82157
  }
82101
82158
  }();
82102
82159
 
82103
- if (_temp19 && _temp19.then) return _temp19.then(function () {});
82160
+ if (_temp23 && _temp23.then) return _temp23.then(function () {});
82104
82161
  });
82105
82162
  }
82106
82163
  }();
82107
82164
 
82108
- return Promise.resolve(_temp21 && _temp21.then ? _temp21.then(function () {}) : void 0);
82165
+ return Promise.resolve(_temp25 && _temp25.then ? _temp25.then(function () {}) : void 0);
82109
82166
  } catch (e) {
82110
82167
  return Promise.reject(e);
82111
82168
  }
@@ -82160,7 +82217,8 @@ var useUserDetail = function useUserDetail(id) {
82160
82217
  handleDeleteAvatar: handleDeleteAvatar,
82161
82218
  getFile: getFile,
82162
82219
  checkHasTeacher: checkHasTeacher,
82163
- setCheckHasTeacher: setCheckHasTeacher
82220
+ setCheckHasTeacher: setCheckHasTeacher,
82221
+ userHasData: userHasData
82164
82222
  };
82165
82223
  };
82166
82224
 
@@ -82189,7 +82247,8 @@ var UserProfileManagement = function UserProfileManagement() {
82189
82247
  currentRoles = _useUserDetail.currentRoles,
82190
82248
  handleDisableRoles = _useUserDetail.handleDisableRoles,
82191
82249
  checkHasTeacher = _useUserDetail.checkHasTeacher,
82192
- setCheckHasTeacher = _useUserDetail.setCheckHasTeacher;
82250
+ setCheckHasTeacher = _useUserDetail.setCheckHasTeacher,
82251
+ userHasData = _useUserDetail.userHasData;
82193
82252
 
82194
82253
  var componentByControl = [{
82195
82254
  value: TypeControl$1.Info,
@@ -82202,7 +82261,8 @@ var UserProfileManagement = function UserProfileManagement() {
82202
82261
  currentRoles: currentRoles,
82203
82262
  handleDisableRoles: handleDisableRoles,
82204
82263
  checkHasTeacher: checkHasTeacher,
82205
- setCheckHasTeacher: setCheckHasTeacher
82264
+ setCheckHasTeacher: setCheckHasTeacher,
82265
+ userHasData: userHasData
82206
82266
  })
82207
82267
  }, {
82208
82268
  value: TypeControl$1.ChangePassword,
@@ -82236,7 +82296,7 @@ var UserProfileManagement = function UserProfileManagement() {
82236
82296
  accept: "image/*"
82237
82297
  }), React__default.createElement("img", {
82238
82298
  src: !!imageSrc ? imageSrc : marioCore.getStaticFileUrl(DEFAULT_USER_AVATAR$6),
82239
- alt: imageSrc,
82299
+ alt: 'avatar',
82240
82300
  className: "" + myProfile$1["image-user-container__image"]
82241
82301
  }), React__default.createElement(reactstrap.Label, {
82242
82302
  htmlFor: "uploadFile",