mario-core 2.9.103-beta → 2.9.106-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";
@@ -595,7 +595,21 @@ var select_counselor = "Select Counselor";
595
595
  var select_secondary_teacher = "Select Secondary Teacher";
596
596
  var assign_secondary_teacher = "Assign Secondary Teacher";
597
597
  var secondary_teacher_name = "Secondary Teacher Name";
598
+ var user_for_question = "User For Question";
599
+ var requested_reflection = "Requested Reflection";
600
+ var request_class_reflection = "Request Class Reflection";
598
601
  var share_survey_to_teacher = "Share Survey To Teacher";
602
+ var select_form = "Select from";
603
+ var switch_counselor = "Switch Counselor";
604
+ var remove_counselor = "Remove Counselor";
605
+ var current_counselor_email = "Current Counselor Email";
606
+ var current_counselor_name = "Current Counselor Name";
607
+ var select_counselor_change = "Select Counselor Change";
608
+ var current_secondary_teacher_name = "Current Secondary Teacher Name";
609
+ var current_secondary_teacher_email = "Current Secondary Teacher Email";
610
+ var remove_secondary_teacher = "Remove Secondary Teacher";
611
+ var select_secondary_teacher_change = "Select Secondary Teacher Change";
612
+ var filter_calendar = "Filter Calendar";
599
613
  var lang_us = {
600
614
  dashboard: dashboard,
601
615
  user: user,
@@ -1165,7 +1179,21 @@ var lang_us = {
1165
1179
  select_secondary_teacher: select_secondary_teacher,
1166
1180
  assign_secondary_teacher: assign_secondary_teacher,
1167
1181
  secondary_teacher_name: secondary_teacher_name,
1168
- share_survey_to_teacher: share_survey_to_teacher
1182
+ user_for_question: user_for_question,
1183
+ requested_reflection: requested_reflection,
1184
+ request_class_reflection: request_class_reflection,
1185
+ share_survey_to_teacher: share_survey_to_teacher,
1186
+ select_form: select_form,
1187
+ switch_counselor: switch_counselor,
1188
+ remove_counselor: remove_counselor,
1189
+ current_counselor_email: current_counselor_email,
1190
+ current_counselor_name: current_counselor_name,
1191
+ select_counselor_change: select_counselor_change,
1192
+ current_secondary_teacher_name: current_secondary_teacher_name,
1193
+ current_secondary_teacher_email: current_secondary_teacher_email,
1194
+ remove_secondary_teacher: remove_secondary_teacher,
1195
+ select_secondary_teacher_change: select_secondary_teacher_change,
1196
+ filter_calendar: filter_calendar
1169
1197
  };
1170
1198
 
1171
1199
  var dashboard$1 = "Dashboard";
@@ -1730,7 +1758,21 @@ var select_counselor$1 = "Select Counselor";
1730
1758
  var select_secondary_teacher$1 = "Select Secondary Teacher";
1731
1759
  var assign_secondary_teacher$1 = "Assign Secondary Teacher";
1732
1760
  var secondary_teacher_name$1 = "Secondary Teacher Name";
1761
+ var user_for_question$1 = "User For Question";
1762
+ var requested_reflection$1 = "Requested Reflection";
1763
+ var request_class_reflection$1 = "Request Class Reflection";
1733
1764
  var share_survey_to_teacher$1 = "Share Survey To Teacher";
1765
+ var select_form$1 = "Select from";
1766
+ var switch_counselor$1 = "Switch Counselor";
1767
+ var remove_counselor$1 = "Remove Counselor";
1768
+ var current_counselor_email$1 = "Current Counselor Email";
1769
+ var current_counselor_name$1 = "Current Counselor Name";
1770
+ var select_counselor_change$1 = "Select Counselor Change";
1771
+ var current_secondary_teacher_name$1 = "Current Secondary Teacher Name";
1772
+ var current_secondary_teacher_email$1 = "Current Secondary Teacher Email";
1773
+ var remove_secondary_teacher$1 = "Remove Secondary Teacher";
1774
+ var select_secondary_teacher_change$1 = "Select Secondary Teacher Change";
1775
+ var filter_calendar$1 = "Filter Calendar";
1734
1776
  var lang_uk = {
1735
1777
  dashboard: dashboard$1,
1736
1778
  user: user$1,
@@ -2300,7 +2342,21 @@ var lang_uk = {
2300
2342
  select_secondary_teacher: select_secondary_teacher$1,
2301
2343
  assign_secondary_teacher: assign_secondary_teacher$1,
2302
2344
  secondary_teacher_name: secondary_teacher_name$1,
2303
- share_survey_to_teacher: share_survey_to_teacher$1
2345
+ user_for_question: user_for_question$1,
2346
+ requested_reflection: requested_reflection$1,
2347
+ request_class_reflection: request_class_reflection$1,
2348
+ share_survey_to_teacher: share_survey_to_teacher$1,
2349
+ select_form: select_form$1,
2350
+ switch_counselor: switch_counselor$1,
2351
+ remove_counselor: remove_counselor$1,
2352
+ current_counselor_email: current_counselor_email$1,
2353
+ current_counselor_name: current_counselor_name$1,
2354
+ select_counselor_change: select_counselor_change$1,
2355
+ current_secondary_teacher_name: current_secondary_teacher_name$1,
2356
+ current_secondary_teacher_email: current_secondary_teacher_email$1,
2357
+ remove_secondary_teacher: remove_secondary_teacher$1,
2358
+ select_secondary_teacher_change: select_secondary_teacher_change$1,
2359
+ filter_calendar: filter_calendar$1
2304
2360
  };
2305
2361
 
2306
2362
  var DEFAULT_LANGUAGE = localStorage.getItem("language") !== null ? localStorage.getItem("language") : "uk";
@@ -2771,17 +2827,21 @@ var useLogin = function useLogin() {
2771
2827
  googleClientId = _useState3[0],
2772
2828
  setGoogleClientId = _useState3[1];
2773
2829
 
2774
- var _useState4 = React.useState(),
2775
- infoUser = _useState4[0],
2776
- setInfoUser = _useState4[1];
2830
+ var _useState4 = React.useState(""),
2831
+ googleRecaptchaId = _useState4[0],
2832
+ setGoogleRecaptchaId = _useState4[1];
2833
+
2834
+ var _useState5 = React.useState(),
2835
+ infoUser = _useState5[0],
2836
+ setInfoUser = _useState5[1];
2777
2837
 
2778
2838
  var toggle = React.useCallback(function () {
2779
2839
  setOpenLogin(!openLogin);
2780
2840
  }, [openLogin]);
2781
2841
 
2782
- var _useState5 = React.useState(false),
2783
- isShowPassword = _useState5[0],
2784
- setIsShowPassword = _useState5[1];
2842
+ var _useState6 = React.useState(false),
2843
+ isShowPassword = _useState6[0],
2844
+ setIsShowPassword = _useState6[1];
2785
2845
 
2786
2846
  React.useEffect(function () {
2787
2847
  document.title = TITLE;
@@ -2885,7 +2945,8 @@ var useLogin = function useLogin() {
2885
2945
  try {
2886
2946
  var _temp6 = _catch(function () {
2887
2947
  return Promise.resolve(getGoogleClientId()).then(function (res) {
2888
- setGoogleClientId(res.data);
2948
+ setGoogleClientId(res.data.googleClientId);
2949
+ setGoogleRecaptchaId(res.data.googleCaptchaId);
2889
2950
  });
2890
2951
  }, function (err) {
2891
2952
  var _err$response2, _err$response2$data;
@@ -3020,7 +3081,8 @@ var useLogin = function useLogin() {
3020
3081
  setInfoUser: setInfoUser,
3021
3082
  submitLogin: submitLogin,
3022
3083
  setIsLoginGoogle: setIsLoginGoogle,
3023
- googleClientId: googleClientId
3084
+ googleClientId: googleClientId,
3085
+ googleRecaptchaId: googleRecaptchaId
3024
3086
  };
3025
3087
  };
3026
3088
 
@@ -3209,9 +3271,6 @@ var BlockLogin = function BlockLogin(_ref) {
3209
3271
  }
3210
3272
  }, [executeRecaptcha]);
3211
3273
  var handleVerify = React.useCallback(function () {}, []);
3212
- console.log({
3213
- googleClientId: googleClientId
3214
- });
3215
3274
 
3216
3275
  var onSuccessGoogle = function onSuccessGoogle(res) {
3217
3276
  if (!!(res !== null && res !== void 0 && res.accessToken)) {
@@ -3708,7 +3767,8 @@ var Login = function Login(props) {
3708
3767
 
3709
3768
  var _useLogin = useLogin(),
3710
3769
  defaultInfo = _useLogin.defaultInfo,
3711
- userLogin = _useLogin.userLogin;
3770
+ userLogin = _useLogin.userLogin,
3771
+ googleRecaptchaId = _useLogin.googleRecaptchaId;
3712
3772
 
3713
3773
  React.useEffect(function () {
3714
3774
  isLogin && (document.title = LOGIN_TITLE);
@@ -3724,9 +3784,9 @@ var Login = function Login(props) {
3724
3784
  md: 12,
3725
3785
  xs: 12,
3726
3786
  className: "d-flex justify-content-center h-100 align-items-center"
3727
- }, React__default.createElement(reactGoogleRecaptchaV3.GoogleReCaptchaProvider, {
3787
+ }, !!googleRecaptchaId && React__default.createElement(reactGoogleRecaptchaV3.GoogleReCaptchaProvider, {
3728
3788
  useRecaptchaNet: true,
3729
- reCaptchaKey: GOOGLE_RECAPTCHA_KEY,
3789
+ reCaptchaKey: googleRecaptchaId,
3730
3790
  scriptProps: {
3731
3791
  async: true,
3732
3792
  defer: true,
@@ -3745,7 +3805,7 @@ var QuoteContent = function QuoteContent() {
3745
3805
  className: styles["title-quote"] + " d-block"
3746
3806
  }, React__default.createElement("p", null, "Powerful"), React__default.createElement("p", null, "Personalized"), React__default.createElement("p", null, "Learning")), React__default.createElement("div", {
3747
3807
  className: styles["descriptions-quote"] + " d-block"
3748
- }, React__default.createElement("p", null, "Focus on what matters most to you and"), React__default.createElement("p", null, "and make learning meaningful.")));
3808
+ }, React__default.createElement("p", null, "Focus on what matters most to you and"), React__default.createElement("p", null, "make learning meaningful.")));
3749
3809
  };
3750
3810
 
3751
3811
  var IconContent = function IconContent(_ref) {
@@ -6716,8 +6776,89 @@ var SkillList = function SkillList() {
6716
6776
  }))));
6717
6777
  };
6718
6778
 
6719
- var setUserList = toolkit.createAction("users/setUserList");
6720
- var setStudentList = toolkit.createAction("users/setStudentList");
6779
+ var MAX_FILE_SIZE = 20097152;
6780
+
6781
+ var UploadFileButton = function UploadFileButton(_ref) {
6782
+ var fileName = _ref.fileName,
6783
+ maxWidth = _ref.maxWidth,
6784
+ maxHeight = _ref.maxHeight,
6785
+ setFile = _ref.setFile,
6786
+ canDelete = _ref.canDelete,
6787
+ onDelete = _ref.onDelete,
6788
+ isCheckFeedBack = _ref.isCheckFeedBack,
6789
+ onAddImage = _ref.onAddImage;
6790
+ var dispatch = reactRedux.useDispatch();
6791
+
6792
+ var _useState = React.useState(""),
6793
+ imagePreviewUrl = _useState[0],
6794
+ setImagePreviewUrl = _useState[1];
6795
+
6796
+ var imageStyle = {
6797
+ maxWidth: maxWidth || "100%",
6798
+ maxHeight: maxHeight || "100%"
6799
+ };
6800
+ var imageSrc = imagePreviewUrl || getFileUrl(fileName);
6801
+
6802
+ var handleImageChange = function handleImageChange(e) {
6803
+ e.preventDefault();
6804
+ var reader = new FileReader();
6805
+ var newFile = e.target.files[0];
6806
+
6807
+ if (newFile.size > MAX_FILE_SIZE) {
6808
+ dispatch(setAlert({
6809
+ type: "danger",
6810
+ message: "File can't be larger than 2MB"
6811
+ }));
6812
+ return;
6813
+ }
6814
+
6815
+ reader.onloadend = function () {
6816
+ setFile(newFile);
6817
+ setImagePreviewUrl(reader.result);
6818
+ };
6819
+
6820
+ if (newFile) {
6821
+ reader.readAsDataURL(newFile);
6822
+ }
6823
+
6824
+ !!onAddImage && onAddImage();
6825
+ };
6826
+
6827
+ var imagePreviewContainer = imagePreviewUrl || fileName ? React__default.createElement("img", {
6828
+ style: imageStyle,
6829
+ src: imageSrc,
6830
+ alt: "image"
6831
+ }) : null;
6832
+ return React__default.createElement("div", {
6833
+ className: "mb-2"
6834
+ }, React__default.createElement(reactstrap.Form, {
6835
+ className: "mb-2"
6836
+ }, React__default.createElement(reactstrap.Input, {
6837
+ className: "d-none",
6838
+ type: "file",
6839
+ id: "uploadFile",
6840
+ onChange: handleImageChange,
6841
+ accept: "image/*"
6842
+ }), React__default.createElement("div", {
6843
+ className: "d-flex align-items-center"
6844
+ }, React__default.createElement(reactstrap.Label, {
6845
+ htmlFor: "uploadFile",
6846
+ role: "button",
6847
+ tabIndex: 0,
6848
+ className: styles["input-file-label"]
6849
+ }, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
6850
+ className: "fa fa-paperclip mr-1",
6851
+ "aria-hidden": "true"
6852
+ }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
6853
+ size: "sm",
6854
+ color: "danger",
6855
+ className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
6856
+ onClick: function onClick() {
6857
+ setImagePreviewUrl(null);
6858
+ onDelete && onDelete();
6859
+ }
6860
+ }, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
6861
+ };
6721
6862
 
6722
6863
  var USER_URL$1 = BASE_URL + "/api/user";
6723
6864
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
@@ -6750,38 +6891,54 @@ var switchAccountUser = function switchAccountUser(id) {
6750
6891
  return api.post(EDU_USER_URL + "/switch-user/" + id);
6751
6892
  };
6752
6893
 
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";
6894
+ var initValue$3 = {
6895
+ id: "",
6896
+ firstName: "",
6897
+ lastName: "",
6898
+ email: "",
6899
+ dateOfBirth: "",
6900
+ roles: [],
6901
+ isActive: true,
6902
+ profileImageFileName: ""
6903
+ };
6904
+ var USER_LIST_URL = "/admin/user";
6905
+ var TITLE$7 = "User detail";
6762
6906
 
6763
- var useUserList = function useUserList() {
6907
+ var useUserDetail = function useUserDetail(id) {
6908
+ var dispatch = reactRedux.useDispatch();
6764
6909
  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
6910
 
6774
- var _useFilters = useFilters(),
6775
- filters = _useFilters.filters,
6776
- changeFilters = _useFilters.changeFilters;
6911
+ var _useState = React.useState(initValue$3),
6912
+ userDetail = _useState[0],
6913
+ setUserDetail = _useState[1];
6777
6914
 
6778
- var _useState = React.useState(!!queryName ? queryName : ""),
6779
- fullName = _useState[0],
6780
- setFullName = _useState[1];
6915
+ var _useState2 = React.useState(null),
6916
+ file = _useState2[0],
6917
+ setFile = _useState2[1];
6781
6918
 
6782
- var isDistrict = window.location.host.includes("-district");
6783
- var dispatch = reactRedux.useDispatch();
6784
- var getData = React.useCallback(function (fullName) {
6919
+ var _useState3 = React.useState(false),
6920
+ edited = _useState3[0],
6921
+ setEdited = _useState3[1];
6922
+
6923
+ var setEditedTrue = function setEditedTrue() {
6924
+ try {
6925
+ localStorage.setItem(window.location.href, "true");
6926
+ setEdited(true);
6927
+ return Promise.resolve();
6928
+ } catch (e) {
6929
+ return Promise.reject(e);
6930
+ }
6931
+ };
6932
+
6933
+ React.useEffect(function () {
6934
+ document.title = TITLE$7;
6935
+ setEdited(false);
6936
+ if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
6937
+ }, []);
6938
+ React.useEffect(function () {
6939
+ !!id && getData();
6940
+ }, [id]);
6941
+ var getData = React.useCallback(function () {
6785
6942
  try {
6786
6943
  var _temp3 = function _temp3() {
6787
6944
  dispatch(setLoading(false));
@@ -6790,22 +6947,14 @@ var useUserList = function useUserList() {
6790
6947
  dispatch(setLoading(true));
6791
6948
 
6792
6949
  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
- }
6950
+ return Promise.resolve(getById$3(id)).then(function (res) {
6951
+ var _res$data;
6804
6952
 
6805
- dispatch(setUserList({
6806
- userList: items,
6807
- totalItems: totalItems
6953
+ setUserDetail(_extends({}, res.data, {
6954
+ dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), DATE_FORMAT),
6955
+ roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
6808
6956
  }));
6957
+ document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
6809
6958
  });
6810
6959
  }, function (err) {
6811
6960
  var _err$response, _err$response$data;
@@ -6820,688 +6969,171 @@ var useUserList = function useUserList() {
6820
6969
  } catch (e) {
6821
6970
  return Promise.reject(e);
6822
6971
  }
6823
- }, [dispatch, filters]);
6824
- React.useEffect(function () {
6825
- document.title = TITLE$7;
6972
+ }, [id]);
6973
+ var backToList = React.useCallback(function (user) {
6974
+ !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
6826
6975
  }, []);
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
-
6976
+ var confirmData = React.useCallback(function (data) {
6838
6977
  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
6978
+ var _temp9 = function _temp9() {
6979
+ dispatch(setLoading(false));
6980
+ };
6981
+
6982
+ dispatch(setLoading(true));
6983
+
6984
+ var _temp10 = _catch(function () {
6985
+ function _temp6() {
6986
+ var next = !!id ? update$5 : create$5;
6987
+ !id && delete data.id;
6988
+ return Promise.resolve(next(data)).then(function (result) {
6989
+ if (!!result) {
6990
+ getById$3(result.data.id).then(function (e) {
6991
+ backToList(e.data.fullName);
6852
6992
  });
6853
- });
6854
- } catch (e) {
6855
- return Promise.reject(e);
6856
- }
6857
- }
6858
- }));
6859
- } catch (err) {
6860
- var _err$response2, _err$response2$data;
6993
+ }
6861
6994
 
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
- }
6995
+ if (!id) {
6996
+ alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
6997
+ }
6867
6998
 
6868
- dispatch(setLoading(false));
6869
- }, [filters]);
6999
+ dispatch(setAlert({
7000
+ type: "success",
7001
+ message: (!!id ? "Update" : "Create") + " user successfully"
7002
+ }));
7003
+ });
7004
+ }
6870
7005
 
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
- }));
7006
+ var _temp5 = function () {
7007
+ if (!!file) {
7008
+ var formData = new FormData();
7009
+ var name = file.name;
7010
+ formData.append("file", file, name);
7011
+ return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
7012
+ var _res$data2;
6890
7013
 
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
- };
7014
+ var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
7015
+ data.profileImageFileName = imageUrl;
7016
+ });
7017
+ }
7018
+ }();
6907
7019
 
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
- };
7020
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
7021
+ }, function (err) {
7022
+ var _err$response2, _err$response2$data;
6922
7023
 
6923
- dispatch(setLoading(true));
7024
+ dispatch(setAlert({
7025
+ type: "danger",
7026
+ 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
7027
+ }));
7028
+ });
6924
7029
 
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;
7030
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7031
+ } catch (e) {
7032
+ return Promise.reject(e);
7033
+ }
7034
+ }, [id, file]);
6937
7035
 
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
- });
7036
+ var confirmChangePassword = function confirmChangePassword(data) {
7037
+ try {
7038
+ var _temp13 = function _temp13() {
7039
+ dispatch(setLoading(false));
7040
+ };
6943
7041
 
6944
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
6945
- } catch (e) {
6946
- return Promise.reject(e);
6947
- }
6948
- }
7042
+ dispatch(setLoading(true));
7043
+
7044
+ var _temp14 = _catch(function () {
7045
+ return Promise.resolve(changePassword(data)).then(function () {
7046
+ dispatch(setAlert({
7047
+ type: "success",
7048
+ message: "Change password successfully"
6949
7049
  }));
6950
7050
  });
6951
- }, function (err) {
6952
- var _err$response4, _err$response4$data;
7051
+ }, function (e) {
7052
+ var _e$response, _e$response$data;
6953
7053
 
6954
7054
  dispatch(setAlert({
6955
7055
  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
7056
+ 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
7057
  }));
6958
7058
  });
6959
7059
 
6960
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7060
+ return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
6961
7061
  } catch (e) {
6962
7062
  return Promise.reject(e);
6963
7063
  }
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
7064
  };
6970
7065
 
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
- };
7066
+ var forgotPasswordRequest = React.useCallback(function (data) {
7067
+ try {
7068
+ var _temp17 = function _temp17() {
7069
+ dispatch(setLoading(false));
7070
+ };
6983
7071
 
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;
7072
+ dispatch(setLoading(true));
6990
7073
 
6991
- var _useState = React.useState(initValue),
6992
- searchString = _useState[0],
6993
- setSearchString = _useState[1];
7074
+ var _temp18 = _catch(function () {
7075
+ return Promise.resolve(forgotChangePassword(data)).then(function () {
7076
+ dispatch(setAlert({
7077
+ type: "success",
7078
+ message: "Send forgot password link successfully"
7079
+ }));
7080
+ });
7081
+ }, function (err) {
7082
+ var _err$response3, _err$response3$data;
6994
7083
 
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
- };
7084
+ dispatch(setAlert({
7085
+ type: "danger",
7086
+ 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"
7087
+ }));
7088
+ });
7012
7089
 
7013
- SearchBox.defaultProps = {
7014
- placeholder: "Type something to search",
7015
- className: "",
7016
- style: {}
7090
+ return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7091
+ } catch (e) {
7092
+ return Promise.reject(e);
7093
+ }
7094
+ }, []);
7095
+ return {
7096
+ userDetail: userDetail,
7097
+ backToList: backToList,
7098
+ confirmData: confirmData,
7099
+ file: file,
7100
+ setFile: setFile,
7101
+ edited: edited,
7102
+ setEdited: setEdited,
7103
+ setEditedTrue: setEditedTrue,
7104
+ confirmChangePassword: confirmChangePassword,
7105
+ forgotPasswordRequest: forgotPasswordRequest
7106
+ };
7017
7107
  };
7018
- var SearchBox$1 = React.memo(SearchBox);
7019
7108
 
7020
- var searchInputStyle = {
7021
- height: 38
7022
- };
7109
+ var userSchema = yup.object({
7110
+ firstName: yup.string().required("First name is required"),
7111
+ lastName: yup.string().required("Last name is required"),
7112
+ dateOfBirth: yup.string().required("Date of birth is required"),
7113
+ email: yup.string().email("Email is invalid").required("Email is required"),
7114
+ roles: yup.array().of(yup.string()).min(1, "Role is required")
7115
+ });
7023
7116
 
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
- };
7117
+ var changePasswordSchema = yup.object({
7118
+ oldPassword: yup.string().required("Current password is required"),
7119
+ newPassword: yup.string().required("New password is required"),
7120
+ confirmedNewPassword: yup.string().required("Confirm password is required")
7121
+ });
7044
7122
 
7045
- SearchBoxContainer.defaultProps = {
7046
- placeholder: "Type something to search"
7047
- };
7123
+ var CREATE_USER = "create_user";
7124
+ var EDIT_USER_HEADER = "edit_user";
7125
+ var CHANGE_PASSWORD$1 = "change_password";
7048
7126
 
7049
- var utcToLocalTime = (function (time, FORMAT) {
7050
- if (time === DATE_MIN_VALUE) return "";
7127
+ var UserDetail = function UserDetail() {
7128
+ var _useParams = reactRouterDom.useParams(),
7129
+ id = _useParams.id;
7051
7130
 
7052
- try {
7053
- return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7054
- } catch (_unused) {
7055
- return "";
7056
- }
7057
- });
7131
+ var user = reactRedux.useSelector(function (state) {
7132
+ return state.common.user;
7133
+ });
7058
7134
 
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;
7135
+ var _useTranslation = reactI18next.useTranslation(),
7136
+ t = _useTranslation.t;
7505
7137
 
7506
7138
  var _useUserDetail = useUserDetail(id),
7507
7139
  userDetail = _useUserDetail.userDetail,
@@ -7963,6 +7595,42 @@ var CreatableSelector = function CreatableSelector(props) {
7963
7595
  });
7964
7596
  };
7965
7597
 
7598
+ var SearchBox = function SearchBox(_ref) {
7599
+ var initValue = _ref.initValue,
7600
+ onSearch = _ref.onSearch,
7601
+ placeholder = _ref.placeholder,
7602
+ className = _ref.className,
7603
+ style = _ref.style;
7604
+
7605
+ var _useState = React.useState(initValue),
7606
+ searchString = _useState[0],
7607
+ setSearchString = _useState[1];
7608
+
7609
+ React.useEffect(function () {
7610
+ setSearchString(initValue);
7611
+ }, [initValue]);
7612
+ var onKeyUp = React.useCallback(function (e) {
7613
+ e.key === "Enter" && onSearch(searchString);
7614
+ }, [searchString, onSearch]);
7615
+ return React__default.createElement(reactstrap.Input, {
7616
+ placeholder: placeholder,
7617
+ value: searchString,
7618
+ onChange: function onChange(e) {
7619
+ return setSearchString(e.target.value);
7620
+ },
7621
+ onKeyUp: onKeyUp,
7622
+ className: className,
7623
+ style: style
7624
+ });
7625
+ };
7626
+
7627
+ SearchBox.defaultProps = {
7628
+ placeholder: "Type something to search",
7629
+ className: "",
7630
+ style: {}
7631
+ };
7632
+ var SearchBox$1 = React.memo(SearchBox);
7633
+
7966
7634
  var QuestionTypeSelector = function QuestionTypeSelector(props) {
7967
7635
  var id = props.id;
7968
7636
  var initValue = !!id ? QUESTION_TYPES_OPTIONS.find(function (option) {
@@ -8318,13 +7986,23 @@ var NotificationStatusSelector = function NotificationStatusSelector(_ref) {
8318
7986
 
8319
7987
  var NotificationStatusSelector$1 = React.memo(NotificationStatusSelector);
8320
7988
 
7989
+ var utcToLocalTime = (function (time, FORMAT) {
7990
+ if (time === DATE_MIN_VALUE) return "";
7991
+
7992
+ try {
7993
+ return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7994
+ } catch (_unused) {
7995
+ return "";
7996
+ }
7997
+ });
7998
+
8321
7999
  var defaultFilters = {
8322
8000
  currentPage: 1,
8323
8001
  pageSize: 30,
8324
8002
  searchString: "",
8325
8003
  isRead: false
8326
8004
  };
8327
- var TITLE$9 = "Notification list";
8005
+ var TITLE$8 = "Notification list";
8328
8006
  var NOTIFICATION_CHANNEL$1 = "NOTIFICATION_CHANNEL";
8329
8007
  var NEW_NOTIFICATION$1 = "NEW_NOTIFICATION";
8330
8008
 
@@ -8449,7 +8127,7 @@ var useNotificationList = function useNotificationList() {
8449
8127
  }
8450
8128
  }, [filters]);
8451
8129
  React.useEffect(function () {
8452
- document.title = TITLE$9;
8130
+ document.title = TITLE$8;
8453
8131
  }, []);
8454
8132
  React.useEffect(function () {
8455
8133
  getData();
@@ -8534,7 +8212,7 @@ var useNotificationList = function useNotificationList() {
8534
8212
  };
8535
8213
  };
8536
8214
 
8537
- var header$3 = "Notification list";
8215
+ var header$2 = "Notification list";
8538
8216
  var ICON_SIZE = 20;
8539
8217
 
8540
8218
  var NotificationList = function NotificationList() {
@@ -8555,7 +8233,7 @@ var NotificationList = function NotificationList() {
8555
8233
  }
8556
8234
  }, React__default.createElement("h5", {
8557
8235
  className: "mb-2"
8558
- }, header$3), React__default.createElement(reactstrap.Row, {
8236
+ }, header$2), React__default.createElement(reactstrap.Row, {
8559
8237
  className: "my-2"
8560
8238
  }, React__default.createElement(reactstrap.Col, {
8561
8239
  md: 8
@@ -8655,6 +8333,35 @@ var NotificationList = function NotificationList() {
8655
8333
  }))));
8656
8334
  };
8657
8335
 
8336
+ var searchInputStyle = {
8337
+ height: 38
8338
+ };
8339
+
8340
+ var SearchBoxContainer = function SearchBoxContainer(_ref) {
8341
+ var text = _ref.text,
8342
+ initValue = _ref.initValue,
8343
+ onClick = _ref.onClick,
8344
+ onSearch = _ref.onSearch,
8345
+ placeholder = _ref.placeholder;
8346
+ return React__default.createElement("div", {
8347
+ className: "d-flex align-items-center"
8348
+ }, React__default.createElement("div", null, React__default.createElement(AddButton, {
8349
+ text: text,
8350
+ onClick: onClick
8351
+ })), React__default.createElement("div", {
8352
+ className: "flex-grow-1 ml-2"
8353
+ }, React__default.createElement(SearchBox$1, {
8354
+ initValue: initValue,
8355
+ onSearch: onSearch,
8356
+ placeholder: placeholder,
8357
+ style: searchInputStyle
8358
+ })));
8359
+ };
8360
+
8361
+ SearchBoxContainer.defaultProps = {
8362
+ placeholder: "Type something to search"
8363
+ };
8364
+
8658
8365
  var CustomTabs = function CustomTabs(props) {
8659
8366
  var history = reactRouterDom.useHistory();
8660
8367
  var location = reactRouterDom.useLocation();
@@ -9059,7 +8766,7 @@ var get$8 = function get(filter) {
9059
8766
  });
9060
8767
  };
9061
8768
 
9062
- var TITLE$a = "Gallery";
8769
+ var TITLE$9 = "Gallery";
9063
8770
  var defaultFilter = {
9064
8771
  searchString: ""
9065
8772
  };
@@ -9296,7 +9003,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
9296
9003
  }
9297
9004
  }, [dispatch, filters]);
9298
9005
  React.useEffect(function () {
9299
- document.title = TITLE$a;
9006
+ document.title = TITLE$9;
9300
9007
  dispatch(setTargetMedia({
9301
9008
  targetMedia: undefined
9302
9009
  }));
@@ -9488,7 +9195,7 @@ var MediaDetail = function MediaDetail(_ref) {
9488
9195
 
9489
9196
  var MediaDetail$1 = React__default.memo(MediaDetail);
9490
9197
 
9491
- var header$4 = "Gallery";
9198
+ var header$3 = "Gallery";
9492
9199
 
9493
9200
  var GalleryList = function GalleryList(_ref) {
9494
9201
  var isLibrary = _ref.isLibrary;
@@ -9499,7 +9206,7 @@ var GalleryList = function GalleryList(_ref) {
9499
9206
  className: "fadeIn animated"
9500
9207
  }, !isLibrary && React__default.createElement("h5", {
9501
9208
  className: "mb-2"
9502
- }, header$4), React__default.createElement(reactstrap.Row, {
9209
+ }, header$3), React__default.createElement(reactstrap.Row, {
9503
9210
  className: "mb-2"
9504
9211
  }, React__default.createElement(reactstrap.Col, {
9505
9212
  md: 8
@@ -10125,6 +9832,9 @@ var commonReducer$8 = toolkit.createReducer(initialState$e, function (builder) {
10125
9832
  });
10126
9833
  });
10127
9834
 
9835
+ var setUserList = toolkit.createAction("users/setUserList");
9836
+ var setStudentList = toolkit.createAction("users/setStudentList");
9837
+
10128
9838
  var initialState$f = {
10129
9839
  userList: [],
10130
9840
  totalItems: 0,
@@ -10644,193 +10354,545 @@ var dataPlayer = toolkit.createReducer(initialState$v, function (builder) {
10644
10354
  return response.questionId === questionId;
10645
10355
  });
10646
10356
 
10647
- if (!existedResponse) {
10648
- questionResponseCloner.push({
10649
- questionId: questionId,
10650
- text: text
10651
- });
10652
- } else {
10653
- existedResponse.text = text;
10357
+ if (!existedResponse) {
10358
+ questionResponseCloner.push({
10359
+ questionId: questionId,
10360
+ text: text
10361
+ });
10362
+ } else {
10363
+ existedResponse.text = text;
10364
+ }
10365
+
10366
+ return _extends({}, state, {
10367
+ questionResponse: questionResponseCloner
10368
+ });
10369
+ }).addCase(reset, function (_state, _action) {
10370
+ return initialState$v;
10371
+ });
10372
+ });
10373
+
10374
+ var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10375
+
10376
+ var initialState$w = {
10377
+ certificateList: [],
10378
+ totalItems: 0
10379
+ };
10380
+ var commonReducer$f = toolkit.createReducer(initialState$w, function (builder) {
10381
+ builder.addCase(setCertificateList, function (state, action) {
10382
+ state.certificateList = action.payload.certificateList;
10383
+ state.totalItems = action.payload.totalItems;
10384
+ }).addCase(reset, function (_state, _action) {
10385
+ return initialState$w;
10386
+ });
10387
+ });
10388
+
10389
+ var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10390
+
10391
+ var initialState$x = {
10392
+ improveMyClassList: []
10393
+ };
10394
+ var commonReducer$g = toolkit.createReducer(initialState$x, function (builder) {
10395
+ builder.addCase(setImproveMyClass, function (state, action) {
10396
+ state.improveMyClassList = action.payload;
10397
+ }).addCase(reset, function (_state, _action) {
10398
+ return initialState$x;
10399
+ });
10400
+ });
10401
+
10402
+ var setFilterWidget = toolkit.createAction("setFilterWidget");
10403
+
10404
+ var initialState$y = {
10405
+ filterWidget: "Year"
10406
+ };
10407
+ var widgetReducer = toolkit.createReducer(initialState$y, function (builder) {
10408
+ builder.addCase(setFilterWidget, function (state, action) {
10409
+ state.filterWidget = action.payload.filterWidget;
10410
+ }).addCase(reset, function (_state, _action) {
10411
+ return initialState$y;
10412
+ });
10413
+ });
10414
+
10415
+ var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10416
+
10417
+ var initialState$z = {
10418
+ bandScoreList: [],
10419
+ totalItems: 0
10420
+ };
10421
+ var commonReducer$h = toolkit.createReducer(initialState$z, function (builder) {
10422
+ builder.addCase(setBandScoreList, function (state, action) {
10423
+ state.bandScoreList = action.payload.bandScoreList;
10424
+ state.totalItems = action.payload.totalItems;
10425
+ }).addCase(reset, function (_state, _action) {
10426
+ return initialState$z;
10427
+ });
10428
+ });
10429
+
10430
+ var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10431
+
10432
+ var initialState$A = {
10433
+ schoolBlankDayList: [],
10434
+ totalItems: 0
10435
+ };
10436
+ var commonReducer$i = toolkit.createReducer(initialState$A, function (builder) {
10437
+ builder.addCase(setSchoolBlankDayList, function (state, action) {
10438
+ state.schoolBlankDayList = action.payload.schoolBlankDayList;
10439
+ state.totalItems = action.payload.totalItems;
10440
+ }).addCase(reset, function (_state, _action) {
10441
+ return initialState$A;
10442
+ });
10443
+ });
10444
+
10445
+ var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10446
+
10447
+ var initialState$B = {
10448
+ studentIdSelectedByTeacher: 0
10449
+ };
10450
+ var navMobileReducer = toolkit.createReducer(initialState$B, function (builder) {
10451
+ builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10452
+ state.studentIdSelectedByTeacher = action.payload;
10453
+ }).addCase(reset, function (_state, _action) {
10454
+ return initialState$B;
10455
+ });
10456
+ });
10457
+
10458
+ var rootReducer = combineReducers({
10459
+ common: commonReducer,
10460
+ classes: classReducer,
10461
+ conferenceRubrics: conferenceRubricReducer,
10462
+ faqs: commonReducer$1,
10463
+ skills: commonReducer$2,
10464
+ emailTemplate: emailTemplateReducer,
10465
+ suggestionBank: suggestionBankReducer,
10466
+ learningStrategy: learningStrategyReducer,
10467
+ subjects: commonReducer$3,
10468
+ learningSupportCategories: commonReducer$4,
10469
+ questionBank: questionBankReducer,
10470
+ badges: commonReducer$5,
10471
+ semester: commonReducer$6,
10472
+ goalExamples: commonReducer$8,
10473
+ users: commonReducer$9,
10474
+ reflections: reflectionReducer,
10475
+ reflectionResults: reflectionReducer$1,
10476
+ feedbacks: commonReducer$a,
10477
+ assessments: commonReducer$b,
10478
+ questionByCategory: questionCategoryReducer,
10479
+ mailCategory: questionBankReducer$1,
10480
+ questionCate: questionCateReducer,
10481
+ notification: questionBankReducer$2,
10482
+ myStudent: commonReducer$c,
10483
+ assignments: commonReducer$7,
10484
+ assistants: assistantReducer,
10485
+ sesstionTemplates: sessionTemplateReducer,
10486
+ sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10487
+ tutorialScreens: tutorialScreenReducer,
10488
+ customAlerts: commonReducer$d,
10489
+ gallery: commonReducer$e,
10490
+ dashboard: dashboardReducer,
10491
+ sessionPlayer: sessionPlayerReducer,
10492
+ dataPlayer: dataPlayer,
10493
+ certificate: commonReducer$f,
10494
+ improveMyClass: commonReducer$g,
10495
+ widget: widgetReducer,
10496
+ bandScores: commonReducer$h,
10497
+ schoolBlankDays: commonReducer$i,
10498
+ navMobileReducer: navMobileReducer
10499
+ });
10500
+
10501
+ var store = toolkit.configureStore({
10502
+ reducer: rootReducer,
10503
+ middleware: function middleware(getDefaultMiddleware) {
10504
+ return getDefaultMiddleware({
10505
+ serializableCheck: false
10506
+ }).concat(logger);
10507
+ }
10508
+ });
10509
+
10510
+ var isInViewport = function isInViewport(el) {
10511
+ var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10512
+ return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10513
+ };
10514
+
10515
+ var debounce = function debounce(callback, wait) {
10516
+ var timeout = null;
10517
+ return function () {
10518
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10519
+ args[_key] = arguments[_key];
10654
10520
  }
10655
10521
 
10656
- return _extends({}, state, {
10657
- questionResponse: questionResponseCloner
10658
- });
10659
- }).addCase(reset, function (_state, _action) {
10660
- return initialState$v;
10661
- });
10662
- });
10522
+ var next = function next() {
10523
+ return callback.apply(void 0, args);
10524
+ };
10663
10525
 
10664
- var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10526
+ clearTimeout(timeout);
10527
+ timeout = setTimeout(next, wait);
10528
+ };
10529
+ };
10665
10530
 
10666
- var initialState$w = {
10667
- certificateList: [],
10668
- totalItems: 0
10531
+ var getTextFromHTML = function getTextFromHTML(htmlString) {
10532
+ var p = document.createElement("p");
10533
+ p.innerHTML = htmlString;
10534
+ var text = p.innerText;
10535
+ p.remove();
10536
+ return text;
10669
10537
  };
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
- });
10538
+
10539
+ var generateRandomString = (function () {
10540
+ return (Math.random() + 1).toString(36).substring(7);
10677
10541
  });
10678
10542
 
10679
- var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10543
+ var amplitudeClient = amplitude.getInstance();
10680
10544
 
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;
10545
+ var USER_URL$2 = "/admin/user";
10546
+ var CREATE_USER_URL = "/admin/create-user";
10547
+ var TITLE$a = "User list";
10548
+ var HOMEPAGE_TEACHER$1 = "/home";
10549
+ var HOMEPAGE_STUDENT$1 = "/home";
10550
+ var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
10551
+ var HOMEPAGE_PARENT$1 = "/parent";
10552
+ var HOMEPAGE_DISTRICT$1 = "/admin/schools";
10553
+ var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
10554
+
10555
+ var useUserList = function useUserList() {
10556
+ var history = reactRouterDom.useHistory();
10557
+ var query = new URLSearchParams(location.search);
10558
+ var queryName = query.get("query");
10559
+ var userList = reactRedux.useSelector(function (state) {
10560
+ return state.users.userList;
10561
+ });
10562
+ var totalItems = reactRedux.useSelector(function (state) {
10563
+ return state.users.totalItems;
10689
10564
  });
10690
- });
10691
10565
 
10692
- var setFilterWidget = toolkit.createAction("setFilterWidget");
10566
+ var _useFilters = useFilters(),
10567
+ filters = _useFilters.filters,
10568
+ changeFilters = _useFilters.changeFilters;
10693
10569
 
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
- });
10570
+ var _useState = React.useState(!!queryName ? queryName : ""),
10571
+ fullName = _useState[0],
10572
+ setFullName = _useState[1];
10704
10573
 
10705
- var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10574
+ var isDistrict = window.location.host.includes("-district");
10575
+ var dispatch = reactRedux.useDispatch();
10576
+ var getData = React.useCallback(function (fullName) {
10577
+ try {
10578
+ var _temp3 = function _temp3() {
10579
+ dispatch(setLoading(false));
10580
+ };
10706
10581
 
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
- });
10582
+ dispatch(setLoading(true));
10719
10583
 
10720
- var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10584
+ var _temp4 = _catch(function () {
10585
+ return Promise.resolve(fullName ? get$5(_extends({}, filters, {
10586
+ searchString: fullName
10587
+ })) : get$5(filters)).then(function (res) {
10588
+ var _res$data = res.data,
10589
+ items = _res$data.items,
10590
+ totalItems = _res$data.totalItems;
10721
10591
 
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
- });
10592
+ for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
10593
+ var user = _step.value;
10594
+ user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
10595
+ }
10596
+
10597
+ dispatch(setUserList({
10598
+ userList: items,
10599
+ totalItems: totalItems
10600
+ }));
10601
+ });
10602
+ }, function (err) {
10603
+ var _err$response, _err$response$data;
10604
+
10605
+ dispatch(setAlert({
10606
+ type: "danger",
10607
+ 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
10608
+ }));
10609
+ });
10610
+
10611
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
10612
+ } catch (e) {
10613
+ return Promise.reject(e);
10614
+ }
10615
+ }, [dispatch, filters]);
10616
+ React.useEffect(function () {
10617
+ document.title = TITLE$a;
10618
+ }, []);
10619
+ React.useEffect(function () {
10620
+ if (!!fullName) {
10621
+ getData(fullName);
10622
+ setFullName(null);
10623
+ } else {
10624
+ getData();
10625
+ }
10626
+ }, [filters]);
10627
+ var removeData = React.useCallback(function (id) {
10628
+ dispatch(setLoading(true));
10629
+
10630
+ try {
10631
+ dispatch(setModal({
10632
+ isOpen: true,
10633
+ type: "warning",
10634
+ message: "Do you want to remove this user?",
10635
+ onConfirm: function () {
10636
+ try {
10637
+ return Promise.resolve(remove$3(id)).then(function () {
10638
+ dispatch(setAlert({
10639
+ type: "success",
10640
+ message: "Remove user successfully"
10641
+ }));
10642
+ changeFilters({
10643
+ currentPage: 1
10644
+ });
10645
+ });
10646
+ } catch (e) {
10647
+ return Promise.reject(e);
10648
+ }
10649
+ }
10650
+ }));
10651
+ } catch (err) {
10652
+ var _err$response2, _err$response2$data;
10653
+
10654
+ dispatch(setAlert({
10655
+ type: "danger",
10656
+ 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
10657
+ }));
10658
+ }
10659
+
10660
+ dispatch(setLoading(false));
10661
+ }, [filters]);
10662
+
10663
+ var redirectLoginUser = function redirectLoginUser(res) {
10664
+ var _res$data2 = res.data,
10665
+ token = _res$data2.token,
10666
+ id = _res$data2.id,
10667
+ firstName = _res$data2.firstName,
10668
+ lastName = _res$data2.lastName,
10669
+ roles = _res$data2.roles,
10670
+ email = _res$data2.email,
10671
+ profileImageFileName = _res$data2.profileImageFileName;
10672
+ localStorage.setItem(ACCESS_TOKEN, token);
10673
+ localStorage.removeItem(NOTIFICATION_ALERT_KEY);
10674
+ dispatch(setUser({
10675
+ id: id,
10676
+ firstName: firstName,
10677
+ lastName: lastName,
10678
+ roles: roles,
10679
+ email: email,
10680
+ profileImageFileName: profileImageFileName
10681
+ }));
10682
+
10683
+ if (isDistrict) {
10684
+ history.push(HOMEPAGE_DISTRICT$1);
10685
+ } else if (roles.includes("Admin")) {
10686
+ history.push(HOMEPAGE_ADMIN$1);
10687
+ } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
10688
+ history.push(HOMEPAGE_TEACHER$1);
10689
+ } else if (roles.includes("Student")) {
10690
+ history.push(HOMEPAGE_STUDENT$1);
10691
+ } else if (roles.includes("Parent")) {
10692
+ history.push(HOMEPAGE_PARENT$1);
10693
+ } else if (roles.includes("EduTeacher")) {
10694
+ history.push(HOMEPAGE_EDU_TEACHER$1);
10695
+ } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
10696
+ history.push(HOMEPAGE_TEACHER$1);
10697
+ }
10698
+ };
10699
+
10700
+ var swicthUser = React.useCallback(function (id) {
10701
+ try {
10702
+ var _temp6 = _catch(function () {
10703
+ return Promise.resolve(switchAccountUser(id)).then(function (res) {
10704
+ var data = res.data;
10705
+ dispatch(setModal({
10706
+ isOpen: true,
10707
+ type: "warning",
10708
+ message: "Do you want to impersonate this user?",
10709
+ onConfirm: function () {
10710
+ try {
10711
+ var _temp9 = function _temp9() {
10712
+ dispatch(setLoading(false));
10713
+ };
10734
10714
 
10735
- var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10715
+ dispatch(setLoading(true));
10736
10716
 
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
- });
10717
+ var _temp10 = _catch(function () {
10718
+ var req = {
10719
+ email: data.email,
10720
+ password: "default",
10721
+ accessToken: data.token
10722
+ };
10723
+ return Promise.resolve(logIn(req)).then(function (res) {
10724
+ localStorage.clear();
10725
+ redirectLoginUser(res);
10726
+ });
10727
+ }, function (err) {
10728
+ var _err$response3, _err$response3$data;
10747
10729
 
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
- });
10730
+ setAlert({
10731
+ type: "danger",
10732
+ 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
10733
+ });
10734
+ });
10790
10735
 
10791
- var store = toolkit.configureStore({
10792
- reducer: rootReducer,
10793
- middleware: function middleware(getDefaultMiddleware) {
10794
- return getDefaultMiddleware({
10795
- serializableCheck: false
10796
- }).concat(logger);
10797
- }
10798
- });
10736
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
10737
+ } catch (e) {
10738
+ return Promise.reject(e);
10739
+ }
10740
+ }
10741
+ }));
10742
+ });
10743
+ }, function (err) {
10744
+ var _err$response4, _err$response4$data;
10799
10745
 
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
- };
10746
+ dispatch(setAlert({
10747
+ type: "danger",
10748
+ 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
10749
+ }));
10750
+ });
10804
10751
 
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];
10752
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
10753
+ } catch (e) {
10754
+ return Promise.reject(e);
10810
10755
  }
10756
+ }, [filters]);
10811
10757
 
10812
- var next = function next() {
10813
- return callback.apply(void 0, args);
10814
- };
10758
+ var reDirectDetailPage = function reDirectDetailPage(id) {
10759
+ var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
10760
+ history.push(url);
10761
+ };
10815
10762
 
10816
- clearTimeout(timeout);
10817
- timeout = setTimeout(next, wait);
10763
+ return {
10764
+ userList: userList,
10765
+ totalItems: totalItems,
10766
+ filters: filters,
10767
+ queryName: queryName,
10768
+ getData: getData,
10769
+ removeData: removeData,
10770
+ changeFilters: changeFilters,
10771
+ reDirectDetailPage: reDirectDetailPage,
10772
+ swicthUser: swicthUser
10818
10773
  };
10819
10774
  };
10820
10775
 
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
- };
10776
+ var header$4 = "User";
10828
10777
 
10829
- var generateRandomString = (function () {
10830
- return (Math.random() + 1).toString(36).substring(7);
10831
- });
10778
+ var UserList = function UserList() {
10779
+ var _useUserList = useUserList(),
10780
+ queryName = _useUserList.queryName,
10781
+ userList = _useUserList.userList,
10782
+ totalItems = _useUserList.totalItems,
10783
+ filters = _useUserList.filters,
10784
+ removeData = _useUserList.removeData,
10785
+ changeFilters = _useUserList.changeFilters,
10786
+ reDirectDetailPage = _useUserList.reDirectDetailPage,
10787
+ swicthUser = _useUserList.swicthUser;
10832
10788
 
10833
- var amplitudeClient = amplitude.getInstance();
10789
+ var _useTranslation = reactI18next.useTranslation(),
10790
+ t = _useTranslation.t;
10791
+
10792
+ return React__default.createElement("div", {
10793
+ className: "fadeIn animated"
10794
+ }, React__default.createElement("h5", {
10795
+ className: "mb-2"
10796
+ }, t("" + header$4)), React__default.createElement(reactstrap.Row, {
10797
+ className: "my-2"
10798
+ }, React__default.createElement(reactstrap.Col, {
10799
+ md: 8
10800
+ }, React__default.createElement(SearchBoxContainer, {
10801
+ text: t("create_user"),
10802
+ onClick: function onClick() {
10803
+ return reDirectDetailPage();
10804
+ },
10805
+ initValue: !!queryName ? queryName : "",
10806
+ onSearch: function onSearch(searchString) {
10807
+ return changeFilters({
10808
+ searchString: searchString
10809
+ });
10810
+ },
10811
+ placeholder: t("type_something_to_search_by_user_name")
10812
+ })), React__default.createElement(reactstrap.Col, {
10813
+ md: 4,
10814
+ className: "d-flex justify-content-end align-items-center"
10815
+ }, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
10816
+ className: "mb-2"
10817
+ }, React__default.createElement(reactstrap.Col, {
10818
+ md: 12
10819
+ }, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
10820
+ bordered: true,
10821
+ hover: true,
10822
+ striped: true,
10823
+ responsive: true,
10824
+ size: "sm"
10825
+ }, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
10826
+ className: "align-top"
10827
+ }, t("name")), React__default.createElement("th", {
10828
+ className: "align-top"
10829
+ }, t("email")), React__default.createElement("th", {
10830
+ className: "align-top"
10831
+ }, t("age")), React__default.createElement("th", {
10832
+ className: "align-top"
10833
+ }, t("role")), React__default.createElement("th", {
10834
+ className: "align-top"
10835
+ }, t("active_status")), React__default.createElement("th", {
10836
+ className: "align-top"
10837
+ }, t("created_time")), React__default.createElement("th", {
10838
+ className: "text-center"
10839
+ }, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
10840
+ return React__default.createElement("tr", {
10841
+ key: record.id
10842
+ }, React__default.createElement("td", {
10843
+ className: "align-middle"
10844
+ }, React__default.createElement(LinkEditButton, {
10845
+ label: "" + record.fullName,
10846
+ onClick: function onClick() {
10847
+ return reDirectDetailPage(record.id);
10848
+ }
10849
+ })), React__default.createElement("td", {
10850
+ className: "align-middle"
10851
+ }, record.email), React__default.createElement("td", {
10852
+ className: "align-middle"
10853
+ }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
10854
+ className: "align-middle"
10855
+ }, !!record.roles && record.roles.join(", ")), React__default.createElement("td", {
10856
+ className: "align-middle"
10857
+ }, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
10858
+ className: "align-middle"
10859
+ }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
10860
+ className: "text-center align-middle"
10861
+ }, React__default.createElement(fa.FaUsersCog, {
10862
+ style: {
10863
+ fontSize: "18px",
10864
+ marginRight: "10px",
10865
+ cursor: "pointer"
10866
+ },
10867
+ onClick: function onClick() {
10868
+ return swicthUser(record.id);
10869
+ }
10870
+ }), React__default.createElement(DeleteButtonIcon, {
10871
+ onClick: function onClick() {
10872
+ return removeData(record.id);
10873
+ }
10874
+ })));
10875
+ })))) : React__default.createElement(EmptyDataAlert, {
10876
+ label: t("user")
10877
+ })), React__default.createElement(reactstrap.Col, {
10878
+ md: 12
10879
+ }, React__default.createElement(CustomPagination, {
10880
+ filters: filters,
10881
+ totalRecordCount: totalItems,
10882
+ changePageSize: function changePageSize(pageSize) {
10883
+ return changeFilters({
10884
+ pageSize: pageSize
10885
+ });
10886
+ },
10887
+ changePage: function changePage(currentPage) {
10888
+ return changeFilters({
10889
+ currentPage: currentPage
10890
+ });
10891
+ }
10892
+ }))));
10893
+ };
10894
+
10895
+ var amplitudeClient$1 = amplitude.getInstance();
10834
10896
 
10835
10897
  Object.defineProperty(exports, 'I18nextProvider', {
10836
10898
  enumerable: true,
@@ -10911,7 +10973,7 @@ exports.UploadFileButton = UploadFileButton;
10911
10973
  exports.UserDetail = UserDetail;
10912
10974
  exports.UserList = UserList;
10913
10975
  exports.addTab = addTab;
10914
- exports.amplitudeClient = amplitudeClient;
10976
+ exports.amplitudeClient = amplitudeClient$1;
10915
10977
  exports.answerQuestion = answerQuestion;
10916
10978
  exports.answerQuestionDataPlayer = answerQuestionDataPlayer;
10917
10979
  exports.api = api;