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