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