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