mario-core 2.9.107-beta → 2.9.110-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
@@ -13,6 +13,7 @@ var reactRedux = require('react-redux');
13
13
  var toolkit = require('@reduxjs/toolkit');
14
14
  var axios = _interopDefault(require('axios'));
15
15
  var amplitude = _interopDefault(require('amplitude-js'));
16
+ var moment = _interopDefault(require('moment'));
16
17
  var reactGoogleRecaptchaV3 = require('react-google-recaptcha-v3');
17
18
  var GoogleLogin = _interopDefault(require('react-google-login'));
18
19
  var Select = _interopDefault(require('react-select'));
@@ -26,7 +27,6 @@ var fa = require('react-icons/fa');
26
27
  var dateFns = require('date-fns');
27
28
  var tinymceReact = require('@tinymce/tinymce-react');
28
29
  var differenceInCalendarYears = _interopDefault(require('date-fns/differenceInCalendarYears'));
29
- var moment = _interopDefault(require('moment'));
30
30
  var DatePicker = _interopDefault(require('react-datepicker'));
31
31
  var toDate = _interopDefault(require('date-fns/toDate'));
32
32
  var md = require('react-icons/md');
@@ -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";
@@ -2711,6 +2715,7 @@ var apiUpload = axios.create({
2711
2715
 
2712
2716
  if (token) {
2713
2717
  config.headers.Authorization = "Bearer " + token;
2718
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
2714
2719
  }
2715
2720
 
2716
2721
  return config;
@@ -4380,6 +4385,7 @@ var Loading = function Loading() {
4380
4385
  var isLoading = reactRedux.useSelector(function (state) {
4381
4386
  return state.common.isLoading;
4382
4387
  });
4388
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
4383
4389
  return isLoading ? React__default.createElement("div", {
4384
4390
  style: loadingStyle
4385
4391
  }, React__default.createElement("div", {
@@ -6772,8 +6778,89 @@ var SkillList = function SkillList() {
6772
6778
  }))));
6773
6779
  };
6774
6780
 
6775
- var setUserList = toolkit.createAction("users/setUserList");
6776
- var setStudentList = toolkit.createAction("users/setStudentList");
6781
+ var MAX_FILE_SIZE = 20097152;
6782
+
6783
+ var UploadFileButton = function UploadFileButton(_ref) {
6784
+ var fileName = _ref.fileName,
6785
+ maxWidth = _ref.maxWidth,
6786
+ maxHeight = _ref.maxHeight,
6787
+ setFile = _ref.setFile,
6788
+ canDelete = _ref.canDelete,
6789
+ onDelete = _ref.onDelete,
6790
+ isCheckFeedBack = _ref.isCheckFeedBack,
6791
+ onAddImage = _ref.onAddImage;
6792
+ var dispatch = reactRedux.useDispatch();
6793
+
6794
+ var _useState = React.useState(""),
6795
+ imagePreviewUrl = _useState[0],
6796
+ setImagePreviewUrl = _useState[1];
6797
+
6798
+ var imageStyle = {
6799
+ maxWidth: maxWidth || "100%",
6800
+ maxHeight: maxHeight || "100%"
6801
+ };
6802
+ var imageSrc = imagePreviewUrl || getFileUrl(fileName);
6803
+
6804
+ var handleImageChange = function handleImageChange(e) {
6805
+ e.preventDefault();
6806
+ var reader = new FileReader();
6807
+ var newFile = e.target.files[0];
6808
+
6809
+ if (newFile.size > MAX_FILE_SIZE) {
6810
+ dispatch(setAlert({
6811
+ type: "danger",
6812
+ message: "File can't be larger than 2MB"
6813
+ }));
6814
+ return;
6815
+ }
6816
+
6817
+ reader.onloadend = function () {
6818
+ setFile(newFile);
6819
+ setImagePreviewUrl(reader.result);
6820
+ };
6821
+
6822
+ if (newFile) {
6823
+ reader.readAsDataURL(newFile);
6824
+ }
6825
+
6826
+ !!onAddImage && onAddImage();
6827
+ };
6828
+
6829
+ var imagePreviewContainer = imagePreviewUrl || fileName ? React__default.createElement("img", {
6830
+ style: imageStyle,
6831
+ src: imageSrc,
6832
+ alt: "image"
6833
+ }) : null;
6834
+ return React__default.createElement("div", {
6835
+ className: "mb-2"
6836
+ }, React__default.createElement(reactstrap.Form, {
6837
+ className: "mb-2"
6838
+ }, React__default.createElement(reactstrap.Input, {
6839
+ className: "d-none",
6840
+ type: "file",
6841
+ id: "uploadFile",
6842
+ onChange: handleImageChange,
6843
+ accept: "image/*"
6844
+ }), React__default.createElement("div", {
6845
+ className: "d-flex align-items-center"
6846
+ }, React__default.createElement(reactstrap.Label, {
6847
+ htmlFor: "uploadFile",
6848
+ role: "button",
6849
+ tabIndex: 0,
6850
+ className: styles["input-file-label"]
6851
+ }, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
6852
+ className: "fa fa-paperclip mr-1",
6853
+ "aria-hidden": "true"
6854
+ }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
6855
+ size: "sm",
6856
+ color: "danger",
6857
+ className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
6858
+ onClick: function onClick() {
6859
+ setImagePreviewUrl(null);
6860
+ onDelete && onDelete();
6861
+ }
6862
+ }, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
6863
+ };
6777
6864
 
6778
6865
  var USER_URL$1 = BASE_URL + "/api/user";
6779
6866
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
@@ -6806,38 +6893,54 @@ var switchAccountUser = function switchAccountUser(id) {
6806
6893
  return api.post(EDU_USER_URL + "/switch-user/" + id);
6807
6894
  };
6808
6895
 
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";
6896
+ var initValue$3 = {
6897
+ id: "",
6898
+ firstName: "",
6899
+ lastName: "",
6900
+ email: "",
6901
+ dateOfBirth: "",
6902
+ roles: [],
6903
+ isActive: true,
6904
+ profileImageFileName: ""
6905
+ };
6906
+ var USER_LIST_URL = "/admin/user";
6907
+ var TITLE$7 = "User detail";
6818
6908
 
6819
- var useUserList = function useUserList() {
6909
+ var useUserDetail = function useUserDetail(id) {
6910
+ var dispatch = reactRedux.useDispatch();
6820
6911
  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
6912
 
6830
- var _useFilters = useFilters(),
6831
- filters = _useFilters.filters,
6832
- changeFilters = _useFilters.changeFilters;
6913
+ var _useState = React.useState(initValue$3),
6914
+ userDetail = _useState[0],
6915
+ setUserDetail = _useState[1];
6833
6916
 
6834
- var _useState = React.useState(!!queryName ? queryName : ""),
6835
- fullName = _useState[0],
6836
- setFullName = _useState[1];
6917
+ var _useState2 = React.useState(null),
6918
+ file = _useState2[0],
6919
+ setFile = _useState2[1];
6837
6920
 
6838
- var isDistrict = window.location.host.includes("-district");
6839
- var dispatch = reactRedux.useDispatch();
6840
- var getData = React.useCallback(function (fullName) {
6921
+ var _useState3 = React.useState(false),
6922
+ edited = _useState3[0],
6923
+ setEdited = _useState3[1];
6924
+
6925
+ var setEditedTrue = function setEditedTrue() {
6926
+ try {
6927
+ localStorage.setItem(window.location.href, "true");
6928
+ setEdited(true);
6929
+ return Promise.resolve();
6930
+ } catch (e) {
6931
+ return Promise.reject(e);
6932
+ }
6933
+ };
6934
+
6935
+ React.useEffect(function () {
6936
+ document.title = TITLE$7;
6937
+ setEdited(false);
6938
+ if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
6939
+ }, []);
6940
+ React.useEffect(function () {
6941
+ !!id && getData();
6942
+ }, [id]);
6943
+ var getData = React.useCallback(function () {
6841
6944
  try {
6842
6945
  var _temp3 = function _temp3() {
6843
6946
  dispatch(setLoading(false));
@@ -6846,22 +6949,14 @@ var useUserList = function useUserList() {
6846
6949
  dispatch(setLoading(true));
6847
6950
 
6848
6951
  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
- }
6952
+ return Promise.resolve(getById$3(id)).then(function (res) {
6953
+ var _res$data;
6860
6954
 
6861
- dispatch(setUserList({
6862
- userList: items,
6863
- totalItems: totalItems
6955
+ setUserDetail(_extends({}, res.data, {
6956
+ dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), DATE_FORMAT),
6957
+ roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
6864
6958
  }));
6959
+ document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
6865
6960
  });
6866
6961
  }, function (err) {
6867
6962
  var _err$response, _err$response$data;
@@ -6876,688 +6971,171 @@ var useUserList = function useUserList() {
6876
6971
  } catch (e) {
6877
6972
  return Promise.reject(e);
6878
6973
  }
6879
- }, [dispatch, filters]);
6880
- React.useEffect(function () {
6881
- document.title = TITLE$7;
6974
+ }, [id]);
6975
+ var backToList = React.useCallback(function (user) {
6976
+ !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
6882
6977
  }, []);
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
-
6978
+ var confirmData = React.useCallback(function (data) {
6894
6979
  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
6980
+ var _temp9 = function _temp9() {
6981
+ dispatch(setLoading(false));
6982
+ };
6983
+
6984
+ dispatch(setLoading(true));
6985
+
6986
+ var _temp10 = _catch(function () {
6987
+ function _temp6() {
6988
+ var next = !!id ? update$5 : create$5;
6989
+ !id && delete data.id;
6990
+ return Promise.resolve(next(data)).then(function (result) {
6991
+ if (!!result) {
6992
+ getById$3(result.data.id).then(function (e) {
6993
+ backToList(e.data.fullName);
6908
6994
  });
6909
- });
6910
- } catch (e) {
6911
- return Promise.reject(e);
6912
- }
6913
- }
6914
- }));
6915
- } catch (err) {
6916
- var _err$response2, _err$response2$data;
6995
+ }
6917
6996
 
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
- }
6997
+ if (!id) {
6998
+ alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
6999
+ }
6923
7000
 
6924
- dispatch(setLoading(false));
6925
- }, [filters]);
7001
+ dispatch(setAlert({
7002
+ type: "success",
7003
+ message: (!!id ? "Update" : "Create") + " user successfully"
7004
+ }));
7005
+ });
7006
+ }
6926
7007
 
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
- }));
7008
+ var _temp5 = function () {
7009
+ if (!!file) {
7010
+ var formData = new FormData();
7011
+ var name = file.name;
7012
+ formData.append("file", file, name);
7013
+ return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
7014
+ var _res$data2;
6946
7015
 
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
- };
7016
+ var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
7017
+ data.profileImageFileName = imageUrl;
7018
+ });
7019
+ }
7020
+ }();
6963
7021
 
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
- };
7022
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
7023
+ }, function (err) {
7024
+ var _err$response2, _err$response2$data;
6978
7025
 
6979
- dispatch(setLoading(true));
7026
+ dispatch(setAlert({
7027
+ type: "danger",
7028
+ 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
7029
+ }));
7030
+ });
6980
7031
 
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;
7032
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7033
+ } catch (e) {
7034
+ return Promise.reject(e);
7035
+ }
7036
+ }, [id, file]);
6993
7037
 
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
- });
7038
+ var confirmChangePassword = function confirmChangePassword(data) {
7039
+ try {
7040
+ var _temp13 = function _temp13() {
7041
+ dispatch(setLoading(false));
7042
+ };
6999
7043
 
7000
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7001
- } catch (e) {
7002
- return Promise.reject(e);
7003
- }
7004
- }
7044
+ dispatch(setLoading(true));
7045
+
7046
+ var _temp14 = _catch(function () {
7047
+ return Promise.resolve(changePassword(data)).then(function () {
7048
+ dispatch(setAlert({
7049
+ type: "success",
7050
+ message: "Change password successfully"
7005
7051
  }));
7006
7052
  });
7007
- }, function (err) {
7008
- var _err$response4, _err$response4$data;
7053
+ }, function (e) {
7054
+ var _e$response, _e$response$data;
7009
7055
 
7010
7056
  dispatch(setAlert({
7011
7057
  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
7058
+ 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
7059
  }));
7014
7060
  });
7015
7061
 
7016
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7062
+ return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7017
7063
  } catch (e) {
7018
7064
  return Promise.reject(e);
7019
7065
  }
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
7066
  };
7026
7067
 
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
- };
7068
+ var forgotPasswordRequest = React.useCallback(function (data) {
7069
+ try {
7070
+ var _temp17 = function _temp17() {
7071
+ dispatch(setLoading(false));
7072
+ };
7039
7073
 
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;
7074
+ dispatch(setLoading(true));
7046
7075
 
7047
- var _useState = React.useState(initValue),
7048
- searchString = _useState[0],
7049
- setSearchString = _useState[1];
7076
+ var _temp18 = _catch(function () {
7077
+ return Promise.resolve(forgotChangePassword(data)).then(function () {
7078
+ dispatch(setAlert({
7079
+ type: "success",
7080
+ message: "Send forgot password link successfully"
7081
+ }));
7082
+ });
7083
+ }, function (err) {
7084
+ var _err$response3, _err$response3$data;
7050
7085
 
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
- };
7086
+ dispatch(setAlert({
7087
+ type: "danger",
7088
+ 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"
7089
+ }));
7090
+ });
7068
7091
 
7069
- SearchBox.defaultProps = {
7070
- placeholder: "Type something to search",
7071
- className: "",
7072
- style: {}
7092
+ return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7093
+ } catch (e) {
7094
+ return Promise.reject(e);
7095
+ }
7096
+ }, []);
7097
+ return {
7098
+ userDetail: userDetail,
7099
+ backToList: backToList,
7100
+ confirmData: confirmData,
7101
+ file: file,
7102
+ setFile: setFile,
7103
+ edited: edited,
7104
+ setEdited: setEdited,
7105
+ setEditedTrue: setEditedTrue,
7106
+ confirmChangePassword: confirmChangePassword,
7107
+ forgotPasswordRequest: forgotPasswordRequest
7108
+ };
7073
7109
  };
7074
- var SearchBox$1 = React.memo(SearchBox);
7075
7110
 
7076
- var searchInputStyle = {
7077
- height: 38
7078
- };
7111
+ var userSchema = yup.object({
7112
+ firstName: yup.string().required("First name is required"),
7113
+ lastName: yup.string().required("Last name is required"),
7114
+ dateOfBirth: yup.string().required("Date of birth is required"),
7115
+ email: yup.string().email("Email is invalid").required("Email is required"),
7116
+ roles: yup.array().of(yup.string()).min(1, "Role is required")
7117
+ });
7079
7118
 
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
- };
7119
+ var changePasswordSchema = yup.object({
7120
+ oldPassword: yup.string().required("Current password is required"),
7121
+ newPassword: yup.string().required("New password is required"),
7122
+ confirmedNewPassword: yup.string().required("Confirm password is required")
7123
+ });
7100
7124
 
7101
- SearchBoxContainer.defaultProps = {
7102
- placeholder: "Type something to search"
7103
- };
7125
+ var CREATE_USER = "create_user";
7126
+ var EDIT_USER_HEADER = "edit_user";
7127
+ var CHANGE_PASSWORD$1 = "change_password";
7104
7128
 
7105
- var utcToLocalTime = (function (time, FORMAT) {
7106
- if (time === DATE_MIN_VALUE) return "";
7129
+ var UserDetail = function UserDetail() {
7130
+ var _useParams = reactRouterDom.useParams(),
7131
+ id = _useParams.id;
7107
7132
 
7108
- try {
7109
- return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7110
- } catch (_unused) {
7111
- return "";
7112
- }
7113
- });
7133
+ var user = reactRedux.useSelector(function (state) {
7134
+ return state.common.user;
7135
+ });
7114
7136
 
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;
7137
+ var _useTranslation = reactI18next.useTranslation(),
7138
+ t = _useTranslation.t;
7561
7139
 
7562
7140
  var _useUserDetail = useUserDetail(id),
7563
7141
  userDetail = _useUserDetail.userDetail,
@@ -7968,21 +7546,96 @@ var headerTextStyle = {
7968
7546
  textAlign: "center"
7969
7547
  };
7970
7548
 
7971
- var CommonHeader = function CommonHeader(_ref) {
7972
- var header = _ref.header,
7973
- rootHeader = _ref.rootHeader;
7974
- return React__default.createElement("div", {
7975
- style: headerStyle
7976
- }, React__default.createElement(reactstrap.Row, null, rootHeader && React__default.createElement(reactstrap.Col, {
7977
- md: 4
7978
- }, React__default.createElement("span", {
7979
- className: "text-muted",
7980
- style: headerTextStyle
7981
- }, rootHeader)), React__default.createElement(reactstrap.Col, {
7982
- md: 4
7983
- }, React__default.createElement("span", {
7984
- style: headerTextStyle
7985
- }, header))));
7549
+ var CommonHeader = function CommonHeader(_ref) {
7550
+ var header = _ref.header,
7551
+ rootHeader = _ref.rootHeader;
7552
+ return React__default.createElement("div", {
7553
+ style: headerStyle
7554
+ }, React__default.createElement(reactstrap.Row, null, rootHeader && React__default.createElement(reactstrap.Col, {
7555
+ md: 4
7556
+ }, React__default.createElement("span", {
7557
+ className: "text-muted",
7558
+ style: headerTextStyle
7559
+ }, rootHeader)), React__default.createElement(reactstrap.Col, {
7560
+ md: 4
7561
+ }, React__default.createElement("span", {
7562
+ style: headerTextStyle
7563
+ }, header))));
7564
+ };
7565
+
7566
+ var utcToLocalTime = (function (time, FORMAT) {
7567
+ if (time === DATE_MIN_VALUE) return "";
7568
+
7569
+ try {
7570
+ return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7571
+ } catch (_unused) {
7572
+ return "";
7573
+ }
7574
+ });
7575
+
7576
+ var NotificationLogoutModal = function NotificationLogoutModal() {
7577
+ var _useState = React.useState(false),
7578
+ isOpen = _useState[0],
7579
+ setIsOpen = _useState[1];
7580
+
7581
+ var _useState2 = React.useState({
7582
+ minutes: 0,
7583
+ timeLogout: ""
7584
+ }),
7585
+ objTime = _useState2[0],
7586
+ setObjTime = _useState2[1];
7587
+
7588
+ var checkOpenModalLogout = function checkOpenModalLogout() {
7589
+ var lastTimeOut = localStorage.getItem("LAST_TIME_REQUETST");
7590
+ console.log({
7591
+ lastTimeOut: lastTimeOut
7592
+ });
7593
+ var timeMoment = moment(lastTimeOut, "YYYY-MM-DD HH:mm");
7594
+ var currentTime = moment(moment().utc().format("YYYY-MM-DD HH:mm"));
7595
+ var minutes = currentTime.diff(timeMoment, "minutes");
7596
+ var timeLogout = utcToLocalTime(currentTime.add(16 - minutes, 'minutes').format("YYYY-MM-DD HH:mm"), "HH:mm");
7597
+
7598
+ if (minutes == 13) {
7599
+ var dataTime = {
7600
+ minutes: minutes,
7601
+ timeLogout: timeLogout
7602
+ };
7603
+ setObjTime(dataTime);
7604
+ onToggle();
7605
+ }
7606
+ };
7607
+
7608
+ React.useEffect(function () {
7609
+ var getAccessToken = localStorage.getItem(ACCESS_TOKEN);
7610
+
7611
+ if (getAccessToken) {
7612
+ var interval = setInterval(function () {
7613
+ checkOpenModalLogout();
7614
+ }, 60 * 1000);
7615
+ return function () {
7616
+ return clearInterval(interval);
7617
+ };
7618
+ }
7619
+
7620
+ return;
7621
+ }, []);
7622
+
7623
+ var onToggle = function onToggle() {
7624
+ setIsOpen(!isOpen);
7625
+ };
7626
+
7627
+ return React__default.createElement(reactstrap.Modal, {
7628
+ isOpen: isOpen,
7629
+ toggle: onToggle,
7630
+ size: "xs"
7631
+ }, React__default.createElement(reactstrap.ModalHeader, {
7632
+ toggle: onToggle
7633
+ }, "Notification Logout"), React__default.createElement(reactstrap.ModalBody, null, "Are you still here? You have had no action for " + (objTime === null || objTime === void 0 ? void 0 : objTime.minutes) + " mins. \n Your account could be log out after " + (15 - (objTime === null || objTime === void 0 ? void 0 : objTime.minutes)) + " mins at " + (objTime === null || objTime === void 0 ? void 0 : objTime.timeLogout) + " if you don't action."), React__default.createElement(reactstrap.ModalFooter, {
7634
+ className: "text-right"
7635
+ }, React__default.createElement(reactstrap.Button, {
7636
+ color: "primary",
7637
+ onClick: onToggle
7638
+ }, "Confirm")));
7986
7639
  };
7987
7640
 
7988
7641
  var EditButtonIcon = function EditButtonIcon(_ref) {
@@ -8019,6 +7672,42 @@ var CreatableSelector = function CreatableSelector(props) {
8019
7672
  });
8020
7673
  };
8021
7674
 
7675
+ var SearchBox = function SearchBox(_ref) {
7676
+ var initValue = _ref.initValue,
7677
+ onSearch = _ref.onSearch,
7678
+ placeholder = _ref.placeholder,
7679
+ className = _ref.className,
7680
+ style = _ref.style;
7681
+
7682
+ var _useState = React.useState(initValue),
7683
+ searchString = _useState[0],
7684
+ setSearchString = _useState[1];
7685
+
7686
+ React.useEffect(function () {
7687
+ setSearchString(initValue);
7688
+ }, [initValue]);
7689
+ var onKeyUp = React.useCallback(function (e) {
7690
+ e.key === "Enter" && onSearch(searchString);
7691
+ }, [searchString, onSearch]);
7692
+ return React__default.createElement(reactstrap.Input, {
7693
+ placeholder: placeholder,
7694
+ value: searchString,
7695
+ onChange: function onChange(e) {
7696
+ return setSearchString(e.target.value);
7697
+ },
7698
+ onKeyUp: onKeyUp,
7699
+ className: className,
7700
+ style: style
7701
+ });
7702
+ };
7703
+
7704
+ SearchBox.defaultProps = {
7705
+ placeholder: "Type something to search",
7706
+ className: "",
7707
+ style: {}
7708
+ };
7709
+ var SearchBox$1 = React.memo(SearchBox);
7710
+
8022
7711
  var QuestionTypeSelector = function QuestionTypeSelector(props) {
8023
7712
  var id = props.id;
8024
7713
  var initValue = !!id ? QUESTION_TYPES_OPTIONS.find(function (option) {
@@ -8380,7 +8069,7 @@ var defaultFilters = {
8380
8069
  searchString: "",
8381
8070
  isRead: false
8382
8071
  };
8383
- var TITLE$9 = "Notification list";
8072
+ var TITLE$8 = "Notification list";
8384
8073
  var NOTIFICATION_CHANNEL$1 = "NOTIFICATION_CHANNEL";
8385
8074
  var NEW_NOTIFICATION$1 = "NEW_NOTIFICATION";
8386
8075
 
@@ -8505,7 +8194,7 @@ var useNotificationList = function useNotificationList() {
8505
8194
  }
8506
8195
  }, [filters]);
8507
8196
  React.useEffect(function () {
8508
- document.title = TITLE$9;
8197
+ document.title = TITLE$8;
8509
8198
  }, []);
8510
8199
  React.useEffect(function () {
8511
8200
  getData();
@@ -8590,7 +8279,7 @@ var useNotificationList = function useNotificationList() {
8590
8279
  };
8591
8280
  };
8592
8281
 
8593
- var header$3 = "Notification list";
8282
+ var header$2 = "Notification list";
8594
8283
  var ICON_SIZE = 20;
8595
8284
 
8596
8285
  var NotificationList = function NotificationList() {
@@ -8611,7 +8300,7 @@ var NotificationList = function NotificationList() {
8611
8300
  }
8612
8301
  }, React__default.createElement("h5", {
8613
8302
  className: "mb-2"
8614
- }, header$3), React__default.createElement(reactstrap.Row, {
8303
+ }, header$2), React__default.createElement(reactstrap.Row, {
8615
8304
  className: "my-2"
8616
8305
  }, React__default.createElement(reactstrap.Col, {
8617
8306
  md: 8
@@ -8711,6 +8400,35 @@ var NotificationList = function NotificationList() {
8711
8400
  }))));
8712
8401
  };
8713
8402
 
8403
+ var searchInputStyle = {
8404
+ height: 38
8405
+ };
8406
+
8407
+ var SearchBoxContainer = function SearchBoxContainer(_ref) {
8408
+ var text = _ref.text,
8409
+ initValue = _ref.initValue,
8410
+ onClick = _ref.onClick,
8411
+ onSearch = _ref.onSearch,
8412
+ placeholder = _ref.placeholder;
8413
+ return React__default.createElement("div", {
8414
+ className: "d-flex align-items-center"
8415
+ }, React__default.createElement("div", null, React__default.createElement(AddButton, {
8416
+ text: text,
8417
+ onClick: onClick
8418
+ })), React__default.createElement("div", {
8419
+ className: "flex-grow-1 ml-2"
8420
+ }, React__default.createElement(SearchBox$1, {
8421
+ initValue: initValue,
8422
+ onSearch: onSearch,
8423
+ placeholder: placeholder,
8424
+ style: searchInputStyle
8425
+ })));
8426
+ };
8427
+
8428
+ SearchBoxContainer.defaultProps = {
8429
+ placeholder: "Type something to search"
8430
+ };
8431
+
8714
8432
  var CustomTabs = function CustomTabs(props) {
8715
8433
  var history = reactRouterDom.useHistory();
8716
8434
  var location = reactRouterDom.useLocation();
@@ -9115,7 +8833,7 @@ var get$8 = function get(filter) {
9115
8833
  });
9116
8834
  };
9117
8835
 
9118
- var TITLE$a = "Gallery";
8836
+ var TITLE$9 = "Gallery";
9119
8837
  var defaultFilter = {
9120
8838
  searchString: ""
9121
8839
  };
@@ -9352,7 +9070,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
9352
9070
  }
9353
9071
  }, [dispatch, filters]);
9354
9072
  React.useEffect(function () {
9355
- document.title = TITLE$a;
9073
+ document.title = TITLE$9;
9356
9074
  dispatch(setTargetMedia({
9357
9075
  targetMedia: undefined
9358
9076
  }));
@@ -9544,7 +9262,7 @@ var MediaDetail = function MediaDetail(_ref) {
9544
9262
 
9545
9263
  var MediaDetail$1 = React__default.memo(MediaDetail);
9546
9264
 
9547
- var header$4 = "Gallery";
9265
+ var header$3 = "Gallery";
9548
9266
 
9549
9267
  var GalleryList = function GalleryList(_ref) {
9550
9268
  var isLibrary = _ref.isLibrary;
@@ -9555,7 +9273,7 @@ var GalleryList = function GalleryList(_ref) {
9555
9273
  className: "fadeIn animated"
9556
9274
  }, !isLibrary && React__default.createElement("h5", {
9557
9275
  className: "mb-2"
9558
- }, header$4), React__default.createElement(reactstrap.Row, {
9276
+ }, header$3), React__default.createElement(reactstrap.Row, {
9559
9277
  className: "mb-2"
9560
9278
  }, React__default.createElement(reactstrap.Col, {
9561
9279
  md: 8
@@ -10181,6 +9899,9 @@ var commonReducer$8 = toolkit.createReducer(initialState$e, function (builder) {
10181
9899
  });
10182
9900
  });
10183
9901
 
9902
+ var setUserList = toolkit.createAction("users/setUserList");
9903
+ var setStudentList = toolkit.createAction("users/setStudentList");
9904
+
10184
9905
  var initialState$f = {
10185
9906
  userList: [],
10186
9907
  totalItems: 0,
@@ -10700,193 +10421,545 @@ var dataPlayer = toolkit.createReducer(initialState$v, function (builder) {
10700
10421
  return response.questionId === questionId;
10701
10422
  });
10702
10423
 
10703
- if (!existedResponse) {
10704
- questionResponseCloner.push({
10705
- questionId: questionId,
10706
- text: text
10707
- });
10708
- } else {
10709
- existedResponse.text = text;
10424
+ if (!existedResponse) {
10425
+ questionResponseCloner.push({
10426
+ questionId: questionId,
10427
+ text: text
10428
+ });
10429
+ } else {
10430
+ existedResponse.text = text;
10431
+ }
10432
+
10433
+ return _extends({}, state, {
10434
+ questionResponse: questionResponseCloner
10435
+ });
10436
+ }).addCase(reset, function (_state, _action) {
10437
+ return initialState$v;
10438
+ });
10439
+ });
10440
+
10441
+ var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10442
+
10443
+ var initialState$w = {
10444
+ certificateList: [],
10445
+ totalItems: 0
10446
+ };
10447
+ var commonReducer$f = toolkit.createReducer(initialState$w, function (builder) {
10448
+ builder.addCase(setCertificateList, function (state, action) {
10449
+ state.certificateList = action.payload.certificateList;
10450
+ state.totalItems = action.payload.totalItems;
10451
+ }).addCase(reset, function (_state, _action) {
10452
+ return initialState$w;
10453
+ });
10454
+ });
10455
+
10456
+ var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10457
+
10458
+ var initialState$x = {
10459
+ improveMyClassList: []
10460
+ };
10461
+ var commonReducer$g = toolkit.createReducer(initialState$x, function (builder) {
10462
+ builder.addCase(setImproveMyClass, function (state, action) {
10463
+ state.improveMyClassList = action.payload;
10464
+ }).addCase(reset, function (_state, _action) {
10465
+ return initialState$x;
10466
+ });
10467
+ });
10468
+
10469
+ var setFilterWidget = toolkit.createAction("setFilterWidget");
10470
+
10471
+ var initialState$y = {
10472
+ filterWidget: "Year"
10473
+ };
10474
+ var widgetReducer = toolkit.createReducer(initialState$y, function (builder) {
10475
+ builder.addCase(setFilterWidget, function (state, action) {
10476
+ state.filterWidget = action.payload.filterWidget;
10477
+ }).addCase(reset, function (_state, _action) {
10478
+ return initialState$y;
10479
+ });
10480
+ });
10481
+
10482
+ var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10483
+
10484
+ var initialState$z = {
10485
+ bandScoreList: [],
10486
+ totalItems: 0
10487
+ };
10488
+ var commonReducer$h = toolkit.createReducer(initialState$z, function (builder) {
10489
+ builder.addCase(setBandScoreList, function (state, action) {
10490
+ state.bandScoreList = action.payload.bandScoreList;
10491
+ state.totalItems = action.payload.totalItems;
10492
+ }).addCase(reset, function (_state, _action) {
10493
+ return initialState$z;
10494
+ });
10495
+ });
10496
+
10497
+ var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10498
+
10499
+ var initialState$A = {
10500
+ schoolBlankDayList: [],
10501
+ totalItems: 0
10502
+ };
10503
+ var commonReducer$i = toolkit.createReducer(initialState$A, function (builder) {
10504
+ builder.addCase(setSchoolBlankDayList, function (state, action) {
10505
+ state.schoolBlankDayList = action.payload.schoolBlankDayList;
10506
+ state.totalItems = action.payload.totalItems;
10507
+ }).addCase(reset, function (_state, _action) {
10508
+ return initialState$A;
10509
+ });
10510
+ });
10511
+
10512
+ var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10513
+
10514
+ var initialState$B = {
10515
+ studentIdSelectedByTeacher: 0
10516
+ };
10517
+ var navMobileReducer = toolkit.createReducer(initialState$B, function (builder) {
10518
+ builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10519
+ state.studentIdSelectedByTeacher = action.payload;
10520
+ }).addCase(reset, function (_state, _action) {
10521
+ return initialState$B;
10522
+ });
10523
+ });
10524
+
10525
+ var rootReducer = combineReducers({
10526
+ common: commonReducer,
10527
+ classes: classReducer,
10528
+ conferenceRubrics: conferenceRubricReducer,
10529
+ faqs: commonReducer$1,
10530
+ skills: commonReducer$2,
10531
+ emailTemplate: emailTemplateReducer,
10532
+ suggestionBank: suggestionBankReducer,
10533
+ learningStrategy: learningStrategyReducer,
10534
+ subjects: commonReducer$3,
10535
+ learningSupportCategories: commonReducer$4,
10536
+ questionBank: questionBankReducer,
10537
+ badges: commonReducer$5,
10538
+ semester: commonReducer$6,
10539
+ goalExamples: commonReducer$8,
10540
+ users: commonReducer$9,
10541
+ reflections: reflectionReducer,
10542
+ reflectionResults: reflectionReducer$1,
10543
+ feedbacks: commonReducer$a,
10544
+ assessments: commonReducer$b,
10545
+ questionByCategory: questionCategoryReducer,
10546
+ mailCategory: questionBankReducer$1,
10547
+ questionCate: questionCateReducer,
10548
+ notification: questionBankReducer$2,
10549
+ myStudent: commonReducer$c,
10550
+ assignments: commonReducer$7,
10551
+ assistants: assistantReducer,
10552
+ sesstionTemplates: sessionTemplateReducer,
10553
+ sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10554
+ tutorialScreens: tutorialScreenReducer,
10555
+ customAlerts: commonReducer$d,
10556
+ gallery: commonReducer$e,
10557
+ dashboard: dashboardReducer,
10558
+ sessionPlayer: sessionPlayerReducer,
10559
+ dataPlayer: dataPlayer,
10560
+ certificate: commonReducer$f,
10561
+ improveMyClass: commonReducer$g,
10562
+ widget: widgetReducer,
10563
+ bandScores: commonReducer$h,
10564
+ schoolBlankDays: commonReducer$i,
10565
+ navMobileReducer: navMobileReducer
10566
+ });
10567
+
10568
+ var store = toolkit.configureStore({
10569
+ reducer: rootReducer,
10570
+ middleware: function middleware(getDefaultMiddleware) {
10571
+ return getDefaultMiddleware({
10572
+ serializableCheck: false
10573
+ }).concat(logger);
10574
+ }
10575
+ });
10576
+
10577
+ var isInViewport = function isInViewport(el) {
10578
+ var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10579
+ return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10580
+ };
10581
+
10582
+ var debounce = function debounce(callback, wait) {
10583
+ var timeout = null;
10584
+ return function () {
10585
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10586
+ args[_key] = arguments[_key];
10710
10587
  }
10711
10588
 
10712
- return _extends({}, state, {
10713
- questionResponse: questionResponseCloner
10714
- });
10715
- }).addCase(reset, function (_state, _action) {
10716
- return initialState$v;
10717
- });
10718
- });
10589
+ var next = function next() {
10590
+ return callback.apply(void 0, args);
10591
+ };
10719
10592
 
10720
- var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10593
+ clearTimeout(timeout);
10594
+ timeout = setTimeout(next, wait);
10595
+ };
10596
+ };
10721
10597
 
10722
- var initialState$w = {
10723
- certificateList: [],
10724
- totalItems: 0
10598
+ var getTextFromHTML = function getTextFromHTML(htmlString) {
10599
+ var p = document.createElement("p");
10600
+ p.innerHTML = htmlString;
10601
+ var text = p.innerText;
10602
+ p.remove();
10603
+ return text;
10725
10604
  };
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
- });
10605
+
10606
+ var generateRandomString = (function () {
10607
+ return (Math.random() + 1).toString(36).substring(7);
10733
10608
  });
10734
10609
 
10735
- var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10610
+ var amplitudeClient = amplitude.getInstance();
10736
10611
 
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;
10612
+ var USER_URL$2 = "/admin/user";
10613
+ var CREATE_USER_URL = "/admin/create-user";
10614
+ var TITLE$a = "User list";
10615
+ var HOMEPAGE_TEACHER$1 = "/home";
10616
+ var HOMEPAGE_STUDENT$1 = "/home";
10617
+ var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
10618
+ var HOMEPAGE_PARENT$1 = "/parent";
10619
+ var HOMEPAGE_DISTRICT$1 = "/admin/schools";
10620
+ var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
10621
+
10622
+ var useUserList = function useUserList() {
10623
+ var history = reactRouterDom.useHistory();
10624
+ var query = new URLSearchParams(location.search);
10625
+ var queryName = query.get("query");
10626
+ var userList = reactRedux.useSelector(function (state) {
10627
+ return state.users.userList;
10628
+ });
10629
+ var totalItems = reactRedux.useSelector(function (state) {
10630
+ return state.users.totalItems;
10745
10631
  });
10746
- });
10747
10632
 
10748
- var setFilterWidget = toolkit.createAction("setFilterWidget");
10633
+ var _useFilters = useFilters(),
10634
+ filters = _useFilters.filters,
10635
+ changeFilters = _useFilters.changeFilters;
10749
10636
 
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
- });
10637
+ var _useState = React.useState(!!queryName ? queryName : ""),
10638
+ fullName = _useState[0],
10639
+ setFullName = _useState[1];
10760
10640
 
10761
- var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10641
+ var isDistrict = window.location.host.includes("-district");
10642
+ var dispatch = reactRedux.useDispatch();
10643
+ var getData = React.useCallback(function (fullName) {
10644
+ try {
10645
+ var _temp3 = function _temp3() {
10646
+ dispatch(setLoading(false));
10647
+ };
10762
10648
 
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
- });
10649
+ dispatch(setLoading(true));
10775
10650
 
10776
- var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10651
+ var _temp4 = _catch(function () {
10652
+ return Promise.resolve(fullName ? get$5(_extends({}, filters, {
10653
+ searchString: fullName
10654
+ })) : get$5(filters)).then(function (res) {
10655
+ var _res$data = res.data,
10656
+ items = _res$data.items,
10657
+ totalItems = _res$data.totalItems;
10777
10658
 
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
- });
10659
+ for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
10660
+ var user = _step.value;
10661
+ user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
10662
+ }
10663
+
10664
+ dispatch(setUserList({
10665
+ userList: items,
10666
+ totalItems: totalItems
10667
+ }));
10668
+ });
10669
+ }, function (err) {
10670
+ var _err$response, _err$response$data;
10671
+
10672
+ dispatch(setAlert({
10673
+ type: "danger",
10674
+ 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
10675
+ }));
10676
+ });
10677
+
10678
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
10679
+ } catch (e) {
10680
+ return Promise.reject(e);
10681
+ }
10682
+ }, [dispatch, filters]);
10683
+ React.useEffect(function () {
10684
+ document.title = TITLE$a;
10685
+ }, []);
10686
+ React.useEffect(function () {
10687
+ if (!!fullName) {
10688
+ getData(fullName);
10689
+ setFullName(null);
10690
+ } else {
10691
+ getData();
10692
+ }
10693
+ }, [filters]);
10694
+ var removeData = React.useCallback(function (id) {
10695
+ dispatch(setLoading(true));
10696
+
10697
+ try {
10698
+ dispatch(setModal({
10699
+ isOpen: true,
10700
+ type: "warning",
10701
+ message: "Do you want to remove this user?",
10702
+ onConfirm: function () {
10703
+ try {
10704
+ return Promise.resolve(remove$3(id)).then(function () {
10705
+ dispatch(setAlert({
10706
+ type: "success",
10707
+ message: "Remove user successfully"
10708
+ }));
10709
+ changeFilters({
10710
+ currentPage: 1
10711
+ });
10712
+ });
10713
+ } catch (e) {
10714
+ return Promise.reject(e);
10715
+ }
10716
+ }
10717
+ }));
10718
+ } catch (err) {
10719
+ var _err$response2, _err$response2$data;
10720
+
10721
+ dispatch(setAlert({
10722
+ type: "danger",
10723
+ 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
10724
+ }));
10725
+ }
10726
+
10727
+ dispatch(setLoading(false));
10728
+ }, [filters]);
10729
+
10730
+ var redirectLoginUser = function redirectLoginUser(res) {
10731
+ var _res$data2 = res.data,
10732
+ token = _res$data2.token,
10733
+ id = _res$data2.id,
10734
+ firstName = _res$data2.firstName,
10735
+ lastName = _res$data2.lastName,
10736
+ roles = _res$data2.roles,
10737
+ email = _res$data2.email,
10738
+ profileImageFileName = _res$data2.profileImageFileName;
10739
+ localStorage.setItem(ACCESS_TOKEN, token);
10740
+ localStorage.removeItem(NOTIFICATION_ALERT_KEY);
10741
+ dispatch(setUser({
10742
+ id: id,
10743
+ firstName: firstName,
10744
+ lastName: lastName,
10745
+ roles: roles,
10746
+ email: email,
10747
+ profileImageFileName: profileImageFileName
10748
+ }));
10749
+
10750
+ if (isDistrict) {
10751
+ history.push(HOMEPAGE_DISTRICT$1);
10752
+ } else if (roles.includes("Admin")) {
10753
+ history.push(HOMEPAGE_ADMIN$1);
10754
+ } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
10755
+ history.push(HOMEPAGE_TEACHER$1);
10756
+ } else if (roles.includes("Student")) {
10757
+ history.push(HOMEPAGE_STUDENT$1);
10758
+ } else if (roles.includes("Parent")) {
10759
+ history.push(HOMEPAGE_PARENT$1);
10760
+ } else if (roles.includes("EduTeacher")) {
10761
+ history.push(HOMEPAGE_EDU_TEACHER$1);
10762
+ } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
10763
+ history.push(HOMEPAGE_TEACHER$1);
10764
+ }
10765
+ };
10766
+
10767
+ var swicthUser = React.useCallback(function (id) {
10768
+ try {
10769
+ var _temp6 = _catch(function () {
10770
+ return Promise.resolve(switchAccountUser(id)).then(function (res) {
10771
+ var data = res.data;
10772
+ dispatch(setModal({
10773
+ isOpen: true,
10774
+ type: "warning",
10775
+ message: "Do you want to impersonate this user?",
10776
+ onConfirm: function () {
10777
+ try {
10778
+ var _temp9 = function _temp9() {
10779
+ dispatch(setLoading(false));
10780
+ };
10790
10781
 
10791
- var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10782
+ dispatch(setLoading(true));
10792
10783
 
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
- });
10784
+ var _temp10 = _catch(function () {
10785
+ var req = {
10786
+ email: data.email,
10787
+ password: "default",
10788
+ accessToken: data.token
10789
+ };
10790
+ return Promise.resolve(logIn(req)).then(function (res) {
10791
+ localStorage.clear();
10792
+ redirectLoginUser(res);
10793
+ });
10794
+ }, function (err) {
10795
+ var _err$response3, _err$response3$data;
10803
10796
 
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
- });
10797
+ setAlert({
10798
+ type: "danger",
10799
+ 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
10800
+ });
10801
+ });
10846
10802
 
10847
- var store = toolkit.configureStore({
10848
- reducer: rootReducer,
10849
- middleware: function middleware(getDefaultMiddleware) {
10850
- return getDefaultMiddleware({
10851
- serializableCheck: false
10852
- }).concat(logger);
10853
- }
10854
- });
10803
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
10804
+ } catch (e) {
10805
+ return Promise.reject(e);
10806
+ }
10807
+ }
10808
+ }));
10809
+ });
10810
+ }, function (err) {
10811
+ var _err$response4, _err$response4$data;
10855
10812
 
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
- };
10813
+ dispatch(setAlert({
10814
+ type: "danger",
10815
+ 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
10816
+ }));
10817
+ });
10860
10818
 
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];
10819
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
10820
+ } catch (e) {
10821
+ return Promise.reject(e);
10866
10822
  }
10823
+ }, [filters]);
10867
10824
 
10868
- var next = function next() {
10869
- return callback.apply(void 0, args);
10870
- };
10825
+ var reDirectDetailPage = function reDirectDetailPage(id) {
10826
+ var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
10827
+ history.push(url);
10828
+ };
10871
10829
 
10872
- clearTimeout(timeout);
10873
- timeout = setTimeout(next, wait);
10830
+ return {
10831
+ userList: userList,
10832
+ totalItems: totalItems,
10833
+ filters: filters,
10834
+ queryName: queryName,
10835
+ getData: getData,
10836
+ removeData: removeData,
10837
+ changeFilters: changeFilters,
10838
+ reDirectDetailPage: reDirectDetailPage,
10839
+ swicthUser: swicthUser
10874
10840
  };
10875
10841
  };
10876
10842
 
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
- };
10843
+ var header$4 = "User";
10884
10844
 
10885
- var generateRandomString = (function () {
10886
- return (Math.random() + 1).toString(36).substring(7);
10887
- });
10845
+ var UserList = function UserList() {
10846
+ var _useUserList = useUserList(),
10847
+ queryName = _useUserList.queryName,
10848
+ userList = _useUserList.userList,
10849
+ totalItems = _useUserList.totalItems,
10850
+ filters = _useUserList.filters,
10851
+ removeData = _useUserList.removeData,
10852
+ changeFilters = _useUserList.changeFilters,
10853
+ reDirectDetailPage = _useUserList.reDirectDetailPage,
10854
+ swicthUser = _useUserList.swicthUser;
10888
10855
 
10889
- var amplitudeClient = amplitude.getInstance();
10856
+ var _useTranslation = reactI18next.useTranslation(),
10857
+ t = _useTranslation.t;
10858
+
10859
+ return React__default.createElement("div", {
10860
+ className: "fadeIn animated"
10861
+ }, React__default.createElement("h5", {
10862
+ className: "mb-2"
10863
+ }, t("" + header$4)), React__default.createElement(reactstrap.Row, {
10864
+ className: "my-2"
10865
+ }, React__default.createElement(reactstrap.Col, {
10866
+ md: 8
10867
+ }, React__default.createElement(SearchBoxContainer, {
10868
+ text: t("create_user"),
10869
+ onClick: function onClick() {
10870
+ return reDirectDetailPage();
10871
+ },
10872
+ initValue: !!queryName ? queryName : "",
10873
+ onSearch: function onSearch(searchString) {
10874
+ return changeFilters({
10875
+ searchString: searchString
10876
+ });
10877
+ },
10878
+ placeholder: t("type_something_to_search_by_user_name")
10879
+ })), React__default.createElement(reactstrap.Col, {
10880
+ md: 4,
10881
+ className: "d-flex justify-content-end align-items-center"
10882
+ }, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
10883
+ className: "mb-2"
10884
+ }, React__default.createElement(reactstrap.Col, {
10885
+ md: 12
10886
+ }, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
10887
+ bordered: true,
10888
+ hover: true,
10889
+ striped: true,
10890
+ responsive: true,
10891
+ size: "sm"
10892
+ }, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
10893
+ className: "align-top"
10894
+ }, t("name")), React__default.createElement("th", {
10895
+ className: "align-top"
10896
+ }, t("email")), React__default.createElement("th", {
10897
+ className: "align-top"
10898
+ }, t("age")), React__default.createElement("th", {
10899
+ className: "align-top"
10900
+ }, t("role")), React__default.createElement("th", {
10901
+ className: "align-top"
10902
+ }, t("active_status")), React__default.createElement("th", {
10903
+ className: "align-top"
10904
+ }, t("created_time")), React__default.createElement("th", {
10905
+ className: "text-center"
10906
+ }, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
10907
+ return React__default.createElement("tr", {
10908
+ key: record.id
10909
+ }, React__default.createElement("td", {
10910
+ className: "align-middle"
10911
+ }, React__default.createElement(LinkEditButton, {
10912
+ label: "" + record.fullName,
10913
+ onClick: function onClick() {
10914
+ return reDirectDetailPage(record.id);
10915
+ }
10916
+ })), React__default.createElement("td", {
10917
+ className: "align-middle"
10918
+ }, record.email), React__default.createElement("td", {
10919
+ className: "align-middle"
10920
+ }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
10921
+ className: "align-middle"
10922
+ }, !!record.roles && record.roles.join(", ")), React__default.createElement("td", {
10923
+ className: "align-middle"
10924
+ }, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
10925
+ className: "align-middle"
10926
+ }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
10927
+ className: "text-center align-middle"
10928
+ }, React__default.createElement(fa.FaUsersCog, {
10929
+ style: {
10930
+ fontSize: "18px",
10931
+ marginRight: "10px",
10932
+ cursor: "pointer"
10933
+ },
10934
+ onClick: function onClick() {
10935
+ return swicthUser(record.id);
10936
+ }
10937
+ }), React__default.createElement(DeleteButtonIcon, {
10938
+ onClick: function onClick() {
10939
+ return removeData(record.id);
10940
+ }
10941
+ })));
10942
+ })))) : React__default.createElement(EmptyDataAlert, {
10943
+ label: t("user")
10944
+ })), React__default.createElement(reactstrap.Col, {
10945
+ md: 12
10946
+ }, React__default.createElement(CustomPagination, {
10947
+ filters: filters,
10948
+ totalRecordCount: totalItems,
10949
+ changePageSize: function changePageSize(pageSize) {
10950
+ return changeFilters({
10951
+ pageSize: pageSize
10952
+ });
10953
+ },
10954
+ changePage: function changePage(currentPage) {
10955
+ return changeFilters({
10956
+ currentPage: currentPage
10957
+ });
10958
+ }
10959
+ }))));
10960
+ };
10961
+
10962
+ var amplitudeClient$1 = amplitude.getInstance();
10890
10963
 
10891
10964
  Object.defineProperty(exports, 'I18nextProvider', {
10892
10965
  enumerable: true,
@@ -10943,6 +11016,7 @@ exports.NOTIFICATION_ALERT_KEY = NOTIFICATION_ALERT_KEY;
10943
11016
  exports.NOTIFICATION_CHANNEL = NOTIFICATION_CHANNEL;
10944
11017
  exports.NotFound = NotFound;
10945
11018
  exports.NotificationList = NotificationList;
11019
+ exports.NotificationLogoutModal = NotificationLogoutModal;
10946
11020
  exports.NotificationModal = NotificationModal;
10947
11021
  exports.QUESTION_TYPES = QUESTION_TYPES;
10948
11022
  exports.QUESTION_TYPES_OPTIONS = QUESTION_TYPES_OPTIONS;
@@ -10967,7 +11041,7 @@ exports.UploadFileButton = UploadFileButton;
10967
11041
  exports.UserDetail = UserDetail;
10968
11042
  exports.UserList = UserList;
10969
11043
  exports.addTab = addTab;
10970
- exports.amplitudeClient = amplitudeClient;
11044
+ exports.amplitudeClient = amplitudeClient$1;
10971
11045
  exports.answerQuestion = answerQuestion;
10972
11046
  exports.answerQuestionDataPlayer = answerQuestionDataPlayer;
10973
11047
  exports.api = api;