mario-core 2.9.107-beta → 2.9.108-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -26,7 +26,6 @@ var fa = require('react-icons/fa');
26
26
  var dateFns = require('date-fns');
27
27
  var tinymceReact = require('@tinymce/tinymce-react');
28
28
  var differenceInCalendarYears = _interopDefault(require('date-fns/differenceInCalendarYears'));
29
- var moment = _interopDefault(require('moment'));
30
29
  var DatePicker = _interopDefault(require('react-datepicker'));
31
30
  var toDate = _interopDefault(require('date-fns/toDate'));
32
31
  var md = require('react-icons/md');
@@ -34,6 +33,7 @@ var Creatable = _interopDefault(require('react-select/creatable'));
34
33
  var ReactNotification$1 = _interopDefault(require('react-notifications-component'));
35
34
  require('react-notifications-component/dist/theme.css');
36
35
  var ai = require('react-icons/ai');
36
+ var moment = _interopDefault(require('moment'));
37
37
 
38
38
  var dashboard = "Dashboard";
39
39
  var user = "User";
@@ -215,10 +215,10 @@ var teacher_training = "Teacher training";
215
215
  var created_time = "Create time";
216
216
  var total_reflections = "Total Reflections";
217
217
  var student_training = "Student training";
218
- var create_destination = "Create Destination";
218
+ var create_designation = "Create Designation";
219
219
  var total_of_designation = "Total of Designation";
220
- var destinations = "Destinations";
221
- var edit_destination = "Edit Destination";
220
+ var designations = "Designations";
221
+ var edit_designation = "Edit Designation";
222
222
  var confirm = "Confirm";
223
223
  var hello = "Hello";
224
224
  var todays_1_1 = "Today’s 1-1";
@@ -609,6 +609,7 @@ var current_secondary_teacher_name = "Current Secondary Teacher Name";
609
609
  var current_secondary_teacher_email = "Current Secondary Teacher Email";
610
610
  var remove_secondary_teacher = "Remove Secondary Teacher";
611
611
  var select_secondary_teacher_change = "Select Secondary Teacher Change";
612
+ var filter_calendar = "Filter calendar";
612
613
  var lang_us = {
613
614
  dashboard: dashboard,
614
615
  user: user,
@@ -793,10 +794,10 @@ var lang_us = {
793
794
  created_time: created_time,
794
795
  total_reflections: total_reflections,
795
796
  student_training: student_training,
796
- create_destination: create_destination,
797
+ create_designation: create_designation,
797
798
  total_of_designation: total_of_designation,
798
- destinations: destinations,
799
- edit_destination: edit_destination,
799
+ designations: designations,
800
+ edit_designation: edit_designation,
800
801
  confirm: confirm,
801
802
  hello: hello,
802
803
  todays_1_1: todays_1_1,
@@ -1191,7 +1192,8 @@ var lang_us = {
1191
1192
  current_secondary_teacher_name: current_secondary_teacher_name,
1192
1193
  current_secondary_teacher_email: current_secondary_teacher_email,
1193
1194
  remove_secondary_teacher: remove_secondary_teacher,
1194
- select_secondary_teacher_change: select_secondary_teacher_change
1195
+ select_secondary_teacher_change: select_secondary_teacher_change,
1196
+ filter_calendar: filter_calendar
1195
1197
  };
1196
1198
 
1197
1199
  var dashboard$1 = "Dashboard";
@@ -1376,10 +1378,10 @@ var teacher_training$1 = "Teacher training";
1376
1378
  var created_time$1 = "Create time";
1377
1379
  var total_reflections$1 = "Total Reflections";
1378
1380
  var student_training$1 = "Student training";
1379
- var create_destination$1 = "Create Destination";
1381
+ var create_designation$1 = "Create Designation";
1380
1382
  var total_of_designation$1 = "Total of Designation";
1381
- var destinations$1 = "Destinations";
1382
- var edit_destination$1 = "Edit Destination";
1383
+ var designations$1 = "Designations";
1384
+ var edit_designation$1 = "Edit Designation";
1383
1385
  var confirm$1 = "Confirm";
1384
1386
  var hello$1 = "Hello";
1385
1387
  var todays_1_1$1 = "Today’s 1-1";
@@ -1770,6 +1772,7 @@ var current_secondary_teacher_name$1 = "Current Secondary Teacher Name";
1770
1772
  var current_secondary_teacher_email$1 = "Current Secondary Teacher Email";
1771
1773
  var remove_secondary_teacher$1 = "Remove Secondary Teacher";
1772
1774
  var select_secondary_teacher_change$1 = "Select Secondary Teacher Change";
1775
+ var filter_calendar$1 = "Filter calendar";
1773
1776
  var lang_uk = {
1774
1777
  dashboard: dashboard$1,
1775
1778
  user: user$1,
@@ -1954,10 +1957,10 @@ var lang_uk = {
1954
1957
  created_time: created_time$1,
1955
1958
  total_reflections: total_reflections$1,
1956
1959
  student_training: student_training$1,
1957
- create_destination: create_destination$1,
1960
+ create_designation: create_designation$1,
1958
1961
  total_of_designation: total_of_designation$1,
1959
- destinations: destinations$1,
1960
- edit_destination: edit_destination$1,
1962
+ designations: designations$1,
1963
+ edit_designation: edit_designation$1,
1961
1964
  confirm: confirm$1,
1962
1965
  hello: hello$1,
1963
1966
  todays_1_1: todays_1_1$1,
@@ -2352,7 +2355,8 @@ var lang_uk = {
2352
2355
  current_secondary_teacher_name: current_secondary_teacher_name$1,
2353
2356
  current_secondary_teacher_email: current_secondary_teacher_email$1,
2354
2357
  remove_secondary_teacher: remove_secondary_teacher$1,
2355
- select_secondary_teacher_change: select_secondary_teacher_change$1
2358
+ select_secondary_teacher_change: select_secondary_teacher_change$1,
2359
+ filter_calendar: filter_calendar$1
2356
2360
  };
2357
2361
 
2358
2362
  var DEFAULT_LANGUAGE = localStorage.getItem("language") !== null ? localStorage.getItem("language") : "uk";
@@ -6772,8 +6776,89 @@ var SkillList = function SkillList() {
6772
6776
  }))));
6773
6777
  };
6774
6778
 
6775
- var setUserList = toolkit.createAction("users/setUserList");
6776
- var setStudentList = toolkit.createAction("users/setStudentList");
6779
+ var MAX_FILE_SIZE = 20097152;
6780
+
6781
+ var UploadFileButton = function UploadFileButton(_ref) {
6782
+ var fileName = _ref.fileName,
6783
+ maxWidth = _ref.maxWidth,
6784
+ maxHeight = _ref.maxHeight,
6785
+ setFile = _ref.setFile,
6786
+ canDelete = _ref.canDelete,
6787
+ onDelete = _ref.onDelete,
6788
+ isCheckFeedBack = _ref.isCheckFeedBack,
6789
+ onAddImage = _ref.onAddImage;
6790
+ var dispatch = reactRedux.useDispatch();
6791
+
6792
+ var _useState = React.useState(""),
6793
+ imagePreviewUrl = _useState[0],
6794
+ setImagePreviewUrl = _useState[1];
6795
+
6796
+ var imageStyle = {
6797
+ maxWidth: maxWidth || "100%",
6798
+ maxHeight: maxHeight || "100%"
6799
+ };
6800
+ var imageSrc = imagePreviewUrl || getFileUrl(fileName);
6801
+
6802
+ var handleImageChange = function handleImageChange(e) {
6803
+ e.preventDefault();
6804
+ var reader = new FileReader();
6805
+ var newFile = e.target.files[0];
6806
+
6807
+ if (newFile.size > MAX_FILE_SIZE) {
6808
+ dispatch(setAlert({
6809
+ type: "danger",
6810
+ message: "File can't be larger than 2MB"
6811
+ }));
6812
+ return;
6813
+ }
6814
+
6815
+ reader.onloadend = function () {
6816
+ setFile(newFile);
6817
+ setImagePreviewUrl(reader.result);
6818
+ };
6819
+
6820
+ if (newFile) {
6821
+ reader.readAsDataURL(newFile);
6822
+ }
6823
+
6824
+ !!onAddImage && onAddImage();
6825
+ };
6826
+
6827
+ var imagePreviewContainer = imagePreviewUrl || fileName ? React__default.createElement("img", {
6828
+ style: imageStyle,
6829
+ src: imageSrc,
6830
+ alt: "image"
6831
+ }) : null;
6832
+ return React__default.createElement("div", {
6833
+ className: "mb-2"
6834
+ }, React__default.createElement(reactstrap.Form, {
6835
+ className: "mb-2"
6836
+ }, React__default.createElement(reactstrap.Input, {
6837
+ className: "d-none",
6838
+ type: "file",
6839
+ id: "uploadFile",
6840
+ onChange: handleImageChange,
6841
+ accept: "image/*"
6842
+ }), React__default.createElement("div", {
6843
+ className: "d-flex align-items-center"
6844
+ }, React__default.createElement(reactstrap.Label, {
6845
+ htmlFor: "uploadFile",
6846
+ role: "button",
6847
+ tabIndex: 0,
6848
+ className: styles["input-file-label"]
6849
+ }, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
6850
+ className: "fa fa-paperclip mr-1",
6851
+ "aria-hidden": "true"
6852
+ }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
6853
+ size: "sm",
6854
+ color: "danger",
6855
+ className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
6856
+ onClick: function onClick() {
6857
+ setImagePreviewUrl(null);
6858
+ onDelete && onDelete();
6859
+ }
6860
+ }, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
6861
+ };
6777
6862
 
6778
6863
  var USER_URL$1 = BASE_URL + "/api/user";
6779
6864
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
@@ -6806,38 +6891,54 @@ var switchAccountUser = function switchAccountUser(id) {
6806
6891
  return api.post(EDU_USER_URL + "/switch-user/" + id);
6807
6892
  };
6808
6893
 
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";
6894
+ var initValue$3 = {
6895
+ id: "",
6896
+ firstName: "",
6897
+ lastName: "",
6898
+ email: "",
6899
+ dateOfBirth: "",
6900
+ roles: [],
6901
+ isActive: true,
6902
+ profileImageFileName: ""
6903
+ };
6904
+ var USER_LIST_URL = "/admin/user";
6905
+ var TITLE$7 = "User detail";
6818
6906
 
6819
- var useUserList = function useUserList() {
6907
+ var useUserDetail = function useUserDetail(id) {
6908
+ var dispatch = reactRedux.useDispatch();
6820
6909
  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
- });
6829
6910
 
6830
- var _useFilters = useFilters(),
6831
- filters = _useFilters.filters,
6832
- changeFilters = _useFilters.changeFilters;
6911
+ var _useState = React.useState(initValue$3),
6912
+ userDetail = _useState[0],
6913
+ setUserDetail = _useState[1];
6833
6914
 
6834
- var _useState = React.useState(!!queryName ? queryName : ""),
6835
- fullName = _useState[0],
6836
- setFullName = _useState[1];
6915
+ var _useState2 = React.useState(null),
6916
+ file = _useState2[0],
6917
+ setFile = _useState2[1];
6837
6918
 
6838
- var isDistrict = window.location.host.includes("-district");
6839
- var dispatch = reactRedux.useDispatch();
6840
- var getData = React.useCallback(function (fullName) {
6919
+ var _useState3 = React.useState(false),
6920
+ edited = _useState3[0],
6921
+ setEdited = _useState3[1];
6922
+
6923
+ var setEditedTrue = function setEditedTrue() {
6924
+ try {
6925
+ localStorage.setItem(window.location.href, "true");
6926
+ setEdited(true);
6927
+ return Promise.resolve();
6928
+ } catch (e) {
6929
+ return Promise.reject(e);
6930
+ }
6931
+ };
6932
+
6933
+ React.useEffect(function () {
6934
+ document.title = TITLE$7;
6935
+ setEdited(false);
6936
+ if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
6937
+ }, []);
6938
+ React.useEffect(function () {
6939
+ !!id && getData();
6940
+ }, [id]);
6941
+ var getData = React.useCallback(function () {
6841
6942
  try {
6842
6943
  var _temp3 = function _temp3() {
6843
6944
  dispatch(setLoading(false));
@@ -6846,22 +6947,14 @@ var useUserList = function useUserList() {
6846
6947
  dispatch(setLoading(true));
6847
6948
 
6848
6949
  var _temp4 = _catch(function () {
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;
6855
-
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
- }
6950
+ return Promise.resolve(getById$3(id)).then(function (res) {
6951
+ var _res$data;
6860
6952
 
6861
- dispatch(setUserList({
6862
- userList: items,
6863
- totalItems: totalItems
6953
+ setUserDetail(_extends({}, res.data, {
6954
+ dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), DATE_FORMAT),
6955
+ roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
6864
6956
  }));
6957
+ document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
6865
6958
  });
6866
6959
  }, function (err) {
6867
6960
  var _err$response, _err$response$data;
@@ -6876,688 +6969,171 @@ var useUserList = function useUserList() {
6876
6969
  } catch (e) {
6877
6970
  return Promise.reject(e);
6878
6971
  }
6879
- }, [dispatch, filters]);
6880
- React.useEffect(function () {
6881
- document.title = TITLE$7;
6972
+ }, [id]);
6973
+ var backToList = React.useCallback(function (user) {
6974
+ !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
6882
6975
  }, []);
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));
6893
-
6976
+ var confirmData = React.useCallback(function (data) {
6894
6977
  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
6978
+ var _temp9 = function _temp9() {
6979
+ dispatch(setLoading(false));
6980
+ };
6981
+
6982
+ dispatch(setLoading(true));
6983
+
6984
+ var _temp10 = _catch(function () {
6985
+ function _temp6() {
6986
+ var next = !!id ? update$5 : create$5;
6987
+ !id && delete data.id;
6988
+ return Promise.resolve(next(data)).then(function (result) {
6989
+ if (!!result) {
6990
+ getById$3(result.data.id).then(function (e) {
6991
+ backToList(e.data.fullName);
6908
6992
  });
6909
- });
6910
- } catch (e) {
6911
- return Promise.reject(e);
6912
- }
6913
- }
6914
- }));
6915
- } catch (err) {
6916
- var _err$response2, _err$response2$data;
6993
+ }
6917
6994
 
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
- }));
6922
- }
6995
+ if (!id) {
6996
+ alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
6997
+ }
6923
6998
 
6924
- dispatch(setLoading(false));
6925
- }, [filters]);
6999
+ dispatch(setAlert({
7000
+ type: "success",
7001
+ message: (!!id ? "Update" : "Create") + " user successfully"
7002
+ }));
7003
+ });
7004
+ }
6926
7005
 
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
- }));
7006
+ var _temp5 = function () {
7007
+ if (!!file) {
7008
+ var formData = new FormData();
7009
+ var name = file.name;
7010
+ formData.append("file", file, name);
7011
+ return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
7012
+ var _res$data2;
6946
7013
 
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);
6961
- }
6962
- };
7014
+ var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
7015
+ data.profileImageFileName = imageUrl;
7016
+ });
7017
+ }
7018
+ }();
6963
7019
 
6964
- var swicthUser = React.useCallback(function (id) {
6965
- try {
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
- };
7020
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
7021
+ }, function (err) {
7022
+ var _err$response2, _err$response2$data;
6978
7023
 
6979
- dispatch(setLoading(true));
7024
+ dispatch(setAlert({
7025
+ type: "danger",
7026
+ message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message
7027
+ }));
7028
+ });
6980
7029
 
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;
7030
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7031
+ } catch (e) {
7032
+ return Promise.reject(e);
7033
+ }
7034
+ }, [id, file]);
6993
7035
 
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
- });
7036
+ var confirmChangePassword = function confirmChangePassword(data) {
7037
+ try {
7038
+ var _temp13 = function _temp13() {
7039
+ dispatch(setLoading(false));
7040
+ };
6999
7041
 
7000
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7001
- } catch (e) {
7002
- return Promise.reject(e);
7003
- }
7004
- }
7042
+ dispatch(setLoading(true));
7043
+
7044
+ var _temp14 = _catch(function () {
7045
+ return Promise.resolve(changePassword(data)).then(function () {
7046
+ dispatch(setAlert({
7047
+ type: "success",
7048
+ message: "Change password successfully"
7005
7049
  }));
7006
7050
  });
7007
- }, function (err) {
7008
- var _err$response4, _err$response4$data;
7051
+ }, function (e) {
7052
+ var _e$response, _e$response$data;
7009
7053
 
7010
7054
  dispatch(setAlert({
7011
7055
  type: "danger",
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
7056
+ message: ((_e$response = e.response) === null || _e$response === void 0 ? void 0 : (_e$response$data = _e$response.data) === null || _e$response$data === void 0 ? void 0 : _e$response$data.title) || e.message
7013
7057
  }));
7014
7058
  });
7015
7059
 
7016
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7060
+ return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7017
7061
  } catch (e) {
7018
7062
  return Promise.reject(e);
7019
7063
  }
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
7064
  };
7026
7065
 
7027
- return {
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
7037
- };
7038
- };
7066
+ var forgotPasswordRequest = React.useCallback(function (data) {
7067
+ try {
7068
+ var _temp17 = function _temp17() {
7069
+ dispatch(setLoading(false));
7070
+ };
7039
7071
 
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;
7072
+ dispatch(setLoading(true));
7046
7073
 
7047
- var _useState = React.useState(initValue),
7048
- searchString = _useState[0],
7049
- setSearchString = _useState[1];
7074
+ var _temp18 = _catch(function () {
7075
+ return Promise.resolve(forgotChangePassword(data)).then(function () {
7076
+ dispatch(setAlert({
7077
+ type: "success",
7078
+ message: "Send forgot password link successfully"
7079
+ }));
7080
+ });
7081
+ }, function (err) {
7082
+ var _err$response3, _err$response3$data;
7050
7083
 
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
7066
- });
7067
- };
7084
+ dispatch(setAlert({
7085
+ type: "danger",
7086
+ message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message || "Error occured"
7087
+ }));
7088
+ });
7068
7089
 
7069
- SearchBox.defaultProps = {
7070
- placeholder: "Type something to search",
7071
- className: "",
7072
- style: {}
7090
+ return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7091
+ } catch (e) {
7092
+ return Promise.reject(e);
7093
+ }
7094
+ }, []);
7095
+ return {
7096
+ userDetail: userDetail,
7097
+ backToList: backToList,
7098
+ confirmData: confirmData,
7099
+ file: file,
7100
+ setFile: setFile,
7101
+ edited: edited,
7102
+ setEdited: setEdited,
7103
+ setEditedTrue: setEditedTrue,
7104
+ confirmChangePassword: confirmChangePassword,
7105
+ forgotPasswordRequest: forgotPasswordRequest
7106
+ };
7073
7107
  };
7074
- var SearchBox$1 = React.memo(SearchBox);
7075
7108
 
7076
- var searchInputStyle = {
7077
- height: 38
7078
- };
7109
+ var userSchema = yup.object({
7110
+ firstName: yup.string().required("First name is required"),
7111
+ lastName: yup.string().required("Last name is required"),
7112
+ dateOfBirth: yup.string().required("Date of birth is required"),
7113
+ email: yup.string().email("Email is invalid").required("Email is required"),
7114
+ roles: yup.array().of(yup.string()).min(1, "Role is required")
7115
+ });
7079
7116
 
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
- };
7117
+ var changePasswordSchema = yup.object({
7118
+ oldPassword: yup.string().required("Current password is required"),
7119
+ newPassword: yup.string().required("New password is required"),
7120
+ confirmedNewPassword: yup.string().required("Confirm password is required")
7121
+ });
7100
7122
 
7101
- SearchBoxContainer.defaultProps = {
7102
- placeholder: "Type something to search"
7103
- };
7123
+ var CREATE_USER = "create_user";
7124
+ var EDIT_USER_HEADER = "edit_user";
7125
+ var CHANGE_PASSWORD$1 = "change_password";
7104
7126
 
7105
- var utcToLocalTime = (function (time, FORMAT) {
7106
- if (time === DATE_MIN_VALUE) return "";
7127
+ var UserDetail = function UserDetail() {
7128
+ var _useParams = reactRouterDom.useParams(),
7129
+ id = _useParams.id;
7107
7130
 
7108
- try {
7109
- return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7110
- } catch (_unused) {
7111
- return "";
7112
- }
7113
- });
7131
+ var user = reactRedux.useSelector(function (state) {
7132
+ return state.common.user;
7133
+ });
7114
7134
 
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;
7135
+ var _useTranslation = reactI18next.useTranslation(),
7136
+ t = _useTranslation.t;
7561
7137
 
7562
7138
  var _useUserDetail = useUserDetail(id),
7563
7139
  userDetail = _useUserDetail.userDetail,
@@ -8019,6 +7595,42 @@ var CreatableSelector = function CreatableSelector(props) {
8019
7595
  });
8020
7596
  };
8021
7597
 
7598
+ var SearchBox = function SearchBox(_ref) {
7599
+ var initValue = _ref.initValue,
7600
+ onSearch = _ref.onSearch,
7601
+ placeholder = _ref.placeholder,
7602
+ className = _ref.className,
7603
+ style = _ref.style;
7604
+
7605
+ var _useState = React.useState(initValue),
7606
+ searchString = _useState[0],
7607
+ setSearchString = _useState[1];
7608
+
7609
+ React.useEffect(function () {
7610
+ setSearchString(initValue);
7611
+ }, [initValue]);
7612
+ var onKeyUp = React.useCallback(function (e) {
7613
+ e.key === "Enter" && onSearch(searchString);
7614
+ }, [searchString, onSearch]);
7615
+ return React__default.createElement(reactstrap.Input, {
7616
+ placeholder: placeholder,
7617
+ value: searchString,
7618
+ onChange: function onChange(e) {
7619
+ return setSearchString(e.target.value);
7620
+ },
7621
+ onKeyUp: onKeyUp,
7622
+ className: className,
7623
+ style: style
7624
+ });
7625
+ };
7626
+
7627
+ SearchBox.defaultProps = {
7628
+ placeholder: "Type something to search",
7629
+ className: "",
7630
+ style: {}
7631
+ };
7632
+ var SearchBox$1 = React.memo(SearchBox);
7633
+
8022
7634
  var QuestionTypeSelector = function QuestionTypeSelector(props) {
8023
7635
  var id = props.id;
8024
7636
  var initValue = !!id ? QUESTION_TYPES_OPTIONS.find(function (option) {
@@ -8374,13 +7986,23 @@ var NotificationStatusSelector = function NotificationStatusSelector(_ref) {
8374
7986
 
8375
7987
  var NotificationStatusSelector$1 = React.memo(NotificationStatusSelector);
8376
7988
 
7989
+ var utcToLocalTime = (function (time, FORMAT) {
7990
+ if (time === DATE_MIN_VALUE) return "";
7991
+
7992
+ try {
7993
+ return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7994
+ } catch (_unused) {
7995
+ return "";
7996
+ }
7997
+ });
7998
+
8377
7999
  var defaultFilters = {
8378
8000
  currentPage: 1,
8379
8001
  pageSize: 30,
8380
8002
  searchString: "",
8381
8003
  isRead: false
8382
8004
  };
8383
- var TITLE$9 = "Notification list";
8005
+ var TITLE$8 = "Notification list";
8384
8006
  var NOTIFICATION_CHANNEL$1 = "NOTIFICATION_CHANNEL";
8385
8007
  var NEW_NOTIFICATION$1 = "NEW_NOTIFICATION";
8386
8008
 
@@ -8505,7 +8127,7 @@ var useNotificationList = function useNotificationList() {
8505
8127
  }
8506
8128
  }, [filters]);
8507
8129
  React.useEffect(function () {
8508
- document.title = TITLE$9;
8130
+ document.title = TITLE$8;
8509
8131
  }, []);
8510
8132
  React.useEffect(function () {
8511
8133
  getData();
@@ -8590,7 +8212,7 @@ var useNotificationList = function useNotificationList() {
8590
8212
  };
8591
8213
  };
8592
8214
 
8593
- var header$3 = "Notification list";
8215
+ var header$2 = "Notification list";
8594
8216
  var ICON_SIZE = 20;
8595
8217
 
8596
8218
  var NotificationList = function NotificationList() {
@@ -8611,7 +8233,7 @@ var NotificationList = function NotificationList() {
8611
8233
  }
8612
8234
  }, React__default.createElement("h5", {
8613
8235
  className: "mb-2"
8614
- }, header$3), React__default.createElement(reactstrap.Row, {
8236
+ }, header$2), React__default.createElement(reactstrap.Row, {
8615
8237
  className: "my-2"
8616
8238
  }, React__default.createElement(reactstrap.Col, {
8617
8239
  md: 8
@@ -8711,6 +8333,35 @@ var NotificationList = function NotificationList() {
8711
8333
  }))));
8712
8334
  };
8713
8335
 
8336
+ var searchInputStyle = {
8337
+ height: 38
8338
+ };
8339
+
8340
+ var SearchBoxContainer = function SearchBoxContainer(_ref) {
8341
+ var text = _ref.text,
8342
+ initValue = _ref.initValue,
8343
+ onClick = _ref.onClick,
8344
+ onSearch = _ref.onSearch,
8345
+ placeholder = _ref.placeholder;
8346
+ return React__default.createElement("div", {
8347
+ className: "d-flex align-items-center"
8348
+ }, React__default.createElement("div", null, React__default.createElement(AddButton, {
8349
+ text: text,
8350
+ onClick: onClick
8351
+ })), React__default.createElement("div", {
8352
+ className: "flex-grow-1 ml-2"
8353
+ }, React__default.createElement(SearchBox$1, {
8354
+ initValue: initValue,
8355
+ onSearch: onSearch,
8356
+ placeholder: placeholder,
8357
+ style: searchInputStyle
8358
+ })));
8359
+ };
8360
+
8361
+ SearchBoxContainer.defaultProps = {
8362
+ placeholder: "Type something to search"
8363
+ };
8364
+
8714
8365
  var CustomTabs = function CustomTabs(props) {
8715
8366
  var history = reactRouterDom.useHistory();
8716
8367
  var location = reactRouterDom.useLocation();
@@ -9115,7 +8766,7 @@ var get$8 = function get(filter) {
9115
8766
  });
9116
8767
  };
9117
8768
 
9118
- var TITLE$a = "Gallery";
8769
+ var TITLE$9 = "Gallery";
9119
8770
  var defaultFilter = {
9120
8771
  searchString: ""
9121
8772
  };
@@ -9352,7 +9003,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
9352
9003
  }
9353
9004
  }, [dispatch, filters]);
9354
9005
  React.useEffect(function () {
9355
- document.title = TITLE$a;
9006
+ document.title = TITLE$9;
9356
9007
  dispatch(setTargetMedia({
9357
9008
  targetMedia: undefined
9358
9009
  }));
@@ -9544,7 +9195,7 @@ var MediaDetail = function MediaDetail(_ref) {
9544
9195
 
9545
9196
  var MediaDetail$1 = React__default.memo(MediaDetail);
9546
9197
 
9547
- var header$4 = "Gallery";
9198
+ var header$3 = "Gallery";
9548
9199
 
9549
9200
  var GalleryList = function GalleryList(_ref) {
9550
9201
  var isLibrary = _ref.isLibrary;
@@ -9555,7 +9206,7 @@ var GalleryList = function GalleryList(_ref) {
9555
9206
  className: "fadeIn animated"
9556
9207
  }, !isLibrary && React__default.createElement("h5", {
9557
9208
  className: "mb-2"
9558
- }, header$4), React__default.createElement(reactstrap.Row, {
9209
+ }, header$3), React__default.createElement(reactstrap.Row, {
9559
9210
  className: "mb-2"
9560
9211
  }, React__default.createElement(reactstrap.Col, {
9561
9212
  md: 8
@@ -10181,6 +9832,9 @@ var commonReducer$8 = toolkit.createReducer(initialState$e, function (builder) {
10181
9832
  });
10182
9833
  });
10183
9834
 
9835
+ var setUserList = toolkit.createAction("users/setUserList");
9836
+ var setStudentList = toolkit.createAction("users/setStudentList");
9837
+
10184
9838
  var initialState$f = {
10185
9839
  userList: [],
10186
9840
  totalItems: 0,
@@ -10700,193 +10354,545 @@ var dataPlayer = toolkit.createReducer(initialState$v, function (builder) {
10700
10354
  return response.questionId === questionId;
10701
10355
  });
10702
10356
 
10703
- if (!existedResponse) {
10704
- questionResponseCloner.push({
10705
- questionId: questionId,
10706
- text: text
10707
- });
10708
- } else {
10709
- existedResponse.text = text;
10357
+ if (!existedResponse) {
10358
+ questionResponseCloner.push({
10359
+ questionId: questionId,
10360
+ text: text
10361
+ });
10362
+ } else {
10363
+ existedResponse.text = text;
10364
+ }
10365
+
10366
+ return _extends({}, state, {
10367
+ questionResponse: questionResponseCloner
10368
+ });
10369
+ }).addCase(reset, function (_state, _action) {
10370
+ return initialState$v;
10371
+ });
10372
+ });
10373
+
10374
+ var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10375
+
10376
+ var initialState$w = {
10377
+ certificateList: [],
10378
+ totalItems: 0
10379
+ };
10380
+ var commonReducer$f = toolkit.createReducer(initialState$w, function (builder) {
10381
+ builder.addCase(setCertificateList, function (state, action) {
10382
+ state.certificateList = action.payload.certificateList;
10383
+ state.totalItems = action.payload.totalItems;
10384
+ }).addCase(reset, function (_state, _action) {
10385
+ return initialState$w;
10386
+ });
10387
+ });
10388
+
10389
+ var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10390
+
10391
+ var initialState$x = {
10392
+ improveMyClassList: []
10393
+ };
10394
+ var commonReducer$g = toolkit.createReducer(initialState$x, function (builder) {
10395
+ builder.addCase(setImproveMyClass, function (state, action) {
10396
+ state.improveMyClassList = action.payload;
10397
+ }).addCase(reset, function (_state, _action) {
10398
+ return initialState$x;
10399
+ });
10400
+ });
10401
+
10402
+ var setFilterWidget = toolkit.createAction("setFilterWidget");
10403
+
10404
+ var initialState$y = {
10405
+ filterWidget: "Year"
10406
+ };
10407
+ var widgetReducer = toolkit.createReducer(initialState$y, function (builder) {
10408
+ builder.addCase(setFilterWidget, function (state, action) {
10409
+ state.filterWidget = action.payload.filterWidget;
10410
+ }).addCase(reset, function (_state, _action) {
10411
+ return initialState$y;
10412
+ });
10413
+ });
10414
+
10415
+ var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10416
+
10417
+ var initialState$z = {
10418
+ bandScoreList: [],
10419
+ totalItems: 0
10420
+ };
10421
+ var commonReducer$h = toolkit.createReducer(initialState$z, function (builder) {
10422
+ builder.addCase(setBandScoreList, function (state, action) {
10423
+ state.bandScoreList = action.payload.bandScoreList;
10424
+ state.totalItems = action.payload.totalItems;
10425
+ }).addCase(reset, function (_state, _action) {
10426
+ return initialState$z;
10427
+ });
10428
+ });
10429
+
10430
+ var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10431
+
10432
+ var initialState$A = {
10433
+ schoolBlankDayList: [],
10434
+ totalItems: 0
10435
+ };
10436
+ var commonReducer$i = toolkit.createReducer(initialState$A, function (builder) {
10437
+ builder.addCase(setSchoolBlankDayList, function (state, action) {
10438
+ state.schoolBlankDayList = action.payload.schoolBlankDayList;
10439
+ state.totalItems = action.payload.totalItems;
10440
+ }).addCase(reset, function (_state, _action) {
10441
+ return initialState$A;
10442
+ });
10443
+ });
10444
+
10445
+ var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10446
+
10447
+ var initialState$B = {
10448
+ studentIdSelectedByTeacher: 0
10449
+ };
10450
+ var navMobileReducer = toolkit.createReducer(initialState$B, function (builder) {
10451
+ builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10452
+ state.studentIdSelectedByTeacher = action.payload;
10453
+ }).addCase(reset, function (_state, _action) {
10454
+ return initialState$B;
10455
+ });
10456
+ });
10457
+
10458
+ var rootReducer = combineReducers({
10459
+ common: commonReducer,
10460
+ classes: classReducer,
10461
+ conferenceRubrics: conferenceRubricReducer,
10462
+ faqs: commonReducer$1,
10463
+ skills: commonReducer$2,
10464
+ emailTemplate: emailTemplateReducer,
10465
+ suggestionBank: suggestionBankReducer,
10466
+ learningStrategy: learningStrategyReducer,
10467
+ subjects: commonReducer$3,
10468
+ learningSupportCategories: commonReducer$4,
10469
+ questionBank: questionBankReducer,
10470
+ badges: commonReducer$5,
10471
+ semester: commonReducer$6,
10472
+ goalExamples: commonReducer$8,
10473
+ users: commonReducer$9,
10474
+ reflections: reflectionReducer,
10475
+ reflectionResults: reflectionReducer$1,
10476
+ feedbacks: commonReducer$a,
10477
+ assessments: commonReducer$b,
10478
+ questionByCategory: questionCategoryReducer,
10479
+ mailCategory: questionBankReducer$1,
10480
+ questionCate: questionCateReducer,
10481
+ notification: questionBankReducer$2,
10482
+ myStudent: commonReducer$c,
10483
+ assignments: commonReducer$7,
10484
+ assistants: assistantReducer,
10485
+ sesstionTemplates: sessionTemplateReducer,
10486
+ sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10487
+ tutorialScreens: tutorialScreenReducer,
10488
+ customAlerts: commonReducer$d,
10489
+ gallery: commonReducer$e,
10490
+ dashboard: dashboardReducer,
10491
+ sessionPlayer: sessionPlayerReducer,
10492
+ dataPlayer: dataPlayer,
10493
+ certificate: commonReducer$f,
10494
+ improveMyClass: commonReducer$g,
10495
+ widget: widgetReducer,
10496
+ bandScores: commonReducer$h,
10497
+ schoolBlankDays: commonReducer$i,
10498
+ navMobileReducer: navMobileReducer
10499
+ });
10500
+
10501
+ var store = toolkit.configureStore({
10502
+ reducer: rootReducer,
10503
+ middleware: function middleware(getDefaultMiddleware) {
10504
+ return getDefaultMiddleware({
10505
+ serializableCheck: false
10506
+ }).concat(logger);
10507
+ }
10508
+ });
10509
+
10510
+ var isInViewport = function isInViewport(el) {
10511
+ var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10512
+ return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10513
+ };
10514
+
10515
+ var debounce = function debounce(callback, wait) {
10516
+ var timeout = null;
10517
+ return function () {
10518
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10519
+ args[_key] = arguments[_key];
10710
10520
  }
10711
10521
 
10712
- return _extends({}, state, {
10713
- questionResponse: questionResponseCloner
10714
- });
10715
- }).addCase(reset, function (_state, _action) {
10716
- return initialState$v;
10717
- });
10718
- });
10522
+ var next = function next() {
10523
+ return callback.apply(void 0, args);
10524
+ };
10719
10525
 
10720
- var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10526
+ clearTimeout(timeout);
10527
+ timeout = setTimeout(next, wait);
10528
+ };
10529
+ };
10721
10530
 
10722
- var initialState$w = {
10723
- certificateList: [],
10724
- totalItems: 0
10531
+ var getTextFromHTML = function getTextFromHTML(htmlString) {
10532
+ var p = document.createElement("p");
10533
+ p.innerHTML = htmlString;
10534
+ var text = p.innerText;
10535
+ p.remove();
10536
+ return text;
10725
10537
  };
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
- });
10538
+
10539
+ var generateRandomString = (function () {
10540
+ return (Math.random() + 1).toString(36).substring(7);
10733
10541
  });
10734
10542
 
10735
- var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10543
+ var amplitudeClient = amplitude.getInstance();
10736
10544
 
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;
10545
+ var USER_URL$2 = "/admin/user";
10546
+ var CREATE_USER_URL = "/admin/create-user";
10547
+ var TITLE$a = "User list";
10548
+ var HOMEPAGE_TEACHER$1 = "/home";
10549
+ var HOMEPAGE_STUDENT$1 = "/home";
10550
+ var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
10551
+ var HOMEPAGE_PARENT$1 = "/parent";
10552
+ var HOMEPAGE_DISTRICT$1 = "/admin/schools";
10553
+ var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
10554
+
10555
+ var useUserList = function useUserList() {
10556
+ var history = reactRouterDom.useHistory();
10557
+ var query = new URLSearchParams(location.search);
10558
+ var queryName = query.get("query");
10559
+ var userList = reactRedux.useSelector(function (state) {
10560
+ return state.users.userList;
10561
+ });
10562
+ var totalItems = reactRedux.useSelector(function (state) {
10563
+ return state.users.totalItems;
10745
10564
  });
10746
- });
10747
10565
 
10748
- var setFilterWidget = toolkit.createAction("setFilterWidget");
10566
+ var _useFilters = useFilters(),
10567
+ filters = _useFilters.filters,
10568
+ changeFilters = _useFilters.changeFilters;
10749
10569
 
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
- });
10570
+ var _useState = React.useState(!!queryName ? queryName : ""),
10571
+ fullName = _useState[0],
10572
+ setFullName = _useState[1];
10760
10573
 
10761
- var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10574
+ var isDistrict = window.location.host.includes("-district");
10575
+ var dispatch = reactRedux.useDispatch();
10576
+ var getData = React.useCallback(function (fullName) {
10577
+ try {
10578
+ var _temp3 = function _temp3() {
10579
+ dispatch(setLoading(false));
10580
+ };
10762
10581
 
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
- });
10582
+ dispatch(setLoading(true));
10775
10583
 
10776
- var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10584
+ var _temp4 = _catch(function () {
10585
+ return Promise.resolve(fullName ? get$5(_extends({}, filters, {
10586
+ searchString: fullName
10587
+ })) : get$5(filters)).then(function (res) {
10588
+ var _res$data = res.data,
10589
+ items = _res$data.items,
10590
+ totalItems = _res$data.totalItems;
10777
10591
 
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
- });
10592
+ for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
10593
+ var user = _step.value;
10594
+ user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
10595
+ }
10596
+
10597
+ dispatch(setUserList({
10598
+ userList: items,
10599
+ totalItems: totalItems
10600
+ }));
10601
+ });
10602
+ }, function (err) {
10603
+ var _err$response, _err$response$data;
10604
+
10605
+ dispatch(setAlert({
10606
+ type: "danger",
10607
+ message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
10608
+ }));
10609
+ });
10610
+
10611
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
10612
+ } catch (e) {
10613
+ return Promise.reject(e);
10614
+ }
10615
+ }, [dispatch, filters]);
10616
+ React.useEffect(function () {
10617
+ document.title = TITLE$a;
10618
+ }, []);
10619
+ React.useEffect(function () {
10620
+ if (!!fullName) {
10621
+ getData(fullName);
10622
+ setFullName(null);
10623
+ } else {
10624
+ getData();
10625
+ }
10626
+ }, [filters]);
10627
+ var removeData = React.useCallback(function (id) {
10628
+ dispatch(setLoading(true));
10629
+
10630
+ try {
10631
+ dispatch(setModal({
10632
+ isOpen: true,
10633
+ type: "warning",
10634
+ message: "Do you want to remove this user?",
10635
+ onConfirm: function () {
10636
+ try {
10637
+ return Promise.resolve(remove$3(id)).then(function () {
10638
+ dispatch(setAlert({
10639
+ type: "success",
10640
+ message: "Remove user successfully"
10641
+ }));
10642
+ changeFilters({
10643
+ currentPage: 1
10644
+ });
10645
+ });
10646
+ } catch (e) {
10647
+ return Promise.reject(e);
10648
+ }
10649
+ }
10650
+ }));
10651
+ } catch (err) {
10652
+ var _err$response2, _err$response2$data;
10653
+
10654
+ dispatch(setAlert({
10655
+ type: "danger",
10656
+ message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message
10657
+ }));
10658
+ }
10659
+
10660
+ dispatch(setLoading(false));
10661
+ }, [filters]);
10662
+
10663
+ var redirectLoginUser = function redirectLoginUser(res) {
10664
+ var _res$data2 = res.data,
10665
+ token = _res$data2.token,
10666
+ id = _res$data2.id,
10667
+ firstName = _res$data2.firstName,
10668
+ lastName = _res$data2.lastName,
10669
+ roles = _res$data2.roles,
10670
+ email = _res$data2.email,
10671
+ profileImageFileName = _res$data2.profileImageFileName;
10672
+ localStorage.setItem(ACCESS_TOKEN, token);
10673
+ localStorage.removeItem(NOTIFICATION_ALERT_KEY);
10674
+ dispatch(setUser({
10675
+ id: id,
10676
+ firstName: firstName,
10677
+ lastName: lastName,
10678
+ roles: roles,
10679
+ email: email,
10680
+ profileImageFileName: profileImageFileName
10681
+ }));
10682
+
10683
+ if (isDistrict) {
10684
+ history.push(HOMEPAGE_DISTRICT$1);
10685
+ } else if (roles.includes("Admin")) {
10686
+ history.push(HOMEPAGE_ADMIN$1);
10687
+ } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
10688
+ history.push(HOMEPAGE_TEACHER$1);
10689
+ } else if (roles.includes("Student")) {
10690
+ history.push(HOMEPAGE_STUDENT$1);
10691
+ } else if (roles.includes("Parent")) {
10692
+ history.push(HOMEPAGE_PARENT$1);
10693
+ } else if (roles.includes("EduTeacher")) {
10694
+ history.push(HOMEPAGE_EDU_TEACHER$1);
10695
+ } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
10696
+ history.push(HOMEPAGE_TEACHER$1);
10697
+ }
10698
+ };
10699
+
10700
+ var swicthUser = React.useCallback(function (id) {
10701
+ try {
10702
+ var _temp6 = _catch(function () {
10703
+ return Promise.resolve(switchAccountUser(id)).then(function (res) {
10704
+ var data = res.data;
10705
+ dispatch(setModal({
10706
+ isOpen: true,
10707
+ type: "warning",
10708
+ message: "Do you want to impersonate this user?",
10709
+ onConfirm: function () {
10710
+ try {
10711
+ var _temp9 = function _temp9() {
10712
+ dispatch(setLoading(false));
10713
+ };
10790
10714
 
10791
- var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10715
+ dispatch(setLoading(true));
10792
10716
 
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
- });
10717
+ var _temp10 = _catch(function () {
10718
+ var req = {
10719
+ email: data.email,
10720
+ password: "default",
10721
+ accessToken: data.token
10722
+ };
10723
+ return Promise.resolve(logIn(req)).then(function (res) {
10724
+ localStorage.clear();
10725
+ redirectLoginUser(res);
10726
+ });
10727
+ }, function (err) {
10728
+ var _err$response3, _err$response3$data;
10803
10729
 
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
- });
10730
+ setAlert({
10731
+ type: "danger",
10732
+ message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message
10733
+ });
10734
+ });
10846
10735
 
10847
- var store = toolkit.configureStore({
10848
- reducer: rootReducer,
10849
- middleware: function middleware(getDefaultMiddleware) {
10850
- return getDefaultMiddleware({
10851
- serializableCheck: false
10852
- }).concat(logger);
10853
- }
10854
- });
10736
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
10737
+ } catch (e) {
10738
+ return Promise.reject(e);
10739
+ }
10740
+ }
10741
+ }));
10742
+ });
10743
+ }, function (err) {
10744
+ var _err$response4, _err$response4$data;
10855
10745
 
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
- };
10746
+ dispatch(setAlert({
10747
+ type: "danger",
10748
+ message: ((_err$response4 = err.response) === null || _err$response4 === void 0 ? void 0 : (_err$response4$data = _err$response4.data) === null || _err$response4$data === void 0 ? void 0 : _err$response4$data.title) || err.message
10749
+ }));
10750
+ });
10860
10751
 
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];
10752
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
10753
+ } catch (e) {
10754
+ return Promise.reject(e);
10866
10755
  }
10756
+ }, [filters]);
10867
10757
 
10868
- var next = function next() {
10869
- return callback.apply(void 0, args);
10870
- };
10758
+ var reDirectDetailPage = function reDirectDetailPage(id) {
10759
+ var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
10760
+ history.push(url);
10761
+ };
10871
10762
 
10872
- clearTimeout(timeout);
10873
- timeout = setTimeout(next, wait);
10763
+ return {
10764
+ userList: userList,
10765
+ totalItems: totalItems,
10766
+ filters: filters,
10767
+ queryName: queryName,
10768
+ getData: getData,
10769
+ removeData: removeData,
10770
+ changeFilters: changeFilters,
10771
+ reDirectDetailPage: reDirectDetailPage,
10772
+ swicthUser: swicthUser
10874
10773
  };
10875
10774
  };
10876
10775
 
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;
10883
- };
10776
+ var header$4 = "User";
10884
10777
 
10885
- var generateRandomString = (function () {
10886
- return (Math.random() + 1).toString(36).substring(7);
10887
- });
10778
+ var UserList = function UserList() {
10779
+ var _useUserList = useUserList(),
10780
+ queryName = _useUserList.queryName,
10781
+ userList = _useUserList.userList,
10782
+ totalItems = _useUserList.totalItems,
10783
+ filters = _useUserList.filters,
10784
+ removeData = _useUserList.removeData,
10785
+ changeFilters = _useUserList.changeFilters,
10786
+ reDirectDetailPage = _useUserList.reDirectDetailPage,
10787
+ swicthUser = _useUserList.swicthUser;
10888
10788
 
10889
- var amplitudeClient = amplitude.getInstance();
10789
+ var _useTranslation = reactI18next.useTranslation(),
10790
+ t = _useTranslation.t;
10791
+
10792
+ return React__default.createElement("div", {
10793
+ className: "fadeIn animated"
10794
+ }, React__default.createElement("h5", {
10795
+ className: "mb-2"
10796
+ }, t("" + header$4)), React__default.createElement(reactstrap.Row, {
10797
+ className: "my-2"
10798
+ }, React__default.createElement(reactstrap.Col, {
10799
+ md: 8
10800
+ }, React__default.createElement(SearchBoxContainer, {
10801
+ text: t("create_user"),
10802
+ onClick: function onClick() {
10803
+ return reDirectDetailPage();
10804
+ },
10805
+ initValue: !!queryName ? queryName : "",
10806
+ onSearch: function onSearch(searchString) {
10807
+ return changeFilters({
10808
+ searchString: searchString
10809
+ });
10810
+ },
10811
+ placeholder: t("type_something_to_search_by_user_name")
10812
+ })), React__default.createElement(reactstrap.Col, {
10813
+ md: 4,
10814
+ className: "d-flex justify-content-end align-items-center"
10815
+ }, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
10816
+ className: "mb-2"
10817
+ }, React__default.createElement(reactstrap.Col, {
10818
+ md: 12
10819
+ }, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
10820
+ bordered: true,
10821
+ hover: true,
10822
+ striped: true,
10823
+ responsive: true,
10824
+ size: "sm"
10825
+ }, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
10826
+ className: "align-top"
10827
+ }, t("name")), React__default.createElement("th", {
10828
+ className: "align-top"
10829
+ }, t("email")), React__default.createElement("th", {
10830
+ className: "align-top"
10831
+ }, t("age")), React__default.createElement("th", {
10832
+ className: "align-top"
10833
+ }, t("role")), React__default.createElement("th", {
10834
+ className: "align-top"
10835
+ }, t("active_status")), React__default.createElement("th", {
10836
+ className: "align-top"
10837
+ }, t("created_time")), React__default.createElement("th", {
10838
+ className: "text-center"
10839
+ }, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
10840
+ return React__default.createElement("tr", {
10841
+ key: record.id
10842
+ }, React__default.createElement("td", {
10843
+ className: "align-middle"
10844
+ }, React__default.createElement(LinkEditButton, {
10845
+ label: "" + record.fullName,
10846
+ onClick: function onClick() {
10847
+ return reDirectDetailPage(record.id);
10848
+ }
10849
+ })), React__default.createElement("td", {
10850
+ className: "align-middle"
10851
+ }, record.email), React__default.createElement("td", {
10852
+ className: "align-middle"
10853
+ }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
10854
+ className: "align-middle"
10855
+ }, !!record.roles && record.roles.join(", ")), React__default.createElement("td", {
10856
+ className: "align-middle"
10857
+ }, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
10858
+ className: "align-middle"
10859
+ }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
10860
+ className: "text-center align-middle"
10861
+ }, React__default.createElement(fa.FaUsersCog, {
10862
+ style: {
10863
+ fontSize: "18px",
10864
+ marginRight: "10px",
10865
+ cursor: "pointer"
10866
+ },
10867
+ onClick: function onClick() {
10868
+ return swicthUser(record.id);
10869
+ }
10870
+ }), React__default.createElement(DeleteButtonIcon, {
10871
+ onClick: function onClick() {
10872
+ return removeData(record.id);
10873
+ }
10874
+ })));
10875
+ })))) : React__default.createElement(EmptyDataAlert, {
10876
+ label: t("user")
10877
+ })), React__default.createElement(reactstrap.Col, {
10878
+ md: 12
10879
+ }, React__default.createElement(CustomPagination, {
10880
+ filters: filters,
10881
+ totalRecordCount: totalItems,
10882
+ changePageSize: function changePageSize(pageSize) {
10883
+ return changeFilters({
10884
+ pageSize: pageSize
10885
+ });
10886
+ },
10887
+ changePage: function changePage(currentPage) {
10888
+ return changeFilters({
10889
+ currentPage: currentPage
10890
+ });
10891
+ }
10892
+ }))));
10893
+ };
10894
+
10895
+ var amplitudeClient$1 = amplitude.getInstance();
10890
10896
 
10891
10897
  Object.defineProperty(exports, 'I18nextProvider', {
10892
10898
  enumerable: true,
@@ -10967,7 +10973,7 @@ exports.UploadFileButton = UploadFileButton;
10967
10973
  exports.UserDetail = UserDetail;
10968
10974
  exports.UserList = UserList;
10969
10975
  exports.addTab = addTab;
10970
- exports.amplitudeClient = amplitudeClient;
10976
+ exports.amplitudeClient = amplitudeClient$1;
10971
10977
  exports.answerQuestion = answerQuestion;
10972
10978
  exports.answerQuestionDataPlayer = answerQuestionDataPlayer;
10973
10979
  exports.api = api;