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