mario-core 2.9.103-beta → 2.9.105-beta

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.js CHANGED
@@ -26,7 +26,6 @@ var fa = require('react-icons/fa');
26
26
  var dateFns = require('date-fns');
27
27
  var tinymceReact = require('@tinymce/tinymce-react');
28
28
  var differenceInCalendarYears = _interopDefault(require('date-fns/differenceInCalendarYears'));
29
- var moment = _interopDefault(require('moment'));
30
29
  var DatePicker = _interopDefault(require('react-datepicker'));
31
30
  var toDate = _interopDefault(require('date-fns/toDate'));
32
31
  var md = require('react-icons/md');
@@ -34,6 +33,7 @@ var Creatable = _interopDefault(require('react-select/creatable'));
34
33
  var ReactNotification$1 = _interopDefault(require('react-notifications-component'));
35
34
  require('react-notifications-component/dist/theme.css');
36
35
  var ai = require('react-icons/ai');
36
+ var moment = _interopDefault(require('moment'));
37
37
 
38
38
  var dashboard = "Dashboard";
39
39
  var user = "User";
@@ -2771,17 +2771,21 @@ var useLogin = function useLogin() {
2771
2771
  googleClientId = _useState3[0],
2772
2772
  setGoogleClientId = _useState3[1];
2773
2773
 
2774
- var _useState4 = React.useState(),
2775
- infoUser = _useState4[0],
2776
- setInfoUser = _useState4[1];
2774
+ var _useState4 = React.useState(""),
2775
+ googleRecaptchaId = _useState4[0],
2776
+ setGoogleRecaptchaId = _useState4[1];
2777
+
2778
+ var _useState5 = React.useState(),
2779
+ infoUser = _useState5[0],
2780
+ setInfoUser = _useState5[1];
2777
2781
 
2778
2782
  var toggle = React.useCallback(function () {
2779
2783
  setOpenLogin(!openLogin);
2780
2784
  }, [openLogin]);
2781
2785
 
2782
- var _useState5 = React.useState(false),
2783
- isShowPassword = _useState5[0],
2784
- setIsShowPassword = _useState5[1];
2786
+ var _useState6 = React.useState(false),
2787
+ isShowPassword = _useState6[0],
2788
+ setIsShowPassword = _useState6[1];
2785
2789
 
2786
2790
  React.useEffect(function () {
2787
2791
  document.title = TITLE;
@@ -2885,7 +2889,8 @@ var useLogin = function useLogin() {
2885
2889
  try {
2886
2890
  var _temp6 = _catch(function () {
2887
2891
  return Promise.resolve(getGoogleClientId()).then(function (res) {
2888
- setGoogleClientId(res.data);
2892
+ setGoogleClientId(res.data.googleClientId);
2893
+ setGoogleRecaptchaId(res.data.googleCaptchaId);
2889
2894
  });
2890
2895
  }, function (err) {
2891
2896
  var _err$response2, _err$response2$data;
@@ -3020,7 +3025,8 @@ var useLogin = function useLogin() {
3020
3025
  setInfoUser: setInfoUser,
3021
3026
  submitLogin: submitLogin,
3022
3027
  setIsLoginGoogle: setIsLoginGoogle,
3023
- googleClientId: googleClientId
3028
+ googleClientId: googleClientId,
3029
+ googleRecaptchaId: googleRecaptchaId
3024
3030
  };
3025
3031
  };
3026
3032
 
@@ -3209,9 +3215,6 @@ var BlockLogin = function BlockLogin(_ref) {
3209
3215
  }
3210
3216
  }, [executeRecaptcha]);
3211
3217
  var handleVerify = React.useCallback(function () {}, []);
3212
- console.log({
3213
- googleClientId: googleClientId
3214
- });
3215
3218
 
3216
3219
  var onSuccessGoogle = function onSuccessGoogle(res) {
3217
3220
  if (!!(res !== null && res !== void 0 && res.accessToken)) {
@@ -3708,7 +3711,8 @@ var Login = function Login(props) {
3708
3711
 
3709
3712
  var _useLogin = useLogin(),
3710
3713
  defaultInfo = _useLogin.defaultInfo,
3711
- userLogin = _useLogin.userLogin;
3714
+ userLogin = _useLogin.userLogin,
3715
+ googleRecaptchaId = _useLogin.googleRecaptchaId;
3712
3716
 
3713
3717
  React.useEffect(function () {
3714
3718
  isLogin && (document.title = LOGIN_TITLE);
@@ -3724,9 +3728,9 @@ var Login = function Login(props) {
3724
3728
  md: 12,
3725
3729
  xs: 12,
3726
3730
  className: "d-flex justify-content-center h-100 align-items-center"
3727
- }, React__default.createElement(reactGoogleRecaptchaV3.GoogleReCaptchaProvider, {
3731
+ }, !!googleRecaptchaId && React__default.createElement(reactGoogleRecaptchaV3.GoogleReCaptchaProvider, {
3728
3732
  useRecaptchaNet: true,
3729
- reCaptchaKey: GOOGLE_RECAPTCHA_KEY,
3733
+ reCaptchaKey: googleRecaptchaId,
3730
3734
  scriptProps: {
3731
3735
  async: true,
3732
3736
  defer: true,
@@ -6716,8 +6720,89 @@ var SkillList = function SkillList() {
6716
6720
  }))));
6717
6721
  };
6718
6722
 
6719
- var setUserList = toolkit.createAction("users/setUserList");
6720
- var setStudentList = toolkit.createAction("users/setStudentList");
6723
+ var MAX_FILE_SIZE = 20097152;
6724
+
6725
+ var UploadFileButton = function UploadFileButton(_ref) {
6726
+ var fileName = _ref.fileName,
6727
+ maxWidth = _ref.maxWidth,
6728
+ maxHeight = _ref.maxHeight,
6729
+ setFile = _ref.setFile,
6730
+ canDelete = _ref.canDelete,
6731
+ onDelete = _ref.onDelete,
6732
+ isCheckFeedBack = _ref.isCheckFeedBack,
6733
+ onAddImage = _ref.onAddImage;
6734
+ var dispatch = reactRedux.useDispatch();
6735
+
6736
+ var _useState = React.useState(""),
6737
+ imagePreviewUrl = _useState[0],
6738
+ setImagePreviewUrl = _useState[1];
6739
+
6740
+ var imageStyle = {
6741
+ maxWidth: maxWidth || "100%",
6742
+ maxHeight: maxHeight || "100%"
6743
+ };
6744
+ var imageSrc = imagePreviewUrl || getFileUrl(fileName);
6745
+
6746
+ var handleImageChange = function handleImageChange(e) {
6747
+ e.preventDefault();
6748
+ var reader = new FileReader();
6749
+ var newFile = e.target.files[0];
6750
+
6751
+ if (newFile.size > MAX_FILE_SIZE) {
6752
+ dispatch(setAlert({
6753
+ type: "danger",
6754
+ message: "File can't be larger than 2MB"
6755
+ }));
6756
+ return;
6757
+ }
6758
+
6759
+ reader.onloadend = function () {
6760
+ setFile(newFile);
6761
+ setImagePreviewUrl(reader.result);
6762
+ };
6763
+
6764
+ if (newFile) {
6765
+ reader.readAsDataURL(newFile);
6766
+ }
6767
+
6768
+ !!onAddImage && onAddImage();
6769
+ };
6770
+
6771
+ var imagePreviewContainer = imagePreviewUrl || fileName ? React__default.createElement("img", {
6772
+ style: imageStyle,
6773
+ src: imageSrc,
6774
+ alt: "image"
6775
+ }) : null;
6776
+ return React__default.createElement("div", {
6777
+ className: "mb-2"
6778
+ }, React__default.createElement(reactstrap.Form, {
6779
+ className: "mb-2"
6780
+ }, React__default.createElement(reactstrap.Input, {
6781
+ className: "d-none",
6782
+ type: "file",
6783
+ id: "uploadFile",
6784
+ onChange: handleImageChange,
6785
+ accept: "image/*"
6786
+ }), React__default.createElement("div", {
6787
+ className: "d-flex align-items-center"
6788
+ }, React__default.createElement(reactstrap.Label, {
6789
+ htmlFor: "uploadFile",
6790
+ role: "button",
6791
+ tabIndex: 0,
6792
+ className: styles["input-file-label"]
6793
+ }, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
6794
+ className: "fa fa-paperclip mr-1",
6795
+ "aria-hidden": "true"
6796
+ }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
6797
+ size: "sm",
6798
+ color: "danger",
6799
+ className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
6800
+ onClick: function onClick() {
6801
+ setImagePreviewUrl(null);
6802
+ onDelete && onDelete();
6803
+ }
6804
+ }, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
6805
+ };
6721
6806
 
6722
6807
  var USER_URL$1 = BASE_URL + "/api/user";
6723
6808
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
@@ -6750,38 +6835,54 @@ var switchAccountUser = function switchAccountUser(id) {
6750
6835
  return api.post(EDU_USER_URL + "/switch-user/" + id);
6751
6836
  };
6752
6837
 
6753
- var USER_URL$2 = "/admin/user";
6754
- var CREATE_USER_URL = "/admin/create-user";
6755
- var TITLE$7 = "User list";
6756
- var HOMEPAGE_TEACHER$1 = "/home";
6757
- var HOMEPAGE_STUDENT$1 = "/home";
6758
- var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
6759
- var HOMEPAGE_PARENT$1 = "/parent";
6760
- var HOMEPAGE_DISTRICT$1 = "/admin/schools";
6761
- var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
6838
+ var initValue$3 = {
6839
+ id: "",
6840
+ firstName: "",
6841
+ lastName: "",
6842
+ email: "",
6843
+ dateOfBirth: "",
6844
+ roles: [],
6845
+ isActive: true,
6846
+ profileImageFileName: ""
6847
+ };
6848
+ var USER_LIST_URL = "/admin/user";
6849
+ var TITLE$7 = "User detail";
6762
6850
 
6763
- var useUserList = function useUserList() {
6851
+ var useUserDetail = function useUserDetail(id) {
6852
+ var dispatch = reactRedux.useDispatch();
6764
6853
  var history = reactRouterDom.useHistory();
6765
- var query = new URLSearchParams(location.search);
6766
- var queryName = query.get("query");
6767
- var userList = reactRedux.useSelector(function (state) {
6768
- return state.users.userList;
6769
- });
6770
- var totalItems = reactRedux.useSelector(function (state) {
6771
- return state.users.totalItems;
6772
- });
6773
6854
 
6774
- var _useFilters = useFilters(),
6775
- filters = _useFilters.filters,
6776
- changeFilters = _useFilters.changeFilters;
6855
+ var _useState = React.useState(initValue$3),
6856
+ userDetail = _useState[0],
6857
+ setUserDetail = _useState[1];
6777
6858
 
6778
- var _useState = React.useState(!!queryName ? queryName : ""),
6779
- fullName = _useState[0],
6780
- setFullName = _useState[1];
6859
+ var _useState2 = React.useState(null),
6860
+ file = _useState2[0],
6861
+ setFile = _useState2[1];
6781
6862
 
6782
- var isDistrict = window.location.host.includes("-district");
6783
- var dispatch = reactRedux.useDispatch();
6784
- var getData = React.useCallback(function (fullName) {
6863
+ var _useState3 = React.useState(false),
6864
+ edited = _useState3[0],
6865
+ setEdited = _useState3[1];
6866
+
6867
+ var setEditedTrue = function setEditedTrue() {
6868
+ try {
6869
+ localStorage.setItem(window.location.href, "true");
6870
+ setEdited(true);
6871
+ return Promise.resolve();
6872
+ } catch (e) {
6873
+ return Promise.reject(e);
6874
+ }
6875
+ };
6876
+
6877
+ React.useEffect(function () {
6878
+ document.title = TITLE$7;
6879
+ setEdited(false);
6880
+ if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
6881
+ }, []);
6882
+ React.useEffect(function () {
6883
+ !!id && getData();
6884
+ }, [id]);
6885
+ var getData = React.useCallback(function () {
6785
6886
  try {
6786
6887
  var _temp3 = function _temp3() {
6787
6888
  dispatch(setLoading(false));
@@ -6790,22 +6891,14 @@ var useUserList = function useUserList() {
6790
6891
  dispatch(setLoading(true));
6791
6892
 
6792
6893
  var _temp4 = _catch(function () {
6793
- return Promise.resolve(fullName ? get$5(_extends({}, filters, {
6794
- searchString: fullName
6795
- })) : get$5(filters)).then(function (res) {
6796
- var _res$data = res.data,
6797
- items = _res$data.items,
6798
- totalItems = _res$data.totalItems;
6799
-
6800
- for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
6801
- var user = _step.value;
6802
- user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
6803
- }
6894
+ return Promise.resolve(getById$3(id)).then(function (res) {
6895
+ var _res$data;
6804
6896
 
6805
- dispatch(setUserList({
6806
- userList: items,
6807
- totalItems: totalItems
6897
+ setUserDetail(_extends({}, res.data, {
6898
+ dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), DATE_FORMAT),
6899
+ roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
6808
6900
  }));
6901
+ document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
6809
6902
  });
6810
6903
  }, function (err) {
6811
6904
  var _err$response, _err$response$data;
@@ -6820,688 +6913,171 @@ var useUserList = function useUserList() {
6820
6913
  } catch (e) {
6821
6914
  return Promise.reject(e);
6822
6915
  }
6823
- }, [dispatch, filters]);
6824
- React.useEffect(function () {
6825
- document.title = TITLE$7;
6916
+ }, [id]);
6917
+ var backToList = React.useCallback(function (user) {
6918
+ !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
6826
6919
  }, []);
6827
- React.useEffect(function () {
6828
- if (!!fullName) {
6829
- getData(fullName);
6830
- setFullName(null);
6831
- } else {
6832
- getData();
6833
- }
6834
- }, [filters]);
6835
- var removeData = React.useCallback(function (id) {
6836
- dispatch(setLoading(true));
6837
-
6920
+ var confirmData = React.useCallback(function (data) {
6838
6921
  try {
6839
- dispatch(setModal({
6840
- isOpen: true,
6841
- type: "warning",
6842
- message: "Do you want to remove this user?",
6843
- onConfirm: function () {
6844
- try {
6845
- return Promise.resolve(remove$3(id)).then(function () {
6846
- dispatch(setAlert({
6847
- type: "success",
6848
- message: "Remove user successfully"
6849
- }));
6850
- changeFilters({
6851
- currentPage: 1
6922
+ var _temp9 = function _temp9() {
6923
+ dispatch(setLoading(false));
6924
+ };
6925
+
6926
+ dispatch(setLoading(true));
6927
+
6928
+ var _temp10 = _catch(function () {
6929
+ function _temp6() {
6930
+ var next = !!id ? update$5 : create$5;
6931
+ !id && delete data.id;
6932
+ return Promise.resolve(next(data)).then(function (result) {
6933
+ if (!!result) {
6934
+ getById$3(result.data.id).then(function (e) {
6935
+ backToList(e.data.fullName);
6852
6936
  });
6853
- });
6854
- } catch (e) {
6855
- return Promise.reject(e);
6856
- }
6857
- }
6858
- }));
6859
- } catch (err) {
6860
- var _err$response2, _err$response2$data;
6937
+ }
6861
6938
 
6862
- dispatch(setAlert({
6863
- type: "danger",
6864
- 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
6865
- }));
6866
- }
6939
+ if (!id) {
6940
+ alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
6941
+ }
6867
6942
 
6868
- dispatch(setLoading(false));
6869
- }, [filters]);
6943
+ dispatch(setAlert({
6944
+ type: "success",
6945
+ message: (!!id ? "Update" : "Create") + " user successfully"
6946
+ }));
6947
+ });
6948
+ }
6870
6949
 
6871
- var redirectLoginUser = function redirectLoginUser(res) {
6872
- var _res$data2 = res.data,
6873
- token = _res$data2.token,
6874
- id = _res$data2.id,
6875
- firstName = _res$data2.firstName,
6876
- lastName = _res$data2.lastName,
6877
- roles = _res$data2.roles,
6878
- email = _res$data2.email,
6879
- profileImageFileName = _res$data2.profileImageFileName;
6880
- localStorage.setItem(ACCESS_TOKEN, token);
6881
- localStorage.removeItem(NOTIFICATION_ALERT_KEY);
6882
- dispatch(setUser({
6883
- id: id,
6884
- firstName: firstName,
6885
- lastName: lastName,
6886
- roles: roles,
6887
- email: email,
6888
- profileImageFileName: profileImageFileName
6889
- }));
6950
+ var _temp5 = function () {
6951
+ if (!!file) {
6952
+ var formData = new FormData();
6953
+ var name = file.name;
6954
+ formData.append("file", file, name);
6955
+ return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
6956
+ var _res$data2;
6890
6957
 
6891
- if (isDistrict) {
6892
- history.push(HOMEPAGE_DISTRICT$1);
6893
- } else if (roles.includes("Admin")) {
6894
- history.push(HOMEPAGE_ADMIN$1);
6895
- } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
6896
- history.push(HOMEPAGE_TEACHER$1);
6897
- } else if (roles.includes("Student")) {
6898
- history.push(HOMEPAGE_STUDENT$1);
6899
- } else if (roles.includes("Parent")) {
6900
- history.push(HOMEPAGE_PARENT$1);
6901
- } else if (roles.includes("EduTeacher")) {
6902
- history.push(HOMEPAGE_EDU_TEACHER$1);
6903
- } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
6904
- history.push(HOMEPAGE_TEACHER$1);
6905
- }
6906
- };
6958
+ var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
6959
+ data.profileImageFileName = imageUrl;
6960
+ });
6961
+ }
6962
+ }();
6907
6963
 
6908
- var swicthUser = React.useCallback(function (id) {
6909
- try {
6910
- var _temp6 = _catch(function () {
6911
- return Promise.resolve(switchAccountUser(id)).then(function (res) {
6912
- var data = res.data;
6913
- dispatch(setModal({
6914
- isOpen: true,
6915
- type: "warning",
6916
- message: "Do you want to impersonate this user?",
6917
- onConfirm: function () {
6918
- try {
6919
- var _temp9 = function _temp9() {
6920
- dispatch(setLoading(false));
6921
- };
6964
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
6965
+ }, function (err) {
6966
+ var _err$response2, _err$response2$data;
6922
6967
 
6923
- dispatch(setLoading(true));
6968
+ dispatch(setAlert({
6969
+ type: "danger",
6970
+ 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
6971
+ }));
6972
+ });
6924
6973
 
6925
- var _temp10 = _catch(function () {
6926
- var req = {
6927
- email: data.email,
6928
- password: "default",
6929
- accessToken: data.token
6930
- };
6931
- return Promise.resolve(logIn(req)).then(function (res) {
6932
- localStorage.clear();
6933
- redirectLoginUser(res);
6934
- });
6935
- }, function (err) {
6936
- var _err$response3, _err$response3$data;
6974
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
6975
+ } catch (e) {
6976
+ return Promise.reject(e);
6977
+ }
6978
+ }, [id, file]);
6937
6979
 
6938
- setAlert({
6939
- type: "danger",
6940
- 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
6941
- });
6942
- });
6980
+ var confirmChangePassword = function confirmChangePassword(data) {
6981
+ try {
6982
+ var _temp13 = function _temp13() {
6983
+ dispatch(setLoading(false));
6984
+ };
6943
6985
 
6944
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
6945
- } catch (e) {
6946
- return Promise.reject(e);
6947
- }
6948
- }
6986
+ dispatch(setLoading(true));
6987
+
6988
+ var _temp14 = _catch(function () {
6989
+ return Promise.resolve(changePassword(data)).then(function () {
6990
+ dispatch(setAlert({
6991
+ type: "success",
6992
+ message: "Change password successfully"
6949
6993
  }));
6950
6994
  });
6951
- }, function (err) {
6952
- var _err$response4, _err$response4$data;
6995
+ }, function (e) {
6996
+ var _e$response, _e$response$data;
6953
6997
 
6954
6998
  dispatch(setAlert({
6955
6999
  type: "danger",
6956
- 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
7000
+ message: ((_e$response = e.response) === null || _e$response === void 0 ? void 0 : (_e$response$data = _e$response.data) === null || _e$response$data === void 0 ? void 0 : _e$response$data.title) || e.message
6957
7001
  }));
6958
7002
  });
6959
7003
 
6960
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7004
+ return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
6961
7005
  } catch (e) {
6962
7006
  return Promise.reject(e);
6963
7007
  }
6964
- }, [filters]);
6965
-
6966
- var reDirectDetailPage = function reDirectDetailPage(id) {
6967
- var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
6968
- history.push(url);
6969
7008
  };
6970
7009
 
6971
- return {
6972
- userList: userList,
6973
- totalItems: totalItems,
6974
- filters: filters,
6975
- queryName: queryName,
6976
- getData: getData,
6977
- removeData: removeData,
6978
- changeFilters: changeFilters,
6979
- reDirectDetailPage: reDirectDetailPage,
6980
- swicthUser: swicthUser
6981
- };
6982
- };
7010
+ var forgotPasswordRequest = React.useCallback(function (data) {
7011
+ try {
7012
+ var _temp17 = function _temp17() {
7013
+ dispatch(setLoading(false));
7014
+ };
6983
7015
 
6984
- var SearchBox = function SearchBox(_ref) {
6985
- var initValue = _ref.initValue,
6986
- onSearch = _ref.onSearch,
6987
- placeholder = _ref.placeholder,
6988
- className = _ref.className,
6989
- style = _ref.style;
7016
+ dispatch(setLoading(true));
6990
7017
 
6991
- var _useState = React.useState(initValue),
6992
- searchString = _useState[0],
6993
- setSearchString = _useState[1];
7018
+ var _temp18 = _catch(function () {
7019
+ return Promise.resolve(forgotChangePassword(data)).then(function () {
7020
+ dispatch(setAlert({
7021
+ type: "success",
7022
+ message: "Send forgot password link successfully"
7023
+ }));
7024
+ });
7025
+ }, function (err) {
7026
+ var _err$response3, _err$response3$data;
6994
7027
 
6995
- React.useEffect(function () {
6996
- setSearchString(initValue);
6997
- }, [initValue]);
6998
- var onKeyUp = React.useCallback(function (e) {
6999
- e.key === "Enter" && onSearch(searchString);
7000
- }, [searchString, onSearch]);
7001
- return React__default.createElement(reactstrap.Input, {
7002
- placeholder: placeholder,
7003
- value: searchString,
7004
- onChange: function onChange(e) {
7005
- return setSearchString(e.target.value);
7006
- },
7007
- onKeyUp: onKeyUp,
7008
- className: className,
7009
- style: style
7010
- });
7011
- };
7028
+ dispatch(setAlert({
7029
+ type: "danger",
7030
+ 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"
7031
+ }));
7032
+ });
7012
7033
 
7013
- SearchBox.defaultProps = {
7014
- placeholder: "Type something to search",
7015
- className: "",
7016
- style: {}
7034
+ return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7035
+ } catch (e) {
7036
+ return Promise.reject(e);
7037
+ }
7038
+ }, []);
7039
+ return {
7040
+ userDetail: userDetail,
7041
+ backToList: backToList,
7042
+ confirmData: confirmData,
7043
+ file: file,
7044
+ setFile: setFile,
7045
+ edited: edited,
7046
+ setEdited: setEdited,
7047
+ setEditedTrue: setEditedTrue,
7048
+ confirmChangePassword: confirmChangePassword,
7049
+ forgotPasswordRequest: forgotPasswordRequest
7050
+ };
7017
7051
  };
7018
- var SearchBox$1 = React.memo(SearchBox);
7019
7052
 
7020
- var searchInputStyle = {
7021
- height: 38
7022
- };
7053
+ var userSchema = yup.object({
7054
+ firstName: yup.string().required("First name is required"),
7055
+ lastName: yup.string().required("Last name is required"),
7056
+ dateOfBirth: yup.string().required("Date of birth is required"),
7057
+ email: yup.string().email("Email is invalid").required("Email is required"),
7058
+ roles: yup.array().of(yup.string()).min(1, "Role is required")
7059
+ });
7023
7060
 
7024
- var SearchBoxContainer = function SearchBoxContainer(_ref) {
7025
- var text = _ref.text,
7026
- initValue = _ref.initValue,
7027
- onClick = _ref.onClick,
7028
- onSearch = _ref.onSearch,
7029
- placeholder = _ref.placeholder;
7030
- return React__default.createElement("div", {
7031
- className: "d-flex align-items-center"
7032
- }, React__default.createElement("div", null, React__default.createElement(AddButton, {
7033
- text: text,
7034
- onClick: onClick
7035
- })), React__default.createElement("div", {
7036
- className: "flex-grow-1 ml-2"
7037
- }, React__default.createElement(SearchBox$1, {
7038
- initValue: initValue,
7039
- onSearch: onSearch,
7040
- placeholder: placeholder,
7041
- style: searchInputStyle
7042
- })));
7043
- };
7061
+ var changePasswordSchema = yup.object({
7062
+ oldPassword: yup.string().required("Current password is required"),
7063
+ newPassword: yup.string().required("New password is required"),
7064
+ confirmedNewPassword: yup.string().required("Confirm password is required")
7065
+ });
7044
7066
 
7045
- SearchBoxContainer.defaultProps = {
7046
- placeholder: "Type something to search"
7047
- };
7067
+ var CREATE_USER = "create_user";
7068
+ var EDIT_USER_HEADER = "edit_user";
7069
+ var CHANGE_PASSWORD$1 = "change_password";
7048
7070
 
7049
- var utcToLocalTime = (function (time, FORMAT) {
7050
- if (time === DATE_MIN_VALUE) return "";
7071
+ var UserDetail = function UserDetail() {
7072
+ var _useParams = reactRouterDom.useParams(),
7073
+ id = _useParams.id;
7051
7074
 
7052
- try {
7053
- return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7054
- } catch (_unused) {
7055
- return "";
7056
- }
7057
- });
7075
+ var user = reactRedux.useSelector(function (state) {
7076
+ return state.common.user;
7077
+ });
7058
7078
 
7059
- var header$2 = "User";
7060
-
7061
- var UserList = function UserList() {
7062
- var _useUserList = useUserList(),
7063
- queryName = _useUserList.queryName,
7064
- userList = _useUserList.userList,
7065
- totalItems = _useUserList.totalItems,
7066
- filters = _useUserList.filters,
7067
- removeData = _useUserList.removeData,
7068
- changeFilters = _useUserList.changeFilters,
7069
- reDirectDetailPage = _useUserList.reDirectDetailPage,
7070
- swicthUser = _useUserList.swicthUser;
7071
-
7072
- var _useTranslation = reactI18next.useTranslation(),
7073
- t = _useTranslation.t;
7074
-
7075
- return React__default.createElement("div", {
7076
- className: "fadeIn animated"
7077
- }, React__default.createElement("h5", {
7078
- className: "mb-2"
7079
- }, t("" + header$2)), React__default.createElement(reactstrap.Row, {
7080
- className: "my-2"
7081
- }, React__default.createElement(reactstrap.Col, {
7082
- md: 8
7083
- }, React__default.createElement(SearchBoxContainer, {
7084
- text: t("create_user"),
7085
- onClick: function onClick() {
7086
- return reDirectDetailPage();
7087
- },
7088
- initValue: !!queryName ? queryName : "",
7089
- onSearch: function onSearch(searchString) {
7090
- return changeFilters({
7091
- searchString: searchString
7092
- });
7093
- },
7094
- placeholder: t("type_something_to_search_by_user_name")
7095
- })), React__default.createElement(reactstrap.Col, {
7096
- md: 4,
7097
- className: "d-flex justify-content-end align-items-center"
7098
- }, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
7099
- className: "mb-2"
7100
- }, React__default.createElement(reactstrap.Col, {
7101
- md: 12
7102
- }, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
7103
- bordered: true,
7104
- hover: true,
7105
- striped: true,
7106
- responsive: true,
7107
- size: "sm"
7108
- }, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
7109
- className: "align-top"
7110
- }, t("name")), React__default.createElement("th", {
7111
- className: "align-top"
7112
- }, t("email")), React__default.createElement("th", {
7113
- className: "align-top"
7114
- }, t("age")), React__default.createElement("th", {
7115
- className: "align-top"
7116
- }, t("role")), React__default.createElement("th", {
7117
- className: "align-top"
7118
- }, t("active_status")), React__default.createElement("th", {
7119
- className: "align-top"
7120
- }, t("created_time")), React__default.createElement("th", {
7121
- className: "text-center"
7122
- }, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
7123
- return React__default.createElement("tr", {
7124
- key: record.id
7125
- }, React__default.createElement("td", {
7126
- className: "align-middle"
7127
- }, React__default.createElement(LinkEditButton, {
7128
- label: "" + record.fullName,
7129
- onClick: function onClick() {
7130
- return reDirectDetailPage(record.id);
7131
- }
7132
- })), React__default.createElement("td", {
7133
- className: "align-middle"
7134
- }, record.email), React__default.createElement("td", {
7135
- className: "align-middle"
7136
- }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
7137
- className: "align-middle"
7138
- }, !!record.roles && record.roles.join(", ")), React__default.createElement("td", {
7139
- className: "align-middle"
7140
- }, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
7141
- className: "align-middle"
7142
- }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
7143
- className: "text-center align-middle"
7144
- }, React__default.createElement(fa.FaUsersCog, {
7145
- style: {
7146
- fontSize: "18px",
7147
- marginRight: "10px",
7148
- cursor: "pointer"
7149
- },
7150
- onClick: function onClick() {
7151
- return swicthUser(record.id);
7152
- }
7153
- }), React__default.createElement(DeleteButtonIcon, {
7154
- onClick: function onClick() {
7155
- return removeData(record.id);
7156
- }
7157
- })));
7158
- })))) : React__default.createElement(EmptyDataAlert, {
7159
- label: t("user")
7160
- })), React__default.createElement(reactstrap.Col, {
7161
- md: 12
7162
- }, React__default.createElement(CustomPagination, {
7163
- filters: filters,
7164
- totalRecordCount: totalItems,
7165
- changePageSize: function changePageSize(pageSize) {
7166
- return changeFilters({
7167
- pageSize: pageSize
7168
- });
7169
- },
7170
- changePage: function changePage(currentPage) {
7171
- return changeFilters({
7172
- currentPage: currentPage
7173
- });
7174
- }
7175
- }))));
7176
- };
7177
-
7178
- var MAX_FILE_SIZE = 20097152;
7179
-
7180
- var UploadFileButton = function UploadFileButton(_ref) {
7181
- var fileName = _ref.fileName,
7182
- maxWidth = _ref.maxWidth,
7183
- maxHeight = _ref.maxHeight,
7184
- setFile = _ref.setFile,
7185
- canDelete = _ref.canDelete,
7186
- onDelete = _ref.onDelete,
7187
- isCheckFeedBack = _ref.isCheckFeedBack,
7188
- onAddImage = _ref.onAddImage;
7189
- var dispatch = reactRedux.useDispatch();
7190
-
7191
- var _useState = React.useState(""),
7192
- imagePreviewUrl = _useState[0],
7193
- setImagePreviewUrl = _useState[1];
7194
-
7195
- var imageStyle = {
7196
- maxWidth: maxWidth || "100%",
7197
- maxHeight: maxHeight || "100%"
7198
- };
7199
- var imageSrc = imagePreviewUrl || getFileUrl(fileName);
7200
-
7201
- var handleImageChange = function handleImageChange(e) {
7202
- e.preventDefault();
7203
- var reader = new FileReader();
7204
- var newFile = e.target.files[0];
7205
-
7206
- if (newFile.size > MAX_FILE_SIZE) {
7207
- dispatch(setAlert({
7208
- type: "danger",
7209
- message: "File can't be larger than 2MB"
7210
- }));
7211
- return;
7212
- }
7213
-
7214
- reader.onloadend = function () {
7215
- setFile(newFile);
7216
- setImagePreviewUrl(reader.result);
7217
- };
7218
-
7219
- if (newFile) {
7220
- reader.readAsDataURL(newFile);
7221
- }
7222
-
7223
- !!onAddImage && onAddImage();
7224
- };
7225
-
7226
- var imagePreviewContainer = imagePreviewUrl || fileName ? React__default.createElement("img", {
7227
- style: imageStyle,
7228
- src: imageSrc,
7229
- alt: "image"
7230
- }) : null;
7231
- return React__default.createElement("div", {
7232
- className: "mb-2"
7233
- }, React__default.createElement(reactstrap.Form, {
7234
- className: "mb-2"
7235
- }, React__default.createElement(reactstrap.Input, {
7236
- className: "d-none",
7237
- type: "file",
7238
- id: "uploadFile",
7239
- onChange: handleImageChange,
7240
- accept: "image/*"
7241
- }), React__default.createElement("div", {
7242
- className: "d-flex align-items-center"
7243
- }, React__default.createElement(reactstrap.Label, {
7244
- htmlFor: "uploadFile",
7245
- role: "button",
7246
- tabIndex: 0,
7247
- className: styles["input-file-label"]
7248
- }, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
7249
- className: "fa fa-paperclip mr-1",
7250
- "aria-hidden": "true"
7251
- }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
7252
- size: "sm",
7253
- color: "danger",
7254
- className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
7255
- onClick: function onClick() {
7256
- setImagePreviewUrl(null);
7257
- onDelete && onDelete();
7258
- }
7259
- }, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
7260
- };
7261
-
7262
- var initValue$3 = {
7263
- id: "",
7264
- firstName: "",
7265
- lastName: "",
7266
- email: "",
7267
- dateOfBirth: "",
7268
- roles: [],
7269
- isActive: true,
7270
- profileImageFileName: ""
7271
- };
7272
- var USER_LIST_URL = "/admin/user";
7273
- var TITLE$8 = "User detail";
7274
-
7275
- var useUserDetail = function useUserDetail(id) {
7276
- var dispatch = reactRedux.useDispatch();
7277
- var history = reactRouterDom.useHistory();
7278
-
7279
- var _useState = React.useState(initValue$3),
7280
- userDetail = _useState[0],
7281
- setUserDetail = _useState[1];
7282
-
7283
- var _useState2 = React.useState(null),
7284
- file = _useState2[0],
7285
- setFile = _useState2[1];
7286
-
7287
- var _useState3 = React.useState(false),
7288
- edited = _useState3[0],
7289
- setEdited = _useState3[1];
7290
-
7291
- var setEditedTrue = function setEditedTrue() {
7292
- try {
7293
- localStorage.setItem(window.location.href, "true");
7294
- setEdited(true);
7295
- return Promise.resolve();
7296
- } catch (e) {
7297
- return Promise.reject(e);
7298
- }
7299
- };
7300
-
7301
- React.useEffect(function () {
7302
- document.title = TITLE$8;
7303
- setEdited(false);
7304
- if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
7305
- }, []);
7306
- React.useEffect(function () {
7307
- !!id && getData();
7308
- }, [id]);
7309
- var getData = React.useCallback(function () {
7310
- try {
7311
- var _temp3 = function _temp3() {
7312
- dispatch(setLoading(false));
7313
- };
7314
-
7315
- dispatch(setLoading(true));
7316
-
7317
- var _temp4 = _catch(function () {
7318
- return Promise.resolve(getById$3(id)).then(function (res) {
7319
- var _res$data;
7320
-
7321
- setUserDetail(_extends({}, res.data, {
7322
- dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), DATE_FORMAT),
7323
- roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
7324
- }));
7325
- document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
7326
- });
7327
- }, function (err) {
7328
- var _err$response, _err$response$data;
7329
-
7330
- dispatch(setAlert({
7331
- type: "danger",
7332
- message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
7333
- }));
7334
- });
7335
-
7336
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
7337
- } catch (e) {
7338
- return Promise.reject(e);
7339
- }
7340
- }, [id]);
7341
- var backToList = React.useCallback(function (user) {
7342
- !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
7343
- }, []);
7344
- var confirmData = React.useCallback(function (data) {
7345
- try {
7346
- var _temp9 = function _temp9() {
7347
- dispatch(setLoading(false));
7348
- };
7349
-
7350
- dispatch(setLoading(true));
7351
-
7352
- var _temp10 = _catch(function () {
7353
- function _temp6() {
7354
- var next = !!id ? update$5 : create$5;
7355
- !id && delete data.id;
7356
- return Promise.resolve(next(data)).then(function (result) {
7357
- if (!!result) {
7358
- getById$3(result.data.id).then(function (e) {
7359
- backToList(e.data.fullName);
7360
- });
7361
- }
7362
-
7363
- if (!id) {
7364
- alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
7365
- }
7366
-
7367
- dispatch(setAlert({
7368
- type: "success",
7369
- message: (!!id ? "Update" : "Create") + " user successfully"
7370
- }));
7371
- });
7372
- }
7373
-
7374
- var _temp5 = function () {
7375
- if (!!file) {
7376
- var formData = new FormData();
7377
- var name = file.name;
7378
- formData.append("file", file, name);
7379
- return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
7380
- var _res$data2;
7381
-
7382
- var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
7383
- data.profileImageFileName = imageUrl;
7384
- });
7385
- }
7386
- }();
7387
-
7388
- return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
7389
- }, function (err) {
7390
- var _err$response2, _err$response2$data;
7391
-
7392
- dispatch(setAlert({
7393
- type: "danger",
7394
- 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
7395
- }));
7396
- });
7397
-
7398
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7399
- } catch (e) {
7400
- return Promise.reject(e);
7401
- }
7402
- }, [id, file]);
7403
-
7404
- var confirmChangePassword = function confirmChangePassword(data) {
7405
- try {
7406
- var _temp13 = function _temp13() {
7407
- dispatch(setLoading(false));
7408
- };
7409
-
7410
- dispatch(setLoading(true));
7411
-
7412
- var _temp14 = _catch(function () {
7413
- return Promise.resolve(changePassword(data)).then(function () {
7414
- dispatch(setAlert({
7415
- type: "success",
7416
- message: "Change password successfully"
7417
- }));
7418
- });
7419
- }, function (e) {
7420
- var _e$response, _e$response$data;
7421
-
7422
- dispatch(setAlert({
7423
- type: "danger",
7424
- message: ((_e$response = e.response) === null || _e$response === void 0 ? void 0 : (_e$response$data = _e$response.data) === null || _e$response$data === void 0 ? void 0 : _e$response$data.title) || e.message
7425
- }));
7426
- });
7427
-
7428
- return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7429
- } catch (e) {
7430
- return Promise.reject(e);
7431
- }
7432
- };
7433
-
7434
- var forgotPasswordRequest = React.useCallback(function (data) {
7435
- try {
7436
- var _temp17 = function _temp17() {
7437
- dispatch(setLoading(false));
7438
- };
7439
-
7440
- dispatch(setLoading(true));
7441
-
7442
- var _temp18 = _catch(function () {
7443
- return Promise.resolve(forgotChangePassword(data)).then(function () {
7444
- dispatch(setAlert({
7445
- type: "success",
7446
- message: "Send forgot password link successfully"
7447
- }));
7448
- });
7449
- }, function (err) {
7450
- var _err$response3, _err$response3$data;
7451
-
7452
- dispatch(setAlert({
7453
- type: "danger",
7454
- 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"
7455
- }));
7456
- });
7457
-
7458
- return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7459
- } catch (e) {
7460
- return Promise.reject(e);
7461
- }
7462
- }, []);
7463
- return {
7464
- userDetail: userDetail,
7465
- backToList: backToList,
7466
- confirmData: confirmData,
7467
- file: file,
7468
- setFile: setFile,
7469
- edited: edited,
7470
- setEdited: setEdited,
7471
- setEditedTrue: setEditedTrue,
7472
- confirmChangePassword: confirmChangePassword,
7473
- forgotPasswordRequest: forgotPasswordRequest
7474
- };
7475
- };
7476
-
7477
- var userSchema = yup.object({
7478
- firstName: yup.string().required("First name is required"),
7479
- lastName: yup.string().required("Last name is required"),
7480
- dateOfBirth: yup.string().required("Date of birth is required"),
7481
- email: yup.string().email("Email is invalid").required("Email is required"),
7482
- roles: yup.array().of(yup.string()).min(1, "Role is required")
7483
- });
7484
-
7485
- var changePasswordSchema = yup.object({
7486
- oldPassword: yup.string().required("Current password is required"),
7487
- newPassword: yup.string().required("New password is required"),
7488
- confirmedNewPassword: yup.string().required("Confirm password is required")
7489
- });
7490
-
7491
- var CREATE_USER = "create_user";
7492
- var EDIT_USER_HEADER = "edit_user";
7493
- var CHANGE_PASSWORD$1 = "change_password";
7494
-
7495
- var UserDetail = function UserDetail() {
7496
- var _useParams = reactRouterDom.useParams(),
7497
- id = _useParams.id;
7498
-
7499
- var user = reactRedux.useSelector(function (state) {
7500
- return state.common.user;
7501
- });
7502
-
7503
- var _useTranslation = reactI18next.useTranslation(),
7504
- t = _useTranslation.t;
7079
+ var _useTranslation = reactI18next.useTranslation(),
7080
+ t = _useTranslation.t;
7505
7081
 
7506
7082
  var _useUserDetail = useUserDetail(id),
7507
7083
  userDetail = _useUserDetail.userDetail,
@@ -7963,6 +7539,42 @@ var CreatableSelector = function CreatableSelector(props) {
7963
7539
  });
7964
7540
  };
7965
7541
 
7542
+ var SearchBox = function SearchBox(_ref) {
7543
+ var initValue = _ref.initValue,
7544
+ onSearch = _ref.onSearch,
7545
+ placeholder = _ref.placeholder,
7546
+ className = _ref.className,
7547
+ style = _ref.style;
7548
+
7549
+ var _useState = React.useState(initValue),
7550
+ searchString = _useState[0],
7551
+ setSearchString = _useState[1];
7552
+
7553
+ React.useEffect(function () {
7554
+ setSearchString(initValue);
7555
+ }, [initValue]);
7556
+ var onKeyUp = React.useCallback(function (e) {
7557
+ e.key === "Enter" && onSearch(searchString);
7558
+ }, [searchString, onSearch]);
7559
+ return React__default.createElement(reactstrap.Input, {
7560
+ placeholder: placeholder,
7561
+ value: searchString,
7562
+ onChange: function onChange(e) {
7563
+ return setSearchString(e.target.value);
7564
+ },
7565
+ onKeyUp: onKeyUp,
7566
+ className: className,
7567
+ style: style
7568
+ });
7569
+ };
7570
+
7571
+ SearchBox.defaultProps = {
7572
+ placeholder: "Type something to search",
7573
+ className: "",
7574
+ style: {}
7575
+ };
7576
+ var SearchBox$1 = React.memo(SearchBox);
7577
+
7966
7578
  var QuestionTypeSelector = function QuestionTypeSelector(props) {
7967
7579
  var id = props.id;
7968
7580
  var initValue = !!id ? QUESTION_TYPES_OPTIONS.find(function (option) {
@@ -8318,13 +7930,23 @@ var NotificationStatusSelector = function NotificationStatusSelector(_ref) {
8318
7930
 
8319
7931
  var NotificationStatusSelector$1 = React.memo(NotificationStatusSelector);
8320
7932
 
7933
+ var utcToLocalTime = (function (time, FORMAT) {
7934
+ if (time === DATE_MIN_VALUE) return "";
7935
+
7936
+ try {
7937
+ return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7938
+ } catch (_unused) {
7939
+ return "";
7940
+ }
7941
+ });
7942
+
8321
7943
  var defaultFilters = {
8322
7944
  currentPage: 1,
8323
7945
  pageSize: 30,
8324
7946
  searchString: "",
8325
7947
  isRead: false
8326
7948
  };
8327
- var TITLE$9 = "Notification list";
7949
+ var TITLE$8 = "Notification list";
8328
7950
  var NOTIFICATION_CHANNEL$1 = "NOTIFICATION_CHANNEL";
8329
7951
  var NEW_NOTIFICATION$1 = "NEW_NOTIFICATION";
8330
7952
 
@@ -8449,7 +8071,7 @@ var useNotificationList = function useNotificationList() {
8449
8071
  }
8450
8072
  }, [filters]);
8451
8073
  React.useEffect(function () {
8452
- document.title = TITLE$9;
8074
+ document.title = TITLE$8;
8453
8075
  }, []);
8454
8076
  React.useEffect(function () {
8455
8077
  getData();
@@ -8534,7 +8156,7 @@ var useNotificationList = function useNotificationList() {
8534
8156
  };
8535
8157
  };
8536
8158
 
8537
- var header$3 = "Notification list";
8159
+ var header$2 = "Notification list";
8538
8160
  var ICON_SIZE = 20;
8539
8161
 
8540
8162
  var NotificationList = function NotificationList() {
@@ -8555,7 +8177,7 @@ var NotificationList = function NotificationList() {
8555
8177
  }
8556
8178
  }, React__default.createElement("h5", {
8557
8179
  className: "mb-2"
8558
- }, header$3), React__default.createElement(reactstrap.Row, {
8180
+ }, header$2), React__default.createElement(reactstrap.Row, {
8559
8181
  className: "my-2"
8560
8182
  }, React__default.createElement(reactstrap.Col, {
8561
8183
  md: 8
@@ -8655,6 +8277,35 @@ var NotificationList = function NotificationList() {
8655
8277
  }))));
8656
8278
  };
8657
8279
 
8280
+ var searchInputStyle = {
8281
+ height: 38
8282
+ };
8283
+
8284
+ var SearchBoxContainer = function SearchBoxContainer(_ref) {
8285
+ var text = _ref.text,
8286
+ initValue = _ref.initValue,
8287
+ onClick = _ref.onClick,
8288
+ onSearch = _ref.onSearch,
8289
+ placeholder = _ref.placeholder;
8290
+ return React__default.createElement("div", {
8291
+ className: "d-flex align-items-center"
8292
+ }, React__default.createElement("div", null, React__default.createElement(AddButton, {
8293
+ text: text,
8294
+ onClick: onClick
8295
+ })), React__default.createElement("div", {
8296
+ className: "flex-grow-1 ml-2"
8297
+ }, React__default.createElement(SearchBox$1, {
8298
+ initValue: initValue,
8299
+ onSearch: onSearch,
8300
+ placeholder: placeholder,
8301
+ style: searchInputStyle
8302
+ })));
8303
+ };
8304
+
8305
+ SearchBoxContainer.defaultProps = {
8306
+ placeholder: "Type something to search"
8307
+ };
8308
+
8658
8309
  var CustomTabs = function CustomTabs(props) {
8659
8310
  var history = reactRouterDom.useHistory();
8660
8311
  var location = reactRouterDom.useLocation();
@@ -9059,7 +8710,7 @@ var get$8 = function get(filter) {
9059
8710
  });
9060
8711
  };
9061
8712
 
9062
- var TITLE$a = "Gallery";
8713
+ var TITLE$9 = "Gallery";
9063
8714
  var defaultFilter = {
9064
8715
  searchString: ""
9065
8716
  };
@@ -9296,7 +8947,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
9296
8947
  }
9297
8948
  }, [dispatch, filters]);
9298
8949
  React.useEffect(function () {
9299
- document.title = TITLE$a;
8950
+ document.title = TITLE$9;
9300
8951
  dispatch(setTargetMedia({
9301
8952
  targetMedia: undefined
9302
8953
  }));
@@ -9488,7 +9139,7 @@ var MediaDetail = function MediaDetail(_ref) {
9488
9139
 
9489
9140
  var MediaDetail$1 = React__default.memo(MediaDetail);
9490
9141
 
9491
- var header$4 = "Gallery";
9142
+ var header$3 = "Gallery";
9492
9143
 
9493
9144
  var GalleryList = function GalleryList(_ref) {
9494
9145
  var isLibrary = _ref.isLibrary;
@@ -9499,7 +9150,7 @@ var GalleryList = function GalleryList(_ref) {
9499
9150
  className: "fadeIn animated"
9500
9151
  }, !isLibrary && React__default.createElement("h5", {
9501
9152
  className: "mb-2"
9502
- }, header$4), React__default.createElement(reactstrap.Row, {
9153
+ }, header$3), React__default.createElement(reactstrap.Row, {
9503
9154
  className: "mb-2"
9504
9155
  }, React__default.createElement(reactstrap.Col, {
9505
9156
  md: 8
@@ -10125,6 +9776,9 @@ var commonReducer$8 = toolkit.createReducer(initialState$e, function (builder) {
10125
9776
  });
10126
9777
  });
10127
9778
 
9779
+ var setUserList = toolkit.createAction("users/setUserList");
9780
+ var setStudentList = toolkit.createAction("users/setStudentList");
9781
+
10128
9782
  var initialState$f = {
10129
9783
  userList: [],
10130
9784
  totalItems: 0,
@@ -10644,193 +10298,545 @@ var dataPlayer = toolkit.createReducer(initialState$v, function (builder) {
10644
10298
  return response.questionId === questionId;
10645
10299
  });
10646
10300
 
10647
- if (!existedResponse) {
10648
- questionResponseCloner.push({
10649
- questionId: questionId,
10650
- text: text
10651
- });
10652
- } else {
10653
- existedResponse.text = text;
10301
+ if (!existedResponse) {
10302
+ questionResponseCloner.push({
10303
+ questionId: questionId,
10304
+ text: text
10305
+ });
10306
+ } else {
10307
+ existedResponse.text = text;
10308
+ }
10309
+
10310
+ return _extends({}, state, {
10311
+ questionResponse: questionResponseCloner
10312
+ });
10313
+ }).addCase(reset, function (_state, _action) {
10314
+ return initialState$v;
10315
+ });
10316
+ });
10317
+
10318
+ var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10319
+
10320
+ var initialState$w = {
10321
+ certificateList: [],
10322
+ totalItems: 0
10323
+ };
10324
+ var commonReducer$f = toolkit.createReducer(initialState$w, function (builder) {
10325
+ builder.addCase(setCertificateList, function (state, action) {
10326
+ state.certificateList = action.payload.certificateList;
10327
+ state.totalItems = action.payload.totalItems;
10328
+ }).addCase(reset, function (_state, _action) {
10329
+ return initialState$w;
10330
+ });
10331
+ });
10332
+
10333
+ var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10334
+
10335
+ var initialState$x = {
10336
+ improveMyClassList: []
10337
+ };
10338
+ var commonReducer$g = toolkit.createReducer(initialState$x, function (builder) {
10339
+ builder.addCase(setImproveMyClass, function (state, action) {
10340
+ state.improveMyClassList = action.payload;
10341
+ }).addCase(reset, function (_state, _action) {
10342
+ return initialState$x;
10343
+ });
10344
+ });
10345
+
10346
+ var setFilterWidget = toolkit.createAction("setFilterWidget");
10347
+
10348
+ var initialState$y = {
10349
+ filterWidget: "Year"
10350
+ };
10351
+ var widgetReducer = toolkit.createReducer(initialState$y, function (builder) {
10352
+ builder.addCase(setFilterWidget, function (state, action) {
10353
+ state.filterWidget = action.payload.filterWidget;
10354
+ }).addCase(reset, function (_state, _action) {
10355
+ return initialState$y;
10356
+ });
10357
+ });
10358
+
10359
+ var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10360
+
10361
+ var initialState$z = {
10362
+ bandScoreList: [],
10363
+ totalItems: 0
10364
+ };
10365
+ var commonReducer$h = toolkit.createReducer(initialState$z, function (builder) {
10366
+ builder.addCase(setBandScoreList, function (state, action) {
10367
+ state.bandScoreList = action.payload.bandScoreList;
10368
+ state.totalItems = action.payload.totalItems;
10369
+ }).addCase(reset, function (_state, _action) {
10370
+ return initialState$z;
10371
+ });
10372
+ });
10373
+
10374
+ var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10375
+
10376
+ var initialState$A = {
10377
+ schoolBlankDayList: [],
10378
+ totalItems: 0
10379
+ };
10380
+ var commonReducer$i = toolkit.createReducer(initialState$A, function (builder) {
10381
+ builder.addCase(setSchoolBlankDayList, function (state, action) {
10382
+ state.schoolBlankDayList = action.payload.schoolBlankDayList;
10383
+ state.totalItems = action.payload.totalItems;
10384
+ }).addCase(reset, function (_state, _action) {
10385
+ return initialState$A;
10386
+ });
10387
+ });
10388
+
10389
+ var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10390
+
10391
+ var initialState$B = {
10392
+ studentIdSelectedByTeacher: 0
10393
+ };
10394
+ var navMobileReducer = toolkit.createReducer(initialState$B, function (builder) {
10395
+ builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10396
+ state.studentIdSelectedByTeacher = action.payload;
10397
+ }).addCase(reset, function (_state, _action) {
10398
+ return initialState$B;
10399
+ });
10400
+ });
10401
+
10402
+ var rootReducer = combineReducers({
10403
+ common: commonReducer,
10404
+ classes: classReducer,
10405
+ conferenceRubrics: conferenceRubricReducer,
10406
+ faqs: commonReducer$1,
10407
+ skills: commonReducer$2,
10408
+ emailTemplate: emailTemplateReducer,
10409
+ suggestionBank: suggestionBankReducer,
10410
+ learningStrategy: learningStrategyReducer,
10411
+ subjects: commonReducer$3,
10412
+ learningSupportCategories: commonReducer$4,
10413
+ questionBank: questionBankReducer,
10414
+ badges: commonReducer$5,
10415
+ semester: commonReducer$6,
10416
+ goalExamples: commonReducer$8,
10417
+ users: commonReducer$9,
10418
+ reflections: reflectionReducer,
10419
+ reflectionResults: reflectionReducer$1,
10420
+ feedbacks: commonReducer$a,
10421
+ assessments: commonReducer$b,
10422
+ questionByCategory: questionCategoryReducer,
10423
+ mailCategory: questionBankReducer$1,
10424
+ questionCate: questionCateReducer,
10425
+ notification: questionBankReducer$2,
10426
+ myStudent: commonReducer$c,
10427
+ assignments: commonReducer$7,
10428
+ assistants: assistantReducer,
10429
+ sesstionTemplates: sessionTemplateReducer,
10430
+ sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10431
+ tutorialScreens: tutorialScreenReducer,
10432
+ customAlerts: commonReducer$d,
10433
+ gallery: commonReducer$e,
10434
+ dashboard: dashboardReducer,
10435
+ sessionPlayer: sessionPlayerReducer,
10436
+ dataPlayer: dataPlayer,
10437
+ certificate: commonReducer$f,
10438
+ improveMyClass: commonReducer$g,
10439
+ widget: widgetReducer,
10440
+ bandScores: commonReducer$h,
10441
+ schoolBlankDays: commonReducer$i,
10442
+ navMobileReducer: navMobileReducer
10443
+ });
10444
+
10445
+ var store = toolkit.configureStore({
10446
+ reducer: rootReducer,
10447
+ middleware: function middleware(getDefaultMiddleware) {
10448
+ return getDefaultMiddleware({
10449
+ serializableCheck: false
10450
+ }).concat(logger);
10451
+ }
10452
+ });
10453
+
10454
+ var isInViewport = function isInViewport(el) {
10455
+ var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10456
+ return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10457
+ };
10458
+
10459
+ var debounce = function debounce(callback, wait) {
10460
+ var timeout = null;
10461
+ return function () {
10462
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10463
+ args[_key] = arguments[_key];
10654
10464
  }
10655
10465
 
10656
- return _extends({}, state, {
10657
- questionResponse: questionResponseCloner
10658
- });
10659
- }).addCase(reset, function (_state, _action) {
10660
- return initialState$v;
10661
- });
10662
- });
10466
+ var next = function next() {
10467
+ return callback.apply(void 0, args);
10468
+ };
10663
10469
 
10664
- var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10470
+ clearTimeout(timeout);
10471
+ timeout = setTimeout(next, wait);
10472
+ };
10473
+ };
10665
10474
 
10666
- var initialState$w = {
10667
- certificateList: [],
10668
- totalItems: 0
10475
+ var getTextFromHTML = function getTextFromHTML(htmlString) {
10476
+ var p = document.createElement("p");
10477
+ p.innerHTML = htmlString;
10478
+ var text = p.innerText;
10479
+ p.remove();
10480
+ return text;
10669
10481
  };
10670
- var commonReducer$f = toolkit.createReducer(initialState$w, function (builder) {
10671
- builder.addCase(setCertificateList, function (state, action) {
10672
- state.certificateList = action.payload.certificateList;
10673
- state.totalItems = action.payload.totalItems;
10674
- }).addCase(reset, function (_state, _action) {
10675
- return initialState$w;
10676
- });
10482
+
10483
+ var generateRandomString = (function () {
10484
+ return (Math.random() + 1).toString(36).substring(7);
10677
10485
  });
10678
10486
 
10679
- var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10487
+ var amplitudeClient = amplitude.getInstance();
10680
10488
 
10681
- var initialState$x = {
10682
- improveMyClassList: []
10683
- };
10684
- var commonReducer$g = toolkit.createReducer(initialState$x, function (builder) {
10685
- builder.addCase(setImproveMyClass, function (state, action) {
10686
- state.improveMyClassList = action.payload;
10687
- }).addCase(reset, function (_state, _action) {
10688
- return initialState$x;
10489
+ var USER_URL$2 = "/admin/user";
10490
+ var CREATE_USER_URL = "/admin/create-user";
10491
+ var TITLE$a = "User list";
10492
+ var HOMEPAGE_TEACHER$1 = "/home";
10493
+ var HOMEPAGE_STUDENT$1 = "/home";
10494
+ var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
10495
+ var HOMEPAGE_PARENT$1 = "/parent";
10496
+ var HOMEPAGE_DISTRICT$1 = "/admin/schools";
10497
+ var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
10498
+
10499
+ var useUserList = function useUserList() {
10500
+ var history = reactRouterDom.useHistory();
10501
+ var query = new URLSearchParams(location.search);
10502
+ var queryName = query.get("query");
10503
+ var userList = reactRedux.useSelector(function (state) {
10504
+ return state.users.userList;
10505
+ });
10506
+ var totalItems = reactRedux.useSelector(function (state) {
10507
+ return state.users.totalItems;
10689
10508
  });
10690
- });
10691
10509
 
10692
- var setFilterWidget = toolkit.createAction("setFilterWidget");
10510
+ var _useFilters = useFilters(),
10511
+ filters = _useFilters.filters,
10512
+ changeFilters = _useFilters.changeFilters;
10693
10513
 
10694
- var initialState$y = {
10695
- filterWidget: "Year"
10696
- };
10697
- var widgetReducer = toolkit.createReducer(initialState$y, function (builder) {
10698
- builder.addCase(setFilterWidget, function (state, action) {
10699
- state.filterWidget = action.payload.filterWidget;
10700
- }).addCase(reset, function (_state, _action) {
10701
- return initialState$y;
10702
- });
10703
- });
10514
+ var _useState = React.useState(!!queryName ? queryName : ""),
10515
+ fullName = _useState[0],
10516
+ setFullName = _useState[1];
10704
10517
 
10705
- var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10518
+ var isDistrict = window.location.host.includes("-district");
10519
+ var dispatch = reactRedux.useDispatch();
10520
+ var getData = React.useCallback(function (fullName) {
10521
+ try {
10522
+ var _temp3 = function _temp3() {
10523
+ dispatch(setLoading(false));
10524
+ };
10706
10525
 
10707
- var initialState$z = {
10708
- bandScoreList: [],
10709
- totalItems: 0
10710
- };
10711
- var commonReducer$h = toolkit.createReducer(initialState$z, function (builder) {
10712
- builder.addCase(setBandScoreList, function (state, action) {
10713
- state.bandScoreList = action.payload.bandScoreList;
10714
- state.totalItems = action.payload.totalItems;
10715
- }).addCase(reset, function (_state, _action) {
10716
- return initialState$z;
10717
- });
10718
- });
10526
+ dispatch(setLoading(true));
10719
10527
 
10720
- var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10528
+ var _temp4 = _catch(function () {
10529
+ return Promise.resolve(fullName ? get$5(_extends({}, filters, {
10530
+ searchString: fullName
10531
+ })) : get$5(filters)).then(function (res) {
10532
+ var _res$data = res.data,
10533
+ items = _res$data.items,
10534
+ totalItems = _res$data.totalItems;
10721
10535
 
10722
- var initialState$A = {
10723
- schoolBlankDayList: [],
10724
- totalItems: 0
10725
- };
10726
- var commonReducer$i = toolkit.createReducer(initialState$A, function (builder) {
10727
- builder.addCase(setSchoolBlankDayList, function (state, action) {
10728
- state.schoolBlankDayList = action.payload.schoolBlankDayList;
10729
- state.totalItems = action.payload.totalItems;
10730
- }).addCase(reset, function (_state, _action) {
10731
- return initialState$A;
10732
- });
10733
- });
10536
+ for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
10537
+ var user = _step.value;
10538
+ user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
10539
+ }
10540
+
10541
+ dispatch(setUserList({
10542
+ userList: items,
10543
+ totalItems: totalItems
10544
+ }));
10545
+ });
10546
+ }, function (err) {
10547
+ var _err$response, _err$response$data;
10548
+
10549
+ dispatch(setAlert({
10550
+ type: "danger",
10551
+ message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
10552
+ }));
10553
+ });
10554
+
10555
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
10556
+ } catch (e) {
10557
+ return Promise.reject(e);
10558
+ }
10559
+ }, [dispatch, filters]);
10560
+ React.useEffect(function () {
10561
+ document.title = TITLE$a;
10562
+ }, []);
10563
+ React.useEffect(function () {
10564
+ if (!!fullName) {
10565
+ getData(fullName);
10566
+ setFullName(null);
10567
+ } else {
10568
+ getData();
10569
+ }
10570
+ }, [filters]);
10571
+ var removeData = React.useCallback(function (id) {
10572
+ dispatch(setLoading(true));
10573
+
10574
+ try {
10575
+ dispatch(setModal({
10576
+ isOpen: true,
10577
+ type: "warning",
10578
+ message: "Do you want to remove this user?",
10579
+ onConfirm: function () {
10580
+ try {
10581
+ return Promise.resolve(remove$3(id)).then(function () {
10582
+ dispatch(setAlert({
10583
+ type: "success",
10584
+ message: "Remove user successfully"
10585
+ }));
10586
+ changeFilters({
10587
+ currentPage: 1
10588
+ });
10589
+ });
10590
+ } catch (e) {
10591
+ return Promise.reject(e);
10592
+ }
10593
+ }
10594
+ }));
10595
+ } catch (err) {
10596
+ var _err$response2, _err$response2$data;
10597
+
10598
+ dispatch(setAlert({
10599
+ type: "danger",
10600
+ 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
10601
+ }));
10602
+ }
10603
+
10604
+ dispatch(setLoading(false));
10605
+ }, [filters]);
10606
+
10607
+ var redirectLoginUser = function redirectLoginUser(res) {
10608
+ var _res$data2 = res.data,
10609
+ token = _res$data2.token,
10610
+ id = _res$data2.id,
10611
+ firstName = _res$data2.firstName,
10612
+ lastName = _res$data2.lastName,
10613
+ roles = _res$data2.roles,
10614
+ email = _res$data2.email,
10615
+ profileImageFileName = _res$data2.profileImageFileName;
10616
+ localStorage.setItem(ACCESS_TOKEN, token);
10617
+ localStorage.removeItem(NOTIFICATION_ALERT_KEY);
10618
+ dispatch(setUser({
10619
+ id: id,
10620
+ firstName: firstName,
10621
+ lastName: lastName,
10622
+ roles: roles,
10623
+ email: email,
10624
+ profileImageFileName: profileImageFileName
10625
+ }));
10626
+
10627
+ if (isDistrict) {
10628
+ history.push(HOMEPAGE_DISTRICT$1);
10629
+ } else if (roles.includes("Admin")) {
10630
+ history.push(HOMEPAGE_ADMIN$1);
10631
+ } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
10632
+ history.push(HOMEPAGE_TEACHER$1);
10633
+ } else if (roles.includes("Student")) {
10634
+ history.push(HOMEPAGE_STUDENT$1);
10635
+ } else if (roles.includes("Parent")) {
10636
+ history.push(HOMEPAGE_PARENT$1);
10637
+ } else if (roles.includes("EduTeacher")) {
10638
+ history.push(HOMEPAGE_EDU_TEACHER$1);
10639
+ } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
10640
+ history.push(HOMEPAGE_TEACHER$1);
10641
+ }
10642
+ };
10643
+
10644
+ var swicthUser = React.useCallback(function (id) {
10645
+ try {
10646
+ var _temp6 = _catch(function () {
10647
+ return Promise.resolve(switchAccountUser(id)).then(function (res) {
10648
+ var data = res.data;
10649
+ dispatch(setModal({
10650
+ isOpen: true,
10651
+ type: "warning",
10652
+ message: "Do you want to impersonate this user?",
10653
+ onConfirm: function () {
10654
+ try {
10655
+ var _temp9 = function _temp9() {
10656
+ dispatch(setLoading(false));
10657
+ };
10734
10658
 
10735
- var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10659
+ dispatch(setLoading(true));
10736
10660
 
10737
- var initialState$B = {
10738
- studentIdSelectedByTeacher: 0
10739
- };
10740
- var navMobileReducer = toolkit.createReducer(initialState$B, function (builder) {
10741
- builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10742
- state.studentIdSelectedByTeacher = action.payload;
10743
- }).addCase(reset, function (_state, _action) {
10744
- return initialState$B;
10745
- });
10746
- });
10661
+ var _temp10 = _catch(function () {
10662
+ var req = {
10663
+ email: data.email,
10664
+ password: "default",
10665
+ accessToken: data.token
10666
+ };
10667
+ return Promise.resolve(logIn(req)).then(function (res) {
10668
+ localStorage.clear();
10669
+ redirectLoginUser(res);
10670
+ });
10671
+ }, function (err) {
10672
+ var _err$response3, _err$response3$data;
10747
10673
 
10748
- var rootReducer = combineReducers({
10749
- common: commonReducer,
10750
- classes: classReducer,
10751
- conferenceRubrics: conferenceRubricReducer,
10752
- faqs: commonReducer$1,
10753
- skills: commonReducer$2,
10754
- emailTemplate: emailTemplateReducer,
10755
- suggestionBank: suggestionBankReducer,
10756
- learningStrategy: learningStrategyReducer,
10757
- subjects: commonReducer$3,
10758
- learningSupportCategories: commonReducer$4,
10759
- questionBank: questionBankReducer,
10760
- badges: commonReducer$5,
10761
- semester: commonReducer$6,
10762
- goalExamples: commonReducer$8,
10763
- users: commonReducer$9,
10764
- reflections: reflectionReducer,
10765
- reflectionResults: reflectionReducer$1,
10766
- feedbacks: commonReducer$a,
10767
- assessments: commonReducer$b,
10768
- questionByCategory: questionCategoryReducer,
10769
- mailCategory: questionBankReducer$1,
10770
- questionCate: questionCateReducer,
10771
- notification: questionBankReducer$2,
10772
- myStudent: commonReducer$c,
10773
- assignments: commonReducer$7,
10774
- assistants: assistantReducer,
10775
- sesstionTemplates: sessionTemplateReducer,
10776
- sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10777
- tutorialScreens: tutorialScreenReducer,
10778
- customAlerts: commonReducer$d,
10779
- gallery: commonReducer$e,
10780
- dashboard: dashboardReducer,
10781
- sessionPlayer: sessionPlayerReducer,
10782
- dataPlayer: dataPlayer,
10783
- certificate: commonReducer$f,
10784
- improveMyClass: commonReducer$g,
10785
- widget: widgetReducer,
10786
- bandScores: commonReducer$h,
10787
- schoolBlankDays: commonReducer$i,
10788
- navMobileReducer: navMobileReducer
10789
- });
10674
+ setAlert({
10675
+ type: "danger",
10676
+ 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
10677
+ });
10678
+ });
10790
10679
 
10791
- var store = toolkit.configureStore({
10792
- reducer: rootReducer,
10793
- middleware: function middleware(getDefaultMiddleware) {
10794
- return getDefaultMiddleware({
10795
- serializableCheck: false
10796
- }).concat(logger);
10797
- }
10798
- });
10680
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
10681
+ } catch (e) {
10682
+ return Promise.reject(e);
10683
+ }
10684
+ }
10685
+ }));
10686
+ });
10687
+ }, function (err) {
10688
+ var _err$response4, _err$response4$data;
10799
10689
 
10800
- var isInViewport = function isInViewport(el) {
10801
- var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10802
- return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10803
- };
10690
+ dispatch(setAlert({
10691
+ type: "danger",
10692
+ 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
10693
+ }));
10694
+ });
10804
10695
 
10805
- var debounce = function debounce(callback, wait) {
10806
- var timeout = null;
10807
- return function () {
10808
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10809
- args[_key] = arguments[_key];
10696
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
10697
+ } catch (e) {
10698
+ return Promise.reject(e);
10810
10699
  }
10700
+ }, [filters]);
10811
10701
 
10812
- var next = function next() {
10813
- return callback.apply(void 0, args);
10814
- };
10702
+ var reDirectDetailPage = function reDirectDetailPage(id) {
10703
+ var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
10704
+ history.push(url);
10705
+ };
10815
10706
 
10816
- clearTimeout(timeout);
10817
- timeout = setTimeout(next, wait);
10707
+ return {
10708
+ userList: userList,
10709
+ totalItems: totalItems,
10710
+ filters: filters,
10711
+ queryName: queryName,
10712
+ getData: getData,
10713
+ removeData: removeData,
10714
+ changeFilters: changeFilters,
10715
+ reDirectDetailPage: reDirectDetailPage,
10716
+ swicthUser: swicthUser
10818
10717
  };
10819
10718
  };
10820
10719
 
10821
- var getTextFromHTML = function getTextFromHTML(htmlString) {
10822
- var p = document.createElement("p");
10823
- p.innerHTML = htmlString;
10824
- var text = p.innerText;
10825
- p.remove();
10826
- return text;
10827
- };
10720
+ var header$4 = "User";
10828
10721
 
10829
- var generateRandomString = (function () {
10830
- return (Math.random() + 1).toString(36).substring(7);
10831
- });
10722
+ var UserList = function UserList() {
10723
+ var _useUserList = useUserList(),
10724
+ queryName = _useUserList.queryName,
10725
+ userList = _useUserList.userList,
10726
+ totalItems = _useUserList.totalItems,
10727
+ filters = _useUserList.filters,
10728
+ removeData = _useUserList.removeData,
10729
+ changeFilters = _useUserList.changeFilters,
10730
+ reDirectDetailPage = _useUserList.reDirectDetailPage,
10731
+ swicthUser = _useUserList.swicthUser;
10832
10732
 
10833
- var amplitudeClient = amplitude.getInstance();
10733
+ var _useTranslation = reactI18next.useTranslation(),
10734
+ t = _useTranslation.t;
10735
+
10736
+ return React__default.createElement("div", {
10737
+ className: "fadeIn animated"
10738
+ }, React__default.createElement("h5", {
10739
+ className: "mb-2"
10740
+ }, t("" + header$4)), React__default.createElement(reactstrap.Row, {
10741
+ className: "my-2"
10742
+ }, React__default.createElement(reactstrap.Col, {
10743
+ md: 8
10744
+ }, React__default.createElement(SearchBoxContainer, {
10745
+ text: t("create_user"),
10746
+ onClick: function onClick() {
10747
+ return reDirectDetailPage();
10748
+ },
10749
+ initValue: !!queryName ? queryName : "",
10750
+ onSearch: function onSearch(searchString) {
10751
+ return changeFilters({
10752
+ searchString: searchString
10753
+ });
10754
+ },
10755
+ placeholder: t("type_something_to_search_by_user_name")
10756
+ })), React__default.createElement(reactstrap.Col, {
10757
+ md: 4,
10758
+ className: "d-flex justify-content-end align-items-center"
10759
+ }, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
10760
+ className: "mb-2"
10761
+ }, React__default.createElement(reactstrap.Col, {
10762
+ md: 12
10763
+ }, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
10764
+ bordered: true,
10765
+ hover: true,
10766
+ striped: true,
10767
+ responsive: true,
10768
+ size: "sm"
10769
+ }, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
10770
+ className: "align-top"
10771
+ }, t("name")), React__default.createElement("th", {
10772
+ className: "align-top"
10773
+ }, t("email")), React__default.createElement("th", {
10774
+ className: "align-top"
10775
+ }, t("age")), React__default.createElement("th", {
10776
+ className: "align-top"
10777
+ }, t("role")), React__default.createElement("th", {
10778
+ className: "align-top"
10779
+ }, t("active_status")), React__default.createElement("th", {
10780
+ className: "align-top"
10781
+ }, t("created_time")), React__default.createElement("th", {
10782
+ className: "text-center"
10783
+ }, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
10784
+ return React__default.createElement("tr", {
10785
+ key: record.id
10786
+ }, React__default.createElement("td", {
10787
+ className: "align-middle"
10788
+ }, React__default.createElement(LinkEditButton, {
10789
+ label: "" + record.fullName,
10790
+ onClick: function onClick() {
10791
+ return reDirectDetailPage(record.id);
10792
+ }
10793
+ })), React__default.createElement("td", {
10794
+ className: "align-middle"
10795
+ }, record.email), React__default.createElement("td", {
10796
+ className: "align-middle"
10797
+ }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
10798
+ className: "align-middle"
10799
+ }, !!record.roles && record.roles.join(", ")), React__default.createElement("td", {
10800
+ className: "align-middle"
10801
+ }, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
10802
+ className: "align-middle"
10803
+ }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
10804
+ className: "text-center align-middle"
10805
+ }, React__default.createElement(fa.FaUsersCog, {
10806
+ style: {
10807
+ fontSize: "18px",
10808
+ marginRight: "10px",
10809
+ cursor: "pointer"
10810
+ },
10811
+ onClick: function onClick() {
10812
+ return swicthUser(record.id);
10813
+ }
10814
+ }), React__default.createElement(DeleteButtonIcon, {
10815
+ onClick: function onClick() {
10816
+ return removeData(record.id);
10817
+ }
10818
+ })));
10819
+ })))) : React__default.createElement(EmptyDataAlert, {
10820
+ label: t("user")
10821
+ })), React__default.createElement(reactstrap.Col, {
10822
+ md: 12
10823
+ }, React__default.createElement(CustomPagination, {
10824
+ filters: filters,
10825
+ totalRecordCount: totalItems,
10826
+ changePageSize: function changePageSize(pageSize) {
10827
+ return changeFilters({
10828
+ pageSize: pageSize
10829
+ });
10830
+ },
10831
+ changePage: function changePage(currentPage) {
10832
+ return changeFilters({
10833
+ currentPage: currentPage
10834
+ });
10835
+ }
10836
+ }))));
10837
+ };
10838
+
10839
+ var amplitudeClient$1 = amplitude.getInstance();
10834
10840
 
10835
10841
  Object.defineProperty(exports, 'I18nextProvider', {
10836
10842
  enumerable: true,
@@ -10911,7 +10917,7 @@ exports.UploadFileButton = UploadFileButton;
10911
10917
  exports.UserDetail = UserDetail;
10912
10918
  exports.UserList = UserList;
10913
10919
  exports.addTab = addTab;
10914
- exports.amplitudeClient = amplitudeClient;
10920
+ exports.amplitudeClient = amplitudeClient$1;
10915
10921
  exports.answerQuestion = answerQuestion;
10916
10922
  exports.answerQuestionDataPlayer = answerQuestionDataPlayer;
10917
10923
  exports.api = api;