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.
@@ -11,6 +11,7 @@ import { useDispatch, useSelector } from 'react-redux';
11
11
  import { createAction, createReducer, configureStore } from '@reduxjs/toolkit';
12
12
  import axios from 'axios';
13
13
  import amplitude from 'amplitude-js';
14
+ import moment from 'moment';
14
15
  import { useGoogleReCaptcha, GoogleReCaptcha, GoogleReCaptchaProvider } from 'react-google-recaptcha-v3';
15
16
  import GoogleLogin from 'react-google-login';
16
17
  import Select from 'react-select';
@@ -20,11 +21,10 @@ import { CgMenuRight } from 'react-icons/cg';
20
21
  import { RiLogoutBoxRLine } from 'react-icons/ri';
21
22
  import Pusher from 'pusher-js/with-encryption';
22
23
  import { BsChevronDown } from 'react-icons/bs';
23
- import { FaPlus, FaTrashAlt, FaUsersCog, FaRegEdit, FaArrowLeft, FaDownload, FaTrash, FaEdit, FaFolderPlus, FaFileUpload } from 'react-icons/fa';
24
+ import { FaPlus, FaTrashAlt, FaRegEdit, FaArrowLeft, FaDownload, FaTrash, FaEdit, FaFolderPlus, FaFileUpload, FaUsersCog } from 'react-icons/fa';
24
25
  import { format } from 'date-fns';
25
26
  import { Editor } from '@tinymce/tinymce-react';
26
27
  import differenceInCalendarYears from 'date-fns/differenceInCalendarYears';
27
- import moment from 'moment';
28
28
  import DatePicker from 'react-datepicker';
29
29
  import toDate from 'date-fns/toDate';
30
30
  import { MdAttachFile } from 'react-icons/md';
@@ -213,10 +213,10 @@ var teacher_training = "Teacher training";
213
213
  var created_time = "Create time";
214
214
  var total_reflections = "Total Reflections";
215
215
  var student_training = "Student training";
216
- var create_destination = "Create Destination";
216
+ var create_designation = "Create Designation";
217
217
  var total_of_designation = "Total of Designation";
218
- var destinations = "Destinations";
219
- var edit_destination = "Edit Destination";
218
+ var designations = "Designations";
219
+ var edit_designation = "Edit Designation";
220
220
  var confirm = "Confirm";
221
221
  var hello = "Hello";
222
222
  var todays_1_1 = "Today’s 1-1";
@@ -607,6 +607,7 @@ var current_secondary_teacher_name = "Current Secondary Teacher Name";
607
607
  var current_secondary_teacher_email = "Current Secondary Teacher Email";
608
608
  var remove_secondary_teacher = "Remove Secondary Teacher";
609
609
  var select_secondary_teacher_change = "Select Secondary Teacher Change";
610
+ var filter_calendar = "Filter calendar";
610
611
  var lang_us = {
611
612
  dashboard: dashboard,
612
613
  user: user,
@@ -791,10 +792,10 @@ var lang_us = {
791
792
  created_time: created_time,
792
793
  total_reflections: total_reflections,
793
794
  student_training: student_training,
794
- create_destination: create_destination,
795
+ create_designation: create_designation,
795
796
  total_of_designation: total_of_designation,
796
- destinations: destinations,
797
- edit_destination: edit_destination,
797
+ designations: designations,
798
+ edit_designation: edit_designation,
798
799
  confirm: confirm,
799
800
  hello: hello,
800
801
  todays_1_1: todays_1_1,
@@ -1189,7 +1190,8 @@ var lang_us = {
1189
1190
  current_secondary_teacher_name: current_secondary_teacher_name,
1190
1191
  current_secondary_teacher_email: current_secondary_teacher_email,
1191
1192
  remove_secondary_teacher: remove_secondary_teacher,
1192
- select_secondary_teacher_change: select_secondary_teacher_change
1193
+ select_secondary_teacher_change: select_secondary_teacher_change,
1194
+ filter_calendar: filter_calendar
1193
1195
  };
1194
1196
 
1195
1197
  var dashboard$1 = "Dashboard";
@@ -1374,10 +1376,10 @@ var teacher_training$1 = "Teacher training";
1374
1376
  var created_time$1 = "Create time";
1375
1377
  var total_reflections$1 = "Total Reflections";
1376
1378
  var student_training$1 = "Student training";
1377
- var create_destination$1 = "Create Destination";
1379
+ var create_designation$1 = "Create Designation";
1378
1380
  var total_of_designation$1 = "Total of Designation";
1379
- var destinations$1 = "Destinations";
1380
- var edit_destination$1 = "Edit Destination";
1381
+ var designations$1 = "Designations";
1382
+ var edit_designation$1 = "Edit Designation";
1381
1383
  var confirm$1 = "Confirm";
1382
1384
  var hello$1 = "Hello";
1383
1385
  var todays_1_1$1 = "Today’s 1-1";
@@ -1768,6 +1770,7 @@ var current_secondary_teacher_name$1 = "Current Secondary Teacher Name";
1768
1770
  var current_secondary_teacher_email$1 = "Current Secondary Teacher Email";
1769
1771
  var remove_secondary_teacher$1 = "Remove Secondary Teacher";
1770
1772
  var select_secondary_teacher_change$1 = "Select Secondary Teacher Change";
1773
+ var filter_calendar$1 = "Filter calendar";
1771
1774
  var lang_uk = {
1772
1775
  dashboard: dashboard$1,
1773
1776
  user: user$1,
@@ -1952,10 +1955,10 @@ var lang_uk = {
1952
1955
  created_time: created_time$1,
1953
1956
  total_reflections: total_reflections$1,
1954
1957
  student_training: student_training$1,
1955
- create_destination: create_destination$1,
1958
+ create_designation: create_designation$1,
1956
1959
  total_of_designation: total_of_designation$1,
1957
- destinations: destinations$1,
1958
- edit_destination: edit_destination$1,
1960
+ designations: designations$1,
1961
+ edit_designation: edit_designation$1,
1959
1962
  confirm: confirm$1,
1960
1963
  hello: hello$1,
1961
1964
  todays_1_1: todays_1_1$1,
@@ -2350,7 +2353,8 @@ var lang_uk = {
2350
2353
  current_secondary_teacher_name: current_secondary_teacher_name$1,
2351
2354
  current_secondary_teacher_email: current_secondary_teacher_email$1,
2352
2355
  remove_secondary_teacher: remove_secondary_teacher$1,
2353
- select_secondary_teacher_change: select_secondary_teacher_change$1
2356
+ select_secondary_teacher_change: select_secondary_teacher_change$1,
2357
+ filter_calendar: filter_calendar$1
2354
2358
  };
2355
2359
 
2356
2360
  var DEFAULT_LANGUAGE = localStorage.getItem("language") !== null ? localStorage.getItem("language") : "uk";
@@ -2709,6 +2713,7 @@ var apiUpload = axios.create({
2709
2713
 
2710
2714
  if (token) {
2711
2715
  config.headers.Authorization = "Bearer " + token;
2716
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
2712
2717
  }
2713
2718
 
2714
2719
  return config;
@@ -4378,6 +4383,7 @@ var Loading = function Loading() {
4378
4383
  var isLoading = useSelector(function (state) {
4379
4384
  return state.common.isLoading;
4380
4385
  });
4386
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
4381
4387
  return isLoading ? React.createElement("div", {
4382
4388
  style: loadingStyle
4383
4389
  }, React.createElement("div", {
@@ -6770,8 +6776,89 @@ var SkillList = function SkillList() {
6770
6776
  }))));
6771
6777
  };
6772
6778
 
6773
- var setUserList = createAction("users/setUserList");
6774
- var setStudentList = 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 = useDispatch();
6791
+
6792
+ var _useState = 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.createElement("img", {
6828
+ style: imageStyle,
6829
+ src: imageSrc,
6830
+ alt: "image"
6831
+ }) : null;
6832
+ return React.createElement("div", {
6833
+ className: "mb-2"
6834
+ }, React.createElement(Form, {
6835
+ className: "mb-2"
6836
+ }, React.createElement(Input, {
6837
+ className: "d-none",
6838
+ type: "file",
6839
+ id: "uploadFile",
6840
+ onChange: handleImageChange,
6841
+ accept: "image/*"
6842
+ }), React.createElement("div", {
6843
+ className: "d-flex align-items-center"
6844
+ }, React.createElement(Label, {
6845
+ htmlFor: "uploadFile",
6846
+ role: "button",
6847
+ tabIndex: 0,
6848
+ className: styles["input-file-label"]
6849
+ }, isCheckFeedBack == true ? React.createElement(MdAttachFile, null) : React.createElement(React.Fragment, null, React.createElement("i", {
6850
+ className: "fa fa-paperclip mr-1",
6851
+ "aria-hidden": "true"
6852
+ }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React.createElement(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.createElement(FaTrashAlt, null)))), imagePreviewContainer);
6861
+ };
6775
6862
 
6776
6863
  var USER_URL$1 = BASE_URL + "/api/user";
6777
6864
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
@@ -6804,38 +6891,54 @@ var switchAccountUser = function switchAccountUser(id) {
6804
6891
  return api.post(EDU_USER_URL + "/switch-user/" + id);
6805
6892
  };
6806
6893
 
6807
- var USER_URL$2 = "/admin/user";
6808
- var CREATE_USER_URL = "/admin/create-user";
6809
- var TITLE$7 = "User list";
6810
- var HOMEPAGE_TEACHER$1 = "/home";
6811
- var HOMEPAGE_STUDENT$1 = "/home";
6812
- var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
6813
- var HOMEPAGE_PARENT$1 = "/parent";
6814
- var HOMEPAGE_DISTRICT$1 = "/admin/schools";
6815
- var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
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";
6816
6906
 
6817
- var useUserList = function useUserList() {
6907
+ var useUserDetail = function useUserDetail(id) {
6908
+ var dispatch = useDispatch();
6818
6909
  var history = useHistory();
6819
- var query = new URLSearchParams(location.search);
6820
- var queryName = query.get("query");
6821
- var userList = useSelector(function (state) {
6822
- return state.users.userList;
6823
- });
6824
- var totalItems = useSelector(function (state) {
6825
- return state.users.totalItems;
6826
- });
6827
6910
 
6828
- var _useFilters = useFilters(),
6829
- filters = _useFilters.filters,
6830
- changeFilters = _useFilters.changeFilters;
6911
+ var _useState = useState(initValue$3),
6912
+ userDetail = _useState[0],
6913
+ setUserDetail = _useState[1];
6831
6914
 
6832
- var _useState = useState(!!queryName ? queryName : ""),
6833
- fullName = _useState[0],
6834
- setFullName = _useState[1];
6915
+ var _useState2 = useState(null),
6916
+ file = _useState2[0],
6917
+ setFile = _useState2[1];
6835
6918
 
6836
- var isDistrict = window.location.host.includes("-district");
6837
- var dispatch = useDispatch();
6838
- var getData = useCallback(function (fullName) {
6919
+ var _useState3 = 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
+ useEffect(function () {
6934
+ document.title = TITLE$7;
6935
+ setEdited(false);
6936
+ if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
6937
+ }, []);
6938
+ useEffect(function () {
6939
+ !!id && getData();
6940
+ }, [id]);
6941
+ var getData = useCallback(function () {
6839
6942
  try {
6840
6943
  var _temp3 = function _temp3() {
6841
6944
  dispatch(setLoading(false));
@@ -6844,22 +6947,14 @@ var useUserList = function useUserList() {
6844
6947
  dispatch(setLoading(true));
6845
6948
 
6846
6949
  var _temp4 = _catch(function () {
6847
- return Promise.resolve(fullName ? get$5(_extends({}, filters, {
6848
- searchString: fullName
6849
- })) : get$5(filters)).then(function (res) {
6850
- var _res$data = res.data,
6851
- items = _res$data.items,
6852
- totalItems = _res$data.totalItems;
6853
-
6854
- for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
6855
- var user = _step.value;
6856
- user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
6857
- }
6950
+ return Promise.resolve(getById$3(id)).then(function (res) {
6951
+ var _res$data;
6858
6952
 
6859
- dispatch(setUserList({
6860
- userList: items,
6861
- totalItems: totalItems
6953
+ setUserDetail(_extends({}, res.data, {
6954
+ dateOfBirth: format(new Date(res.data.dateOfBirth), DATE_FORMAT),
6955
+ roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
6862
6956
  }));
6957
+ document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
6863
6958
  });
6864
6959
  }, function (err) {
6865
6960
  var _err$response, _err$response$data;
@@ -6874,688 +6969,171 @@ var useUserList = function useUserList() {
6874
6969
  } catch (e) {
6875
6970
  return Promise.reject(e);
6876
6971
  }
6877
- }, [dispatch, filters]);
6878
- useEffect(function () {
6879
- document.title = TITLE$7;
6972
+ }, [id]);
6973
+ var backToList = useCallback(function (user) {
6974
+ !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
6880
6975
  }, []);
6881
- useEffect(function () {
6882
- if (!!fullName) {
6883
- getData(fullName);
6884
- setFullName(null);
6885
- } else {
6886
- getData();
6887
- }
6888
- }, [filters]);
6889
- var removeData = useCallback(function (id) {
6890
- dispatch(setLoading(true));
6891
-
6976
+ var confirmData = useCallback(function (data) {
6892
6977
  try {
6893
- dispatch(setModal({
6894
- isOpen: true,
6895
- type: "warning",
6896
- message: "Do you want to remove this user?",
6897
- onConfirm: function () {
6898
- try {
6899
- return Promise.resolve(remove$3(id)).then(function () {
6900
- dispatch(setAlert({
6901
- type: "success",
6902
- message: "Remove user successfully"
6903
- }));
6904
- changeFilters({
6905
- currentPage: 1
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);
6906
6992
  });
6907
- });
6908
- } catch (e) {
6909
- return Promise.reject(e);
6910
- }
6911
- }
6912
- }));
6913
- } catch (err) {
6914
- var _err$response2, _err$response2$data;
6993
+ }
6915
6994
 
6916
- dispatch(setAlert({
6917
- type: "danger",
6918
- message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message
6919
- }));
6920
- }
6995
+ if (!id) {
6996
+ alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
6997
+ }
6921
6998
 
6922
- dispatch(setLoading(false));
6923
- }, [filters]);
6999
+ dispatch(setAlert({
7000
+ type: "success",
7001
+ message: (!!id ? "Update" : "Create") + " user successfully"
7002
+ }));
7003
+ });
7004
+ }
6924
7005
 
6925
- var redirectLoginUser = function redirectLoginUser(res) {
6926
- var _res$data2 = res.data,
6927
- token = _res$data2.token,
6928
- id = _res$data2.id,
6929
- firstName = _res$data2.firstName,
6930
- lastName = _res$data2.lastName,
6931
- roles = _res$data2.roles,
6932
- email = _res$data2.email,
6933
- profileImageFileName = _res$data2.profileImageFileName;
6934
- localStorage.setItem(ACCESS_TOKEN, token);
6935
- localStorage.removeItem(NOTIFICATION_ALERT_KEY);
6936
- dispatch(setUser({
6937
- id: id,
6938
- firstName: firstName,
6939
- lastName: lastName,
6940
- roles: roles,
6941
- email: email,
6942
- profileImageFileName: profileImageFileName
6943
- }));
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;
6944
7013
 
6945
- if (isDistrict) {
6946
- history.push(HOMEPAGE_DISTRICT$1);
6947
- } else if (roles.includes("Admin")) {
6948
- history.push(HOMEPAGE_ADMIN$1);
6949
- } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
6950
- history.push(HOMEPAGE_TEACHER$1);
6951
- } else if (roles.includes("Student")) {
6952
- history.push(HOMEPAGE_STUDENT$1);
6953
- } else if (roles.includes("Parent")) {
6954
- history.push(HOMEPAGE_PARENT$1);
6955
- } else if (roles.includes("EduTeacher")) {
6956
- history.push(HOMEPAGE_EDU_TEACHER$1);
6957
- } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
6958
- history.push(HOMEPAGE_TEACHER$1);
6959
- }
6960
- };
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
+ }();
6961
7019
 
6962
- var swicthUser = useCallback(function (id) {
6963
- try {
6964
- var _temp6 = _catch(function () {
6965
- return Promise.resolve(switchAccountUser(id)).then(function (res) {
6966
- var data = res.data;
6967
- dispatch(setModal({
6968
- isOpen: true,
6969
- type: "warning",
6970
- message: "Do you want to impersonate this user?",
6971
- onConfirm: function () {
6972
- try {
6973
- var _temp9 = function _temp9() {
6974
- dispatch(setLoading(false));
6975
- };
7020
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
7021
+ }, function (err) {
7022
+ var _err$response2, _err$response2$data;
6976
7023
 
6977
- 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
+ });
6978
7029
 
6979
- var _temp10 = _catch(function () {
6980
- var req = {
6981
- email: data.email,
6982
- password: "default",
6983
- accessToken: data.token
6984
- };
6985
- return Promise.resolve(logIn(req)).then(function (res) {
6986
- localStorage.clear();
6987
- redirectLoginUser(res);
6988
- });
6989
- }, function (err) {
6990
- var _err$response3, _err$response3$data;
7030
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7031
+ } catch (e) {
7032
+ return Promise.reject(e);
7033
+ }
7034
+ }, [id, file]);
6991
7035
 
6992
- setAlert({
6993
- type: "danger",
6994
- message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message
6995
- });
6996
- });
7036
+ var confirmChangePassword = function confirmChangePassword(data) {
7037
+ try {
7038
+ var _temp13 = function _temp13() {
7039
+ dispatch(setLoading(false));
7040
+ };
6997
7041
 
6998
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
6999
- } catch (e) {
7000
- return Promise.reject(e);
7001
- }
7002
- }
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"
7003
7049
  }));
7004
7050
  });
7005
- }, function (err) {
7006
- var _err$response4, _err$response4$data;
7051
+ }, function (e) {
7052
+ var _e$response, _e$response$data;
7007
7053
 
7008
7054
  dispatch(setAlert({
7009
7055
  type: "danger",
7010
- message: ((_err$response4 = err.response) === null || _err$response4 === void 0 ? void 0 : (_err$response4$data = _err$response4.data) === null || _err$response4$data === void 0 ? void 0 : _err$response4$data.title) || err.message
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
7011
7057
  }));
7012
7058
  });
7013
7059
 
7014
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7060
+ return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7015
7061
  } catch (e) {
7016
7062
  return Promise.reject(e);
7017
7063
  }
7018
- }, [filters]);
7019
-
7020
- var reDirectDetailPage = function reDirectDetailPage(id) {
7021
- var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
7022
- history.push(url);
7023
7064
  };
7024
7065
 
7025
- return {
7026
- userList: userList,
7027
- totalItems: totalItems,
7028
- filters: filters,
7029
- queryName: queryName,
7030
- getData: getData,
7031
- removeData: removeData,
7032
- changeFilters: changeFilters,
7033
- reDirectDetailPage: reDirectDetailPage,
7034
- swicthUser: swicthUser
7035
- };
7036
- };
7066
+ var forgotPasswordRequest = useCallback(function (data) {
7067
+ try {
7068
+ var _temp17 = function _temp17() {
7069
+ dispatch(setLoading(false));
7070
+ };
7037
7071
 
7038
- var SearchBox = function SearchBox(_ref) {
7039
- var initValue = _ref.initValue,
7040
- onSearch = _ref.onSearch,
7041
- placeholder = _ref.placeholder,
7042
- className = _ref.className,
7043
- style = _ref.style;
7072
+ dispatch(setLoading(true));
7044
7073
 
7045
- var _useState = useState(initValue),
7046
- searchString = _useState[0],
7047
- 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;
7048
7083
 
7049
- useEffect(function () {
7050
- setSearchString(initValue);
7051
- }, [initValue]);
7052
- var onKeyUp = useCallback(function (e) {
7053
- e.key === "Enter" && onSearch(searchString);
7054
- }, [searchString, onSearch]);
7055
- return React.createElement(Input, {
7056
- placeholder: placeholder,
7057
- value: searchString,
7058
- onChange: function onChange(e) {
7059
- return setSearchString(e.target.value);
7060
- },
7061
- onKeyUp: onKeyUp,
7062
- className: className,
7063
- style: style
7064
- });
7065
- };
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
+ });
7066
7089
 
7067
- SearchBox.defaultProps = {
7068
- placeholder: "Type something to search",
7069
- className: "",
7070
- 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
+ };
7071
7107
  };
7072
- var SearchBox$1 = memo(SearchBox);
7073
7108
 
7074
- var searchInputStyle = {
7075
- height: 38
7076
- };
7109
+ var userSchema = object({
7110
+ firstName: string().required("First name is required"),
7111
+ lastName: string().required("Last name is required"),
7112
+ dateOfBirth: string().required("Date of birth is required"),
7113
+ email: string().email("Email is invalid").required("Email is required"),
7114
+ roles: array().of(string()).min(1, "Role is required")
7115
+ });
7077
7116
 
7078
- var SearchBoxContainer = function SearchBoxContainer(_ref) {
7079
- var text = _ref.text,
7080
- initValue = _ref.initValue,
7081
- onClick = _ref.onClick,
7082
- onSearch = _ref.onSearch,
7083
- placeholder = _ref.placeholder;
7084
- return React.createElement("div", {
7085
- className: "d-flex align-items-center"
7086
- }, React.createElement("div", null, React.createElement(AddButton, {
7087
- text: text,
7088
- onClick: onClick
7089
- })), React.createElement("div", {
7090
- className: "flex-grow-1 ml-2"
7091
- }, React.createElement(SearchBox$1, {
7092
- initValue: initValue,
7093
- onSearch: onSearch,
7094
- placeholder: placeholder,
7095
- style: searchInputStyle
7096
- })));
7097
- };
7117
+ var changePasswordSchema = object({
7118
+ oldPassword: string().required("Current password is required"),
7119
+ newPassword: string().required("New password is required"),
7120
+ confirmedNewPassword: string().required("Confirm password is required")
7121
+ });
7098
7122
 
7099
- SearchBoxContainer.defaultProps = {
7100
- placeholder: "Type something to search"
7101
- };
7123
+ var CREATE_USER = "create_user";
7124
+ var EDIT_USER_HEADER = "edit_user";
7125
+ var CHANGE_PASSWORD$1 = "change_password";
7102
7126
 
7103
- var utcToLocalTime = (function (time, FORMAT) {
7104
- if (time === DATE_MIN_VALUE) return "";
7127
+ var UserDetail = function UserDetail() {
7128
+ var _useParams = useParams(),
7129
+ id = _useParams.id;
7105
7130
 
7106
- try {
7107
- return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7108
- } catch (_unused) {
7109
- return "";
7110
- }
7111
- });
7131
+ var user = useSelector(function (state) {
7132
+ return state.common.user;
7133
+ });
7112
7134
 
7113
- var header$2 = "User";
7114
-
7115
- var UserList = function UserList() {
7116
- var _useUserList = useUserList(),
7117
- queryName = _useUserList.queryName,
7118
- userList = _useUserList.userList,
7119
- totalItems = _useUserList.totalItems,
7120
- filters = _useUserList.filters,
7121
- removeData = _useUserList.removeData,
7122
- changeFilters = _useUserList.changeFilters,
7123
- reDirectDetailPage = _useUserList.reDirectDetailPage,
7124
- swicthUser = _useUserList.swicthUser;
7125
-
7126
- var _useTranslation = useTranslation(),
7127
- t = _useTranslation.t;
7128
-
7129
- return React.createElement("div", {
7130
- className: "fadeIn animated"
7131
- }, React.createElement("h5", {
7132
- className: "mb-2"
7133
- }, t("" + header$2)), React.createElement(Row, {
7134
- className: "my-2"
7135
- }, React.createElement(Col, {
7136
- md: 8
7137
- }, React.createElement(SearchBoxContainer, {
7138
- text: t("create_user"),
7139
- onClick: function onClick() {
7140
- return reDirectDetailPage();
7141
- },
7142
- initValue: !!queryName ? queryName : "",
7143
- onSearch: function onSearch(searchString) {
7144
- return changeFilters({
7145
- searchString: searchString
7146
- });
7147
- },
7148
- placeholder: t("type_something_to_search_by_user_name")
7149
- })), React.createElement(Col, {
7150
- md: 4,
7151
- className: "d-flex justify-content-end align-items-center"
7152
- }, t("total_of_users"), " : ", totalItems)), React.createElement(Row, {
7153
- className: "mb-2"
7154
- }, React.createElement(Col, {
7155
- md: 12
7156
- }, userList && userList.length > 0 ? React.createElement("div", null, React.createElement(Table, {
7157
- bordered: true,
7158
- hover: true,
7159
- striped: true,
7160
- responsive: true,
7161
- size: "sm"
7162
- }, React.createElement("thead", null, React.createElement("tr", null, React.createElement("th", {
7163
- className: "align-top"
7164
- }, t("name")), React.createElement("th", {
7165
- className: "align-top"
7166
- }, t("email")), React.createElement("th", {
7167
- className: "align-top"
7168
- }, t("age")), React.createElement("th", {
7169
- className: "align-top"
7170
- }, t("role")), React.createElement("th", {
7171
- className: "align-top"
7172
- }, t("active_status")), React.createElement("th", {
7173
- className: "align-top"
7174
- }, t("created_time")), React.createElement("th", {
7175
- className: "text-center"
7176
- }, t("action")))), React.createElement("tbody", null, userList.map(function (record) {
7177
- return React.createElement("tr", {
7178
- key: record.id
7179
- }, React.createElement("td", {
7180
- className: "align-middle"
7181
- }, React.createElement(LinkEditButton, {
7182
- label: "" + record.fullName,
7183
- onClick: function onClick() {
7184
- return reDirectDetailPage(record.id);
7185
- }
7186
- })), React.createElement("td", {
7187
- className: "align-middle"
7188
- }, record.email), React.createElement("td", {
7189
- className: "align-middle"
7190
- }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React.createElement("td", {
7191
- className: "align-middle"
7192
- }, !!record.roles && record.roles.join(", ")), React.createElement("td", {
7193
- className: "align-middle"
7194
- }, record.isActive ? t("active") : t("inactive")), React.createElement("td", {
7195
- className: "align-middle"
7196
- }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React.createElement("td", {
7197
- className: "text-center align-middle"
7198
- }, React.createElement(FaUsersCog, {
7199
- style: {
7200
- fontSize: "18px",
7201
- marginRight: "10px",
7202
- cursor: "pointer"
7203
- },
7204
- onClick: function onClick() {
7205
- return swicthUser(record.id);
7206
- }
7207
- }), React.createElement(DeleteButtonIcon, {
7208
- onClick: function onClick() {
7209
- return removeData(record.id);
7210
- }
7211
- })));
7212
- })))) : React.createElement(EmptyDataAlert, {
7213
- label: t("user")
7214
- })), React.createElement(Col, {
7215
- md: 12
7216
- }, React.createElement(CustomPagination, {
7217
- filters: filters,
7218
- totalRecordCount: totalItems,
7219
- changePageSize: function changePageSize(pageSize) {
7220
- return changeFilters({
7221
- pageSize: pageSize
7222
- });
7223
- },
7224
- changePage: function changePage(currentPage) {
7225
- return changeFilters({
7226
- currentPage: currentPage
7227
- });
7228
- }
7229
- }))));
7230
- };
7231
-
7232
- var MAX_FILE_SIZE = 20097152;
7233
-
7234
- var UploadFileButton = function UploadFileButton(_ref) {
7235
- var fileName = _ref.fileName,
7236
- maxWidth = _ref.maxWidth,
7237
- maxHeight = _ref.maxHeight,
7238
- setFile = _ref.setFile,
7239
- canDelete = _ref.canDelete,
7240
- onDelete = _ref.onDelete,
7241
- isCheckFeedBack = _ref.isCheckFeedBack,
7242
- onAddImage = _ref.onAddImage;
7243
- var dispatch = useDispatch();
7244
-
7245
- var _useState = useState(""),
7246
- imagePreviewUrl = _useState[0],
7247
- setImagePreviewUrl = _useState[1];
7248
-
7249
- var imageStyle = {
7250
- maxWidth: maxWidth || "100%",
7251
- maxHeight: maxHeight || "100%"
7252
- };
7253
- var imageSrc = imagePreviewUrl || getFileUrl(fileName);
7254
-
7255
- var handleImageChange = function handleImageChange(e) {
7256
- e.preventDefault();
7257
- var reader = new FileReader();
7258
- var newFile = e.target.files[0];
7259
-
7260
- if (newFile.size > MAX_FILE_SIZE) {
7261
- dispatch(setAlert({
7262
- type: "danger",
7263
- message: "File can't be larger than 2MB"
7264
- }));
7265
- return;
7266
- }
7267
-
7268
- reader.onloadend = function () {
7269
- setFile(newFile);
7270
- setImagePreviewUrl(reader.result);
7271
- };
7272
-
7273
- if (newFile) {
7274
- reader.readAsDataURL(newFile);
7275
- }
7276
-
7277
- !!onAddImage && onAddImage();
7278
- };
7279
-
7280
- var imagePreviewContainer = imagePreviewUrl || fileName ? React.createElement("img", {
7281
- style: imageStyle,
7282
- src: imageSrc,
7283
- alt: "image"
7284
- }) : null;
7285
- return React.createElement("div", {
7286
- className: "mb-2"
7287
- }, React.createElement(Form, {
7288
- className: "mb-2"
7289
- }, React.createElement(Input, {
7290
- className: "d-none",
7291
- type: "file",
7292
- id: "uploadFile",
7293
- onChange: handleImageChange,
7294
- accept: "image/*"
7295
- }), React.createElement("div", {
7296
- className: "d-flex align-items-center"
7297
- }, React.createElement(Label, {
7298
- htmlFor: "uploadFile",
7299
- role: "button",
7300
- tabIndex: 0,
7301
- className: styles["input-file-label"]
7302
- }, isCheckFeedBack == true ? React.createElement(MdAttachFile, null) : React.createElement(React.Fragment, null, React.createElement("i", {
7303
- className: "fa fa-paperclip mr-1",
7304
- "aria-hidden": "true"
7305
- }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React.createElement(Button, {
7306
- size: "sm",
7307
- color: "danger",
7308
- className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
7309
- onClick: function onClick() {
7310
- setImagePreviewUrl(null);
7311
- onDelete && onDelete();
7312
- }
7313
- }, React.createElement(FaTrashAlt, null)))), imagePreviewContainer);
7314
- };
7315
-
7316
- var initValue$3 = {
7317
- id: "",
7318
- firstName: "",
7319
- lastName: "",
7320
- email: "",
7321
- dateOfBirth: "",
7322
- roles: [],
7323
- isActive: true,
7324
- profileImageFileName: ""
7325
- };
7326
- var USER_LIST_URL = "/admin/user";
7327
- var TITLE$8 = "User detail";
7328
-
7329
- var useUserDetail = function useUserDetail(id) {
7330
- var dispatch = useDispatch();
7331
- var history = useHistory();
7332
-
7333
- var _useState = useState(initValue$3),
7334
- userDetail = _useState[0],
7335
- setUserDetail = _useState[1];
7336
-
7337
- var _useState2 = useState(null),
7338
- file = _useState2[0],
7339
- setFile = _useState2[1];
7340
-
7341
- var _useState3 = useState(false),
7342
- edited = _useState3[0],
7343
- setEdited = _useState3[1];
7344
-
7345
- var setEditedTrue = function setEditedTrue() {
7346
- try {
7347
- localStorage.setItem(window.location.href, "true");
7348
- setEdited(true);
7349
- return Promise.resolve();
7350
- } catch (e) {
7351
- return Promise.reject(e);
7352
- }
7353
- };
7354
-
7355
- useEffect(function () {
7356
- document.title = TITLE$8;
7357
- setEdited(false);
7358
- if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
7359
- }, []);
7360
- useEffect(function () {
7361
- !!id && getData();
7362
- }, [id]);
7363
- var getData = useCallback(function () {
7364
- try {
7365
- var _temp3 = function _temp3() {
7366
- dispatch(setLoading(false));
7367
- };
7368
-
7369
- dispatch(setLoading(true));
7370
-
7371
- var _temp4 = _catch(function () {
7372
- return Promise.resolve(getById$3(id)).then(function (res) {
7373
- var _res$data;
7374
-
7375
- setUserDetail(_extends({}, res.data, {
7376
- dateOfBirth: format(new Date(res.data.dateOfBirth), DATE_FORMAT),
7377
- roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
7378
- }));
7379
- document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
7380
- });
7381
- }, function (err) {
7382
- var _err$response, _err$response$data;
7383
-
7384
- dispatch(setAlert({
7385
- type: "danger",
7386
- message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
7387
- }));
7388
- });
7389
-
7390
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
7391
- } catch (e) {
7392
- return Promise.reject(e);
7393
- }
7394
- }, [id]);
7395
- var backToList = useCallback(function (user) {
7396
- !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
7397
- }, []);
7398
- var confirmData = useCallback(function (data) {
7399
- try {
7400
- var _temp9 = function _temp9() {
7401
- dispatch(setLoading(false));
7402
- };
7403
-
7404
- dispatch(setLoading(true));
7405
-
7406
- var _temp10 = _catch(function () {
7407
- function _temp6() {
7408
- var next = !!id ? update$5 : create$5;
7409
- !id && delete data.id;
7410
- return Promise.resolve(next(data)).then(function (result) {
7411
- if (!!result) {
7412
- getById$3(result.data.id).then(function (e) {
7413
- backToList(e.data.fullName);
7414
- });
7415
- }
7416
-
7417
- if (!id) {
7418
- alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
7419
- }
7420
-
7421
- dispatch(setAlert({
7422
- type: "success",
7423
- message: (!!id ? "Update" : "Create") + " user successfully"
7424
- }));
7425
- });
7426
- }
7427
-
7428
- var _temp5 = function () {
7429
- if (!!file) {
7430
- var formData = new FormData();
7431
- var name = file.name;
7432
- formData.append("file", file, name);
7433
- return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
7434
- var _res$data2;
7435
-
7436
- var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
7437
- data.profileImageFileName = imageUrl;
7438
- });
7439
- }
7440
- }();
7441
-
7442
- return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
7443
- }, function (err) {
7444
- var _err$response2, _err$response2$data;
7445
-
7446
- dispatch(setAlert({
7447
- type: "danger",
7448
- message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message
7449
- }));
7450
- });
7451
-
7452
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7453
- } catch (e) {
7454
- return Promise.reject(e);
7455
- }
7456
- }, [id, file]);
7457
-
7458
- var confirmChangePassword = function confirmChangePassword(data) {
7459
- try {
7460
- var _temp13 = function _temp13() {
7461
- dispatch(setLoading(false));
7462
- };
7463
-
7464
- dispatch(setLoading(true));
7465
-
7466
- var _temp14 = _catch(function () {
7467
- return Promise.resolve(changePassword(data)).then(function () {
7468
- dispatch(setAlert({
7469
- type: "success",
7470
- message: "Change password successfully"
7471
- }));
7472
- });
7473
- }, function (e) {
7474
- var _e$response, _e$response$data;
7475
-
7476
- dispatch(setAlert({
7477
- type: "danger",
7478
- message: ((_e$response = e.response) === null || _e$response === void 0 ? void 0 : (_e$response$data = _e$response.data) === null || _e$response$data === void 0 ? void 0 : _e$response$data.title) || e.message
7479
- }));
7480
- });
7481
-
7482
- return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7483
- } catch (e) {
7484
- return Promise.reject(e);
7485
- }
7486
- };
7487
-
7488
- var forgotPasswordRequest = useCallback(function (data) {
7489
- try {
7490
- var _temp17 = function _temp17() {
7491
- dispatch(setLoading(false));
7492
- };
7493
-
7494
- dispatch(setLoading(true));
7495
-
7496
- var _temp18 = _catch(function () {
7497
- return Promise.resolve(forgotChangePassword(data)).then(function () {
7498
- dispatch(setAlert({
7499
- type: "success",
7500
- message: "Send forgot password link successfully"
7501
- }));
7502
- });
7503
- }, function (err) {
7504
- var _err$response3, _err$response3$data;
7505
-
7506
- dispatch(setAlert({
7507
- type: "danger",
7508
- message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message || "Error occured"
7509
- }));
7510
- });
7511
-
7512
- return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7513
- } catch (e) {
7514
- return Promise.reject(e);
7515
- }
7516
- }, []);
7517
- return {
7518
- userDetail: userDetail,
7519
- backToList: backToList,
7520
- confirmData: confirmData,
7521
- file: file,
7522
- setFile: setFile,
7523
- edited: edited,
7524
- setEdited: setEdited,
7525
- setEditedTrue: setEditedTrue,
7526
- confirmChangePassword: confirmChangePassword,
7527
- forgotPasswordRequest: forgotPasswordRequest
7528
- };
7529
- };
7530
-
7531
- var userSchema = object({
7532
- firstName: string().required("First name is required"),
7533
- lastName: string().required("Last name is required"),
7534
- dateOfBirth: string().required("Date of birth is required"),
7535
- email: string().email("Email is invalid").required("Email is required"),
7536
- roles: array().of(string()).min(1, "Role is required")
7537
- });
7538
-
7539
- var changePasswordSchema = object({
7540
- oldPassword: string().required("Current password is required"),
7541
- newPassword: string().required("New password is required"),
7542
- confirmedNewPassword: string().required("Confirm password is required")
7543
- });
7544
-
7545
- var CREATE_USER = "create_user";
7546
- var EDIT_USER_HEADER = "edit_user";
7547
- var CHANGE_PASSWORD$1 = "change_password";
7548
-
7549
- var UserDetail = function UserDetail() {
7550
- var _useParams = useParams(),
7551
- id = _useParams.id;
7552
-
7553
- var user = useSelector(function (state) {
7554
- return state.common.user;
7555
- });
7556
-
7557
- var _useTranslation = useTranslation(),
7558
- t = _useTranslation.t;
7135
+ var _useTranslation = useTranslation(),
7136
+ t = _useTranslation.t;
7559
7137
 
7560
7138
  var _useUserDetail = useUserDetail(id),
7561
7139
  userDetail = _useUserDetail.userDetail,
@@ -7966,21 +7544,96 @@ var headerTextStyle = {
7966
7544
  textAlign: "center"
7967
7545
  };
7968
7546
 
7969
- var CommonHeader = function CommonHeader(_ref) {
7970
- var header = _ref.header,
7971
- rootHeader = _ref.rootHeader;
7972
- return React.createElement("div", {
7973
- style: headerStyle
7974
- }, React.createElement(Row, null, rootHeader && React.createElement(Col, {
7975
- md: 4
7976
- }, React.createElement("span", {
7977
- className: "text-muted",
7978
- style: headerTextStyle
7979
- }, rootHeader)), React.createElement(Col, {
7980
- md: 4
7981
- }, React.createElement("span", {
7982
- style: headerTextStyle
7983
- }, header))));
7547
+ var CommonHeader = function CommonHeader(_ref) {
7548
+ var header = _ref.header,
7549
+ rootHeader = _ref.rootHeader;
7550
+ return React.createElement("div", {
7551
+ style: headerStyle
7552
+ }, React.createElement(Row, null, rootHeader && React.createElement(Col, {
7553
+ md: 4
7554
+ }, React.createElement("span", {
7555
+ className: "text-muted",
7556
+ style: headerTextStyle
7557
+ }, rootHeader)), React.createElement(Col, {
7558
+ md: 4
7559
+ }, React.createElement("span", {
7560
+ style: headerTextStyle
7561
+ }, header))));
7562
+ };
7563
+
7564
+ var utcToLocalTime = (function (time, FORMAT) {
7565
+ if (time === DATE_MIN_VALUE) return "";
7566
+
7567
+ try {
7568
+ return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7569
+ } catch (_unused) {
7570
+ return "";
7571
+ }
7572
+ });
7573
+
7574
+ var NotificationLogoutModal = function NotificationLogoutModal() {
7575
+ var _useState = useState(false),
7576
+ isOpen = _useState[0],
7577
+ setIsOpen = _useState[1];
7578
+
7579
+ var _useState2 = useState({
7580
+ minutes: 0,
7581
+ timeLogout: ""
7582
+ }),
7583
+ objTime = _useState2[0],
7584
+ setObjTime = _useState2[1];
7585
+
7586
+ var checkOpenModalLogout = function checkOpenModalLogout() {
7587
+ var lastTimeOut = localStorage.getItem("LAST_TIME_REQUETST");
7588
+ console.log({
7589
+ lastTimeOut: lastTimeOut
7590
+ });
7591
+ var timeMoment = moment(lastTimeOut, "YYYY-MM-DD HH:mm");
7592
+ var currentTime = moment(moment().utc().format("YYYY-MM-DD HH:mm"));
7593
+ var minutes = currentTime.diff(timeMoment, "minutes");
7594
+ var timeLogout = utcToLocalTime(currentTime.add(16 - minutes, 'minutes').format("YYYY-MM-DD HH:mm"), "HH:mm");
7595
+
7596
+ if (minutes == 13) {
7597
+ var dataTime = {
7598
+ minutes: minutes,
7599
+ timeLogout: timeLogout
7600
+ };
7601
+ setObjTime(dataTime);
7602
+ onToggle();
7603
+ }
7604
+ };
7605
+
7606
+ useEffect(function () {
7607
+ var getAccessToken = localStorage.getItem(ACCESS_TOKEN);
7608
+
7609
+ if (getAccessToken) {
7610
+ var interval = setInterval(function () {
7611
+ checkOpenModalLogout();
7612
+ }, 60 * 1000);
7613
+ return function () {
7614
+ return clearInterval(interval);
7615
+ };
7616
+ }
7617
+
7618
+ return;
7619
+ }, []);
7620
+
7621
+ var onToggle = function onToggle() {
7622
+ setIsOpen(!isOpen);
7623
+ };
7624
+
7625
+ return React.createElement(Modal, {
7626
+ isOpen: isOpen,
7627
+ toggle: onToggle,
7628
+ size: "xs"
7629
+ }, React.createElement(ModalHeader, {
7630
+ toggle: onToggle
7631
+ }, "Notification Logout"), React.createElement(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.createElement(ModalFooter, {
7632
+ className: "text-right"
7633
+ }, React.createElement(Button, {
7634
+ color: "primary",
7635
+ onClick: onToggle
7636
+ }, "Confirm")));
7984
7637
  };
7985
7638
 
7986
7639
  var EditButtonIcon = function EditButtonIcon(_ref) {
@@ -8017,6 +7670,42 @@ var CreatableSelector = function CreatableSelector(props) {
8017
7670
  });
8018
7671
  };
8019
7672
 
7673
+ var SearchBox = function SearchBox(_ref) {
7674
+ var initValue = _ref.initValue,
7675
+ onSearch = _ref.onSearch,
7676
+ placeholder = _ref.placeholder,
7677
+ className = _ref.className,
7678
+ style = _ref.style;
7679
+
7680
+ var _useState = useState(initValue),
7681
+ searchString = _useState[0],
7682
+ setSearchString = _useState[1];
7683
+
7684
+ useEffect(function () {
7685
+ setSearchString(initValue);
7686
+ }, [initValue]);
7687
+ var onKeyUp = useCallback(function (e) {
7688
+ e.key === "Enter" && onSearch(searchString);
7689
+ }, [searchString, onSearch]);
7690
+ return React.createElement(Input, {
7691
+ placeholder: placeholder,
7692
+ value: searchString,
7693
+ onChange: function onChange(e) {
7694
+ return setSearchString(e.target.value);
7695
+ },
7696
+ onKeyUp: onKeyUp,
7697
+ className: className,
7698
+ style: style
7699
+ });
7700
+ };
7701
+
7702
+ SearchBox.defaultProps = {
7703
+ placeholder: "Type something to search",
7704
+ className: "",
7705
+ style: {}
7706
+ };
7707
+ var SearchBox$1 = memo(SearchBox);
7708
+
8020
7709
  var QuestionTypeSelector = function QuestionTypeSelector(props) {
8021
7710
  var id = props.id;
8022
7711
  var initValue = !!id ? QUESTION_TYPES_OPTIONS.find(function (option) {
@@ -8378,7 +8067,7 @@ var defaultFilters = {
8378
8067
  searchString: "",
8379
8068
  isRead: false
8380
8069
  };
8381
- var TITLE$9 = "Notification list";
8070
+ var TITLE$8 = "Notification list";
8382
8071
  var NOTIFICATION_CHANNEL$1 = "NOTIFICATION_CHANNEL";
8383
8072
  var NEW_NOTIFICATION$1 = "NEW_NOTIFICATION";
8384
8073
 
@@ -8503,7 +8192,7 @@ var useNotificationList = function useNotificationList() {
8503
8192
  }
8504
8193
  }, [filters]);
8505
8194
  useEffect(function () {
8506
- document.title = TITLE$9;
8195
+ document.title = TITLE$8;
8507
8196
  }, []);
8508
8197
  useEffect(function () {
8509
8198
  getData();
@@ -8588,7 +8277,7 @@ var useNotificationList = function useNotificationList() {
8588
8277
  };
8589
8278
  };
8590
8279
 
8591
- var header$3 = "Notification list";
8280
+ var header$2 = "Notification list";
8592
8281
  var ICON_SIZE = 20;
8593
8282
 
8594
8283
  var NotificationList = function NotificationList() {
@@ -8609,7 +8298,7 @@ var NotificationList = function NotificationList() {
8609
8298
  }
8610
8299
  }, React.createElement("h5", {
8611
8300
  className: "mb-2"
8612
- }, header$3), React.createElement(Row, {
8301
+ }, header$2), React.createElement(Row, {
8613
8302
  className: "my-2"
8614
8303
  }, React.createElement(Col, {
8615
8304
  md: 8
@@ -8709,6 +8398,35 @@ var NotificationList = function NotificationList() {
8709
8398
  }))));
8710
8399
  };
8711
8400
 
8401
+ var searchInputStyle = {
8402
+ height: 38
8403
+ };
8404
+
8405
+ var SearchBoxContainer = function SearchBoxContainer(_ref) {
8406
+ var text = _ref.text,
8407
+ initValue = _ref.initValue,
8408
+ onClick = _ref.onClick,
8409
+ onSearch = _ref.onSearch,
8410
+ placeholder = _ref.placeholder;
8411
+ return React.createElement("div", {
8412
+ className: "d-flex align-items-center"
8413
+ }, React.createElement("div", null, React.createElement(AddButton, {
8414
+ text: text,
8415
+ onClick: onClick
8416
+ })), React.createElement("div", {
8417
+ className: "flex-grow-1 ml-2"
8418
+ }, React.createElement(SearchBox$1, {
8419
+ initValue: initValue,
8420
+ onSearch: onSearch,
8421
+ placeholder: placeholder,
8422
+ style: searchInputStyle
8423
+ })));
8424
+ };
8425
+
8426
+ SearchBoxContainer.defaultProps = {
8427
+ placeholder: "Type something to search"
8428
+ };
8429
+
8712
8430
  var CustomTabs = function CustomTabs(props) {
8713
8431
  var history = useHistory();
8714
8432
  var location = useLocation();
@@ -9113,7 +8831,7 @@ var get$8 = function get(filter) {
9113
8831
  });
9114
8832
  };
9115
8833
 
9116
- var TITLE$a = "Gallery";
8834
+ var TITLE$9 = "Gallery";
9117
8835
  var defaultFilter = {
9118
8836
  searchString: ""
9119
8837
  };
@@ -9350,7 +9068,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
9350
9068
  }
9351
9069
  }, [dispatch, filters]);
9352
9070
  useEffect(function () {
9353
- document.title = TITLE$a;
9071
+ document.title = TITLE$9;
9354
9072
  dispatch(setTargetMedia({
9355
9073
  targetMedia: undefined
9356
9074
  }));
@@ -9542,7 +9260,7 @@ var MediaDetail = function MediaDetail(_ref) {
9542
9260
 
9543
9261
  var MediaDetail$1 = React.memo(MediaDetail);
9544
9262
 
9545
- var header$4 = "Gallery";
9263
+ var header$3 = "Gallery";
9546
9264
 
9547
9265
  var GalleryList = function GalleryList(_ref) {
9548
9266
  var isLibrary = _ref.isLibrary;
@@ -9553,7 +9271,7 @@ var GalleryList = function GalleryList(_ref) {
9553
9271
  className: "fadeIn animated"
9554
9272
  }, !isLibrary && React.createElement("h5", {
9555
9273
  className: "mb-2"
9556
- }, header$4), React.createElement(Row, {
9274
+ }, header$3), React.createElement(Row, {
9557
9275
  className: "mb-2"
9558
9276
  }, React.createElement(Col, {
9559
9277
  md: 8
@@ -10179,6 +9897,9 @@ var commonReducer$8 = createReducer(initialState$e, function (builder) {
10179
9897
  });
10180
9898
  });
10181
9899
 
9900
+ var setUserList = createAction("users/setUserList");
9901
+ var setStudentList = createAction("users/setStudentList");
9902
+
10182
9903
  var initialState$f = {
10183
9904
  userList: [],
10184
9905
  totalItems: 0,
@@ -10698,193 +10419,545 @@ var dataPlayer = createReducer(initialState$v, function (builder) {
10698
10419
  return response.questionId === questionId;
10699
10420
  });
10700
10421
 
10701
- if (!existedResponse) {
10702
- questionResponseCloner.push({
10703
- questionId: questionId,
10704
- text: text
10705
- });
10706
- } else {
10707
- existedResponse.text = text;
10422
+ if (!existedResponse) {
10423
+ questionResponseCloner.push({
10424
+ questionId: questionId,
10425
+ text: text
10426
+ });
10427
+ } else {
10428
+ existedResponse.text = text;
10429
+ }
10430
+
10431
+ return _extends({}, state, {
10432
+ questionResponse: questionResponseCloner
10433
+ });
10434
+ }).addCase(reset, function (_state, _action) {
10435
+ return initialState$v;
10436
+ });
10437
+ });
10438
+
10439
+ var setCertificateList = createAction("certificates/setCertificateList");
10440
+
10441
+ var initialState$w = {
10442
+ certificateList: [],
10443
+ totalItems: 0
10444
+ };
10445
+ var commonReducer$f = createReducer(initialState$w, function (builder) {
10446
+ builder.addCase(setCertificateList, function (state, action) {
10447
+ state.certificateList = action.payload.certificateList;
10448
+ state.totalItems = action.payload.totalItems;
10449
+ }).addCase(reset, function (_state, _action) {
10450
+ return initialState$w;
10451
+ });
10452
+ });
10453
+
10454
+ var setImproveMyClass = createAction("improveMyClass/setImproveMyClass");
10455
+
10456
+ var initialState$x = {
10457
+ improveMyClassList: []
10458
+ };
10459
+ var commonReducer$g = createReducer(initialState$x, function (builder) {
10460
+ builder.addCase(setImproveMyClass, function (state, action) {
10461
+ state.improveMyClassList = action.payload;
10462
+ }).addCase(reset, function (_state, _action) {
10463
+ return initialState$x;
10464
+ });
10465
+ });
10466
+
10467
+ var setFilterWidget = createAction("setFilterWidget");
10468
+
10469
+ var initialState$y = {
10470
+ filterWidget: "Year"
10471
+ };
10472
+ var widgetReducer = createReducer(initialState$y, function (builder) {
10473
+ builder.addCase(setFilterWidget, function (state, action) {
10474
+ state.filterWidget = action.payload.filterWidget;
10475
+ }).addCase(reset, function (_state, _action) {
10476
+ return initialState$y;
10477
+ });
10478
+ });
10479
+
10480
+ var setBandScoreList = createAction("bandScores/setBandScoreList");
10481
+
10482
+ var initialState$z = {
10483
+ bandScoreList: [],
10484
+ totalItems: 0
10485
+ };
10486
+ var commonReducer$h = createReducer(initialState$z, function (builder) {
10487
+ builder.addCase(setBandScoreList, function (state, action) {
10488
+ state.bandScoreList = action.payload.bandScoreList;
10489
+ state.totalItems = action.payload.totalItems;
10490
+ }).addCase(reset, function (_state, _action) {
10491
+ return initialState$z;
10492
+ });
10493
+ });
10494
+
10495
+ var setSchoolBlankDayList = createAction("schoolBlankDays/setSchoolBlankDayList");
10496
+
10497
+ var initialState$A = {
10498
+ schoolBlankDayList: [],
10499
+ totalItems: 0
10500
+ };
10501
+ var commonReducer$i = createReducer(initialState$A, function (builder) {
10502
+ builder.addCase(setSchoolBlankDayList, function (state, action) {
10503
+ state.schoolBlankDayList = action.payload.schoolBlankDayList;
10504
+ state.totalItems = action.payload.totalItems;
10505
+ }).addCase(reset, function (_state, _action) {
10506
+ return initialState$A;
10507
+ });
10508
+ });
10509
+
10510
+ var setStudentIdSelectedByTeacher = createAction("navMobile/setStudentIdSelectedByTeacher");
10511
+
10512
+ var initialState$B = {
10513
+ studentIdSelectedByTeacher: 0
10514
+ };
10515
+ var navMobileReducer = createReducer(initialState$B, function (builder) {
10516
+ builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10517
+ state.studentIdSelectedByTeacher = action.payload;
10518
+ }).addCase(reset, function (_state, _action) {
10519
+ return initialState$B;
10520
+ });
10521
+ });
10522
+
10523
+ var rootReducer = combineReducers({
10524
+ common: commonReducer,
10525
+ classes: classReducer,
10526
+ conferenceRubrics: conferenceRubricReducer,
10527
+ faqs: commonReducer$1,
10528
+ skills: commonReducer$2,
10529
+ emailTemplate: emailTemplateReducer,
10530
+ suggestionBank: suggestionBankReducer,
10531
+ learningStrategy: learningStrategyReducer,
10532
+ subjects: commonReducer$3,
10533
+ learningSupportCategories: commonReducer$4,
10534
+ questionBank: questionBankReducer,
10535
+ badges: commonReducer$5,
10536
+ semester: commonReducer$6,
10537
+ goalExamples: commonReducer$8,
10538
+ users: commonReducer$9,
10539
+ reflections: reflectionReducer,
10540
+ reflectionResults: reflectionReducer$1,
10541
+ feedbacks: commonReducer$a,
10542
+ assessments: commonReducer$b,
10543
+ questionByCategory: questionCategoryReducer,
10544
+ mailCategory: questionBankReducer$1,
10545
+ questionCate: questionCateReducer,
10546
+ notification: questionBankReducer$2,
10547
+ myStudent: commonReducer$c,
10548
+ assignments: commonReducer$7,
10549
+ assistants: assistantReducer,
10550
+ sesstionTemplates: sessionTemplateReducer,
10551
+ sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10552
+ tutorialScreens: tutorialScreenReducer,
10553
+ customAlerts: commonReducer$d,
10554
+ gallery: commonReducer$e,
10555
+ dashboard: dashboardReducer,
10556
+ sessionPlayer: sessionPlayerReducer,
10557
+ dataPlayer: dataPlayer,
10558
+ certificate: commonReducer$f,
10559
+ improveMyClass: commonReducer$g,
10560
+ widget: widgetReducer,
10561
+ bandScores: commonReducer$h,
10562
+ schoolBlankDays: commonReducer$i,
10563
+ navMobileReducer: navMobileReducer
10564
+ });
10565
+
10566
+ var store = configureStore({
10567
+ reducer: rootReducer,
10568
+ middleware: function middleware(getDefaultMiddleware) {
10569
+ return getDefaultMiddleware({
10570
+ serializableCheck: false
10571
+ }).concat(logger);
10572
+ }
10573
+ });
10574
+
10575
+ var isInViewport = function isInViewport(el) {
10576
+ var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10577
+ return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10578
+ };
10579
+
10580
+ var debounce = function debounce(callback, wait) {
10581
+ var timeout = null;
10582
+ return function () {
10583
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10584
+ args[_key] = arguments[_key];
10708
10585
  }
10709
10586
 
10710
- return _extends({}, state, {
10711
- questionResponse: questionResponseCloner
10712
- });
10713
- }).addCase(reset, function (_state, _action) {
10714
- return initialState$v;
10715
- });
10716
- });
10587
+ var next = function next() {
10588
+ return callback.apply(void 0, args);
10589
+ };
10717
10590
 
10718
- var setCertificateList = createAction("certificates/setCertificateList");
10591
+ clearTimeout(timeout);
10592
+ timeout = setTimeout(next, wait);
10593
+ };
10594
+ };
10719
10595
 
10720
- var initialState$w = {
10721
- certificateList: [],
10722
- totalItems: 0
10596
+ var getTextFromHTML = function getTextFromHTML(htmlString) {
10597
+ var p = document.createElement("p");
10598
+ p.innerHTML = htmlString;
10599
+ var text = p.innerText;
10600
+ p.remove();
10601
+ return text;
10723
10602
  };
10724
- var commonReducer$f = createReducer(initialState$w, function (builder) {
10725
- builder.addCase(setCertificateList, function (state, action) {
10726
- state.certificateList = action.payload.certificateList;
10727
- state.totalItems = action.payload.totalItems;
10728
- }).addCase(reset, function (_state, _action) {
10729
- return initialState$w;
10730
- });
10603
+
10604
+ var generateRandomString = (function () {
10605
+ return (Math.random() + 1).toString(36).substring(7);
10731
10606
  });
10732
10607
 
10733
- var setImproveMyClass = createAction("improveMyClass/setImproveMyClass");
10608
+ var amplitudeClient = amplitude.getInstance();
10734
10609
 
10735
- var initialState$x = {
10736
- improveMyClassList: []
10737
- };
10738
- var commonReducer$g = createReducer(initialState$x, function (builder) {
10739
- builder.addCase(setImproveMyClass, function (state, action) {
10740
- state.improveMyClassList = action.payload;
10741
- }).addCase(reset, function (_state, _action) {
10742
- return initialState$x;
10610
+ var USER_URL$2 = "/admin/user";
10611
+ var CREATE_USER_URL = "/admin/create-user";
10612
+ var TITLE$a = "User list";
10613
+ var HOMEPAGE_TEACHER$1 = "/home";
10614
+ var HOMEPAGE_STUDENT$1 = "/home";
10615
+ var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
10616
+ var HOMEPAGE_PARENT$1 = "/parent";
10617
+ var HOMEPAGE_DISTRICT$1 = "/admin/schools";
10618
+ var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
10619
+
10620
+ var useUserList = function useUserList() {
10621
+ var history = useHistory();
10622
+ var query = new URLSearchParams(location.search);
10623
+ var queryName = query.get("query");
10624
+ var userList = useSelector(function (state) {
10625
+ return state.users.userList;
10626
+ });
10627
+ var totalItems = useSelector(function (state) {
10628
+ return state.users.totalItems;
10743
10629
  });
10744
- });
10745
10630
 
10746
- var setFilterWidget = createAction("setFilterWidget");
10631
+ var _useFilters = useFilters(),
10632
+ filters = _useFilters.filters,
10633
+ changeFilters = _useFilters.changeFilters;
10747
10634
 
10748
- var initialState$y = {
10749
- filterWidget: "Year"
10750
- };
10751
- var widgetReducer = createReducer(initialState$y, function (builder) {
10752
- builder.addCase(setFilterWidget, function (state, action) {
10753
- state.filterWidget = action.payload.filterWidget;
10754
- }).addCase(reset, function (_state, _action) {
10755
- return initialState$y;
10756
- });
10757
- });
10635
+ var _useState = useState(!!queryName ? queryName : ""),
10636
+ fullName = _useState[0],
10637
+ setFullName = _useState[1];
10758
10638
 
10759
- var setBandScoreList = createAction("bandScores/setBandScoreList");
10639
+ var isDistrict = window.location.host.includes("-district");
10640
+ var dispatch = useDispatch();
10641
+ var getData = useCallback(function (fullName) {
10642
+ try {
10643
+ var _temp3 = function _temp3() {
10644
+ dispatch(setLoading(false));
10645
+ };
10760
10646
 
10761
- var initialState$z = {
10762
- bandScoreList: [],
10763
- totalItems: 0
10764
- };
10765
- var commonReducer$h = createReducer(initialState$z, function (builder) {
10766
- builder.addCase(setBandScoreList, function (state, action) {
10767
- state.bandScoreList = action.payload.bandScoreList;
10768
- state.totalItems = action.payload.totalItems;
10769
- }).addCase(reset, function (_state, _action) {
10770
- return initialState$z;
10771
- });
10772
- });
10647
+ dispatch(setLoading(true));
10773
10648
 
10774
- var setSchoolBlankDayList = createAction("schoolBlankDays/setSchoolBlankDayList");
10649
+ var _temp4 = _catch(function () {
10650
+ return Promise.resolve(fullName ? get$5(_extends({}, filters, {
10651
+ searchString: fullName
10652
+ })) : get$5(filters)).then(function (res) {
10653
+ var _res$data = res.data,
10654
+ items = _res$data.items,
10655
+ totalItems = _res$data.totalItems;
10775
10656
 
10776
- var initialState$A = {
10777
- schoolBlankDayList: [],
10778
- totalItems: 0
10779
- };
10780
- var commonReducer$i = createReducer(initialState$A, function (builder) {
10781
- builder.addCase(setSchoolBlankDayList, function (state, action) {
10782
- state.schoolBlankDayList = action.payload.schoolBlankDayList;
10783
- state.totalItems = action.payload.totalItems;
10784
- }).addCase(reset, function (_state, _action) {
10785
- return initialState$A;
10786
- });
10787
- });
10657
+ for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
10658
+ var user = _step.value;
10659
+ user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
10660
+ }
10661
+
10662
+ dispatch(setUserList({
10663
+ userList: items,
10664
+ totalItems: totalItems
10665
+ }));
10666
+ });
10667
+ }, function (err) {
10668
+ var _err$response, _err$response$data;
10669
+
10670
+ dispatch(setAlert({
10671
+ type: "danger",
10672
+ 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
10673
+ }));
10674
+ });
10675
+
10676
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
10677
+ } catch (e) {
10678
+ return Promise.reject(e);
10679
+ }
10680
+ }, [dispatch, filters]);
10681
+ useEffect(function () {
10682
+ document.title = TITLE$a;
10683
+ }, []);
10684
+ useEffect(function () {
10685
+ if (!!fullName) {
10686
+ getData(fullName);
10687
+ setFullName(null);
10688
+ } else {
10689
+ getData();
10690
+ }
10691
+ }, [filters]);
10692
+ var removeData = useCallback(function (id) {
10693
+ dispatch(setLoading(true));
10694
+
10695
+ try {
10696
+ dispatch(setModal({
10697
+ isOpen: true,
10698
+ type: "warning",
10699
+ message: "Do you want to remove this user?",
10700
+ onConfirm: function () {
10701
+ try {
10702
+ return Promise.resolve(remove$3(id)).then(function () {
10703
+ dispatch(setAlert({
10704
+ type: "success",
10705
+ message: "Remove user successfully"
10706
+ }));
10707
+ changeFilters({
10708
+ currentPage: 1
10709
+ });
10710
+ });
10711
+ } catch (e) {
10712
+ return Promise.reject(e);
10713
+ }
10714
+ }
10715
+ }));
10716
+ } catch (err) {
10717
+ var _err$response2, _err$response2$data;
10718
+
10719
+ dispatch(setAlert({
10720
+ type: "danger",
10721
+ 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
10722
+ }));
10723
+ }
10724
+
10725
+ dispatch(setLoading(false));
10726
+ }, [filters]);
10727
+
10728
+ var redirectLoginUser = function redirectLoginUser(res) {
10729
+ var _res$data2 = res.data,
10730
+ token = _res$data2.token,
10731
+ id = _res$data2.id,
10732
+ firstName = _res$data2.firstName,
10733
+ lastName = _res$data2.lastName,
10734
+ roles = _res$data2.roles,
10735
+ email = _res$data2.email,
10736
+ profileImageFileName = _res$data2.profileImageFileName;
10737
+ localStorage.setItem(ACCESS_TOKEN, token);
10738
+ localStorage.removeItem(NOTIFICATION_ALERT_KEY);
10739
+ dispatch(setUser({
10740
+ id: id,
10741
+ firstName: firstName,
10742
+ lastName: lastName,
10743
+ roles: roles,
10744
+ email: email,
10745
+ profileImageFileName: profileImageFileName
10746
+ }));
10747
+
10748
+ if (isDistrict) {
10749
+ history.push(HOMEPAGE_DISTRICT$1);
10750
+ } else if (roles.includes("Admin")) {
10751
+ history.push(HOMEPAGE_ADMIN$1);
10752
+ } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
10753
+ history.push(HOMEPAGE_TEACHER$1);
10754
+ } else if (roles.includes("Student")) {
10755
+ history.push(HOMEPAGE_STUDENT$1);
10756
+ } else if (roles.includes("Parent")) {
10757
+ history.push(HOMEPAGE_PARENT$1);
10758
+ } else if (roles.includes("EduTeacher")) {
10759
+ history.push(HOMEPAGE_EDU_TEACHER$1);
10760
+ } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
10761
+ history.push(HOMEPAGE_TEACHER$1);
10762
+ }
10763
+ };
10764
+
10765
+ var swicthUser = useCallback(function (id) {
10766
+ try {
10767
+ var _temp6 = _catch(function () {
10768
+ return Promise.resolve(switchAccountUser(id)).then(function (res) {
10769
+ var data = res.data;
10770
+ dispatch(setModal({
10771
+ isOpen: true,
10772
+ type: "warning",
10773
+ message: "Do you want to impersonate this user?",
10774
+ onConfirm: function () {
10775
+ try {
10776
+ var _temp9 = function _temp9() {
10777
+ dispatch(setLoading(false));
10778
+ };
10788
10779
 
10789
- var setStudentIdSelectedByTeacher = createAction("navMobile/setStudentIdSelectedByTeacher");
10780
+ dispatch(setLoading(true));
10790
10781
 
10791
- var initialState$B = {
10792
- studentIdSelectedByTeacher: 0
10793
- };
10794
- var navMobileReducer = createReducer(initialState$B, function (builder) {
10795
- builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10796
- state.studentIdSelectedByTeacher = action.payload;
10797
- }).addCase(reset, function (_state, _action) {
10798
- return initialState$B;
10799
- });
10800
- });
10782
+ var _temp10 = _catch(function () {
10783
+ var req = {
10784
+ email: data.email,
10785
+ password: "default",
10786
+ accessToken: data.token
10787
+ };
10788
+ return Promise.resolve(logIn(req)).then(function (res) {
10789
+ localStorage.clear();
10790
+ redirectLoginUser(res);
10791
+ });
10792
+ }, function (err) {
10793
+ var _err$response3, _err$response3$data;
10801
10794
 
10802
- var rootReducer = combineReducers({
10803
- common: commonReducer,
10804
- classes: classReducer,
10805
- conferenceRubrics: conferenceRubricReducer,
10806
- faqs: commonReducer$1,
10807
- skills: commonReducer$2,
10808
- emailTemplate: emailTemplateReducer,
10809
- suggestionBank: suggestionBankReducer,
10810
- learningStrategy: learningStrategyReducer,
10811
- subjects: commonReducer$3,
10812
- learningSupportCategories: commonReducer$4,
10813
- questionBank: questionBankReducer,
10814
- badges: commonReducer$5,
10815
- semester: commonReducer$6,
10816
- goalExamples: commonReducer$8,
10817
- users: commonReducer$9,
10818
- reflections: reflectionReducer,
10819
- reflectionResults: reflectionReducer$1,
10820
- feedbacks: commonReducer$a,
10821
- assessments: commonReducer$b,
10822
- questionByCategory: questionCategoryReducer,
10823
- mailCategory: questionBankReducer$1,
10824
- questionCate: questionCateReducer,
10825
- notification: questionBankReducer$2,
10826
- myStudent: commonReducer$c,
10827
- assignments: commonReducer$7,
10828
- assistants: assistantReducer,
10829
- sesstionTemplates: sessionTemplateReducer,
10830
- sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10831
- tutorialScreens: tutorialScreenReducer,
10832
- customAlerts: commonReducer$d,
10833
- gallery: commonReducer$e,
10834
- dashboard: dashboardReducer,
10835
- sessionPlayer: sessionPlayerReducer,
10836
- dataPlayer: dataPlayer,
10837
- certificate: commonReducer$f,
10838
- improveMyClass: commonReducer$g,
10839
- widget: widgetReducer,
10840
- bandScores: commonReducer$h,
10841
- schoolBlankDays: commonReducer$i,
10842
- navMobileReducer: navMobileReducer
10843
- });
10795
+ setAlert({
10796
+ type: "danger",
10797
+ 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
10798
+ });
10799
+ });
10844
10800
 
10845
- var store = configureStore({
10846
- reducer: rootReducer,
10847
- middleware: function middleware(getDefaultMiddleware) {
10848
- return getDefaultMiddleware({
10849
- serializableCheck: false
10850
- }).concat(logger);
10851
- }
10852
- });
10801
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
10802
+ } catch (e) {
10803
+ return Promise.reject(e);
10804
+ }
10805
+ }
10806
+ }));
10807
+ });
10808
+ }, function (err) {
10809
+ var _err$response4, _err$response4$data;
10853
10810
 
10854
- var isInViewport = function isInViewport(el) {
10855
- var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10856
- return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10857
- };
10811
+ dispatch(setAlert({
10812
+ type: "danger",
10813
+ 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
10814
+ }));
10815
+ });
10858
10816
 
10859
- var debounce = function debounce(callback, wait) {
10860
- var timeout = null;
10861
- return function () {
10862
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10863
- args[_key] = arguments[_key];
10817
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
10818
+ } catch (e) {
10819
+ return Promise.reject(e);
10864
10820
  }
10821
+ }, [filters]);
10865
10822
 
10866
- var next = function next() {
10867
- return callback.apply(void 0, args);
10868
- };
10823
+ var reDirectDetailPage = function reDirectDetailPage(id) {
10824
+ var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
10825
+ history.push(url);
10826
+ };
10869
10827
 
10870
- clearTimeout(timeout);
10871
- timeout = setTimeout(next, wait);
10828
+ return {
10829
+ userList: userList,
10830
+ totalItems: totalItems,
10831
+ filters: filters,
10832
+ queryName: queryName,
10833
+ getData: getData,
10834
+ removeData: removeData,
10835
+ changeFilters: changeFilters,
10836
+ reDirectDetailPage: reDirectDetailPage,
10837
+ swicthUser: swicthUser
10872
10838
  };
10873
10839
  };
10874
10840
 
10875
- var getTextFromHTML = function getTextFromHTML(htmlString) {
10876
- var p = document.createElement("p");
10877
- p.innerHTML = htmlString;
10878
- var text = p.innerText;
10879
- p.remove();
10880
- return text;
10881
- };
10841
+ var header$4 = "User";
10882
10842
 
10883
- var generateRandomString = (function () {
10884
- return (Math.random() + 1).toString(36).substring(7);
10885
- });
10843
+ var UserList = function UserList() {
10844
+ var _useUserList = useUserList(),
10845
+ queryName = _useUserList.queryName,
10846
+ userList = _useUserList.userList,
10847
+ totalItems = _useUserList.totalItems,
10848
+ filters = _useUserList.filters,
10849
+ removeData = _useUserList.removeData,
10850
+ changeFilters = _useUserList.changeFilters,
10851
+ reDirectDetailPage = _useUserList.reDirectDetailPage,
10852
+ swicthUser = _useUserList.swicthUser;
10886
10853
 
10887
- var amplitudeClient = amplitude.getInstance();
10854
+ var _useTranslation = useTranslation(),
10855
+ t = _useTranslation.t;
10856
+
10857
+ return React.createElement("div", {
10858
+ className: "fadeIn animated"
10859
+ }, React.createElement("h5", {
10860
+ className: "mb-2"
10861
+ }, t("" + header$4)), React.createElement(Row, {
10862
+ className: "my-2"
10863
+ }, React.createElement(Col, {
10864
+ md: 8
10865
+ }, React.createElement(SearchBoxContainer, {
10866
+ text: t("create_user"),
10867
+ onClick: function onClick() {
10868
+ return reDirectDetailPage();
10869
+ },
10870
+ initValue: !!queryName ? queryName : "",
10871
+ onSearch: function onSearch(searchString) {
10872
+ return changeFilters({
10873
+ searchString: searchString
10874
+ });
10875
+ },
10876
+ placeholder: t("type_something_to_search_by_user_name")
10877
+ })), React.createElement(Col, {
10878
+ md: 4,
10879
+ className: "d-flex justify-content-end align-items-center"
10880
+ }, t("total_of_users"), " : ", totalItems)), React.createElement(Row, {
10881
+ className: "mb-2"
10882
+ }, React.createElement(Col, {
10883
+ md: 12
10884
+ }, userList && userList.length > 0 ? React.createElement("div", null, React.createElement(Table, {
10885
+ bordered: true,
10886
+ hover: true,
10887
+ striped: true,
10888
+ responsive: true,
10889
+ size: "sm"
10890
+ }, React.createElement("thead", null, React.createElement("tr", null, React.createElement("th", {
10891
+ className: "align-top"
10892
+ }, t("name")), React.createElement("th", {
10893
+ className: "align-top"
10894
+ }, t("email")), React.createElement("th", {
10895
+ className: "align-top"
10896
+ }, t("age")), React.createElement("th", {
10897
+ className: "align-top"
10898
+ }, t("role")), React.createElement("th", {
10899
+ className: "align-top"
10900
+ }, t("active_status")), React.createElement("th", {
10901
+ className: "align-top"
10902
+ }, t("created_time")), React.createElement("th", {
10903
+ className: "text-center"
10904
+ }, t("action")))), React.createElement("tbody", null, userList.map(function (record) {
10905
+ return React.createElement("tr", {
10906
+ key: record.id
10907
+ }, React.createElement("td", {
10908
+ className: "align-middle"
10909
+ }, React.createElement(LinkEditButton, {
10910
+ label: "" + record.fullName,
10911
+ onClick: function onClick() {
10912
+ return reDirectDetailPage(record.id);
10913
+ }
10914
+ })), React.createElement("td", {
10915
+ className: "align-middle"
10916
+ }, record.email), React.createElement("td", {
10917
+ className: "align-middle"
10918
+ }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React.createElement("td", {
10919
+ className: "align-middle"
10920
+ }, !!record.roles && record.roles.join(", ")), React.createElement("td", {
10921
+ className: "align-middle"
10922
+ }, record.isActive ? t("active") : t("inactive")), React.createElement("td", {
10923
+ className: "align-middle"
10924
+ }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React.createElement("td", {
10925
+ className: "text-center align-middle"
10926
+ }, React.createElement(FaUsersCog, {
10927
+ style: {
10928
+ fontSize: "18px",
10929
+ marginRight: "10px",
10930
+ cursor: "pointer"
10931
+ },
10932
+ onClick: function onClick() {
10933
+ return swicthUser(record.id);
10934
+ }
10935
+ }), React.createElement(DeleteButtonIcon, {
10936
+ onClick: function onClick() {
10937
+ return removeData(record.id);
10938
+ }
10939
+ })));
10940
+ })))) : React.createElement(EmptyDataAlert, {
10941
+ label: t("user")
10942
+ })), React.createElement(Col, {
10943
+ md: 12
10944
+ }, React.createElement(CustomPagination, {
10945
+ filters: filters,
10946
+ totalRecordCount: totalItems,
10947
+ changePageSize: function changePageSize(pageSize) {
10948
+ return changeFilters({
10949
+ pageSize: pageSize
10950
+ });
10951
+ },
10952
+ changePage: function changePage(currentPage) {
10953
+ return changeFilters({
10954
+ currentPage: currentPage
10955
+ });
10956
+ }
10957
+ }))));
10958
+ };
10959
+
10960
+ var amplitudeClient$1 = amplitude.getInstance();
10888
10961
 
10889
- export { ACCESS_TOKEN, ANSWER_EDITOR_HEIGHT, AcademicClassSelector, AddButton, BASE_URL, CHAT_CHANNEL, CategorySelector, CommonAlert, CommonHeader, CommonModal$1 as CommonModal, CreatableSelector, CustomPagination, CustomSelector, CustomTabs as CustomTab, DATE_FORMAT, DATE_RESULT, DEFAULT_FILTER, Dashboard, DeleteButtonIcon, DetailActionButtons, EMOTIONS, EditButtonIcon, EmailTemplateDetail, EmailTemplateList, EmptyDataAlert, ErrorHandler, FULL_DATE_RESULT, FaqList, InputFile as FileInput, GOOGLE_RECAPTCHA_KEY, GalleryList, INIT_AMPLITUDE_KEY_PROD, INIT_AMPLITUDE_KEY_STAGE, Images, LICENSE_AGGRID, LinkEditButton, Loading, Login, MediaList, NOTIFICATION_ALERT_KEY, NOTIFICATION_CHANNEL, NotFound, NotificationList, NotificationModal, QUESTION_TYPES, QUESTION_TYPES_OPTIONS, QuestionCategorySelector, QuestionTypeSelector, QuitPrompt, ReactNotification, RequiredLabel$1 as RequiredLabel, SchoolList, ScrollToTop, SearchBox$1 as SearchBox, SearchBoxContainer, SkillList, StarRatingSelector, SuggestionCategorySelector, TAB_COLORS, TINY_MCE_API_KEY, TheContent$1 as TheContent, TheLayout, ToggleButton, UploadFileButton, UserDetail, UserList, addTab, amplitudeClient, answerQuestion, answerQuestionDataPlayer, api, apiUpload, canAccess as canAccessRoute, changeNote, changeTags, clearTab, closeTab, debounce, editTab, editorConfig, firstCheckToken, generateRandomString, getFileUrl, getInfo, getTextFromHTML, i18n, initAmplitude, isInViewport, isLocalhost, reset, setAlert, setAssessmentList, setAssignmentList, setAssistantList, setBadgeList, setBandScoreList, setCertificateList, setClassList, setConferenceRubricList, setConversationOneToOne, setCurrentStudentId, setCurrentStudentName, setCurrentStudentUserId, setCustomAlertList, setDataPlayer, setEditItemQuesion, setEnableIEP, setEnableSurvey, setFeedbackList, setFilterWidget, setGoalExampleList, setImproveMyClass, setLanguage, setLearningSupportCategoryList, setLoading, setMailCategory, setModal, setMoveItemQuestion, setMyStudent, setQuestionByCategory, setQuestionCateList, setQuestionList, setReflectionList, setReflectionResultList, setResetQuestionList, setSchoolBlankDayList, setSelectQuestion, setSemesterList, setSessionPlayer, setSessionTemplateGeneralClassList, setSessionTemplateList, setStartTime, setStrategyList, setStudentIdSelectedByTeacher, setStudentList, setSubjectList, setSuggestionList, setTurnOffPassWhenChangeMode, setTutorialScreenList, setUser, setUserList, showFontSize, showMenuBar, store, systemCertificateUpload, systemStudentBadge, uploadFile, useFilters, useGalleryList, utcToLocalTime };
10962
+ export { ACCESS_TOKEN, ANSWER_EDITOR_HEIGHT, AcademicClassSelector, AddButton, BASE_URL, CHAT_CHANNEL, CategorySelector, CommonAlert, CommonHeader, CommonModal$1 as CommonModal, CreatableSelector, CustomPagination, CustomSelector, CustomTabs as CustomTab, DATE_FORMAT, DATE_RESULT, DEFAULT_FILTER, Dashboard, DeleteButtonIcon, DetailActionButtons, EMOTIONS, EditButtonIcon, EmailTemplateDetail, EmailTemplateList, EmptyDataAlert, ErrorHandler, FULL_DATE_RESULT, FaqList, InputFile as FileInput, GOOGLE_RECAPTCHA_KEY, GalleryList, INIT_AMPLITUDE_KEY_PROD, INIT_AMPLITUDE_KEY_STAGE, Images, LICENSE_AGGRID, LinkEditButton, Loading, Login, MediaList, NOTIFICATION_ALERT_KEY, NOTIFICATION_CHANNEL, NotFound, NotificationList, NotificationLogoutModal, NotificationModal, QUESTION_TYPES, QUESTION_TYPES_OPTIONS, QuestionCategorySelector, QuestionTypeSelector, QuitPrompt, ReactNotification, RequiredLabel$1 as RequiredLabel, SchoolList, ScrollToTop, SearchBox$1 as SearchBox, SearchBoxContainer, SkillList, StarRatingSelector, SuggestionCategorySelector, TAB_COLORS, TINY_MCE_API_KEY, TheContent$1 as TheContent, TheLayout, ToggleButton, UploadFileButton, UserDetail, UserList, addTab, amplitudeClient$1 as amplitudeClient, answerQuestion, answerQuestionDataPlayer, api, apiUpload, canAccess as canAccessRoute, changeNote, changeTags, clearTab, closeTab, debounce, editTab, editorConfig, firstCheckToken, generateRandomString, getFileUrl, getInfo, getTextFromHTML, i18n, initAmplitude, isInViewport, isLocalhost, reset, setAlert, setAssessmentList, setAssignmentList, setAssistantList, setBadgeList, setBandScoreList, setCertificateList, setClassList, setConferenceRubricList, setConversationOneToOne, setCurrentStudentId, setCurrentStudentName, setCurrentStudentUserId, setCustomAlertList, setDataPlayer, setEditItemQuesion, setEnableIEP, setEnableSurvey, setFeedbackList, setFilterWidget, setGoalExampleList, setImproveMyClass, setLanguage, setLearningSupportCategoryList, setLoading, setMailCategory, setModal, setMoveItemQuestion, setMyStudent, setQuestionByCategory, setQuestionCateList, setQuestionList, setReflectionList, setReflectionResultList, setResetQuestionList, setSchoolBlankDayList, setSelectQuestion, setSemesterList, setSessionPlayer, setSessionTemplateGeneralClassList, setSessionTemplateList, setStartTime, setStrategyList, setStudentIdSelectedByTeacher, setStudentList, setSubjectList, setSuggestionList, setTurnOffPassWhenChangeMode, setTutorialScreenList, setUser, setUserList, showFontSize, showMenuBar, store, systemCertificateUpload, systemStudentBadge, uploadFile, useFilters, useGalleryList, utcToLocalTime };
10890
10963
  //# sourceMappingURL=index.modern.js.map