mario-core 2.9.415-feedback → 2.9.416-feedback

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.
@@ -2,8 +2,8 @@ import 'bootstrap/dist/css/bootstrap.min.css';
2
2
  import i18n from 'i18next';
3
3
  import { initReactI18next, useTranslation } from 'react-i18next';
4
4
  export { I18nextProvider, useTranslation } from 'react-i18next';
5
- import React, { useCallback, useState, useEffect, useRef, useMemo, Suspense, memo, Fragment, forwardRef, useImperativeHandle } from 'react';
6
- import { Input, Form, FormGroup, Row, Col, Navbar, NavbarBrand, Collapse, Nav, NavItem, NavLink, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Modal, Button, Alert, Pagination, PaginationItem, PaginationLink, Table, Label, ModalHeader, ModalBody, ModalFooter, Popover, PopoverBody, TabContent, TabPane, Card, CardBody, CardText, Tooltip, CustomInput, CardImg, CardTitle, CardHeader } from 'reactstrap';
5
+ import React, { useCallback, useState, useEffect, useRef, Suspense, memo, Fragment, forwardRef, useImperativeHandle, useMemo } from 'react';
6
+ import { Input, Form, FormGroup, Row, Col, Navbar, NavbarBrand, Collapse, Nav, NavItem, NavLink, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Button, Alert, Pagination, PaginationItem, PaginationLink, Table, Label, Modal, ModalHeader, ModalBody, ModalFooter, Popover, PopoverBody, TabContent, TabPane, Card, CardBody, CardText, Tooltip, CustomInput, CardImg, CardTitle, CardHeader } from 'reactstrap';
7
7
  import { Link, useLocation, useHistory, Switch, Route, Prompt, useParams } from 'react-router-dom';
8
8
  import { useDispatch, useSelector } from 'react-redux';
9
9
  import { Formik } from 'formik';
@@ -17,7 +17,7 @@ import { track, setSessionId, init, Identify, identify } from '@amplitude/analyt
17
17
  import moment from 'moment';
18
18
  import { LogLevel, PublicClientApplication } from '@azure/msal-browser';
19
19
  import { GiHamburgerMenu } from 'react-icons/gi';
20
- import { CSidebar, CSidebarBrand, CSidebarNav, CCreateElement, CSidebarNavDivider, CSidebarNavDropdown, CSidebarNavItem, CSidebarNavTitle, CSidebarFooter, CHeader, CToggler, CHeaderBrand, CHeaderNav, CContainer } from '@coreui/react';
20
+ import { CSidebar, CSidebarBrand, CSidebarNav, CCreateElement, CSidebarNavDivider, CSidebarNavDropdown, CSidebarNavItem, CSidebarNavTitle, CSidebarFooter, CContainer, CHeader, CToggler, CHeaderBrand, CHeaderNav } from '@coreui/react';
21
21
  import { CgMenuRight } from 'react-icons/cg';
22
22
  import { RiLogoutBoxRLine } from 'react-icons/ri';
23
23
  import Pusher from 'pusher-js/with-encryption';
@@ -22166,6 +22166,12 @@ var LANGUAGES = [{
22166
22166
  var DEFAULT_LANGUAGE_CODE = "en-US";
22167
22167
  var SUPPORTED_LANGUAGES_CODE = ["en-US", "en-GB", "ar", "es", "zh"];
22168
22168
  var screenWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
22169
+ var CsvImportType;
22170
+
22171
+ (function (CsvImportType) {
22172
+ CsvImportType[CsvImportType["Teacher"] = 0] = "Teacher";
22173
+ CsvImportType[CsvImportType["Admin"] = 1] = "Admin";
22174
+ })(CsvImportType || (CsvImportType = {}));
22169
22175
 
22170
22176
  var resources$5 = {
22171
22177
  "en-US": {
@@ -41879,212 +41885,6 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
41879
41885
  })), t("log_out")))));
41880
41886
  };
41881
41887
 
41882
- var apiGetLanguage = function apiGetLanguage() {
41883
- return api.get(BASE_URL + "/api/language");
41884
- };
41885
-
41886
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
41887
- return api.put(BASE_URL + "/api/language?lang=" + lang);
41888
- };
41889
-
41890
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
41891
-
41892
- var useLanguages = function useLanguages() {
41893
- var dispatch = useDispatch();
41894
-
41895
- var _useTranslation = useTranslation(),
41896
- i18n = _useTranslation.i18n;
41897
-
41898
- var language = useSelector(function (state) {
41899
- return state.common.language;
41900
- });
41901
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
41902
-
41903
- var _useState = useState([]),
41904
- languageList = _useState[0],
41905
- setLanguageList = _useState[1];
41906
-
41907
- var _useState2 = useState(false),
41908
- dropdownOpen = _useState2[0],
41909
- setDropdownOpen = _useState2[1];
41910
-
41911
- var _useState3 = useState(defaultLanguage),
41912
- currentLang = _useState3[0],
41913
- setCurrentLang = _useState3[1];
41914
-
41915
- var toggle = function toggle() {
41916
- return setDropdownOpen(function (prevState) {
41917
- return !prevState;
41918
- });
41919
- };
41920
-
41921
- var changeLanguageApp = function changeLanguageApp(lang) {
41922
- try {
41923
- var _temp3 = function _temp3() {
41924
- dispatch(setLoading(false));
41925
- };
41926
-
41927
- dispatch(setLoading(true));
41928
-
41929
- var _temp4 = _catch(function () {
41930
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
41931
- i18n.changeLanguage(lang);
41932
- setCurrentLang(lang);
41933
- dispatch(setLanguage(lang));
41934
- });
41935
- }, function (err) {
41936
- var _err$response, _err$response$data;
41937
-
41938
- dispatch(setAlert({
41939
- type: "danger",
41940
- 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
41941
- }));
41942
- });
41943
-
41944
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
41945
- } catch (e) {
41946
- return Promise.reject(e);
41947
- }
41948
- };
41949
-
41950
- var getListLanguage = function getListLanguage() {
41951
- try {
41952
- var _temp6 = _catch(function () {
41953
- return Promise.resolve(apiGetLanguage()).then(function (res) {
41954
- setLanguageList(res.data);
41955
- });
41956
- }, function (err) {
41957
- var _err$response2, _err$response2$data;
41958
-
41959
- dispatch(setAlert({
41960
- type: "danger",
41961
- 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
41962
- }));
41963
- });
41964
-
41965
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
41966
- } catch (e) {
41967
- return Promise.reject(e);
41968
- }
41969
- };
41970
-
41971
- useEffect(function () {
41972
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
41973
- getListLanguage();
41974
- }, []);
41975
- return {
41976
- languageList: languageList,
41977
- toggle: toggle,
41978
- dropdownOpen: dropdownOpen,
41979
- currentLang: currentLang,
41980
- changeLanguageApp: changeLanguageApp,
41981
- setCurrentLang: setCurrentLang
41982
- };
41983
- };
41984
-
41985
- var TheLanguageDropdown = function TheLanguageDropdown() {
41986
- var _useLanguages = useLanguages(),
41987
- languageList = _useLanguages.languageList,
41988
- toggle = _useLanguages.toggle,
41989
- dropdownOpen = _useLanguages.dropdownOpen,
41990
- currentLang = _useLanguages.currentLang,
41991
- changeLanguageApp = _useLanguages.changeLanguageApp;
41992
-
41993
- var currentLanguage = useMemo(function () {
41994
- var current = languageList.find(function (i) {
41995
- return i.code === currentLang;
41996
- });
41997
- if (!current) return null;
41998
- return React.createElement(React.Fragment, null, React.createElement("img", {
41999
- className: "mr-2 " + styles['dropdown-menu-flag'],
42000
- src: "" + getStaticFileUrl(current.image)
42001
- }), " ", current.name);
42002
- }, [currentLang, languageList]);
42003
- return React.createElement(Dropdown, {
42004
- isOpen: dropdownOpen,
42005
- toggle: toggle,
42006
- className: "" + styles["dropdown-menu"]
42007
- }, React.createElement(DropdownToggle, {
42008
- className: styles["header-avatar"] + " d-flex align-items-center"
42009
- }, React.createElement("span", {
42010
- style: {
42011
- color: "#000",
42012
- textTransform: "capitalize",
42013
- display: 'flex',
42014
- alignItems: 'center'
42015
- }
42016
- }, currentLanguage, React.createElement(BsChevronDown, {
42017
- className: "ml-2",
42018
- style: {
42019
- fontSize: '10px'
42020
- }
42021
- }))), React.createElement(DropdownMenu, {
42022
- className: styles["dropdown-content-language"]
42023
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
42024
- return React.createElement(DropdownItem, {
42025
- key: lang.code,
42026
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
42027
- onClick: function onClick() {
42028
- return changeLanguageApp(lang.code);
42029
- }
42030
- }, React.createElement("div", {
42031
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
42032
- }, React.createElement("span", {
42033
- className: "mr-2 d-flex hover-opacity"
42034
- }, React.createElement("img", {
42035
- style: {
42036
- width: "30px",
42037
- height: "25px",
42038
- borderRadius: "5px"
42039
- },
42040
- src: getStaticFileUrl(lang.image)
42041
- })), lang.name));
42042
- })));
42043
- };
42044
-
42045
- var TheHeader = function TheHeader(_ref) {
42046
- var onToggleModel = _ref.onToggleModel;
42047
- var dispatch = useDispatch();
42048
- var sidebarShow = useSelector(function (state) {
42049
- return state.common.sidebarShow;
42050
- });
42051
-
42052
- var _useTranslation = useTranslation(),
42053
- t = _useTranslation.t;
42054
-
42055
- var toggleSidebarMobile = function toggleSidebarMobile() {
42056
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
42057
- dispatch(setSidebar(val));
42058
- };
42059
-
42060
- var isDistrict = window.location.host.includes("-district");
42061
- return React.createElement(CHeader, {
42062
- withSubheader: true,
42063
- className: "d-flex align-items-center justify-content-end"
42064
- }, React.createElement(CToggler, {
42065
- inHeader: true,
42066
- className: "ml-md-3 d-lg-none",
42067
- onClick: toggleSidebarMobile
42068
- }), React.createElement(CHeaderBrand, {
42069
- className: "mx-auto flex-grow-1 d-lg-none",
42070
- to: "/"
42071
- }, React.createElement("img", {
42072
- src: getStaticFileUrl(Images.LOGO_HEADER),
42073
- className: styles["header-logo"]
42074
- })), React.createElement(CHeaderNav, {
42075
- className: "pr-3"
42076
- }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
42077
- className: "mr-3",
42078
- style: {
42079
- color: '#000'
42080
- },
42081
- href: '/privacy-policy',
42082
- target: "blank"
42083
- }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
42084
- onToggleModel: onToggleModel
42085
- })));
42086
- };
42087
-
42088
41888
  var TITLE$3 = "Not found";
42089
41889
 
42090
41890
  var NotFound = function NotFound() {
@@ -42142,258 +41942,6 @@ var TheContent = function TheContent(_ref) {
42142
41942
 
42143
41943
  var TheContent$1 = React.memo(TheContent);
42144
41944
 
42145
- var loadingStyle = {
42146
- minWidth: "100vw",
42147
- minHeight: "100vh",
42148
- position: "fixed",
42149
- top: 0,
42150
- left: 0,
42151
- zIndex: 999999999,
42152
- backgroundColor: "rgba(0, 0, 0, 0.4)",
42153
- display: "flex",
42154
- justifyContent: "center",
42155
- alignItems: "center"
42156
- };
42157
-
42158
- var Loading = function Loading() {
42159
- var isLoading = useSelector(function (state) {
42160
- return state.common.isLoading;
42161
- });
42162
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
42163
- return isLoading ? React.createElement("div", {
42164
- style: loadingStyle
42165
- }, React.createElement("div", {
42166
- className: "spinner-border text-secondary",
42167
- role: "status"
42168
- }, React.createElement("span", {
42169
- className: "sr-only"
42170
- }, "Loading..."))) : null;
42171
- };
42172
-
42173
- var firstCheckToken = function firstCheckToken() {
42174
- return Promise.resolve(_catch(function () {
42175
- var token = getAccessToken();
42176
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
42177
- return tokenStatus.data ? true : false;
42178
- }) : false;
42179
- }, function () {
42180
- return false;
42181
- }));
42182
- };
42183
-
42184
- var canAccess = function canAccess(userRoles, componentRoles) {
42185
- if (!Array.isArray(userRoles)) {
42186
- return false;
42187
- }
42188
-
42189
- if (Array.isArray(componentRoles)) {
42190
- var intersects = userRoles.filter(function (i) {
42191
- return componentRoles.includes(i);
42192
- });
42193
- return intersects.length > 0;
42194
- }
42195
-
42196
- return true;
42197
- };
42198
-
42199
- var ModelSelectRole = function ModelSelectRole(_ref) {
42200
- var _handleUserRole;
42201
-
42202
- var open = _ref.open,
42203
- onToggleModel = _ref.onToggleModel;
42204
- var dispatch = useDispatch();
42205
-
42206
- var _useTranslation = useTranslation(),
42207
- t = _useTranslation.t;
42208
-
42209
- var history = useHistory();
42210
- var pathname = window.location.pathname;
42211
- var user = useSelector(function (state) {
42212
- return state.common.user;
42213
- });
42214
- var roles = user === null || user === void 0 ? void 0 : user.roles;
42215
-
42216
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
42217
- dispatch(setLoading(true));
42218
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
42219
- dispatch(setUser(_extends({}, user, {
42220
- roles: roleSelect
42221
- })));
42222
- localStorage.setItem("ROLES", roleSelect.toString());
42223
- onToggleModel();
42224
-
42225
- if (roles.includes("Parent")) {
42226
- history.push("/parent");
42227
- } else if (roles.includes("Admin")) {
42228
- history.push("/admin/home");
42229
- } else {
42230
- pathname !== "/home" ? history.push("/home") : window.location.reload();
42231
- }
42232
- };
42233
-
42234
- return React.createElement(Modal, {
42235
- isOpen: open,
42236
- toggle: function toggle() {
42237
- return onToggleModel();
42238
- },
42239
- className: "" + styles["model-switch-roles"],
42240
- centered: true
42241
- }, React.createElement("p", {
42242
- className: "" + styles["title"]
42243
- }, t("continue_as")), React.createElement("div", null, (_handleUserRole = handleUserRole(user === null || user === void 0 ? void 0 : user.roles)) === null || _handleUserRole === void 0 ? void 0 : _handleUserRole.map(function (r) {
42244
- return React.createElement("p", {
42245
- key: r,
42246
- className: styles["item-select-role"] + " " + styles[roles.includes("Teacher") && roles.includes("Assistant") && r === "Teacher/Assistant" && !roles.includes("Admin") || roles.includes("Admin") && r === "Admin" || roles.includes(r) && !roles.includes("Admin") ? "item-role-active" : ""],
42247
- onClick: function onClick() {
42248
- return handleSelectUserRoles([r]);
42249
- }
42250
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
42251
- })));
42252
- };
42253
-
42254
- var TheLayout = function TheLayout(_ref) {
42255
- var routes = _ref.routes,
42256
- navigation = _ref.navigation;
42257
- var history = useHistory();
42258
- var dispatch = useDispatch();
42259
- var user = useSelector(function (state) {
42260
- return state.common.user;
42261
- });
42262
- var language = useSelector(function (state) {
42263
- return state.common.language;
42264
- });
42265
-
42266
- var _useState = useState(false),
42267
- openModelSelectRole = _useState[0],
42268
- setOpenModelSelectRole = _useState[1];
42269
-
42270
- var _useTranslation = useTranslation(),
42271
- t = _useTranslation.t;
42272
-
42273
- var location = useLocation();
42274
- var isNotification = location.pathname.includes("notifications");
42275
- var isDistrict = window.location.host.includes("-district");
42276
-
42277
- var handleToggleModel = function handleToggleModel() {
42278
- setOpenModelSelectRole(!openModelSelectRole);
42279
- };
42280
-
42281
- var authRoutes = useMemo(function () {
42282
- return routes.filter(function (route) {
42283
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
42284
- }).filter(function (route) {
42285
- return !!route.isDistrict === isDistrict;
42286
- });
42287
- }, [user, language]);
42288
- var authNavigations = useMemo(function () {
42289
- return navigation.map(function (item) {
42290
- var _item$_children, _item$_children2;
42291
-
42292
- return _extends({}, item, {
42293
- name: t(item.name),
42294
- _children: item !== null && item !== void 0 && (_item$_children = item._children) !== null && _item$_children !== void 0 && _item$_children.length ? item === null || item === void 0 ? void 0 : (_item$_children2 = item._children) === null || _item$_children2 === void 0 ? void 0 : _item$_children2.map(function (x) {
42295
- return _extends({}, x, {
42296
- name: t(x.name)
42297
- });
42298
- }) : undefined
42299
- });
42300
- }).filter(function (nav) {
42301
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
42302
- }).filter(function (nav) {
42303
- return !!nav.isDistrict === isDistrict;
42304
- });
42305
- }, [user, language]);
42306
-
42307
- var getInformationSetting = function getInformationSetting() {
42308
- try {
42309
- var _temp2 = _catch(function () {
42310
- return Promise.resolve(getSchoolSettings()).then(function (res) {
42311
- dispatch(setSandboxMode(res.data.isSandboxMode));
42312
- });
42313
- }, function (err) {
42314
- console.error(err);
42315
- });
42316
-
42317
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
42318
- } catch (e) {
42319
- return Promise.reject(e);
42320
- }
42321
- };
42322
-
42323
- useEffect(function () {
42324
- checkAuthentication();
42325
- }, []);
42326
- useEffect(function () {
42327
- getInformationSetting();
42328
- }, [location.pathname]);
42329
-
42330
- var checkAuthentication = function checkAuthentication() {
42331
- try {
42332
- var _temp4 = _catch(function () {
42333
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
42334
- tokenStatus ? loadInfo() : resetAuth();
42335
- });
42336
- }, function () {
42337
- resetAuth();
42338
- });
42339
-
42340
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
42341
- } catch (e) {
42342
- return Promise.reject(e);
42343
- }
42344
- };
42345
-
42346
- var loadInfo = function loadInfo() {
42347
- try {
42348
- var _temp6 = _catch(function () {
42349
- return Promise.resolve(getInfo()).then(function (info) {
42350
- var _info$data, _info$data$roles;
42351
-
42352
- if (!info || !(info !== null && info !== void 0 && (_info$data = info.data) !== null && _info$data !== void 0 && (_info$data$roles = _info$data.roles) !== null && _info$data$roles !== void 0 && _info$data$roles.includes("Admin"))) {
42353
- resetAuth();
42354
- }
42355
-
42356
- dispatch(setUser(info.data));
42357
- });
42358
- }, function () {
42359
- resetAuth();
42360
- });
42361
-
42362
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42363
- } catch (e) {
42364
- return Promise.reject(e);
42365
- }
42366
- };
42367
-
42368
- var resetAuth = function resetAuth() {
42369
- localStorage.removeItem(ACCESS_TOKEN);
42370
- sessionStorage.removeItem(ACCESS_TOKEN);
42371
- localStorage.removeItem("ROLES");
42372
- history.push("/");
42373
- };
42374
-
42375
- if (!user) {
42376
- return React.createElement(Loading, null);
42377
- }
42378
-
42379
- return React.createElement("div", {
42380
- className: "c-app c-default-layout"
42381
- }, !isNotification && React.createElement(TheSidebar, {
42382
- navigation: authNavigations
42383
- }), React.createElement("div", {
42384
- className: "c-wrapper"
42385
- }, !isNotification && React.createElement(TheHeader, {
42386
- onToggleModel: handleToggleModel
42387
- }), React.createElement("div", {
42388
- className: "c-body bg-white"
42389
- }, React.createElement(TheContent$1, {
42390
- routes: authRoutes
42391
- }))), React.createElement(ModelSelectRole, {
42392
- open: openModelSelectRole,
42393
- onToggleModel: handleToggleModel
42394
- }));
42395
- };
42396
-
42397
41945
  var buttonTextStyle = {
42398
41946
  fontWeight: 500
42399
41947
  };
@@ -46298,6 +45846,9 @@ var importUsersCSV = function importUsersCSV(formData) {
46298
45846
  var downloadTemplateFileUser = function downloadTemplateFileUser() {
46299
45847
  return api.get(CSV_FILE_TEACHER + "/download-template-file-user");
46300
45848
  };
45849
+ var validateCsvApi = function validateCsvApi(formData, type) {
45850
+ return api.post(CSV_FILE_TEACHER + "/validate-csv-template-student/" + type, formData);
45851
+ };
46301
45852
 
46302
45853
  var CSVType;
46303
45854
 
@@ -50094,7 +49645,7 @@ var style$2 = {
50094
49645
  color: "#fff",
50095
49646
  fontWeight: 500,
50096
49647
  fontSize: "14px",
50097
- height: "100%",
49648
+ height: "56px",
50098
49649
  justifyContent: "center"
50099
49650
  };
50100
49651
 
@@ -50193,15 +49744,19 @@ var useCSVImportTab = function useCSVImportTab() {
50193
49744
  studentDataFile = _useState5[0],
50194
49745
  setStudentDataFile = _useState5[1];
50195
49746
 
49747
+ var _useState6 = useState([]),
49748
+ errorsValidate = _useState6[0],
49749
+ setErrorsValidate = _useState6[1];
49750
+
50196
49751
  var isCheckDomainIBS = true;
50197
49752
 
50198
- var _useState6 = useState(0),
50199
- defaultTeacher = _useState6[0],
50200
- setDefaultTeacher = _useState6[1];
49753
+ var _useState7 = useState(0),
49754
+ defaultTeacher = _useState7[0],
49755
+ setDefaultTeacher = _useState7[1];
50201
49756
 
50202
- var _useState7 = useState(""),
50203
- fileName = _useState7[0],
50204
- setFileName = _useState7[1];
49757
+ var _useState8 = useState(""),
49758
+ fileName = _useState8[0],
49759
+ setFileName = _useState8[1];
50205
49760
 
50206
49761
  useEffect(function () {
50207
49762
  document.title = title$5;
@@ -50246,10 +49801,10 @@ var useCSVImportTab = function useCSVImportTab() {
50246
49801
 
50247
49802
  var upload = useCallback(function (file) {
50248
49803
  try {
50249
- var _exit2 = false;
49804
+ var _exit3 = false;
50250
49805
 
50251
- var _temp12 = function _temp12(_result2) {
50252
- if (_exit2) return _result2;
49806
+ var _temp12 = function _temp12(_result) {
49807
+ if (_exit3) return _result;
50253
49808
  dispatch(setLoading(false));
50254
49809
  var inputId = document.getElementById(id$1);
50255
49810
  var input = document.getElementById('import-student');
@@ -50263,103 +49818,114 @@ var useCSVImportTab = function useCSVImportTab() {
50263
49818
  dispatch(setLoading(true));
50264
49819
 
50265
49820
  var _temp13 = _catch(function () {
50266
- function _temp9(_result) {
50267
- if (_exit2) return _result;
50268
- dispatch(setAlert({
50269
- type: "success",
50270
- message: "Import CSV successfully"
50271
- }));
50272
- }
50273
-
50274
49821
  var formData = new FormData();
50275
49822
  formData.append("file", file, file.name);
49823
+ var typeOfCsv = type === CSVType$1.AllUser ? CsvImportType.Admin : CsvImportType.Teacher;
49824
+ return Promise.resolve(validateCsvApi(formData, typeOfCsv)).then(function (res) {
49825
+ var _exit2 = false;
50276
49826
 
50277
- var _temp8 = function () {
50278
- if (type == CSVType$1.AllUser) {
50279
- return Promise.resolve(file.text()).then(function (fileTextRaw) {
50280
- var fileText = fileTextRaw.trim();
50281
- var rows = fileText.split("\n").map(function (row) {
50282
- return row.trim();
50283
- });
50284
- var headerIndex = rows.findIndex(function (row) {
50285
- return row.split(",").includes("First Name");
50286
- });
50287
-
50288
- if (headerIndex === 0) {
50289
- throw new Error("Invalid CSV: Missing header row.");
50290
- }
49827
+ function _temp9(_result2) {
49828
+ if (_exit2) return _result2;
49829
+ dispatch(setAlert({
49830
+ type: "success",
49831
+ message: "Import CSV successfully"
49832
+ }));
49833
+ }
50291
49834
 
50292
- fileText = rows.slice(headerIndex).join("\n");
50293
- var parsedData = Papa.parse(fileText, {
50294
- header: true,
50295
- skipEmptyLines: true
50296
- });
50297
- var header = parsedData.meta.fields;
50298
- var dataRows = parsedData.data;
49835
+ if (res.data && res.data.length > 0) {
49836
+ setErrorsValidate(res.data);
49837
+ dispatch(setLoading(false));
49838
+ _exit3 = true;
49839
+ return;
49840
+ }
50299
49841
 
50300
- if (!!!dataRows.length) {
50301
- dispatch(setLoading(false));
50302
- dispatch(setAlert({
50303
- type: "danger",
50304
- message: 'The file has no data or some column names are misformed.'
50305
- }));
50306
- _exit2 = true;
50307
- return;
50308
- }
49842
+ var _temp8 = function () {
49843
+ if (type == CSVType$1.AllUser) {
49844
+ return Promise.resolve(file.text()).then(function (fileTextRaw) {
49845
+ var fileText = fileTextRaw.trim();
49846
+ var rows = fileText.split("\n").map(function (row) {
49847
+ return row.trim();
49848
+ });
49849
+ var headerIndex = rows.findIndex(function (row) {
49850
+ return row.split(",").includes("First Name");
49851
+ });
50309
49852
 
50310
- var chunkSize = 10;
50311
- var chunks = [];
49853
+ if (headerIndex === 0) {
49854
+ throw new Error("Invalid CSV: Missing header row.");
49855
+ }
50312
49856
 
50313
- for (var _i = 0; _i < dataRows.length; _i += chunkSize) {
50314
- var chunkData = dataRows.slice(_i, _i + chunkSize);
50315
- var valuesOnly = chunkData.map(function (row) {
50316
- return Object.values(row).map(function (v) {
50317
- return (v != null ? v : "").toString().trim();
50318
- });
49857
+ fileText = rows.slice(headerIndex).join("\n");
49858
+ var parsedData = Papa.parse(fileText, {
49859
+ header: true,
49860
+ skipEmptyLines: true
50319
49861
  });
49862
+ var header = parsedData.meta.fields;
49863
+ var dataRows = parsedData.data;
50320
49864
 
50321
- if (header) {
50322
- valuesOnly.unshift(header);
49865
+ if (!!!dataRows.length) {
49866
+ dispatch(setLoading(false));
49867
+ dispatch(setAlert({
49868
+ type: "danger",
49869
+ message: 'The file has no data or some column names are misformed.'
49870
+ }));
49871
+ _exit3 = true;
49872
+ return;
50323
49873
  }
50324
49874
 
50325
- console.log({
50326
- valuesOnly: valuesOnly
50327
- });
50328
- chunks.push(valuesOnly);
50329
- }
49875
+ var chunkSize = 10;
49876
+ var chunks = [];
50330
49877
 
50331
- var _temp5 = _forTo(chunks, function (i) {
50332
- return Promise.resolve(importChunkFileUsers({
50333
- chunks: chunks[i]
50334
- })).then(function () {
50335
- return Promise.resolve(new Promise(function (res) {
50336
- return setTimeout(res, 500);
50337
- })).then(function () {});
50338
- });
50339
- });
49878
+ for (var _i = 0; _i < dataRows.length; _i += chunkSize) {
49879
+ var chunkData = dataRows.slice(_i, _i + chunkSize);
49880
+ var valuesOnly = chunkData.map(function (row) {
49881
+ return Object.values(row).map(function (v) {
49882
+ return (v != null ? v : "").toString().trim();
49883
+ });
49884
+ });
50340
49885
 
50341
- if (_temp5 && _temp5.then) return _temp5.then(function () {});
50342
- });
50343
- } else {
50344
- var _temp14 = function () {
50345
- if (isCheckDomainIBS) {
50346
- var _temp15 = function () {
50347
- if (type == CSVType$1.ClassReflection) {
50348
- return Promise.resolve(importClassReflectionCSV$1(formData)).then(function () {});
49886
+ if (header) {
49887
+ valuesOnly.unshift(header);
50349
49888
  }
50350
- }();
50351
49889
 
50352
- if (_temp15 && _temp15.then) return _temp15.then(function () {});
50353
- } else {
50354
- return Promise.resolve(importCSV$1(formData, type.toString())).then(function () {});
50355
- }
50356
- }();
49890
+ console.log({
49891
+ valuesOnly: valuesOnly
49892
+ });
49893
+ chunks.push(valuesOnly);
49894
+ }
50357
49895
 
50358
- if (_temp14 && _temp14.then) return _temp14.then(function () {});
50359
- }
50360
- }();
49896
+ var _temp5 = _forTo(chunks, function (i) {
49897
+ return Promise.resolve(importChunkFileUsers({
49898
+ chunks: chunks[i]
49899
+ })).then(function () {
49900
+ return Promise.resolve(new Promise(function (res) {
49901
+ return setTimeout(res, 500);
49902
+ })).then(function () {});
49903
+ });
49904
+ });
50361
49905
 
50362
- return _temp8 && _temp8.then ? _temp8.then(_temp9) : _temp9(_temp8);
49906
+ if (_temp5 && _temp5.then) return _temp5.then(function () {});
49907
+ });
49908
+ } else {
49909
+ var _temp14 = function () {
49910
+ if (isCheckDomainIBS) {
49911
+ var _temp15 = function () {
49912
+ if (type == CSVType$1.ClassReflection) {
49913
+ return Promise.resolve(importClassReflectionCSV$1(formData)).then(function () {});
49914
+ }
49915
+ }();
49916
+
49917
+ if (_temp15 && _temp15.then) return _temp15.then(function () {});
49918
+ } else {
49919
+ return Promise.resolve(importCSV$1(formData, type.toString())).then(function () {});
49920
+ }
49921
+ }();
49922
+
49923
+ if (_temp14 && _temp14.then) return _temp14.then(function () {});
49924
+ }
49925
+ }();
49926
+
49927
+ return _temp8 && _temp8.then ? _temp8.then(_temp9) : _temp9(_temp8);
49928
+ });
50363
49929
  }, function (err) {
50364
49930
  var _err$response, _err$response$data;
50365
49931
 
@@ -50514,7 +50080,9 @@ var useCSVImportTab = function useCSVImportTab() {
50514
50080
  defaultTeacher: defaultTeacher,
50515
50081
  fileName: fileName,
50516
50082
  onStudentSubmit: onStudentSubmit,
50517
- downloadTemplateUser: downloadTemplateUser
50083
+ downloadTemplateUser: downloadTemplateUser,
50084
+ errorsValidate: errorsValidate,
50085
+ setErrorsValidate: setErrorsValidate
50518
50086
  };
50519
50087
  };
50520
50088
 
@@ -50541,7 +50109,8 @@ var CSVImport = function CSVImport() {
50541
50109
  setArrStudent = _useCSVImportTab.setArrStudent,
50542
50110
  buttons = _useCSVImportTab.buttons,
50543
50111
  upload = _useCSVImportTab.upload,
50544
- downloadTemplateUser = _useCSVImportTab.downloadTemplateUser;
50112
+ downloadTemplateUser = _useCSVImportTab.downloadTemplateUser,
50113
+ errorsValidate = _useCSVImportTab.errorsValidate;
50545
50114
 
50546
50115
  var _useTranslation = useTranslation(),
50547
50116
  t = _useTranslation.t;
@@ -50594,9 +50163,9 @@ var CSVImport = function CSVImport() {
50594
50163
  accept: "text/csv"
50595
50164
  }), React.createElement(Col, {
50596
50165
  md: 6,
50597
- className: "mb-2 d-flex align-items-end"
50166
+ className: "mb-2 d-flex mt-5"
50598
50167
  }, React.createElement(Row, {
50599
- className: "w-100"
50168
+ className: "w-100 flex-column"
50600
50169
  }, React.createElement(Col, {
50601
50170
  md: 12,
50602
50171
  className: ""
@@ -50625,7 +50194,9 @@ var CSVImport = function CSVImport() {
50625
50194
  })))), React.createElement(Col, {
50626
50195
  md: 6,
50627
50196
  className: "mb-2"
50628
- }, React.createElement(Row, null, React.createElement(Col, {
50197
+ }, React.createElement(Row, {
50198
+ className: "flex-column"
50199
+ }, React.createElement(Col, {
50629
50200
  md: 12,
50630
50201
  className: "mb-2 text-right"
50631
50202
  }, React.createElement(Button, {
@@ -50655,7 +50226,12 @@ var CSVImport = function CSVImport() {
50655
50226
  return setType(button.type);
50656
50227
  }
50657
50228
  });
50658
- })))));
50229
+ })), (errorsValidate === null || errorsValidate === void 0 ? void 0 : errorsValidate.length) > 0 && errorsValidate.map(function (error, index) {
50230
+ return React.createElement(ErrorHandler, {
50231
+ key: index,
50232
+ text: error
50233
+ });
50234
+ }))));
50659
50235
  }))) );
50660
50236
  };
50661
50237
 
@@ -51740,6 +51316,34 @@ var UserDetail = function UserDetail() {
51740
51316
  });
51741
51317
  };
51742
51318
 
51319
+ var loadingStyle = {
51320
+ minWidth: "100vw",
51321
+ minHeight: "100vh",
51322
+ position: "fixed",
51323
+ top: 0,
51324
+ left: 0,
51325
+ zIndex: 999999999,
51326
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
51327
+ display: "flex",
51328
+ justifyContent: "center",
51329
+ alignItems: "center"
51330
+ };
51331
+
51332
+ var Loading = function Loading() {
51333
+ var isLoading = useSelector(function (state) {
51334
+ return state.common.isLoading;
51335
+ });
51336
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
51337
+ return isLoading ? React.createElement("div", {
51338
+ style: loadingStyle
51339
+ }, React.createElement("div", {
51340
+ className: "spinner-border text-secondary",
51341
+ role: "status"
51342
+ }, React.createElement("span", {
51343
+ className: "sr-only"
51344
+ }, "Loading..."))) : null;
51345
+ };
51346
+
51743
51347
  var ScrollToTop = function ScrollToTop() {
51744
51348
  var _useLocation = useLocation(),
51745
51349
  pathname = _useLocation.pathname;
@@ -54763,6 +54367,32 @@ var store = configureStore({
54763
54367
  }
54764
54368
  });
54765
54369
 
54370
+ var firstCheckToken = function firstCheckToken() {
54371
+ return Promise.resolve(_catch(function () {
54372
+ var token = getAccessToken();
54373
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
54374
+ return tokenStatus.data ? true : false;
54375
+ }) : false;
54376
+ }, function () {
54377
+ return false;
54378
+ }));
54379
+ };
54380
+
54381
+ var canAccess = function canAccess(userRoles, componentRoles) {
54382
+ if (!Array.isArray(userRoles)) {
54383
+ return false;
54384
+ }
54385
+
54386
+ if (Array.isArray(componentRoles)) {
54387
+ var intersects = userRoles.filter(function (i) {
54388
+ return componentRoles.includes(i);
54389
+ });
54390
+ return intersects.length > 0;
54391
+ }
54392
+
54393
+ return true;
54394
+ };
54395
+
54766
54396
  var isInViewport = function isInViewport(el) {
54767
54397
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
54768
54398
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -54796,6 +54426,410 @@ var generateRandomString = (function () {
54796
54426
  return (Math.random() + 1).toString(36).substring(7);
54797
54427
  });
54798
54428
 
54429
+ var apiGetLanguage = function apiGetLanguage() {
54430
+ return api.get(BASE_URL + "/api/language");
54431
+ };
54432
+
54433
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
54434
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
54435
+ };
54436
+
54437
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
54438
+
54439
+ var useLanguages = function useLanguages() {
54440
+ var dispatch = useDispatch();
54441
+
54442
+ var _useTranslation = useTranslation(),
54443
+ i18n = _useTranslation.i18n;
54444
+
54445
+ var language = useSelector(function (state) {
54446
+ return state.common.language;
54447
+ });
54448
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
54449
+
54450
+ var _useState = useState([]),
54451
+ languageList = _useState[0],
54452
+ setLanguageList = _useState[1];
54453
+
54454
+ var _useState2 = useState(false),
54455
+ dropdownOpen = _useState2[0],
54456
+ setDropdownOpen = _useState2[1];
54457
+
54458
+ var _useState3 = useState(defaultLanguage),
54459
+ currentLang = _useState3[0],
54460
+ setCurrentLang = _useState3[1];
54461
+
54462
+ var toggle = function toggle() {
54463
+ return setDropdownOpen(function (prevState) {
54464
+ return !prevState;
54465
+ });
54466
+ };
54467
+
54468
+ var changeLanguageApp = function changeLanguageApp(lang) {
54469
+ try {
54470
+ var _temp3 = function _temp3() {
54471
+ dispatch(setLoading(false));
54472
+ };
54473
+
54474
+ dispatch(setLoading(true));
54475
+
54476
+ var _temp4 = _catch(function () {
54477
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
54478
+ i18n.changeLanguage(lang);
54479
+ setCurrentLang(lang);
54480
+ dispatch(setLanguage(lang));
54481
+ });
54482
+ }, function (err) {
54483
+ var _err$response, _err$response$data;
54484
+
54485
+ dispatch(setAlert({
54486
+ type: "danger",
54487
+ 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
54488
+ }));
54489
+ });
54490
+
54491
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
54492
+ } catch (e) {
54493
+ return Promise.reject(e);
54494
+ }
54495
+ };
54496
+
54497
+ var getListLanguage = function getListLanguage() {
54498
+ try {
54499
+ var _temp6 = _catch(function () {
54500
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
54501
+ setLanguageList(res.data);
54502
+ });
54503
+ }, function (err) {
54504
+ var _err$response2, _err$response2$data;
54505
+
54506
+ dispatch(setAlert({
54507
+ type: "danger",
54508
+ 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
54509
+ }));
54510
+ });
54511
+
54512
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54513
+ } catch (e) {
54514
+ return Promise.reject(e);
54515
+ }
54516
+ };
54517
+
54518
+ useEffect(function () {
54519
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
54520
+ getListLanguage();
54521
+ }, []);
54522
+ return {
54523
+ languageList: languageList,
54524
+ toggle: toggle,
54525
+ dropdownOpen: dropdownOpen,
54526
+ currentLang: currentLang,
54527
+ changeLanguageApp: changeLanguageApp,
54528
+ setCurrentLang: setCurrentLang
54529
+ };
54530
+ };
54531
+
54532
+ var TheLanguageDropdown = function TheLanguageDropdown() {
54533
+ var _useLanguages = useLanguages(),
54534
+ languageList = _useLanguages.languageList,
54535
+ toggle = _useLanguages.toggle,
54536
+ dropdownOpen = _useLanguages.dropdownOpen,
54537
+ currentLang = _useLanguages.currentLang,
54538
+ changeLanguageApp = _useLanguages.changeLanguageApp;
54539
+
54540
+ var currentLanguage = useMemo(function () {
54541
+ var current = languageList.find(function (i) {
54542
+ return i.code === currentLang;
54543
+ });
54544
+ if (!current) return null;
54545
+ return React.createElement(React.Fragment, null, React.createElement("img", {
54546
+ className: "mr-2 " + styles['dropdown-menu-flag'],
54547
+ src: "" + getStaticFileUrl(current.image)
54548
+ }), " ", current.name);
54549
+ }, [currentLang, languageList]);
54550
+ return React.createElement(Dropdown, {
54551
+ isOpen: dropdownOpen,
54552
+ toggle: toggle,
54553
+ className: "" + styles["dropdown-menu"]
54554
+ }, React.createElement(DropdownToggle, {
54555
+ className: styles["header-avatar"] + " d-flex align-items-center"
54556
+ }, React.createElement("span", {
54557
+ style: {
54558
+ color: "#000",
54559
+ textTransform: "capitalize",
54560
+ display: 'flex',
54561
+ alignItems: 'center'
54562
+ }
54563
+ }, currentLanguage, React.createElement(BsChevronDown, {
54564
+ className: "ml-2",
54565
+ style: {
54566
+ fontSize: '10px'
54567
+ }
54568
+ }))), React.createElement(DropdownMenu, {
54569
+ className: styles["dropdown-content-language"]
54570
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
54571
+ return React.createElement(DropdownItem, {
54572
+ key: lang.code,
54573
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
54574
+ onClick: function onClick() {
54575
+ return changeLanguageApp(lang.code);
54576
+ }
54577
+ }, React.createElement("div", {
54578
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
54579
+ }, React.createElement("span", {
54580
+ className: "mr-2 d-flex hover-opacity"
54581
+ }, React.createElement("img", {
54582
+ style: {
54583
+ width: "30px",
54584
+ height: "25px",
54585
+ borderRadius: "5px"
54586
+ },
54587
+ src: getStaticFileUrl(lang.image)
54588
+ })), lang.name));
54589
+ })));
54590
+ };
54591
+
54592
+ var TheHeader = function TheHeader(_ref) {
54593
+ var onToggleModel = _ref.onToggleModel;
54594
+ var dispatch = useDispatch();
54595
+ var sidebarShow = useSelector(function (state) {
54596
+ return state.common.sidebarShow;
54597
+ });
54598
+
54599
+ var _useTranslation = useTranslation(),
54600
+ t = _useTranslation.t;
54601
+
54602
+ var toggleSidebarMobile = function toggleSidebarMobile() {
54603
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
54604
+ dispatch(setSidebar(val));
54605
+ };
54606
+
54607
+ var isDistrict = window.location.host.includes("-district");
54608
+ return React.createElement(CHeader, {
54609
+ withSubheader: true,
54610
+ className: "d-flex align-items-center justify-content-end"
54611
+ }, React.createElement(CToggler, {
54612
+ inHeader: true,
54613
+ className: "ml-md-3 d-lg-none",
54614
+ onClick: toggleSidebarMobile
54615
+ }), React.createElement(CHeaderBrand, {
54616
+ className: "mx-auto flex-grow-1 d-lg-none",
54617
+ to: "/"
54618
+ }, React.createElement("img", {
54619
+ src: getStaticFileUrl(Images.LOGO_HEADER),
54620
+ className: styles["header-logo"]
54621
+ })), React.createElement(CHeaderNav, {
54622
+ className: "pr-3"
54623
+ }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
54624
+ className: "mr-3",
54625
+ style: {
54626
+ color: '#000'
54627
+ },
54628
+ href: '/privacy-policy',
54629
+ target: "blank"
54630
+ }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
54631
+ onToggleModel: onToggleModel
54632
+ })));
54633
+ };
54634
+
54635
+ var ModelSelectRole = function ModelSelectRole(_ref) {
54636
+ var _handleUserRole;
54637
+
54638
+ var open = _ref.open,
54639
+ onToggleModel = _ref.onToggleModel;
54640
+ var dispatch = useDispatch();
54641
+
54642
+ var _useTranslation = useTranslation(),
54643
+ t = _useTranslation.t;
54644
+
54645
+ var history = useHistory();
54646
+ var pathname = window.location.pathname;
54647
+ var user = useSelector(function (state) {
54648
+ return state.common.user;
54649
+ });
54650
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
54651
+
54652
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
54653
+ dispatch(setLoading(true));
54654
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
54655
+ dispatch(setUser(_extends({}, user, {
54656
+ roles: roleSelect
54657
+ })));
54658
+ localStorage.setItem("ROLES", roleSelect.toString());
54659
+ onToggleModel();
54660
+
54661
+ if (roles.includes("Parent")) {
54662
+ history.push("/parent");
54663
+ } else if (roles.includes("Admin")) {
54664
+ history.push("/admin/home");
54665
+ } else {
54666
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
54667
+ }
54668
+ };
54669
+
54670
+ return React.createElement(Modal, {
54671
+ isOpen: open,
54672
+ toggle: function toggle() {
54673
+ return onToggleModel();
54674
+ },
54675
+ className: "" + styles["model-switch-roles"],
54676
+ centered: true
54677
+ }, React.createElement("p", {
54678
+ className: "" + styles["title"]
54679
+ }, t("continue_as")), React.createElement("div", null, (_handleUserRole = handleUserRole(user === null || user === void 0 ? void 0 : user.roles)) === null || _handleUserRole === void 0 ? void 0 : _handleUserRole.map(function (r) {
54680
+ return React.createElement("p", {
54681
+ key: r,
54682
+ className: styles["item-select-role"] + " " + styles[roles.includes("Teacher") && roles.includes("Assistant") && r === "Teacher/Assistant" && !roles.includes("Admin") || roles.includes("Admin") && r === "Admin" || roles.includes(r) && !roles.includes("Admin") ? "item-role-active" : ""],
54683
+ onClick: function onClick() {
54684
+ return handleSelectUserRoles([r]);
54685
+ }
54686
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
54687
+ })));
54688
+ };
54689
+
54690
+ var TheLayout = function TheLayout(_ref) {
54691
+ var routes = _ref.routes,
54692
+ navigation = _ref.navigation;
54693
+ var history = useHistory();
54694
+ var dispatch = useDispatch();
54695
+ var user = useSelector(function (state) {
54696
+ return state.common.user;
54697
+ });
54698
+ var language = useSelector(function (state) {
54699
+ return state.common.language;
54700
+ });
54701
+
54702
+ var _useState = useState(false),
54703
+ openModelSelectRole = _useState[0],
54704
+ setOpenModelSelectRole = _useState[1];
54705
+
54706
+ var _useTranslation = useTranslation(),
54707
+ t = _useTranslation.t;
54708
+
54709
+ var location = useLocation();
54710
+ var isNotification = location.pathname.includes("notifications");
54711
+ var isDistrict = window.location.host.includes("-district");
54712
+
54713
+ var handleToggleModel = function handleToggleModel() {
54714
+ setOpenModelSelectRole(!openModelSelectRole);
54715
+ };
54716
+
54717
+ var authRoutes = useMemo(function () {
54718
+ return routes.filter(function (route) {
54719
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
54720
+ }).filter(function (route) {
54721
+ return !!route.isDistrict === isDistrict;
54722
+ });
54723
+ }, [user, language]);
54724
+ var authNavigations = useMemo(function () {
54725
+ return navigation.map(function (item) {
54726
+ var _item$_children, _item$_children2;
54727
+
54728
+ return _extends({}, item, {
54729
+ name: t(item.name),
54730
+ _children: item !== null && item !== void 0 && (_item$_children = item._children) !== null && _item$_children !== void 0 && _item$_children.length ? item === null || item === void 0 ? void 0 : (_item$_children2 = item._children) === null || _item$_children2 === void 0 ? void 0 : _item$_children2.map(function (x) {
54731
+ return _extends({}, x, {
54732
+ name: t(x.name)
54733
+ });
54734
+ }) : undefined
54735
+ });
54736
+ }).filter(function (nav) {
54737
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
54738
+ }).filter(function (nav) {
54739
+ return !!nav.isDistrict === isDistrict;
54740
+ });
54741
+ }, [user, language]);
54742
+
54743
+ var getInformationSetting = function getInformationSetting() {
54744
+ try {
54745
+ var _temp2 = _catch(function () {
54746
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
54747
+ dispatch(setSandboxMode(res.data.isSandboxMode));
54748
+ });
54749
+ }, function (err) {
54750
+ console.error(err);
54751
+ });
54752
+
54753
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
54754
+ } catch (e) {
54755
+ return Promise.reject(e);
54756
+ }
54757
+ };
54758
+
54759
+ useEffect(function () {
54760
+ checkAuthentication();
54761
+ }, []);
54762
+ useEffect(function () {
54763
+ getInformationSetting();
54764
+ }, [location.pathname]);
54765
+
54766
+ var checkAuthentication = function checkAuthentication() {
54767
+ try {
54768
+ var _temp4 = _catch(function () {
54769
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
54770
+ tokenStatus ? loadInfo() : resetAuth();
54771
+ });
54772
+ }, function () {
54773
+ resetAuth();
54774
+ });
54775
+
54776
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
54777
+ } catch (e) {
54778
+ return Promise.reject(e);
54779
+ }
54780
+ };
54781
+
54782
+ var loadInfo = function loadInfo() {
54783
+ try {
54784
+ var _temp6 = _catch(function () {
54785
+ return Promise.resolve(getInfo()).then(function (info) {
54786
+ var _info$data, _info$data$roles;
54787
+
54788
+ if (!info || !(info !== null && info !== void 0 && (_info$data = info.data) !== null && _info$data !== void 0 && (_info$data$roles = _info$data.roles) !== null && _info$data$roles !== void 0 && _info$data$roles.includes("Admin"))) {
54789
+ resetAuth();
54790
+ }
54791
+
54792
+ dispatch(setUser(info.data));
54793
+ });
54794
+ }, function () {
54795
+ resetAuth();
54796
+ });
54797
+
54798
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54799
+ } catch (e) {
54800
+ return Promise.reject(e);
54801
+ }
54802
+ };
54803
+
54804
+ var resetAuth = function resetAuth() {
54805
+ localStorage.removeItem(ACCESS_TOKEN);
54806
+ sessionStorage.removeItem(ACCESS_TOKEN);
54807
+ localStorage.removeItem("ROLES");
54808
+ history.push("/");
54809
+ };
54810
+
54811
+ if (!user) {
54812
+ return React.createElement(Loading, null);
54813
+ }
54814
+
54815
+ return React.createElement("div", {
54816
+ className: "c-app c-default-layout"
54817
+ }, !isNotification && React.createElement(TheSidebar, {
54818
+ navigation: authNavigations
54819
+ }), React.createElement("div", {
54820
+ className: "c-wrapper"
54821
+ }, !isNotification && React.createElement(TheHeader, {
54822
+ onToggleModel: handleToggleModel
54823
+ }), React.createElement("div", {
54824
+ className: "c-body bg-white"
54825
+ }, React.createElement(TheContent$1, {
54826
+ routes: authRoutes
54827
+ }))), React.createElement(ModelSelectRole, {
54828
+ open: openModelSelectRole,
54829
+ onToggleModel: handleToggleModel
54830
+ }));
54831
+ };
54832
+
54799
54833
  var amplitudeClient = amplitude;
54800
54834
 
54801
54835
  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, DEFAULT_LANGUAGE_CODE, 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, IS_USER_SESSION_BROWSER, Images, LANGUAGES, 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, SANDBOX_NOTIFICATION, SUPPORTED_LANGUAGES_CODE, SandboxAlert, SchoolList, ScrollToTop, SearchBox$1 as SearchBox, SearchBoxContainer, SkillList, StarRatingSelector, SuggestionCategorySelector, TAB_COLORS, TINY_MCE_API_KEY, TheContent$1 as TheContent, TheLayout, ToggleButton, UploadFileButton, UserContainer, UserDetail, UserList, addTab, amplitudeClient, answerQuestion, answerQuestionDataPlayer, api, apiUpload, canAccess as canAccessRoute, changeNote, changeTags, clearTab, closeTab, debounce, editTab, editorConfig, firstCheckToken, generateRandomString, getCookieValue, getFileUrl, getInfo, getStaticFileUrl, getTextFromHTML, i18n, initAmplitude, isInViewport, isLocalhost, reset, setAlert, setAssessmentList, setAssignmentList, setAssistantList, setBadgeList, setBandScoreList, setCertificateList, setClassList, setConferenceRubricList, setConversationOneToOne, setCurrentStudentId, setCurrentStudentName, setCurrentStudentUserId, setCustomAlertList, setDataPlayer, setEditItemQuesion, setEnableIEP, setEnableMarioAi, setEnableSurvey, setFeedbackList, setFilterWidget, setGoalExampleList, setImproveMyClass, setLanguage, setLearningSupportCategoryList, setLoading, setMailCategory, setModal, setMoveItemQuestion, setMyStudent, setOpenModelCongratulation, setQuestionByCategory, setQuestionCateList, setQuestionList, setReflectionList, setReflectionResultList, setResetQuestionList, setSandboxMode, setSchoolBlankDayList, setSelectQuestion, setSemesterList, setSessionPlayer, setSessionTemplateGeneralClassList, setSessionTemplateList, setStartTime, setStrategyList, setStudentIdSelectedByTeacher, setStudentList, setSubjectList, setSuggestionList, setTurnOffPassWhenChangeMode, setTutorialScreenList, setUser, setUserList, setWeeklyQuestList, showFontSize, showMenuBar, store, systemCertificateUpload, systemStudentBadge, uploadFile, useFilters, useGalleryList, utcToLocalTime };