mario-core 2.9.105-beta → 2.9.107-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,10 +20,11 @@ import { CgMenuRight } from 'react-icons/cg';
20
20
  import { RiLogoutBoxRLine } from 'react-icons/ri';
21
21
  import Pusher from 'pusher-js/with-encryption';
22
22
  import { BsChevronDown } from 'react-icons/bs';
23
- import { FaPlus, FaTrashAlt, FaRegEdit, FaArrowLeft, FaDownload, FaTrash, FaEdit, FaFolderPlus, FaFileUpload, FaUsersCog } from 'react-icons/fa';
23
+ import { FaPlus, FaTrashAlt, FaUsersCog, FaRegEdit, FaArrowLeft, FaDownload, FaTrash, FaEdit, FaFolderPlus, FaFileUpload } from 'react-icons/fa';
24
24
  import { format } from 'date-fns';
25
25
  import { Editor } from '@tinymce/tinymce-react';
26
26
  import differenceInCalendarYears from 'date-fns/differenceInCalendarYears';
27
+ import moment from 'moment';
27
28
  import DatePicker from 'react-datepicker';
28
29
  import toDate from 'date-fns/toDate';
29
30
  import { MdAttachFile } from 'react-icons/md';
@@ -31,7 +32,6 @@ import Creatable from 'react-select/creatable';
31
32
  import ReactNotification$1 from 'react-notifications-component';
32
33
  import 'react-notifications-component/dist/theme.css';
33
34
  import { AiOutlineEye } from 'react-icons/ai';
34
- import moment from 'moment';
35
35
 
36
36
  var dashboard = "Dashboard";
37
37
  var user = "User";
@@ -593,7 +593,20 @@ 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";
597
610
  var lang_us = {
598
611
  dashboard: dashboard,
599
612
  user: user,
@@ -1163,7 +1176,20 @@ var lang_us = {
1163
1176
  select_secondary_teacher: select_secondary_teacher,
1164
1177
  assign_secondary_teacher: assign_secondary_teacher,
1165
1178
  secondary_teacher_name: secondary_teacher_name,
1166
- share_survey_to_teacher: share_survey_to_teacher
1179
+ user_for_question: user_for_question,
1180
+ requested_reflection: requested_reflection,
1181
+ request_class_reflection: request_class_reflection,
1182
+ share_survey_to_teacher: share_survey_to_teacher,
1183
+ select_form: select_form,
1184
+ switch_counselor: switch_counselor,
1185
+ remove_counselor: remove_counselor,
1186
+ current_counselor_email: current_counselor_email,
1187
+ current_counselor_name: current_counselor_name,
1188
+ select_counselor_change: select_counselor_change,
1189
+ current_secondary_teacher_name: current_secondary_teacher_name,
1190
+ current_secondary_teacher_email: current_secondary_teacher_email,
1191
+ remove_secondary_teacher: remove_secondary_teacher,
1192
+ select_secondary_teacher_change: select_secondary_teacher_change
1167
1193
  };
1168
1194
 
1169
1195
  var dashboard$1 = "Dashboard";
@@ -1728,7 +1754,20 @@ var select_counselor$1 = "Select Counselor";
1728
1754
  var select_secondary_teacher$1 = "Select Secondary Teacher";
1729
1755
  var assign_secondary_teacher$1 = "Assign Secondary Teacher";
1730
1756
  var secondary_teacher_name$1 = "Secondary Teacher Name";
1757
+ var user_for_question$1 = "User For Question";
1758
+ var requested_reflection$1 = "Requested Reflection";
1759
+ var request_class_reflection$1 = "Request Class Reflection";
1731
1760
  var share_survey_to_teacher$1 = "Share Survey To Teacher";
1761
+ var select_form$1 = "Select from";
1762
+ var switch_counselor$1 = "Switch Counselor";
1763
+ var remove_counselor$1 = "Remove Counselor";
1764
+ var current_counselor_email$1 = "Current Counselor Email";
1765
+ var current_counselor_name$1 = "Current Counselor Name";
1766
+ var select_counselor_change$1 = "Select Counselor Change";
1767
+ var current_secondary_teacher_name$1 = "Current Secondary Teacher Name";
1768
+ var current_secondary_teacher_email$1 = "Current Secondary Teacher Email";
1769
+ var remove_secondary_teacher$1 = "Remove Secondary Teacher";
1770
+ var select_secondary_teacher_change$1 = "Select Secondary Teacher Change";
1732
1771
  var lang_uk = {
1733
1772
  dashboard: dashboard$1,
1734
1773
  user: user$1,
@@ -2298,7 +2337,20 @@ var lang_uk = {
2298
2337
  select_secondary_teacher: select_secondary_teacher$1,
2299
2338
  assign_secondary_teacher: assign_secondary_teacher$1,
2300
2339
  secondary_teacher_name: secondary_teacher_name$1,
2301
- share_survey_to_teacher: share_survey_to_teacher$1
2340
+ user_for_question: user_for_question$1,
2341
+ requested_reflection: requested_reflection$1,
2342
+ request_class_reflection: request_class_reflection$1,
2343
+ share_survey_to_teacher: share_survey_to_teacher$1,
2344
+ select_form: select_form$1,
2345
+ switch_counselor: switch_counselor$1,
2346
+ remove_counselor: remove_counselor$1,
2347
+ current_counselor_email: current_counselor_email$1,
2348
+ current_counselor_name: current_counselor_name$1,
2349
+ select_counselor_change: select_counselor_change$1,
2350
+ current_secondary_teacher_name: current_secondary_teacher_name$1,
2351
+ current_secondary_teacher_email: current_secondary_teacher_email$1,
2352
+ remove_secondary_teacher: remove_secondary_teacher$1,
2353
+ select_secondary_teacher_change: select_secondary_teacher_change$1
2302
2354
  };
2303
2355
 
2304
2356
  var DEFAULT_LANGUAGE = localStorage.getItem("language") !== null ? localStorage.getItem("language") : "uk";
@@ -3747,7 +3799,7 @@ var QuoteContent = function QuoteContent() {
3747
3799
  className: styles["title-quote"] + " d-block"
3748
3800
  }, React.createElement("p", null, "Powerful"), React.createElement("p", null, "Personalized"), React.createElement("p", null, "Learning")), React.createElement("div", {
3749
3801
  className: styles["descriptions-quote"] + " d-block"
3750
- }, React.createElement("p", null, "Focus on what matters most to you and"), React.createElement("p", null, "and make learning meaningful.")));
3802
+ }, React.createElement("p", null, "Focus on what matters most to you and"), React.createElement("p", null, "make learning meaningful.")));
3751
3803
  };
3752
3804
 
3753
3805
  var IconContent = function IconContent(_ref) {
@@ -6718,89 +6770,8 @@ var SkillList = function SkillList() {
6718
6770
  }))));
6719
6771
  };
6720
6772
 
6721
- var MAX_FILE_SIZE = 20097152;
6722
-
6723
- var UploadFileButton = function UploadFileButton(_ref) {
6724
- var fileName = _ref.fileName,
6725
- maxWidth = _ref.maxWidth,
6726
- maxHeight = _ref.maxHeight,
6727
- setFile = _ref.setFile,
6728
- canDelete = _ref.canDelete,
6729
- onDelete = _ref.onDelete,
6730
- isCheckFeedBack = _ref.isCheckFeedBack,
6731
- onAddImage = _ref.onAddImage;
6732
- var dispatch = useDispatch();
6733
-
6734
- var _useState = useState(""),
6735
- imagePreviewUrl = _useState[0],
6736
- setImagePreviewUrl = _useState[1];
6737
-
6738
- var imageStyle = {
6739
- maxWidth: maxWidth || "100%",
6740
- maxHeight: maxHeight || "100%"
6741
- };
6742
- var imageSrc = imagePreviewUrl || getFileUrl(fileName);
6743
-
6744
- var handleImageChange = function handleImageChange(e) {
6745
- e.preventDefault();
6746
- var reader = new FileReader();
6747
- var newFile = e.target.files[0];
6748
-
6749
- if (newFile.size > MAX_FILE_SIZE) {
6750
- dispatch(setAlert({
6751
- type: "danger",
6752
- message: "File can't be larger than 2MB"
6753
- }));
6754
- return;
6755
- }
6756
-
6757
- reader.onloadend = function () {
6758
- setFile(newFile);
6759
- setImagePreviewUrl(reader.result);
6760
- };
6761
-
6762
- if (newFile) {
6763
- reader.readAsDataURL(newFile);
6764
- }
6765
-
6766
- !!onAddImage && onAddImage();
6767
- };
6768
-
6769
- var imagePreviewContainer = imagePreviewUrl || fileName ? React.createElement("img", {
6770
- style: imageStyle,
6771
- src: imageSrc,
6772
- alt: "image"
6773
- }) : null;
6774
- return React.createElement("div", {
6775
- className: "mb-2"
6776
- }, React.createElement(Form, {
6777
- className: "mb-2"
6778
- }, React.createElement(Input, {
6779
- className: "d-none",
6780
- type: "file",
6781
- id: "uploadFile",
6782
- onChange: handleImageChange,
6783
- accept: "image/*"
6784
- }), React.createElement("div", {
6785
- className: "d-flex align-items-center"
6786
- }, React.createElement(Label, {
6787
- htmlFor: "uploadFile",
6788
- role: "button",
6789
- tabIndex: 0,
6790
- className: styles["input-file-label"]
6791
- }, isCheckFeedBack == true ? React.createElement(MdAttachFile, null) : React.createElement(React.Fragment, null, React.createElement("i", {
6792
- className: "fa fa-paperclip mr-1",
6793
- "aria-hidden": "true"
6794
- }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React.createElement(Button, {
6795
- size: "sm",
6796
- color: "danger",
6797
- className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
6798
- onClick: function onClick() {
6799
- setImagePreviewUrl(null);
6800
- onDelete && onDelete();
6801
- }
6802
- }, React.createElement(FaTrashAlt, null)))), imagePreviewContainer);
6803
- };
6773
+ var setUserList = createAction("users/setUserList");
6774
+ var setStudentList = createAction("users/setStudentList");
6804
6775
 
6805
6776
  var USER_URL$1 = BASE_URL + "/api/user";
6806
6777
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
@@ -6833,54 +6804,38 @@ var switchAccountUser = function switchAccountUser(id) {
6833
6804
  return api.post(EDU_USER_URL + "/switch-user/" + id);
6834
6805
  };
6835
6806
 
6836
- var initValue$3 = {
6837
- id: "",
6838
- firstName: "",
6839
- lastName: "",
6840
- email: "",
6841
- dateOfBirth: "",
6842
- roles: [],
6843
- isActive: true,
6844
- profileImageFileName: ""
6845
- };
6846
- var USER_LIST_URL = "/admin/user";
6847
- var TITLE$7 = "User detail";
6807
+ var USER_URL$2 = "/admin/user";
6808
+ var CREATE_USER_URL = "/admin/create-user";
6809
+ var TITLE$7 = "User list";
6810
+ var HOMEPAGE_TEACHER$1 = "/home";
6811
+ var HOMEPAGE_STUDENT$1 = "/home";
6812
+ var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
6813
+ var HOMEPAGE_PARENT$1 = "/parent";
6814
+ var HOMEPAGE_DISTRICT$1 = "/admin/schools";
6815
+ var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
6848
6816
 
6849
- var useUserDetail = function useUserDetail(id) {
6850
- var dispatch = useDispatch();
6817
+ var useUserList = function useUserList() {
6851
6818
  var history = useHistory();
6819
+ var query = new URLSearchParams(location.search);
6820
+ var queryName = query.get("query");
6821
+ var userList = useSelector(function (state) {
6822
+ return state.users.userList;
6823
+ });
6824
+ var totalItems = useSelector(function (state) {
6825
+ return state.users.totalItems;
6826
+ });
6852
6827
 
6853
- var _useState = useState(initValue$3),
6854
- userDetail = _useState[0],
6855
- setUserDetail = _useState[1];
6856
-
6857
- var _useState2 = useState(null),
6858
- file = _useState2[0],
6859
- setFile = _useState2[1];
6860
-
6861
- var _useState3 = useState(false),
6862
- edited = _useState3[0],
6863
- setEdited = _useState3[1];
6828
+ var _useFilters = useFilters(),
6829
+ filters = _useFilters.filters,
6830
+ changeFilters = _useFilters.changeFilters;
6864
6831
 
6865
- var setEditedTrue = function setEditedTrue() {
6866
- try {
6867
- localStorage.setItem(window.location.href, "true");
6868
- setEdited(true);
6869
- return Promise.resolve();
6870
- } catch (e) {
6871
- return Promise.reject(e);
6872
- }
6873
- };
6832
+ var _useState = useState(!!queryName ? queryName : ""),
6833
+ fullName = _useState[0],
6834
+ setFullName = _useState[1];
6874
6835
 
6875
- useEffect(function () {
6876
- document.title = TITLE$7;
6877
- setEdited(false);
6878
- if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
6879
- }, []);
6880
- useEffect(function () {
6881
- !!id && getData();
6882
- }, [id]);
6883
- var getData = useCallback(function () {
6836
+ var isDistrict = window.location.host.includes("-district");
6837
+ var dispatch = useDispatch();
6838
+ var getData = useCallback(function (fullName) {
6884
6839
  try {
6885
6840
  var _temp3 = function _temp3() {
6886
6841
  dispatch(setLoading(false));
@@ -6889,14 +6844,22 @@ var useUserDetail = function useUserDetail(id) {
6889
6844
  dispatch(setLoading(true));
6890
6845
 
6891
6846
  var _temp4 = _catch(function () {
6892
- return Promise.resolve(getById$3(id)).then(function (res) {
6893
- var _res$data;
6847
+ return Promise.resolve(fullName ? get$5(_extends({}, filters, {
6848
+ searchString: fullName
6849
+ })) : get$5(filters)).then(function (res) {
6850
+ var _res$data = res.data,
6851
+ items = _res$data.items,
6852
+ totalItems = _res$data.totalItems;
6894
6853
 
6895
- setUserDetail(_extends({}, res.data, {
6896
- dateOfBirth: format(new Date(res.data.dateOfBirth), DATE_FORMAT),
6897
- roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
6854
+ for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
6855
+ var user = _step.value;
6856
+ user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
6857
+ }
6858
+
6859
+ dispatch(setUserList({
6860
+ userList: items,
6861
+ totalItems: totalItems
6898
6862
  }));
6899
- document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
6900
6863
  });
6901
6864
  }, function (err) {
6902
6865
  var _err$response, _err$response$data;
@@ -6911,196 +6874,713 @@ var useUserDetail = function useUserDetail(id) {
6911
6874
  } catch (e) {
6912
6875
  return Promise.reject(e);
6913
6876
  }
6914
- }, [id]);
6915
- var backToList = useCallback(function (user) {
6916
- !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
6877
+ }, [dispatch, filters]);
6878
+ useEffect(function () {
6879
+ document.title = TITLE$7;
6917
6880
  }, []);
6918
- var confirmData = useCallback(function (data) {
6919
- try {
6920
- var _temp9 = function _temp9() {
6921
- dispatch(setLoading(false));
6922
- };
6923
-
6924
- dispatch(setLoading(true));
6881
+ useEffect(function () {
6882
+ if (!!fullName) {
6883
+ getData(fullName);
6884
+ setFullName(null);
6885
+ } else {
6886
+ getData();
6887
+ }
6888
+ }, [filters]);
6889
+ var removeData = useCallback(function (id) {
6890
+ dispatch(setLoading(true));
6925
6891
 
6926
- var _temp10 = _catch(function () {
6927
- function _temp6() {
6928
- var next = !!id ? update$5 : create$5;
6929
- !id && delete data.id;
6930
- return Promise.resolve(next(data)).then(function (result) {
6931
- if (!!result) {
6932
- getById$3(result.data.id).then(function (e) {
6933
- backToList(e.data.fullName);
6892
+ try {
6893
+ dispatch(setModal({
6894
+ isOpen: true,
6895
+ type: "warning",
6896
+ message: "Do you want to remove this user?",
6897
+ onConfirm: function () {
6898
+ try {
6899
+ return Promise.resolve(remove$3(id)).then(function () {
6900
+ dispatch(setAlert({
6901
+ type: "success",
6902
+ message: "Remove user successfully"
6903
+ }));
6904
+ changeFilters({
6905
+ currentPage: 1
6934
6906
  });
6935
- }
6936
-
6937
- if (!id) {
6938
- alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
6939
- }
6940
-
6941
- dispatch(setAlert({
6942
- type: "success",
6943
- message: (!!id ? "Update" : "Create") + " user successfully"
6944
- }));
6945
- });
6946
- }
6947
-
6948
- var _temp5 = function () {
6949
- if (!!file) {
6950
- var formData = new FormData();
6951
- var name = file.name;
6952
- formData.append("file", file, name);
6953
- return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
6954
- var _res$data2;
6955
-
6956
- var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
6957
- data.profileImageFileName = imageUrl;
6958
6907
  });
6908
+ } catch (e) {
6909
+ return Promise.reject(e);
6959
6910
  }
6960
- }();
6961
-
6962
- return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
6963
- }, function (err) {
6964
- var _err$response2, _err$response2$data;
6911
+ }
6912
+ }));
6913
+ } catch (err) {
6914
+ var _err$response2, _err$response2$data;
6965
6915
 
6966
- dispatch(setAlert({
6967
- type: "danger",
6968
- message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message
6969
- }));
6970
- });
6971
-
6972
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
6973
- } catch (e) {
6974
- return Promise.reject(e);
6916
+ dispatch(setAlert({
6917
+ type: "danger",
6918
+ 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
6919
+ }));
6975
6920
  }
6976
- }, [id, file]);
6977
-
6978
- var confirmChangePassword = function confirmChangePassword(data) {
6979
- try {
6980
- var _temp13 = function _temp13() {
6981
- dispatch(setLoading(false));
6982
- };
6983
-
6984
- dispatch(setLoading(true));
6985
6921
 
6986
- var _temp14 = _catch(function () {
6987
- return Promise.resolve(changePassword(data)).then(function () {
6988
- dispatch(setAlert({
6989
- type: "success",
6990
- message: "Change password successfully"
6991
- }));
6992
- });
6993
- }, function (e) {
6994
- var _e$response, _e$response$data;
6922
+ dispatch(setLoading(false));
6923
+ }, [filters]);
6995
6924
 
6996
- dispatch(setAlert({
6997
- type: "danger",
6998
- message: ((_e$response = e.response) === null || _e$response === void 0 ? void 0 : (_e$response$data = _e$response.data) === null || _e$response$data === void 0 ? void 0 : _e$response$data.title) || e.message
6999
- }));
7000
- });
6925
+ var redirectLoginUser = function redirectLoginUser(res) {
6926
+ var _res$data2 = res.data,
6927
+ token = _res$data2.token,
6928
+ id = _res$data2.id,
6929
+ firstName = _res$data2.firstName,
6930
+ lastName = _res$data2.lastName,
6931
+ roles = _res$data2.roles,
6932
+ email = _res$data2.email,
6933
+ profileImageFileName = _res$data2.profileImageFileName;
6934
+ localStorage.setItem(ACCESS_TOKEN, token);
6935
+ localStorage.removeItem(NOTIFICATION_ALERT_KEY);
6936
+ dispatch(setUser({
6937
+ id: id,
6938
+ firstName: firstName,
6939
+ lastName: lastName,
6940
+ roles: roles,
6941
+ email: email,
6942
+ profileImageFileName: profileImageFileName
6943
+ }));
7001
6944
 
7002
- return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7003
- } catch (e) {
7004
- return Promise.reject(e);
6945
+ if (isDistrict) {
6946
+ history.push(HOMEPAGE_DISTRICT$1);
6947
+ } else if (roles.includes("Admin")) {
6948
+ history.push(HOMEPAGE_ADMIN$1);
6949
+ } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
6950
+ history.push(HOMEPAGE_TEACHER$1);
6951
+ } else if (roles.includes("Student")) {
6952
+ history.push(HOMEPAGE_STUDENT$1);
6953
+ } else if (roles.includes("Parent")) {
6954
+ history.push(HOMEPAGE_PARENT$1);
6955
+ } else if (roles.includes("EduTeacher")) {
6956
+ history.push(HOMEPAGE_EDU_TEACHER$1);
6957
+ } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
6958
+ history.push(HOMEPAGE_TEACHER$1);
7005
6959
  }
7006
6960
  };
7007
6961
 
7008
- var forgotPasswordRequest = useCallback(function (data) {
6962
+ var swicthUser = useCallback(function (id) {
7009
6963
  try {
7010
- var _temp17 = function _temp17() {
7011
- dispatch(setLoading(false));
7012
- };
6964
+ var _temp6 = _catch(function () {
6965
+ return Promise.resolve(switchAccountUser(id)).then(function (res) {
6966
+ var data = res.data;
6967
+ dispatch(setModal({
6968
+ isOpen: true,
6969
+ type: "warning",
6970
+ message: "Do you want to impersonate this user?",
6971
+ onConfirm: function () {
6972
+ try {
6973
+ var _temp9 = function _temp9() {
6974
+ dispatch(setLoading(false));
6975
+ };
7013
6976
 
7014
- dispatch(setLoading(true));
6977
+ dispatch(setLoading(true));
7015
6978
 
7016
- var _temp18 = _catch(function () {
7017
- return Promise.resolve(forgotChangePassword(data)).then(function () {
7018
- dispatch(setAlert({
7019
- type: "success",
7020
- message: "Send forgot password link successfully"
6979
+ var _temp10 = _catch(function () {
6980
+ var req = {
6981
+ email: data.email,
6982
+ password: "default",
6983
+ accessToken: data.token
6984
+ };
6985
+ return Promise.resolve(logIn(req)).then(function (res) {
6986
+ localStorage.clear();
6987
+ redirectLoginUser(res);
6988
+ });
6989
+ }, function (err) {
6990
+ var _err$response3, _err$response3$data;
6991
+
6992
+ setAlert({
6993
+ type: "danger",
6994
+ 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
6995
+ });
6996
+ });
6997
+
6998
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
6999
+ } catch (e) {
7000
+ return Promise.reject(e);
7001
+ }
7002
+ }
7021
7003
  }));
7022
7004
  });
7023
7005
  }, function (err) {
7024
- var _err$response3, _err$response3$data;
7006
+ var _err$response4, _err$response4$data;
7025
7007
 
7026
7008
  dispatch(setAlert({
7027
7009
  type: "danger",
7028
- message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message || "Error occured"
7010
+ message: ((_err$response4 = err.response) === null || _err$response4 === void 0 ? void 0 : (_err$response4$data = _err$response4.data) === null || _err$response4$data === void 0 ? void 0 : _err$response4$data.title) || err.message
7029
7011
  }));
7030
7012
  });
7031
7013
 
7032
- return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7014
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7033
7015
  } catch (e) {
7034
7016
  return Promise.reject(e);
7035
7017
  }
7036
- }, []);
7018
+ }, [filters]);
7019
+
7020
+ var reDirectDetailPage = function reDirectDetailPage(id) {
7021
+ var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
7022
+ history.push(url);
7023
+ };
7024
+
7037
7025
  return {
7038
- userDetail: userDetail,
7039
- backToList: backToList,
7040
- confirmData: confirmData,
7041
- file: file,
7042
- setFile: setFile,
7043
- edited: edited,
7044
- setEdited: setEdited,
7045
- setEditedTrue: setEditedTrue,
7046
- confirmChangePassword: confirmChangePassword,
7047
- forgotPasswordRequest: forgotPasswordRequest
7026
+ userList: userList,
7027
+ totalItems: totalItems,
7028
+ filters: filters,
7029
+ queryName: queryName,
7030
+ getData: getData,
7031
+ removeData: removeData,
7032
+ changeFilters: changeFilters,
7033
+ reDirectDetailPage: reDirectDetailPage,
7034
+ swicthUser: swicthUser
7048
7035
  };
7049
7036
  };
7050
7037
 
7051
- var userSchema = object({
7052
- firstName: string().required("First name is required"),
7053
- lastName: string().required("Last name is required"),
7054
- dateOfBirth: string().required("Date of birth is required"),
7055
- email: string().email("Email is invalid").required("Email is required"),
7056
- roles: array().of(string()).min(1, "Role is required")
7057
- });
7058
-
7059
- var changePasswordSchema = object({
7060
- oldPassword: string().required("Current password is required"),
7061
- newPassword: string().required("New password is required"),
7062
- confirmedNewPassword: string().required("Confirm password is required")
7063
- });
7064
-
7065
- var CREATE_USER = "create_user";
7066
- var EDIT_USER_HEADER = "edit_user";
7067
- var CHANGE_PASSWORD$1 = "change_password";
7038
+ var SearchBox = function SearchBox(_ref) {
7039
+ var initValue = _ref.initValue,
7040
+ onSearch = _ref.onSearch,
7041
+ placeholder = _ref.placeholder,
7042
+ className = _ref.className,
7043
+ style = _ref.style;
7068
7044
 
7069
- var UserDetail = function UserDetail() {
7070
- var _useParams = useParams(),
7071
- id = _useParams.id;
7045
+ var _useState = useState(initValue),
7046
+ searchString = _useState[0],
7047
+ setSearchString = _useState[1];
7072
7048
 
7073
- var user = useSelector(function (state) {
7074
- return state.common.user;
7049
+ useEffect(function () {
7050
+ setSearchString(initValue);
7051
+ }, [initValue]);
7052
+ var onKeyUp = useCallback(function (e) {
7053
+ e.key === "Enter" && onSearch(searchString);
7054
+ }, [searchString, onSearch]);
7055
+ return React.createElement(Input, {
7056
+ placeholder: placeholder,
7057
+ value: searchString,
7058
+ onChange: function onChange(e) {
7059
+ return setSearchString(e.target.value);
7060
+ },
7061
+ onKeyUp: onKeyUp,
7062
+ className: className,
7063
+ style: style
7075
7064
  });
7065
+ };
7076
7066
 
7077
- var _useTranslation = useTranslation(),
7078
- t = _useTranslation.t;
7067
+ SearchBox.defaultProps = {
7068
+ placeholder: "Type something to search",
7069
+ className: "",
7070
+ style: {}
7071
+ };
7072
+ var SearchBox$1 = memo(SearchBox);
7079
7073
 
7080
- var _useUserDetail = useUserDetail(id),
7081
- userDetail = _useUserDetail.userDetail,
7082
- backToList = _useUserDetail.backToList,
7083
- confirmData = _useUserDetail.confirmData,
7084
- file = _useUserDetail.file,
7085
- setFile = _useUserDetail.setFile,
7086
- edited = _useUserDetail.edited,
7087
- setEdited = _useUserDetail.setEdited,
7088
- setEditedTrue = _useUserDetail.setEditedTrue,
7089
- confirmChangePassword = _useUserDetail.confirmChangePassword,
7090
- forgotPasswordRequest = _useUserDetail.forgotPasswordRequest;
7074
+ var searchInputStyle = {
7075
+ height: 38
7076
+ };
7091
7077
 
7092
- var initialValueForm = {
7093
- oldPassword: "",
7094
- newPassword: "",
7095
- confirmedNewPassword: ""
7096
- };
7097
- var header = !!id ? t("" + EDIT_USER_HEADER) : t("" + CREATE_USER);
7098
- var confirmText = !!id ? t("update") : t("create");
7078
+ var SearchBoxContainer = function SearchBoxContainer(_ref) {
7079
+ var text = _ref.text,
7080
+ initValue = _ref.initValue,
7081
+ onClick = _ref.onClick,
7082
+ onSearch = _ref.onSearch,
7083
+ placeholder = _ref.placeholder;
7084
+ return React.createElement("div", {
7085
+ className: "d-flex align-items-center"
7086
+ }, React.createElement("div", null, React.createElement(AddButton, {
7087
+ text: text,
7088
+ onClick: onClick
7089
+ })), React.createElement("div", {
7090
+ className: "flex-grow-1 ml-2"
7091
+ }, React.createElement(SearchBox$1, {
7092
+ initValue: initValue,
7093
+ onSearch: onSearch,
7094
+ placeholder: placeholder,
7095
+ style: searchInputStyle
7096
+ })));
7097
+ };
7099
7098
 
7100
- var getFile = function getFile() {
7101
- var url = window.location.origin + "/api/ExportDataUser/" + id;
7102
- window.open(url);
7103
- };
7099
+ SearchBoxContainer.defaultProps = {
7100
+ placeholder: "Type something to search"
7101
+ };
7102
+
7103
+ var utcToLocalTime = (function (time, FORMAT) {
7104
+ if (time === DATE_MIN_VALUE) return "";
7105
+
7106
+ try {
7107
+ return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7108
+ } catch (_unused) {
7109
+ return "";
7110
+ }
7111
+ });
7112
+
7113
+ var header$2 = "User";
7114
+
7115
+ var UserList = function UserList() {
7116
+ var _useUserList = useUserList(),
7117
+ queryName = _useUserList.queryName,
7118
+ userList = _useUserList.userList,
7119
+ totalItems = _useUserList.totalItems,
7120
+ filters = _useUserList.filters,
7121
+ removeData = _useUserList.removeData,
7122
+ changeFilters = _useUserList.changeFilters,
7123
+ reDirectDetailPage = _useUserList.reDirectDetailPage,
7124
+ swicthUser = _useUserList.swicthUser;
7125
+
7126
+ var _useTranslation = useTranslation(),
7127
+ t = _useTranslation.t;
7128
+
7129
+ return React.createElement("div", {
7130
+ className: "fadeIn animated"
7131
+ }, React.createElement("h5", {
7132
+ className: "mb-2"
7133
+ }, t("" + header$2)), React.createElement(Row, {
7134
+ className: "my-2"
7135
+ }, React.createElement(Col, {
7136
+ md: 8
7137
+ }, React.createElement(SearchBoxContainer, {
7138
+ text: t("create_user"),
7139
+ onClick: function onClick() {
7140
+ return reDirectDetailPage();
7141
+ },
7142
+ initValue: !!queryName ? queryName : "",
7143
+ onSearch: function onSearch(searchString) {
7144
+ return changeFilters({
7145
+ searchString: searchString
7146
+ });
7147
+ },
7148
+ placeholder: t("type_something_to_search_by_user_name")
7149
+ })), React.createElement(Col, {
7150
+ md: 4,
7151
+ className: "d-flex justify-content-end align-items-center"
7152
+ }, t("total_of_users"), " : ", totalItems)), React.createElement(Row, {
7153
+ className: "mb-2"
7154
+ }, React.createElement(Col, {
7155
+ md: 12
7156
+ }, userList && userList.length > 0 ? React.createElement("div", null, React.createElement(Table, {
7157
+ bordered: true,
7158
+ hover: true,
7159
+ striped: true,
7160
+ responsive: true,
7161
+ size: "sm"
7162
+ }, React.createElement("thead", null, React.createElement("tr", null, React.createElement("th", {
7163
+ className: "align-top"
7164
+ }, t("name")), React.createElement("th", {
7165
+ className: "align-top"
7166
+ }, t("email")), React.createElement("th", {
7167
+ className: "align-top"
7168
+ }, t("age")), React.createElement("th", {
7169
+ className: "align-top"
7170
+ }, t("role")), React.createElement("th", {
7171
+ className: "align-top"
7172
+ }, t("active_status")), React.createElement("th", {
7173
+ className: "align-top"
7174
+ }, t("created_time")), React.createElement("th", {
7175
+ className: "text-center"
7176
+ }, t("action")))), React.createElement("tbody", null, userList.map(function (record) {
7177
+ return React.createElement("tr", {
7178
+ key: record.id
7179
+ }, React.createElement("td", {
7180
+ className: "align-middle"
7181
+ }, React.createElement(LinkEditButton, {
7182
+ label: "" + record.fullName,
7183
+ onClick: function onClick() {
7184
+ return reDirectDetailPage(record.id);
7185
+ }
7186
+ })), React.createElement("td", {
7187
+ className: "align-middle"
7188
+ }, record.email), React.createElement("td", {
7189
+ className: "align-middle"
7190
+ }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React.createElement("td", {
7191
+ className: "align-middle"
7192
+ }, !!record.roles && record.roles.join(", ")), React.createElement("td", {
7193
+ className: "align-middle"
7194
+ }, record.isActive ? t("active") : t("inactive")), React.createElement("td", {
7195
+ className: "align-middle"
7196
+ }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React.createElement("td", {
7197
+ className: "text-center align-middle"
7198
+ }, React.createElement(FaUsersCog, {
7199
+ style: {
7200
+ fontSize: "18px",
7201
+ marginRight: "10px",
7202
+ cursor: "pointer"
7203
+ },
7204
+ onClick: function onClick() {
7205
+ return swicthUser(record.id);
7206
+ }
7207
+ }), React.createElement(DeleteButtonIcon, {
7208
+ onClick: function onClick() {
7209
+ return removeData(record.id);
7210
+ }
7211
+ })));
7212
+ })))) : React.createElement(EmptyDataAlert, {
7213
+ label: t("user")
7214
+ })), React.createElement(Col, {
7215
+ md: 12
7216
+ }, React.createElement(CustomPagination, {
7217
+ filters: filters,
7218
+ totalRecordCount: totalItems,
7219
+ changePageSize: function changePageSize(pageSize) {
7220
+ return changeFilters({
7221
+ pageSize: pageSize
7222
+ });
7223
+ },
7224
+ changePage: function changePage(currentPage) {
7225
+ return changeFilters({
7226
+ currentPage: currentPage
7227
+ });
7228
+ }
7229
+ }))));
7230
+ };
7231
+
7232
+ var MAX_FILE_SIZE = 20097152;
7233
+
7234
+ var UploadFileButton = function UploadFileButton(_ref) {
7235
+ var fileName = _ref.fileName,
7236
+ maxWidth = _ref.maxWidth,
7237
+ maxHeight = _ref.maxHeight,
7238
+ setFile = _ref.setFile,
7239
+ canDelete = _ref.canDelete,
7240
+ onDelete = _ref.onDelete,
7241
+ isCheckFeedBack = _ref.isCheckFeedBack,
7242
+ onAddImage = _ref.onAddImage;
7243
+ var dispatch = useDispatch();
7244
+
7245
+ var _useState = useState(""),
7246
+ imagePreviewUrl = _useState[0],
7247
+ setImagePreviewUrl = _useState[1];
7248
+
7249
+ var imageStyle = {
7250
+ maxWidth: maxWidth || "100%",
7251
+ maxHeight: maxHeight || "100%"
7252
+ };
7253
+ var imageSrc = imagePreviewUrl || getFileUrl(fileName);
7254
+
7255
+ var handleImageChange = function handleImageChange(e) {
7256
+ e.preventDefault();
7257
+ var reader = new FileReader();
7258
+ var newFile = e.target.files[0];
7259
+
7260
+ if (newFile.size > MAX_FILE_SIZE) {
7261
+ dispatch(setAlert({
7262
+ type: "danger",
7263
+ message: "File can't be larger than 2MB"
7264
+ }));
7265
+ return;
7266
+ }
7267
+
7268
+ reader.onloadend = function () {
7269
+ setFile(newFile);
7270
+ setImagePreviewUrl(reader.result);
7271
+ };
7272
+
7273
+ if (newFile) {
7274
+ reader.readAsDataURL(newFile);
7275
+ }
7276
+
7277
+ !!onAddImage && onAddImage();
7278
+ };
7279
+
7280
+ var imagePreviewContainer = imagePreviewUrl || fileName ? React.createElement("img", {
7281
+ style: imageStyle,
7282
+ src: imageSrc,
7283
+ alt: "image"
7284
+ }) : null;
7285
+ return React.createElement("div", {
7286
+ className: "mb-2"
7287
+ }, React.createElement(Form, {
7288
+ className: "mb-2"
7289
+ }, React.createElement(Input, {
7290
+ className: "d-none",
7291
+ type: "file",
7292
+ id: "uploadFile",
7293
+ onChange: handleImageChange,
7294
+ accept: "image/*"
7295
+ }), React.createElement("div", {
7296
+ className: "d-flex align-items-center"
7297
+ }, React.createElement(Label, {
7298
+ htmlFor: "uploadFile",
7299
+ role: "button",
7300
+ tabIndex: 0,
7301
+ className: styles["input-file-label"]
7302
+ }, isCheckFeedBack == true ? React.createElement(MdAttachFile, null) : React.createElement(React.Fragment, null, React.createElement("i", {
7303
+ className: "fa fa-paperclip mr-1",
7304
+ "aria-hidden": "true"
7305
+ }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React.createElement(Button, {
7306
+ size: "sm",
7307
+ color: "danger",
7308
+ className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
7309
+ onClick: function onClick() {
7310
+ setImagePreviewUrl(null);
7311
+ onDelete && onDelete();
7312
+ }
7313
+ }, React.createElement(FaTrashAlt, null)))), imagePreviewContainer);
7314
+ };
7315
+
7316
+ var initValue$3 = {
7317
+ id: "",
7318
+ firstName: "",
7319
+ lastName: "",
7320
+ email: "",
7321
+ dateOfBirth: "",
7322
+ roles: [],
7323
+ isActive: true,
7324
+ profileImageFileName: ""
7325
+ };
7326
+ var USER_LIST_URL = "/admin/user";
7327
+ var TITLE$8 = "User detail";
7328
+
7329
+ var useUserDetail = function useUserDetail(id) {
7330
+ var dispatch = useDispatch();
7331
+ var history = useHistory();
7332
+
7333
+ var _useState = useState(initValue$3),
7334
+ userDetail = _useState[0],
7335
+ setUserDetail = _useState[1];
7336
+
7337
+ var _useState2 = useState(null),
7338
+ file = _useState2[0],
7339
+ setFile = _useState2[1];
7340
+
7341
+ var _useState3 = useState(false),
7342
+ edited = _useState3[0],
7343
+ setEdited = _useState3[1];
7344
+
7345
+ var setEditedTrue = function setEditedTrue() {
7346
+ try {
7347
+ localStorage.setItem(window.location.href, "true");
7348
+ setEdited(true);
7349
+ return Promise.resolve();
7350
+ } catch (e) {
7351
+ return Promise.reject(e);
7352
+ }
7353
+ };
7354
+
7355
+ useEffect(function () {
7356
+ document.title = TITLE$8;
7357
+ setEdited(false);
7358
+ if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
7359
+ }, []);
7360
+ useEffect(function () {
7361
+ !!id && getData();
7362
+ }, [id]);
7363
+ var getData = useCallback(function () {
7364
+ try {
7365
+ var _temp3 = function _temp3() {
7366
+ dispatch(setLoading(false));
7367
+ };
7368
+
7369
+ dispatch(setLoading(true));
7370
+
7371
+ var _temp4 = _catch(function () {
7372
+ return Promise.resolve(getById$3(id)).then(function (res) {
7373
+ var _res$data;
7374
+
7375
+ setUserDetail(_extends({}, res.data, {
7376
+ dateOfBirth: format(new Date(res.data.dateOfBirth), DATE_FORMAT),
7377
+ roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
7378
+ }));
7379
+ document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
7380
+ });
7381
+ }, function (err) {
7382
+ var _err$response, _err$response$data;
7383
+
7384
+ dispatch(setAlert({
7385
+ type: "danger",
7386
+ 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
7387
+ }));
7388
+ });
7389
+
7390
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
7391
+ } catch (e) {
7392
+ return Promise.reject(e);
7393
+ }
7394
+ }, [id]);
7395
+ var backToList = useCallback(function (user) {
7396
+ !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
7397
+ }, []);
7398
+ var confirmData = useCallback(function (data) {
7399
+ try {
7400
+ var _temp9 = function _temp9() {
7401
+ dispatch(setLoading(false));
7402
+ };
7403
+
7404
+ dispatch(setLoading(true));
7405
+
7406
+ var _temp10 = _catch(function () {
7407
+ function _temp6() {
7408
+ var next = !!id ? update$5 : create$5;
7409
+ !id && delete data.id;
7410
+ return Promise.resolve(next(data)).then(function (result) {
7411
+ if (!!result) {
7412
+ getById$3(result.data.id).then(function (e) {
7413
+ backToList(e.data.fullName);
7414
+ });
7415
+ }
7416
+
7417
+ if (!id) {
7418
+ alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
7419
+ }
7420
+
7421
+ dispatch(setAlert({
7422
+ type: "success",
7423
+ message: (!!id ? "Update" : "Create") + " user successfully"
7424
+ }));
7425
+ });
7426
+ }
7427
+
7428
+ var _temp5 = function () {
7429
+ if (!!file) {
7430
+ var formData = new FormData();
7431
+ var name = file.name;
7432
+ formData.append("file", file, name);
7433
+ return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
7434
+ var _res$data2;
7435
+
7436
+ var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
7437
+ data.profileImageFileName = imageUrl;
7438
+ });
7439
+ }
7440
+ }();
7441
+
7442
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
7443
+ }, function (err) {
7444
+ var _err$response2, _err$response2$data;
7445
+
7446
+ dispatch(setAlert({
7447
+ type: "danger",
7448
+ 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
7449
+ }));
7450
+ });
7451
+
7452
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7453
+ } catch (e) {
7454
+ return Promise.reject(e);
7455
+ }
7456
+ }, [id, file]);
7457
+
7458
+ var confirmChangePassword = function confirmChangePassword(data) {
7459
+ try {
7460
+ var _temp13 = function _temp13() {
7461
+ dispatch(setLoading(false));
7462
+ };
7463
+
7464
+ dispatch(setLoading(true));
7465
+
7466
+ var _temp14 = _catch(function () {
7467
+ return Promise.resolve(changePassword(data)).then(function () {
7468
+ dispatch(setAlert({
7469
+ type: "success",
7470
+ message: "Change password successfully"
7471
+ }));
7472
+ });
7473
+ }, function (e) {
7474
+ var _e$response, _e$response$data;
7475
+
7476
+ dispatch(setAlert({
7477
+ type: "danger",
7478
+ 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
7479
+ }));
7480
+ });
7481
+
7482
+ return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7483
+ } catch (e) {
7484
+ return Promise.reject(e);
7485
+ }
7486
+ };
7487
+
7488
+ var forgotPasswordRequest = useCallback(function (data) {
7489
+ try {
7490
+ var _temp17 = function _temp17() {
7491
+ dispatch(setLoading(false));
7492
+ };
7493
+
7494
+ dispatch(setLoading(true));
7495
+
7496
+ var _temp18 = _catch(function () {
7497
+ return Promise.resolve(forgotChangePassword(data)).then(function () {
7498
+ dispatch(setAlert({
7499
+ type: "success",
7500
+ message: "Send forgot password link successfully"
7501
+ }));
7502
+ });
7503
+ }, function (err) {
7504
+ var _err$response3, _err$response3$data;
7505
+
7506
+ dispatch(setAlert({
7507
+ type: "danger",
7508
+ 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"
7509
+ }));
7510
+ });
7511
+
7512
+ return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7513
+ } catch (e) {
7514
+ return Promise.reject(e);
7515
+ }
7516
+ }, []);
7517
+ return {
7518
+ userDetail: userDetail,
7519
+ backToList: backToList,
7520
+ confirmData: confirmData,
7521
+ file: file,
7522
+ setFile: setFile,
7523
+ edited: edited,
7524
+ setEdited: setEdited,
7525
+ setEditedTrue: setEditedTrue,
7526
+ confirmChangePassword: confirmChangePassword,
7527
+ forgotPasswordRequest: forgotPasswordRequest
7528
+ };
7529
+ };
7530
+
7531
+ var userSchema = object({
7532
+ firstName: string().required("First name is required"),
7533
+ lastName: string().required("Last name is required"),
7534
+ dateOfBirth: string().required("Date of birth is required"),
7535
+ email: string().email("Email is invalid").required("Email is required"),
7536
+ roles: array().of(string()).min(1, "Role is required")
7537
+ });
7538
+
7539
+ var changePasswordSchema = object({
7540
+ oldPassword: string().required("Current password is required"),
7541
+ newPassword: string().required("New password is required"),
7542
+ confirmedNewPassword: string().required("Confirm password is required")
7543
+ });
7544
+
7545
+ var CREATE_USER = "create_user";
7546
+ var EDIT_USER_HEADER = "edit_user";
7547
+ var CHANGE_PASSWORD$1 = "change_password";
7548
+
7549
+ var UserDetail = function UserDetail() {
7550
+ var _useParams = useParams(),
7551
+ id = _useParams.id;
7552
+
7553
+ var user = useSelector(function (state) {
7554
+ return state.common.user;
7555
+ });
7556
+
7557
+ var _useTranslation = useTranslation(),
7558
+ t = _useTranslation.t;
7559
+
7560
+ var _useUserDetail = useUserDetail(id),
7561
+ userDetail = _useUserDetail.userDetail,
7562
+ backToList = _useUserDetail.backToList,
7563
+ confirmData = _useUserDetail.confirmData,
7564
+ file = _useUserDetail.file,
7565
+ setFile = _useUserDetail.setFile,
7566
+ edited = _useUserDetail.edited,
7567
+ setEdited = _useUserDetail.setEdited,
7568
+ setEditedTrue = _useUserDetail.setEditedTrue,
7569
+ confirmChangePassword = _useUserDetail.confirmChangePassword,
7570
+ forgotPasswordRequest = _useUserDetail.forgotPasswordRequest;
7571
+
7572
+ var initialValueForm = {
7573
+ oldPassword: "",
7574
+ newPassword: "",
7575
+ confirmedNewPassword: ""
7576
+ };
7577
+ var header = !!id ? t("" + EDIT_USER_HEADER) : t("" + CREATE_USER);
7578
+ var confirmText = !!id ? t("update") : t("create");
7579
+
7580
+ var getFile = function getFile() {
7581
+ var url = window.location.origin + "/api/ExportDataUser/" + id;
7582
+ window.open(url);
7583
+ };
7104
7584
 
7105
7585
  var onResetPw = function onResetPw(email) {
7106
7586
  try {
@@ -7537,42 +8017,6 @@ var CreatableSelector = function CreatableSelector(props) {
7537
8017
  });
7538
8018
  };
7539
8019
 
7540
- var SearchBox = function SearchBox(_ref) {
7541
- var initValue = _ref.initValue,
7542
- onSearch = _ref.onSearch,
7543
- placeholder = _ref.placeholder,
7544
- className = _ref.className,
7545
- style = _ref.style;
7546
-
7547
- var _useState = useState(initValue),
7548
- searchString = _useState[0],
7549
- setSearchString = _useState[1];
7550
-
7551
- useEffect(function () {
7552
- setSearchString(initValue);
7553
- }, [initValue]);
7554
- var onKeyUp = useCallback(function (e) {
7555
- e.key === "Enter" && onSearch(searchString);
7556
- }, [searchString, onSearch]);
7557
- return React.createElement(Input, {
7558
- placeholder: placeholder,
7559
- value: searchString,
7560
- onChange: function onChange(e) {
7561
- return setSearchString(e.target.value);
7562
- },
7563
- onKeyUp: onKeyUp,
7564
- className: className,
7565
- style: style
7566
- });
7567
- };
7568
-
7569
- SearchBox.defaultProps = {
7570
- placeholder: "Type something to search",
7571
- className: "",
7572
- style: {}
7573
- };
7574
- var SearchBox$1 = memo(SearchBox);
7575
-
7576
8020
  var QuestionTypeSelector = function QuestionTypeSelector(props) {
7577
8021
  var id = props.id;
7578
8022
  var initValue = !!id ? QUESTION_TYPES_OPTIONS.find(function (option) {
@@ -7928,23 +8372,13 @@ var NotificationStatusSelector = function NotificationStatusSelector(_ref) {
7928
8372
 
7929
8373
  var NotificationStatusSelector$1 = memo(NotificationStatusSelector);
7930
8374
 
7931
- var utcToLocalTime = (function (time, FORMAT) {
7932
- if (time === DATE_MIN_VALUE) return "";
7933
-
7934
- try {
7935
- return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7936
- } catch (_unused) {
7937
- return "";
7938
- }
7939
- });
7940
-
7941
8375
  var defaultFilters = {
7942
8376
  currentPage: 1,
7943
8377
  pageSize: 30,
7944
8378
  searchString: "",
7945
8379
  isRead: false
7946
8380
  };
7947
- var TITLE$8 = "Notification list";
8381
+ var TITLE$9 = "Notification list";
7948
8382
  var NOTIFICATION_CHANNEL$1 = "NOTIFICATION_CHANNEL";
7949
8383
  var NEW_NOTIFICATION$1 = "NEW_NOTIFICATION";
7950
8384
 
@@ -8069,7 +8503,7 @@ var useNotificationList = function useNotificationList() {
8069
8503
  }
8070
8504
  }, [filters]);
8071
8505
  useEffect(function () {
8072
- document.title = TITLE$8;
8506
+ document.title = TITLE$9;
8073
8507
  }, []);
8074
8508
  useEffect(function () {
8075
8509
  getData();
@@ -8154,7 +8588,7 @@ var useNotificationList = function useNotificationList() {
8154
8588
  };
8155
8589
  };
8156
8590
 
8157
- var header$2 = "Notification list";
8591
+ var header$3 = "Notification list";
8158
8592
  var ICON_SIZE = 20;
8159
8593
 
8160
8594
  var NotificationList = function NotificationList() {
@@ -8175,7 +8609,7 @@ var NotificationList = function NotificationList() {
8175
8609
  }
8176
8610
  }, React.createElement("h5", {
8177
8611
  className: "mb-2"
8178
- }, header$2), React.createElement(Row, {
8612
+ }, header$3), React.createElement(Row, {
8179
8613
  className: "my-2"
8180
8614
  }, React.createElement(Col, {
8181
8615
  md: 8
@@ -8265,43 +8699,14 @@ var NotificationList = function NotificationList() {
8265
8699
  changePageSize: function changePageSize(pageSize) {
8266
8700
  return changeFilters({
8267
8701
  pageSize: pageSize
8268
- });
8269
- },
8270
- changePage: function changePage(currentPage) {
8271
- return changeFilters({
8272
- currentPage: currentPage
8273
- });
8274
- }
8275
- }))));
8276
- };
8277
-
8278
- var searchInputStyle = {
8279
- height: 38
8280
- };
8281
-
8282
- var SearchBoxContainer = function SearchBoxContainer(_ref) {
8283
- var text = _ref.text,
8284
- initValue = _ref.initValue,
8285
- onClick = _ref.onClick,
8286
- onSearch = _ref.onSearch,
8287
- placeholder = _ref.placeholder;
8288
- return React.createElement("div", {
8289
- className: "d-flex align-items-center"
8290
- }, React.createElement("div", null, React.createElement(AddButton, {
8291
- text: text,
8292
- onClick: onClick
8293
- })), React.createElement("div", {
8294
- className: "flex-grow-1 ml-2"
8295
- }, React.createElement(SearchBox$1, {
8296
- initValue: initValue,
8297
- onSearch: onSearch,
8298
- placeholder: placeholder,
8299
- style: searchInputStyle
8300
- })));
8301
- };
8302
-
8303
- SearchBoxContainer.defaultProps = {
8304
- placeholder: "Type something to search"
8702
+ });
8703
+ },
8704
+ changePage: function changePage(currentPage) {
8705
+ return changeFilters({
8706
+ currentPage: currentPage
8707
+ });
8708
+ }
8709
+ }))));
8305
8710
  };
8306
8711
 
8307
8712
  var CustomTabs = function CustomTabs(props) {
@@ -8708,7 +9113,7 @@ var get$8 = function get(filter) {
8708
9113
  });
8709
9114
  };
8710
9115
 
8711
- var TITLE$9 = "Gallery";
9116
+ var TITLE$a = "Gallery";
8712
9117
  var defaultFilter = {
8713
9118
  searchString: ""
8714
9119
  };
@@ -8945,7 +9350,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
8945
9350
  }
8946
9351
  }, [dispatch, filters]);
8947
9352
  useEffect(function () {
8948
- document.title = TITLE$9;
9353
+ document.title = TITLE$a;
8949
9354
  dispatch(setTargetMedia({
8950
9355
  targetMedia: undefined
8951
9356
  }));
@@ -9137,7 +9542,7 @@ var MediaDetail = function MediaDetail(_ref) {
9137
9542
 
9138
9543
  var MediaDetail$1 = React.memo(MediaDetail);
9139
9544
 
9140
- var header$3 = "Gallery";
9545
+ var header$4 = "Gallery";
9141
9546
 
9142
9547
  var GalleryList = function GalleryList(_ref) {
9143
9548
  var isLibrary = _ref.isLibrary;
@@ -9148,7 +9553,7 @@ var GalleryList = function GalleryList(_ref) {
9148
9553
  className: "fadeIn animated"
9149
9554
  }, !isLibrary && React.createElement("h5", {
9150
9555
  className: "mb-2"
9151
- }, header$3), React.createElement(Row, {
9556
+ }, header$4), React.createElement(Row, {
9152
9557
  className: "mb-2"
9153
9558
  }, React.createElement(Col, {
9154
9559
  md: 8
@@ -9774,9 +10179,6 @@ var commonReducer$8 = createReducer(initialState$e, function (builder) {
9774
10179
  });
9775
10180
  });
9776
10181
 
9777
- var setUserList = createAction("users/setUserList");
9778
- var setStudentList = createAction("users/setStudentList");
9779
-
9780
10182
  var initialState$f = {
9781
10183
  userList: [],
9782
10184
  totalItems: 0,
@@ -10250,591 +10652,239 @@ var sessionPlayerReducer = createReducer(initialState$u, function (builder) {
10250
10652
  questionId: questionId,
10251
10653
  text: text
10252
10654
  });
10253
- } else {
10254
- existedResponse.text = text;
10255
- }
10256
-
10257
- return _extends({}, state, {
10258
- results: state.results.map(function (result) {
10259
- return result.isTeacherResult === isTeacherResult ? resultCloner : result;
10260
- })
10261
- });
10262
- }).addCase(setStartTime, function (state, action) {
10263
- var startTime = action.payload;
10264
- if (!startTime) return state;
10265
- state.startTime = startTime;
10266
- }).addCase(reset, function (_state, _action) {
10267
- return initialState$u;
10268
- });
10269
- });
10270
-
10271
- var setDataPlayer = createAction("dataPlayer/setDataPlayer");
10272
- var answerQuestionDataPlayer = createAction("dataPlayer/answerQuestionDataPlayer");
10273
-
10274
- var initialState$v = {
10275
- id: 0,
10276
- questions: [{
10277
- id: 0,
10278
- text: "",
10279
- type: "",
10280
- subQuestions: [],
10281
- answers: []
10282
- }],
10283
- questionResponse: []
10284
- };
10285
- var dataPlayer = createReducer(initialState$v, function (builder) {
10286
- builder.addCase(setDataPlayer, function (_state, action) {
10287
- return action.payload;
10288
- }).addCase(answerQuestionDataPlayer, function (state, action) {
10289
- var _action$payload = action.payload,
10290
- questionId = _action$payload.questionId,
10291
- text = _action$payload.text;
10292
- var questionResponse = state.questionResponse;
10293
- if (!questionResponse) return state;
10294
- var questionResponseCloner = JSON.parse(JSON.stringify(questionResponse));
10295
- var existedResponse = questionResponseCloner.find(function (response) {
10296
- return response.questionId === questionId;
10297
- });
10298
-
10299
- if (!existedResponse) {
10300
- questionResponseCloner.push({
10301
- questionId: questionId,
10302
- text: text
10303
- });
10304
- } else {
10305
- existedResponse.text = text;
10306
- }
10307
-
10308
- return _extends({}, state, {
10309
- questionResponse: questionResponseCloner
10310
- });
10311
- }).addCase(reset, function (_state, _action) {
10312
- return initialState$v;
10313
- });
10314
- });
10315
-
10316
- var setCertificateList = createAction("certificates/setCertificateList");
10317
-
10318
- var initialState$w = {
10319
- certificateList: [],
10320
- totalItems: 0
10321
- };
10322
- var commonReducer$f = createReducer(initialState$w, function (builder) {
10323
- builder.addCase(setCertificateList, function (state, action) {
10324
- state.certificateList = action.payload.certificateList;
10325
- state.totalItems = action.payload.totalItems;
10326
- }).addCase(reset, function (_state, _action) {
10327
- return initialState$w;
10328
- });
10329
- });
10330
-
10331
- var setImproveMyClass = createAction("improveMyClass/setImproveMyClass");
10332
-
10333
- var initialState$x = {
10334
- improveMyClassList: []
10335
- };
10336
- var commonReducer$g = createReducer(initialState$x, function (builder) {
10337
- builder.addCase(setImproveMyClass, function (state, action) {
10338
- state.improveMyClassList = action.payload;
10339
- }).addCase(reset, function (_state, _action) {
10340
- return initialState$x;
10341
- });
10342
- });
10343
-
10344
- var setFilterWidget = createAction("setFilterWidget");
10345
-
10346
- var initialState$y = {
10347
- filterWidget: "Year"
10348
- };
10349
- var widgetReducer = createReducer(initialState$y, function (builder) {
10350
- builder.addCase(setFilterWidget, function (state, action) {
10351
- state.filterWidget = action.payload.filterWidget;
10352
- }).addCase(reset, function (_state, _action) {
10353
- return initialState$y;
10354
- });
10355
- });
10356
-
10357
- var setBandScoreList = createAction("bandScores/setBandScoreList");
10358
-
10359
- var initialState$z = {
10360
- bandScoreList: [],
10361
- totalItems: 0
10362
- };
10363
- var commonReducer$h = createReducer(initialState$z, function (builder) {
10364
- builder.addCase(setBandScoreList, function (state, action) {
10365
- state.bandScoreList = action.payload.bandScoreList;
10366
- state.totalItems = action.payload.totalItems;
10367
- }).addCase(reset, function (_state, _action) {
10368
- return initialState$z;
10369
- });
10370
- });
10371
-
10372
- var setSchoolBlankDayList = createAction("schoolBlankDays/setSchoolBlankDayList");
10373
-
10374
- var initialState$A = {
10375
- schoolBlankDayList: [],
10376
- totalItems: 0
10377
- };
10378
- var commonReducer$i = createReducer(initialState$A, function (builder) {
10379
- builder.addCase(setSchoolBlankDayList, function (state, action) {
10380
- state.schoolBlankDayList = action.payload.schoolBlankDayList;
10381
- state.totalItems = action.payload.totalItems;
10382
- }).addCase(reset, function (_state, _action) {
10383
- return initialState$A;
10384
- });
10385
- });
10386
-
10387
- var setStudentIdSelectedByTeacher = createAction("navMobile/setStudentIdSelectedByTeacher");
10388
-
10389
- var initialState$B = {
10390
- studentIdSelectedByTeacher: 0
10391
- };
10392
- var navMobileReducer = createReducer(initialState$B, function (builder) {
10393
- builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10394
- state.studentIdSelectedByTeacher = action.payload;
10395
- }).addCase(reset, function (_state, _action) {
10396
- return initialState$B;
10397
- });
10398
- });
10399
-
10400
- var rootReducer = combineReducers({
10401
- common: commonReducer,
10402
- classes: classReducer,
10403
- conferenceRubrics: conferenceRubricReducer,
10404
- faqs: commonReducer$1,
10405
- skills: commonReducer$2,
10406
- emailTemplate: emailTemplateReducer,
10407
- suggestionBank: suggestionBankReducer,
10408
- learningStrategy: learningStrategyReducer,
10409
- subjects: commonReducer$3,
10410
- learningSupportCategories: commonReducer$4,
10411
- questionBank: questionBankReducer,
10412
- badges: commonReducer$5,
10413
- semester: commonReducer$6,
10414
- goalExamples: commonReducer$8,
10415
- users: commonReducer$9,
10416
- reflections: reflectionReducer,
10417
- reflectionResults: reflectionReducer$1,
10418
- feedbacks: commonReducer$a,
10419
- assessments: commonReducer$b,
10420
- questionByCategory: questionCategoryReducer,
10421
- mailCategory: questionBankReducer$1,
10422
- questionCate: questionCateReducer,
10423
- notification: questionBankReducer$2,
10424
- myStudent: commonReducer$c,
10425
- assignments: commonReducer$7,
10426
- assistants: assistantReducer,
10427
- sesstionTemplates: sessionTemplateReducer,
10428
- sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10429
- tutorialScreens: tutorialScreenReducer,
10430
- customAlerts: commonReducer$d,
10431
- gallery: commonReducer$e,
10432
- dashboard: dashboardReducer,
10433
- sessionPlayer: sessionPlayerReducer,
10434
- dataPlayer: dataPlayer,
10435
- certificate: commonReducer$f,
10436
- improveMyClass: commonReducer$g,
10437
- widget: widgetReducer,
10438
- bandScores: commonReducer$h,
10439
- schoolBlankDays: commonReducer$i,
10440
- navMobileReducer: navMobileReducer
10441
- });
10442
-
10443
- var store = configureStore({
10444
- reducer: rootReducer,
10445
- middleware: function middleware(getDefaultMiddleware) {
10446
- return getDefaultMiddleware({
10447
- serializableCheck: false
10448
- }).concat(logger);
10449
- }
10450
- });
10451
-
10452
- var isInViewport = function isInViewport(el) {
10453
- var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10454
- return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10455
- };
10456
-
10457
- var debounce = function debounce(callback, wait) {
10458
- var timeout = null;
10459
- return function () {
10460
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10461
- args[_key] = arguments[_key];
10462
- }
10463
-
10464
- var next = function next() {
10465
- return callback.apply(void 0, args);
10466
- };
10467
-
10468
- clearTimeout(timeout);
10469
- timeout = setTimeout(next, wait);
10470
- };
10471
- };
10472
-
10473
- var getTextFromHTML = function getTextFromHTML(htmlString) {
10474
- var p = document.createElement("p");
10475
- p.innerHTML = htmlString;
10476
- var text = p.innerText;
10477
- p.remove();
10478
- return text;
10479
- };
10480
-
10481
- var generateRandomString = (function () {
10482
- return (Math.random() + 1).toString(36).substring(7);
10483
- });
10484
-
10485
- var amplitudeClient = amplitude.getInstance();
10486
-
10487
- var USER_URL$2 = "/admin/user";
10488
- var CREATE_USER_URL = "/admin/create-user";
10489
- var TITLE$a = "User list";
10490
- var HOMEPAGE_TEACHER$1 = "/home";
10491
- var HOMEPAGE_STUDENT$1 = "/home";
10492
- var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
10493
- var HOMEPAGE_PARENT$1 = "/parent";
10494
- var HOMEPAGE_DISTRICT$1 = "/admin/schools";
10495
- var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
10655
+ } else {
10656
+ existedResponse.text = text;
10657
+ }
10496
10658
 
10497
- var useUserList = function useUserList() {
10498
- var history = useHistory();
10499
- var query = new URLSearchParams(location.search);
10500
- var queryName = query.get("query");
10501
- var userList = useSelector(function (state) {
10502
- return state.users.userList;
10503
- });
10504
- var totalItems = useSelector(function (state) {
10505
- return state.users.totalItems;
10659
+ return _extends({}, state, {
10660
+ results: state.results.map(function (result) {
10661
+ return result.isTeacherResult === isTeacherResult ? resultCloner : result;
10662
+ })
10663
+ });
10664
+ }).addCase(setStartTime, function (state, action) {
10665
+ var startTime = action.payload;
10666
+ if (!startTime) return state;
10667
+ state.startTime = startTime;
10668
+ }).addCase(reset, function (_state, _action) {
10669
+ return initialState$u;
10506
10670
  });
10671
+ });
10507
10672
 
10508
- var _useFilters = useFilters(),
10509
- filters = _useFilters.filters,
10510
- changeFilters = _useFilters.changeFilters;
10511
-
10512
- var _useState = useState(!!queryName ? queryName : ""),
10513
- fullName = _useState[0],
10514
- setFullName = _useState[1];
10673
+ var setDataPlayer = createAction("dataPlayer/setDataPlayer");
10674
+ var answerQuestionDataPlayer = createAction("dataPlayer/answerQuestionDataPlayer");
10515
10675
 
10516
- var isDistrict = window.location.host.includes("-district");
10517
- var dispatch = useDispatch();
10518
- var getData = useCallback(function (fullName) {
10519
- try {
10520
- var _temp3 = function _temp3() {
10521
- dispatch(setLoading(false));
10522
- };
10676
+ var initialState$v = {
10677
+ id: 0,
10678
+ questions: [{
10679
+ id: 0,
10680
+ text: "",
10681
+ type: "",
10682
+ subQuestions: [],
10683
+ answers: []
10684
+ }],
10685
+ questionResponse: []
10686
+ };
10687
+ var dataPlayer = createReducer(initialState$v, function (builder) {
10688
+ builder.addCase(setDataPlayer, function (_state, action) {
10689
+ return action.payload;
10690
+ }).addCase(answerQuestionDataPlayer, function (state, action) {
10691
+ var _action$payload = action.payload,
10692
+ questionId = _action$payload.questionId,
10693
+ text = _action$payload.text;
10694
+ var questionResponse = state.questionResponse;
10695
+ if (!questionResponse) return state;
10696
+ var questionResponseCloner = JSON.parse(JSON.stringify(questionResponse));
10697
+ var existedResponse = questionResponseCloner.find(function (response) {
10698
+ return response.questionId === questionId;
10699
+ });
10523
10700
 
10524
- dispatch(setLoading(true));
10701
+ if (!existedResponse) {
10702
+ questionResponseCloner.push({
10703
+ questionId: questionId,
10704
+ text: text
10705
+ });
10706
+ } else {
10707
+ existedResponse.text = text;
10708
+ }
10525
10709
 
10526
- var _temp4 = _catch(function () {
10527
- return Promise.resolve(fullName ? get$5(_extends({}, filters, {
10528
- searchString: fullName
10529
- })) : get$5(filters)).then(function (res) {
10530
- var _res$data = res.data,
10531
- items = _res$data.items,
10532
- totalItems = _res$data.totalItems;
10710
+ return _extends({}, state, {
10711
+ questionResponse: questionResponseCloner
10712
+ });
10713
+ }).addCase(reset, function (_state, _action) {
10714
+ return initialState$v;
10715
+ });
10716
+ });
10533
10717
 
10534
- for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
10535
- var user = _step.value;
10536
- user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
10537
- }
10718
+ var setCertificateList = createAction("certificates/setCertificateList");
10538
10719
 
10539
- dispatch(setUserList({
10540
- userList: items,
10541
- totalItems: totalItems
10542
- }));
10543
- });
10544
- }, function (err) {
10545
- var _err$response, _err$response$data;
10720
+ var initialState$w = {
10721
+ certificateList: [],
10722
+ totalItems: 0
10723
+ };
10724
+ var commonReducer$f = createReducer(initialState$w, function (builder) {
10725
+ builder.addCase(setCertificateList, function (state, action) {
10726
+ state.certificateList = action.payload.certificateList;
10727
+ state.totalItems = action.payload.totalItems;
10728
+ }).addCase(reset, function (_state, _action) {
10729
+ return initialState$w;
10730
+ });
10731
+ });
10546
10732
 
10547
- dispatch(setAlert({
10548
- type: "danger",
10549
- message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
10550
- }));
10551
- });
10733
+ var setImproveMyClass = createAction("improveMyClass/setImproveMyClass");
10552
10734
 
10553
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
10554
- } catch (e) {
10555
- return Promise.reject(e);
10556
- }
10557
- }, [dispatch, filters]);
10558
- useEffect(function () {
10559
- document.title = TITLE$a;
10560
- }, []);
10561
- useEffect(function () {
10562
- if (!!fullName) {
10563
- getData(fullName);
10564
- setFullName(null);
10565
- } else {
10566
- getData();
10567
- }
10568
- }, [filters]);
10569
- var removeData = useCallback(function (id) {
10570
- dispatch(setLoading(true));
10735
+ var initialState$x = {
10736
+ improveMyClassList: []
10737
+ };
10738
+ var commonReducer$g = createReducer(initialState$x, function (builder) {
10739
+ builder.addCase(setImproveMyClass, function (state, action) {
10740
+ state.improveMyClassList = action.payload;
10741
+ }).addCase(reset, function (_state, _action) {
10742
+ return initialState$x;
10743
+ });
10744
+ });
10571
10745
 
10572
- try {
10573
- dispatch(setModal({
10574
- isOpen: true,
10575
- type: "warning",
10576
- message: "Do you want to remove this user?",
10577
- onConfirm: function () {
10578
- try {
10579
- return Promise.resolve(remove$3(id)).then(function () {
10580
- dispatch(setAlert({
10581
- type: "success",
10582
- message: "Remove user successfully"
10583
- }));
10584
- changeFilters({
10585
- currentPage: 1
10586
- });
10587
- });
10588
- } catch (e) {
10589
- return Promise.reject(e);
10590
- }
10591
- }
10592
- }));
10593
- } catch (err) {
10594
- var _err$response2, _err$response2$data;
10746
+ var setFilterWidget = createAction("setFilterWidget");
10595
10747
 
10596
- dispatch(setAlert({
10597
- type: "danger",
10598
- message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message
10599
- }));
10600
- }
10748
+ var initialState$y = {
10749
+ filterWidget: "Year"
10750
+ };
10751
+ var widgetReducer = createReducer(initialState$y, function (builder) {
10752
+ builder.addCase(setFilterWidget, function (state, action) {
10753
+ state.filterWidget = action.payload.filterWidget;
10754
+ }).addCase(reset, function (_state, _action) {
10755
+ return initialState$y;
10756
+ });
10757
+ });
10601
10758
 
10602
- dispatch(setLoading(false));
10603
- }, [filters]);
10759
+ var setBandScoreList = createAction("bandScores/setBandScoreList");
10604
10760
 
10605
- var redirectLoginUser = function redirectLoginUser(res) {
10606
- var _res$data2 = res.data,
10607
- token = _res$data2.token,
10608
- id = _res$data2.id,
10609
- firstName = _res$data2.firstName,
10610
- lastName = _res$data2.lastName,
10611
- roles = _res$data2.roles,
10612
- email = _res$data2.email,
10613
- profileImageFileName = _res$data2.profileImageFileName;
10614
- localStorage.setItem(ACCESS_TOKEN, token);
10615
- localStorage.removeItem(NOTIFICATION_ALERT_KEY);
10616
- dispatch(setUser({
10617
- id: id,
10618
- firstName: firstName,
10619
- lastName: lastName,
10620
- roles: roles,
10621
- email: email,
10622
- profileImageFileName: profileImageFileName
10623
- }));
10761
+ var initialState$z = {
10762
+ bandScoreList: [],
10763
+ totalItems: 0
10764
+ };
10765
+ var commonReducer$h = createReducer(initialState$z, function (builder) {
10766
+ builder.addCase(setBandScoreList, function (state, action) {
10767
+ state.bandScoreList = action.payload.bandScoreList;
10768
+ state.totalItems = action.payload.totalItems;
10769
+ }).addCase(reset, function (_state, _action) {
10770
+ return initialState$z;
10771
+ });
10772
+ });
10624
10773
 
10625
- if (isDistrict) {
10626
- history.push(HOMEPAGE_DISTRICT$1);
10627
- } else if (roles.includes("Admin")) {
10628
- history.push(HOMEPAGE_ADMIN$1);
10629
- } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
10630
- history.push(HOMEPAGE_TEACHER$1);
10631
- } else if (roles.includes("Student")) {
10632
- history.push(HOMEPAGE_STUDENT$1);
10633
- } else if (roles.includes("Parent")) {
10634
- history.push(HOMEPAGE_PARENT$1);
10635
- } else if (roles.includes("EduTeacher")) {
10636
- history.push(HOMEPAGE_EDU_TEACHER$1);
10637
- } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
10638
- history.push(HOMEPAGE_TEACHER$1);
10639
- }
10640
- };
10774
+ var setSchoolBlankDayList = createAction("schoolBlankDays/setSchoolBlankDayList");
10641
10775
 
10642
- var swicthUser = useCallback(function (id) {
10643
- try {
10644
- var _temp6 = _catch(function () {
10645
- return Promise.resolve(switchAccountUser(id)).then(function (res) {
10646
- var data = res.data;
10647
- dispatch(setModal({
10648
- isOpen: true,
10649
- type: "warning",
10650
- message: "Do you want to impersonate this user?",
10651
- onConfirm: function () {
10652
- try {
10653
- var _temp9 = function _temp9() {
10654
- dispatch(setLoading(false));
10655
- };
10776
+ var initialState$A = {
10777
+ schoolBlankDayList: [],
10778
+ totalItems: 0
10779
+ };
10780
+ var commonReducer$i = createReducer(initialState$A, function (builder) {
10781
+ builder.addCase(setSchoolBlankDayList, function (state, action) {
10782
+ state.schoolBlankDayList = action.payload.schoolBlankDayList;
10783
+ state.totalItems = action.payload.totalItems;
10784
+ }).addCase(reset, function (_state, _action) {
10785
+ return initialState$A;
10786
+ });
10787
+ });
10656
10788
 
10657
- dispatch(setLoading(true));
10789
+ var setStudentIdSelectedByTeacher = createAction("navMobile/setStudentIdSelectedByTeacher");
10658
10790
 
10659
- var _temp10 = _catch(function () {
10660
- var req = {
10661
- email: data.email,
10662
- password: "default",
10663
- accessToken: data.token
10664
- };
10665
- return Promise.resolve(logIn(req)).then(function (res) {
10666
- localStorage.clear();
10667
- redirectLoginUser(res);
10668
- });
10669
- }, function (err) {
10670
- var _err$response3, _err$response3$data;
10791
+ var initialState$B = {
10792
+ studentIdSelectedByTeacher: 0
10793
+ };
10794
+ var navMobileReducer = createReducer(initialState$B, function (builder) {
10795
+ builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10796
+ state.studentIdSelectedByTeacher = action.payload;
10797
+ }).addCase(reset, function (_state, _action) {
10798
+ return initialState$B;
10799
+ });
10800
+ });
10671
10801
 
10672
- setAlert({
10673
- type: "danger",
10674
- message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message
10675
- });
10676
- });
10802
+ var rootReducer = combineReducers({
10803
+ common: commonReducer,
10804
+ classes: classReducer,
10805
+ conferenceRubrics: conferenceRubricReducer,
10806
+ faqs: commonReducer$1,
10807
+ skills: commonReducer$2,
10808
+ emailTemplate: emailTemplateReducer,
10809
+ suggestionBank: suggestionBankReducer,
10810
+ learningStrategy: learningStrategyReducer,
10811
+ subjects: commonReducer$3,
10812
+ learningSupportCategories: commonReducer$4,
10813
+ questionBank: questionBankReducer,
10814
+ badges: commonReducer$5,
10815
+ semester: commonReducer$6,
10816
+ goalExamples: commonReducer$8,
10817
+ users: commonReducer$9,
10818
+ reflections: reflectionReducer,
10819
+ reflectionResults: reflectionReducer$1,
10820
+ feedbacks: commonReducer$a,
10821
+ assessments: commonReducer$b,
10822
+ questionByCategory: questionCategoryReducer,
10823
+ mailCategory: questionBankReducer$1,
10824
+ questionCate: questionCateReducer,
10825
+ notification: questionBankReducer$2,
10826
+ myStudent: commonReducer$c,
10827
+ assignments: commonReducer$7,
10828
+ assistants: assistantReducer,
10829
+ sesstionTemplates: sessionTemplateReducer,
10830
+ sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10831
+ tutorialScreens: tutorialScreenReducer,
10832
+ customAlerts: commonReducer$d,
10833
+ gallery: commonReducer$e,
10834
+ dashboard: dashboardReducer,
10835
+ sessionPlayer: sessionPlayerReducer,
10836
+ dataPlayer: dataPlayer,
10837
+ certificate: commonReducer$f,
10838
+ improveMyClass: commonReducer$g,
10839
+ widget: widgetReducer,
10840
+ bandScores: commonReducer$h,
10841
+ schoolBlankDays: commonReducer$i,
10842
+ navMobileReducer: navMobileReducer
10843
+ });
10677
10844
 
10678
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
10679
- } catch (e) {
10680
- return Promise.reject(e);
10681
- }
10682
- }
10683
- }));
10684
- });
10685
- }, function (err) {
10686
- var _err$response4, _err$response4$data;
10845
+ var store = configureStore({
10846
+ reducer: rootReducer,
10847
+ middleware: function middleware(getDefaultMiddleware) {
10848
+ return getDefaultMiddleware({
10849
+ serializableCheck: false
10850
+ }).concat(logger);
10851
+ }
10852
+ });
10687
10853
 
10688
- dispatch(setAlert({
10689
- type: "danger",
10690
- message: ((_err$response4 = err.response) === null || _err$response4 === void 0 ? void 0 : (_err$response4$data = _err$response4.data) === null || _err$response4$data === void 0 ? void 0 : _err$response4$data.title) || err.message
10691
- }));
10692
- });
10854
+ var isInViewport = function isInViewport(el) {
10855
+ var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10856
+ return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10857
+ };
10693
10858
 
10694
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
10695
- } catch (e) {
10696
- return Promise.reject(e);
10859
+ var debounce = function debounce(callback, wait) {
10860
+ var timeout = null;
10861
+ return function () {
10862
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10863
+ args[_key] = arguments[_key];
10697
10864
  }
10698
- }, [filters]);
10699
10865
 
10700
- var reDirectDetailPage = function reDirectDetailPage(id) {
10701
- var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
10702
- history.push(url);
10703
- };
10866
+ var next = function next() {
10867
+ return callback.apply(void 0, args);
10868
+ };
10704
10869
 
10705
- return {
10706
- userList: userList,
10707
- totalItems: totalItems,
10708
- filters: filters,
10709
- queryName: queryName,
10710
- getData: getData,
10711
- removeData: removeData,
10712
- changeFilters: changeFilters,
10713
- reDirectDetailPage: reDirectDetailPage,
10714
- swicthUser: swicthUser
10870
+ clearTimeout(timeout);
10871
+ timeout = setTimeout(next, wait);
10715
10872
  };
10716
10873
  };
10717
10874
 
10718
- var header$4 = "User";
10719
-
10720
- var UserList = function UserList() {
10721
- var _useUserList = useUserList(),
10722
- queryName = _useUserList.queryName,
10723
- userList = _useUserList.userList,
10724
- totalItems = _useUserList.totalItems,
10725
- filters = _useUserList.filters,
10726
- removeData = _useUserList.removeData,
10727
- changeFilters = _useUserList.changeFilters,
10728
- reDirectDetailPage = _useUserList.reDirectDetailPage,
10729
- swicthUser = _useUserList.swicthUser;
10730
-
10731
- var _useTranslation = useTranslation(),
10732
- t = _useTranslation.t;
10733
-
10734
- return React.createElement("div", {
10735
- className: "fadeIn animated"
10736
- }, React.createElement("h5", {
10737
- className: "mb-2"
10738
- }, t("" + header$4)), React.createElement(Row, {
10739
- className: "my-2"
10740
- }, React.createElement(Col, {
10741
- md: 8
10742
- }, React.createElement(SearchBoxContainer, {
10743
- text: t("create_user"),
10744
- onClick: function onClick() {
10745
- return reDirectDetailPage();
10746
- },
10747
- initValue: !!queryName ? queryName : "",
10748
- onSearch: function onSearch(searchString) {
10749
- return changeFilters({
10750
- searchString: searchString
10751
- });
10752
- },
10753
- placeholder: t("type_something_to_search_by_user_name")
10754
- })), React.createElement(Col, {
10755
- md: 4,
10756
- className: "d-flex justify-content-end align-items-center"
10757
- }, t("total_of_users"), " : ", totalItems)), React.createElement(Row, {
10758
- className: "mb-2"
10759
- }, React.createElement(Col, {
10760
- md: 12
10761
- }, userList && userList.length > 0 ? React.createElement("div", null, React.createElement(Table, {
10762
- bordered: true,
10763
- hover: true,
10764
- striped: true,
10765
- responsive: true,
10766
- size: "sm"
10767
- }, React.createElement("thead", null, React.createElement("tr", null, React.createElement("th", {
10768
- className: "align-top"
10769
- }, t("name")), React.createElement("th", {
10770
- className: "align-top"
10771
- }, t("email")), React.createElement("th", {
10772
- className: "align-top"
10773
- }, t("age")), React.createElement("th", {
10774
- className: "align-top"
10775
- }, t("role")), React.createElement("th", {
10776
- className: "align-top"
10777
- }, t("active_status")), React.createElement("th", {
10778
- className: "align-top"
10779
- }, t("created_time")), React.createElement("th", {
10780
- className: "text-center"
10781
- }, t("action")))), React.createElement("tbody", null, userList.map(function (record) {
10782
- return React.createElement("tr", {
10783
- key: record.id
10784
- }, React.createElement("td", {
10785
- className: "align-middle"
10786
- }, React.createElement(LinkEditButton, {
10787
- label: "" + record.fullName,
10788
- onClick: function onClick() {
10789
- return reDirectDetailPage(record.id);
10790
- }
10791
- })), React.createElement("td", {
10792
- className: "align-middle"
10793
- }, record.email), React.createElement("td", {
10794
- className: "align-middle"
10795
- }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React.createElement("td", {
10796
- className: "align-middle"
10797
- }, !!record.roles && record.roles.join(", ")), React.createElement("td", {
10798
- className: "align-middle"
10799
- }, record.isActive ? t("active") : t("inactive")), React.createElement("td", {
10800
- className: "align-middle"
10801
- }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React.createElement("td", {
10802
- className: "text-center align-middle"
10803
- }, React.createElement(FaUsersCog, {
10804
- style: {
10805
- fontSize: "18px",
10806
- marginRight: "10px",
10807
- cursor: "pointer"
10808
- },
10809
- onClick: function onClick() {
10810
- return swicthUser(record.id);
10811
- }
10812
- }), React.createElement(DeleteButtonIcon, {
10813
- onClick: function onClick() {
10814
- return removeData(record.id);
10815
- }
10816
- })));
10817
- })))) : React.createElement(EmptyDataAlert, {
10818
- label: t("user")
10819
- })), React.createElement(Col, {
10820
- md: 12
10821
- }, React.createElement(CustomPagination, {
10822
- filters: filters,
10823
- totalRecordCount: totalItems,
10824
- changePageSize: function changePageSize(pageSize) {
10825
- return changeFilters({
10826
- pageSize: pageSize
10827
- });
10828
- },
10829
- changePage: function changePage(currentPage) {
10830
- return changeFilters({
10831
- currentPage: currentPage
10832
- });
10833
- }
10834
- }))));
10875
+ var getTextFromHTML = function getTextFromHTML(htmlString) {
10876
+ var p = document.createElement("p");
10877
+ p.innerHTML = htmlString;
10878
+ var text = p.innerText;
10879
+ p.remove();
10880
+ return text;
10835
10881
  };
10836
10882
 
10837
- var amplitudeClient$1 = amplitude.getInstance();
10883
+ var generateRandomString = (function () {
10884
+ return (Math.random() + 1).toString(36).substring(7);
10885
+ });
10886
+
10887
+ var amplitudeClient = amplitude.getInstance();
10838
10888
 
10839
- export { ACCESS_TOKEN, ANSWER_EDITOR_HEIGHT, AcademicClassSelector, AddButton, BASE_URL, CHAT_CHANNEL, CategorySelector, CommonAlert, CommonHeader, CommonModal$1 as CommonModal, CreatableSelector, CustomPagination, CustomSelector, CustomTabs as CustomTab, DATE_FORMAT, DATE_RESULT, DEFAULT_FILTER, Dashboard, DeleteButtonIcon, DetailActionButtons, EMOTIONS, EditButtonIcon, EmailTemplateDetail, EmailTemplateList, EmptyDataAlert, ErrorHandler, FULL_DATE_RESULT, FaqList, InputFile as FileInput, GOOGLE_RECAPTCHA_KEY, GalleryList, INIT_AMPLITUDE_KEY_PROD, INIT_AMPLITUDE_KEY_STAGE, Images, LICENSE_AGGRID, LinkEditButton, Loading, Login, MediaList, NOTIFICATION_ALERT_KEY, NOTIFICATION_CHANNEL, NotFound, NotificationList, NotificationModal, QUESTION_TYPES, QUESTION_TYPES_OPTIONS, QuestionCategorySelector, QuestionTypeSelector, QuitPrompt, ReactNotification, RequiredLabel$1 as RequiredLabel, SchoolList, ScrollToTop, SearchBox$1 as SearchBox, SearchBoxContainer, SkillList, StarRatingSelector, SuggestionCategorySelector, TAB_COLORS, TINY_MCE_API_KEY, TheContent$1 as TheContent, TheLayout, ToggleButton, UploadFileButton, UserDetail, UserList, addTab, amplitudeClient$1 as amplitudeClient, answerQuestion, answerQuestionDataPlayer, api, apiUpload, canAccess as canAccessRoute, changeNote, changeTags, clearTab, closeTab, debounce, editTab, editorConfig, firstCheckToken, generateRandomString, getFileUrl, getInfo, getTextFromHTML, i18n, initAmplitude, isInViewport, isLocalhost, reset, setAlert, setAssessmentList, setAssignmentList, setAssistantList, setBadgeList, setBandScoreList, setCertificateList, setClassList, setConferenceRubricList, setConversationOneToOne, setCurrentStudentId, setCurrentStudentName, setCurrentStudentUserId, setCustomAlertList, setDataPlayer, setEditItemQuesion, setEnableIEP, setEnableSurvey, setFeedbackList, setFilterWidget, setGoalExampleList, setImproveMyClass, setLanguage, setLearningSupportCategoryList, setLoading, setMailCategory, setModal, setMoveItemQuestion, setMyStudent, setQuestionByCategory, setQuestionCateList, setQuestionList, setReflectionList, setReflectionResultList, setResetQuestionList, setSchoolBlankDayList, setSelectQuestion, setSemesterList, setSessionPlayer, setSessionTemplateGeneralClassList, setSessionTemplateList, setStartTime, setStrategyList, setStudentIdSelectedByTeacher, setStudentList, setSubjectList, setSuggestionList, setTurnOffPassWhenChangeMode, setTutorialScreenList, setUser, setUserList, showFontSize, showMenuBar, store, systemCertificateUpload, systemStudentBadge, uploadFile, useFilters, useGalleryList, utcToLocalTime };
10889
+ export { ACCESS_TOKEN, ANSWER_EDITOR_HEIGHT, AcademicClassSelector, AddButton, BASE_URL, CHAT_CHANNEL, CategorySelector, CommonAlert, CommonHeader, CommonModal$1 as CommonModal, CreatableSelector, CustomPagination, CustomSelector, CustomTabs as CustomTab, DATE_FORMAT, DATE_RESULT, DEFAULT_FILTER, Dashboard, DeleteButtonIcon, DetailActionButtons, EMOTIONS, EditButtonIcon, EmailTemplateDetail, EmailTemplateList, EmptyDataAlert, ErrorHandler, FULL_DATE_RESULT, FaqList, InputFile as FileInput, GOOGLE_RECAPTCHA_KEY, GalleryList, INIT_AMPLITUDE_KEY_PROD, INIT_AMPLITUDE_KEY_STAGE, Images, LICENSE_AGGRID, LinkEditButton, Loading, Login, MediaList, NOTIFICATION_ALERT_KEY, NOTIFICATION_CHANNEL, NotFound, NotificationList, NotificationModal, QUESTION_TYPES, QUESTION_TYPES_OPTIONS, QuestionCategorySelector, QuestionTypeSelector, QuitPrompt, ReactNotification, RequiredLabel$1 as RequiredLabel, SchoolList, ScrollToTop, SearchBox$1 as SearchBox, SearchBoxContainer, SkillList, StarRatingSelector, SuggestionCategorySelector, TAB_COLORS, TINY_MCE_API_KEY, TheContent$1 as TheContent, TheLayout, ToggleButton, UploadFileButton, UserDetail, UserList, addTab, amplitudeClient, answerQuestion, answerQuestionDataPlayer, api, apiUpload, canAccess as canAccessRoute, changeNote, changeTags, clearTab, closeTab, debounce, editTab, editorConfig, firstCheckToken, generateRandomString, getFileUrl, getInfo, getTextFromHTML, i18n, initAmplitude, isInViewport, isLocalhost, reset, setAlert, setAssessmentList, setAssignmentList, setAssistantList, setBadgeList, setBandScoreList, setCertificateList, setClassList, setConferenceRubricList, setConversationOneToOne, setCurrentStudentId, setCurrentStudentName, setCurrentStudentUserId, setCustomAlertList, setDataPlayer, setEditItemQuesion, setEnableIEP, setEnableSurvey, setFeedbackList, setFilterWidget, setGoalExampleList, setImproveMyClass, setLanguage, setLearningSupportCategoryList, setLoading, setMailCategory, setModal, setMoveItemQuestion, setMyStudent, setQuestionByCategory, setQuestionCateList, setQuestionList, setReflectionList, setReflectionResultList, setResetQuestionList, setSchoolBlankDayList, setSelectQuestion, setSemesterList, setSessionPlayer, setSessionTemplateGeneralClassList, setSessionTemplateList, setStartTime, setStrategyList, setStudentIdSelectedByTeacher, setStudentList, setSubjectList, setSuggestionList, setTurnOffPassWhenChangeMode, setTutorialScreenList, setUser, setUserList, showFontSize, showMenuBar, store, systemCertificateUpload, systemStudentBadge, uploadFile, useFilters, useGalleryList, utcToLocalTime };
10840
10890
  //# sourceMappingURL=index.modern.js.map