mario-core 2.9.415-feedback → 2.9.417-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
@@ -2190,6 +2190,7 @@ var save_new_password = "Save new password";
2190
2190
  var teacher_code = "Teacher code";
2191
2191
  var number_of_conversations = "Number of conversations";
2192
2192
  var number_of_expected_conversations_based_on_the_goal = "Number of expected conversations based on the goal";
2193
+ var check_in = "Check-in";
2193
2194
  var lang_us = {
2194
2195
  dashboard: dashboard,
2195
2196
  user: user,
@@ -4395,7 +4396,8 @@ var lang_us = {
4395
4396
  save_new_password: save_new_password,
4396
4397
  teacher_code: teacher_code,
4397
4398
  number_of_conversations: number_of_conversations,
4398
- number_of_expected_conversations_based_on_the_goal: number_of_expected_conversations_based_on_the_goal
4399
+ number_of_expected_conversations_based_on_the_goal: number_of_expected_conversations_based_on_the_goal,
4400
+ check_in: check_in
4399
4401
  };
4400
4402
 
4401
4403
  var dashboard$1 = "Dashboard";
@@ -4413,7 +4415,7 @@ var cancel$1 = "Cancel";
4413
4415
  var hey$1 = "Hey";
4414
4416
  var readiness_to_learn$1 = "Readiness to Learn";
4415
4417
  var high_impact_learning_strategies$1 = "High Impact Learning Strategies";
4416
- var check_in = "Check In";
4418
+ var check_in$1 = "Check In";
4417
4419
  var check_ins$1 = "Check Ins";
4418
4420
  var reflection$1 = "Reflection";
4419
4421
  var conferences$1 = "Conferences";
@@ -6566,7 +6568,7 @@ var lang_uk = {
6566
6568
  readiness_to_learn: readiness_to_learn$1,
6567
6569
  high_impact_learning_strategies: high_impact_learning_strategies$1,
6568
6570
  "1_to_1": "1 to 1",
6569
- check_in: check_in,
6571
+ check_in: check_in$1,
6570
6572
  check_ins: check_ins$1,
6571
6573
  reflection: reflection$1,
6572
6574
  conferences: conferences$1,
@@ -8770,7 +8772,7 @@ var cancel$2 = "إلغاء";
8770
8772
  var hey$2 = "مرحبًا";
8771
8773
  var readiness_to_learn$2 = "الاستعداد للتعلم";
8772
8774
  var high_impact_learning_strategies$2 = "استراتيجيات التعلم عالية التأثير";
8773
- var check_in$1 = "تسجيل الحضور";
8775
+ var check_in$2 = "تسجيل الحضور";
8774
8776
  var check_ins$2 = "عمليات تسجيل الحضور";
8775
8777
  var reflection$2 = "التفكير";
8776
8778
  var conferences$2 = "اللقاءات";
@@ -10953,7 +10955,7 @@ var lang_ar = {
10953
10955
  readiness_to_learn: readiness_to_learn$2,
10954
10956
  high_impact_learning_strategies: high_impact_learning_strategies$2,
10955
10957
  "1_to_1": "1 إلى 1",
10956
- check_in: check_in$1,
10958
+ check_in: check_in$2,
10957
10959
  check_ins: check_ins$2,
10958
10960
  reflection: reflection$2,
10959
10961
  conferences: conferences$2,
@@ -13189,7 +13191,7 @@ var cancel$3 = "Cancelar";
13189
13191
  var hey$3 = "Hola";
13190
13192
  var readiness_to_learn$3 = "Preparación para el aprendizaje";
13191
13193
  var high_impact_learning_strategies$3 = "Estrategias de aprendizaje de alto impacto";
13192
- var check_in$2 = "Registro";
13194
+ var check_in$3 = "Registro";
13193
13195
  var check_ins$3 = "Registro de entrada";
13194
13196
  var reflection$3 = "Reflexión";
13195
13197
  var conferences$3 = "Conferencias";
@@ -15372,7 +15374,7 @@ var lang_es = {
15372
15374
  readiness_to_learn: readiness_to_learn$3,
15373
15375
  high_impact_learning_strategies: high_impact_learning_strategies$3,
15374
15376
  "1_to_1": "1 a 1",
15375
- check_in: check_in$2,
15377
+ check_in: check_in$3,
15376
15378
  check_ins: check_ins$3,
15377
15379
  reflection: reflection$3,
15378
15380
  conferences: conferences$3,
@@ -17608,7 +17610,7 @@ var cancel$4 = "取消";
17608
17610
  var hey$4 = "您好";
17609
17611
  var readiness_to_learn$4 = "准备学习";
17610
17612
  var high_impact_learning_strategies$4 = "高效学习策略";
17611
- var check_in$3 = "签到";
17613
+ var check_in$4 = "签到";
17612
17614
  var check_ins$4 = "签到";
17613
17615
  var reflection$4 = "反思";
17614
17616
  var conferences$4 = "讨论会";
@@ -19791,7 +19793,7 @@ var lang_zh = {
19791
19793
  readiness_to_learn: readiness_to_learn$4,
19792
19794
  high_impact_learning_strategies: high_impact_learning_strategies$4,
19793
19795
  "1_to_1": "一对一",
19794
- check_in: check_in$3,
19796
+ check_in: check_in$4,
19795
19797
  check_ins: check_ins$4,
19796
19798
  reflection: reflection$4,
19797
19799
  conferences: conferences$4,
@@ -22167,6 +22169,12 @@ var LANGUAGES = [{
22167
22169
  var DEFAULT_LANGUAGE_CODE = "en-US";
22168
22170
  var SUPPORTED_LANGUAGES_CODE = ["en-US", "en-GB", "ar", "es", "zh"];
22169
22171
  var screenWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
22172
+ var CsvImportType;
22173
+
22174
+ (function (CsvImportType) {
22175
+ CsvImportType[CsvImportType["Teacher"] = 0] = "Teacher";
22176
+ CsvImportType[CsvImportType["Admin"] = 1] = "Admin";
22177
+ })(CsvImportType || (CsvImportType = {}));
22170
22178
 
22171
22179
  var resources$5 = {
22172
22180
  "en-US": {
@@ -41880,212 +41888,6 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
41880
41888
  })), t("log_out")))));
41881
41889
  };
41882
41890
 
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
41891
  var TITLE$3 = "Not found";
42090
41892
 
42091
41893
  var NotFound = function NotFound() {
@@ -42143,258 +41945,6 @@ var TheContent = function TheContent(_ref) {
42143
41945
 
42144
41946
  var TheContent$1 = React__default.memo(TheContent);
42145
41947
 
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"
42157
- };
42158
-
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
41948
  var buttonTextStyle = {
42399
41949
  fontWeight: 500
42400
41950
  };
@@ -46299,6 +45849,9 @@ var importUsersCSV = function importUsersCSV(formData) {
46299
45849
  var downloadTemplateFileUser = function downloadTemplateFileUser() {
46300
45850
  return api.get(CSV_FILE_TEACHER + "/download-template-file-user");
46301
45851
  };
45852
+ var validateCsvApi = function validateCsvApi(formData, type) {
45853
+ return api.post(CSV_FILE_TEACHER + "/validate-csv-template-student/" + type, formData);
45854
+ };
46302
45855
 
46303
45856
  var CSVType;
46304
45857
 
@@ -50095,7 +49648,7 @@ var style$2 = {
50095
49648
  color: "#fff",
50096
49649
  fontWeight: 500,
50097
49650
  fontSize: "14px",
50098
- height: "100%",
49651
+ height: "56px",
50099
49652
  justifyContent: "center"
50100
49653
  };
50101
49654
 
@@ -50194,15 +49747,19 @@ var useCSVImportTab = function useCSVImportTab() {
50194
49747
  studentDataFile = _useState5[0],
50195
49748
  setStudentDataFile = _useState5[1];
50196
49749
 
49750
+ var _useState6 = React.useState([]),
49751
+ errorsValidate = _useState6[0],
49752
+ setErrorsValidate = _useState6[1];
49753
+
50197
49754
  var isCheckDomainIBS = true;
50198
49755
 
50199
- var _useState6 = React.useState(0),
50200
- defaultTeacher = _useState6[0],
50201
- setDefaultTeacher = _useState6[1];
49756
+ var _useState7 = React.useState(0),
49757
+ defaultTeacher = _useState7[0],
49758
+ setDefaultTeacher = _useState7[1];
50202
49759
 
50203
- var _useState7 = React.useState(""),
50204
- fileName = _useState7[0],
50205
- setFileName = _useState7[1];
49760
+ var _useState8 = React.useState(""),
49761
+ fileName = _useState8[0],
49762
+ setFileName = _useState8[1];
50206
49763
 
50207
49764
  React.useEffect(function () {
50208
49765
  document.title = title$5;
@@ -50247,10 +49804,10 @@ var useCSVImportTab = function useCSVImportTab() {
50247
49804
 
50248
49805
  var upload = React.useCallback(function (file) {
50249
49806
  try {
50250
- var _exit2 = false;
49807
+ var _exit3 = false;
50251
49808
 
50252
- var _temp12 = function _temp12(_result2) {
50253
- if (_exit2) return _result2;
49809
+ var _temp12 = function _temp12(_result) {
49810
+ if (_exit3) return _result;
50254
49811
  dispatch(setLoading(false));
50255
49812
  var inputId = document.getElementById(id$1);
50256
49813
  var input = document.getElementById('import-student');
@@ -50264,103 +49821,114 @@ var useCSVImportTab = function useCSVImportTab() {
50264
49821
  dispatch(setLoading(true));
50265
49822
 
50266
49823
  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
49824
  var formData = new FormData();
50276
49825
  formData.append("file", file, file.name);
49826
+ var typeOfCsv = type === CSVType$1.AllUser ? CsvImportType.Admin : CsvImportType.Teacher;
49827
+ return Promise.resolve(validateCsvApi(formData, typeOfCsv)).then(function (res) {
49828
+ var _exit2 = false;
50277
49829
 
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
- }
49830
+ function _temp9(_result2) {
49831
+ if (_exit2) return _result2;
49832
+ dispatch(setAlert({
49833
+ type: "success",
49834
+ message: "Import CSV successfully"
49835
+ }));
49836
+ }
50292
49837
 
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;
49838
+ if (res.data && res.data.length > 0) {
49839
+ setErrorsValidate(res.data);
49840
+ dispatch(setLoading(false));
49841
+ _exit3 = true;
49842
+ return;
49843
+ }
50300
49844
 
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
- }
49845
+ var _temp8 = function () {
49846
+ if (type == CSVType$1.AllUser) {
49847
+ return Promise.resolve(file.text()).then(function (fileTextRaw) {
49848
+ var fileText = fileTextRaw.trim();
49849
+ var rows = fileText.split("\n").map(function (row) {
49850
+ return row.trim();
49851
+ });
49852
+ var headerIndex = rows.findIndex(function (row) {
49853
+ return row.split(",").includes("First Name");
49854
+ });
50310
49855
 
50311
- var chunkSize = 10;
50312
- var chunks = [];
49856
+ if (headerIndex === 0) {
49857
+ throw new Error("Invalid CSV: Missing header row.");
49858
+ }
50313
49859
 
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
- });
49860
+ fileText = rows.slice(headerIndex).join("\n");
49861
+ var parsedData = Papa.parse(fileText, {
49862
+ header: true,
49863
+ skipEmptyLines: true
50320
49864
  });
49865
+ var header = parsedData.meta.fields;
49866
+ var dataRows = parsedData.data;
50321
49867
 
50322
- if (header) {
50323
- valuesOnly.unshift(header);
49868
+ if (!!!dataRows.length) {
49869
+ dispatch(setLoading(false));
49870
+ dispatch(setAlert({
49871
+ type: "danger",
49872
+ message: 'The file has no data or some column names are misformed.'
49873
+ }));
49874
+ _exit3 = true;
49875
+ return;
50324
49876
  }
50325
49877
 
50326
- console.log({
50327
- valuesOnly: valuesOnly
50328
- });
50329
- chunks.push(valuesOnly);
50330
- }
49878
+ var chunkSize = 10;
49879
+ var chunks = [];
50331
49880
 
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
- });
49881
+ for (var _i = 0; _i < dataRows.length; _i += chunkSize) {
49882
+ var chunkData = dataRows.slice(_i, _i + chunkSize);
49883
+ var valuesOnly = chunkData.map(function (row) {
49884
+ return Object.values(row).map(function (v) {
49885
+ return (v != null ? v : "").toString().trim();
49886
+ });
49887
+ });
50341
49888
 
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 () {});
49889
+ if (header) {
49890
+ valuesOnly.unshift(header);
50350
49891
  }
50351
- }();
50352
49892
 
50353
- if (_temp15 && _temp15.then) return _temp15.then(function () {});
50354
- } else {
50355
- return Promise.resolve(importCSV$1(formData, type.toString())).then(function () {});
50356
- }
50357
- }();
49893
+ console.log({
49894
+ valuesOnly: valuesOnly
49895
+ });
49896
+ chunks.push(valuesOnly);
49897
+ }
50358
49898
 
50359
- if (_temp14 && _temp14.then) return _temp14.then(function () {});
50360
- }
50361
- }();
49899
+ var _temp5 = _forTo(chunks, function (i) {
49900
+ return Promise.resolve(importChunkFileUsers({
49901
+ chunks: chunks[i]
49902
+ })).then(function () {
49903
+ return Promise.resolve(new Promise(function (res) {
49904
+ return setTimeout(res, 500);
49905
+ })).then(function () {});
49906
+ });
49907
+ });
50362
49908
 
50363
- return _temp8 && _temp8.then ? _temp8.then(_temp9) : _temp9(_temp8);
49909
+ if (_temp5 && _temp5.then) return _temp5.then(function () {});
49910
+ });
49911
+ } else {
49912
+ var _temp14 = function () {
49913
+ if (isCheckDomainIBS) {
49914
+ var _temp15 = function () {
49915
+ if (type == CSVType$1.ClassReflection) {
49916
+ return Promise.resolve(importClassReflectionCSV$1(formData)).then(function () {});
49917
+ }
49918
+ }();
49919
+
49920
+ if (_temp15 && _temp15.then) return _temp15.then(function () {});
49921
+ } else {
49922
+ return Promise.resolve(importCSV$1(formData, type.toString())).then(function () {});
49923
+ }
49924
+ }();
49925
+
49926
+ if (_temp14 && _temp14.then) return _temp14.then(function () {});
49927
+ }
49928
+ }();
49929
+
49930
+ return _temp8 && _temp8.then ? _temp8.then(_temp9) : _temp9(_temp8);
49931
+ });
50364
49932
  }, function (err) {
50365
49933
  var _err$response, _err$response$data;
50366
49934
 
@@ -50515,7 +50083,9 @@ var useCSVImportTab = function useCSVImportTab() {
50515
50083
  defaultTeacher: defaultTeacher,
50516
50084
  fileName: fileName,
50517
50085
  onStudentSubmit: onStudentSubmit,
50518
- downloadTemplateUser: downloadTemplateUser
50086
+ downloadTemplateUser: downloadTemplateUser,
50087
+ errorsValidate: errorsValidate,
50088
+ setErrorsValidate: setErrorsValidate
50519
50089
  };
50520
50090
  };
50521
50091
 
@@ -50542,7 +50112,8 @@ var CSVImport = function CSVImport() {
50542
50112
  setArrStudent = _useCSVImportTab.setArrStudent,
50543
50113
  buttons = _useCSVImportTab.buttons,
50544
50114
  upload = _useCSVImportTab.upload,
50545
- downloadTemplateUser = _useCSVImportTab.downloadTemplateUser;
50115
+ downloadTemplateUser = _useCSVImportTab.downloadTemplateUser,
50116
+ errorsValidate = _useCSVImportTab.errorsValidate;
50546
50117
 
50547
50118
  var _useTranslation = reactI18next.useTranslation(),
50548
50119
  t = _useTranslation.t;
@@ -50595,9 +50166,9 @@ var CSVImport = function CSVImport() {
50595
50166
  accept: "text/csv"
50596
50167
  }), React__default.createElement(reactstrap.Col, {
50597
50168
  md: 6,
50598
- className: "mb-2 d-flex align-items-end"
50169
+ className: "mb-2 d-flex mt-5"
50599
50170
  }, React__default.createElement(reactstrap.Row, {
50600
- className: "w-100"
50171
+ className: "w-100 flex-column"
50601
50172
  }, React__default.createElement(reactstrap.Col, {
50602
50173
  md: 12,
50603
50174
  className: ""
@@ -50626,7 +50197,9 @@ var CSVImport = function CSVImport() {
50626
50197
  })))), React__default.createElement(reactstrap.Col, {
50627
50198
  md: 6,
50628
50199
  className: "mb-2"
50629
- }, React__default.createElement(reactstrap.Row, null, React__default.createElement(reactstrap.Col, {
50200
+ }, React__default.createElement(reactstrap.Row, {
50201
+ className: "flex-column"
50202
+ }, React__default.createElement(reactstrap.Col, {
50630
50203
  md: 12,
50631
50204
  className: "mb-2 text-right"
50632
50205
  }, React__default.createElement(reactstrap.Button, {
@@ -50656,7 +50229,12 @@ var CSVImport = function CSVImport() {
50656
50229
  return setType(button.type);
50657
50230
  }
50658
50231
  });
50659
- })))));
50232
+ })), (errorsValidate === null || errorsValidate === void 0 ? void 0 : errorsValidate.length) > 0 && errorsValidate.map(function (error, index) {
50233
+ return React__default.createElement(ErrorHandler, {
50234
+ key: index,
50235
+ text: error
50236
+ });
50237
+ }))));
50660
50238
  }))) );
50661
50239
  };
50662
50240
 
@@ -51741,6 +51319,34 @@ var UserDetail = function UserDetail() {
51741
51319
  });
51742
51320
  };
51743
51321
 
51322
+ var loadingStyle = {
51323
+ minWidth: "100vw",
51324
+ minHeight: "100vh",
51325
+ position: "fixed",
51326
+ top: 0,
51327
+ left: 0,
51328
+ zIndex: 999999999,
51329
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
51330
+ display: "flex",
51331
+ justifyContent: "center",
51332
+ alignItems: "center"
51333
+ };
51334
+
51335
+ var Loading = function Loading() {
51336
+ var isLoading = reactRedux.useSelector(function (state) {
51337
+ return state.common.isLoading;
51338
+ });
51339
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
51340
+ return isLoading ? React__default.createElement("div", {
51341
+ style: loadingStyle
51342
+ }, React__default.createElement("div", {
51343
+ className: "spinner-border text-secondary",
51344
+ role: "status"
51345
+ }, React__default.createElement("span", {
51346
+ className: "sr-only"
51347
+ }, "Loading..."))) : null;
51348
+ };
51349
+
51744
51350
  var ScrollToTop = function ScrollToTop() {
51745
51351
  var _useLocation = reactRouterDom.useLocation(),
51746
51352
  pathname = _useLocation.pathname;
@@ -54764,6 +54370,32 @@ var store = toolkit.configureStore({
54764
54370
  }
54765
54371
  });
54766
54372
 
54373
+ var firstCheckToken = function firstCheckToken() {
54374
+ return Promise.resolve(_catch(function () {
54375
+ var token = getAccessToken();
54376
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
54377
+ return tokenStatus.data ? true : false;
54378
+ }) : false;
54379
+ }, function () {
54380
+ return false;
54381
+ }));
54382
+ };
54383
+
54384
+ var canAccess = function canAccess(userRoles, componentRoles) {
54385
+ if (!Array.isArray(userRoles)) {
54386
+ return false;
54387
+ }
54388
+
54389
+ if (Array.isArray(componentRoles)) {
54390
+ var intersects = userRoles.filter(function (i) {
54391
+ return componentRoles.includes(i);
54392
+ });
54393
+ return intersects.length > 0;
54394
+ }
54395
+
54396
+ return true;
54397
+ };
54398
+
54767
54399
  var isInViewport = function isInViewport(el) {
54768
54400
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
54769
54401
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -54797,6 +54429,410 @@ var generateRandomString = (function () {
54797
54429
  return (Math.random() + 1).toString(36).substring(7);
54798
54430
  });
54799
54431
 
54432
+ var apiGetLanguage = function apiGetLanguage() {
54433
+ return api.get(BASE_URL + "/api/language");
54434
+ };
54435
+
54436
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
54437
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
54438
+ };
54439
+
54440
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
54441
+
54442
+ var useLanguages = function useLanguages() {
54443
+ var dispatch = reactRedux.useDispatch();
54444
+
54445
+ var _useTranslation = reactI18next.useTranslation(),
54446
+ i18n = _useTranslation.i18n;
54447
+
54448
+ var language = reactRedux.useSelector(function (state) {
54449
+ return state.common.language;
54450
+ });
54451
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
54452
+
54453
+ var _useState = React.useState([]),
54454
+ languageList = _useState[0],
54455
+ setLanguageList = _useState[1];
54456
+
54457
+ var _useState2 = React.useState(false),
54458
+ dropdownOpen = _useState2[0],
54459
+ setDropdownOpen = _useState2[1];
54460
+
54461
+ var _useState3 = React.useState(defaultLanguage),
54462
+ currentLang = _useState3[0],
54463
+ setCurrentLang = _useState3[1];
54464
+
54465
+ var toggle = function toggle() {
54466
+ return setDropdownOpen(function (prevState) {
54467
+ return !prevState;
54468
+ });
54469
+ };
54470
+
54471
+ var changeLanguageApp = function changeLanguageApp(lang) {
54472
+ try {
54473
+ var _temp3 = function _temp3() {
54474
+ dispatch(setLoading(false));
54475
+ };
54476
+
54477
+ dispatch(setLoading(true));
54478
+
54479
+ var _temp4 = _catch(function () {
54480
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
54481
+ i18n.changeLanguage(lang);
54482
+ setCurrentLang(lang);
54483
+ dispatch(setLanguage(lang));
54484
+ });
54485
+ }, function (err) {
54486
+ var _err$response, _err$response$data;
54487
+
54488
+ dispatch(setAlert({
54489
+ type: "danger",
54490
+ 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
54491
+ }));
54492
+ });
54493
+
54494
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
54495
+ } catch (e) {
54496
+ return Promise.reject(e);
54497
+ }
54498
+ };
54499
+
54500
+ var getListLanguage = function getListLanguage() {
54501
+ try {
54502
+ var _temp6 = _catch(function () {
54503
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
54504
+ setLanguageList(res.data);
54505
+ });
54506
+ }, function (err) {
54507
+ var _err$response2, _err$response2$data;
54508
+
54509
+ dispatch(setAlert({
54510
+ type: "danger",
54511
+ 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
54512
+ }));
54513
+ });
54514
+
54515
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54516
+ } catch (e) {
54517
+ return Promise.reject(e);
54518
+ }
54519
+ };
54520
+
54521
+ React.useEffect(function () {
54522
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
54523
+ getListLanguage();
54524
+ }, []);
54525
+ return {
54526
+ languageList: languageList,
54527
+ toggle: toggle,
54528
+ dropdownOpen: dropdownOpen,
54529
+ currentLang: currentLang,
54530
+ changeLanguageApp: changeLanguageApp,
54531
+ setCurrentLang: setCurrentLang
54532
+ };
54533
+ };
54534
+
54535
+ var TheLanguageDropdown = function TheLanguageDropdown() {
54536
+ var _useLanguages = useLanguages(),
54537
+ languageList = _useLanguages.languageList,
54538
+ toggle = _useLanguages.toggle,
54539
+ dropdownOpen = _useLanguages.dropdownOpen,
54540
+ currentLang = _useLanguages.currentLang,
54541
+ changeLanguageApp = _useLanguages.changeLanguageApp;
54542
+
54543
+ var currentLanguage = React.useMemo(function () {
54544
+ var current = languageList.find(function (i) {
54545
+ return i.code === currentLang;
54546
+ });
54547
+ if (!current) return null;
54548
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("img", {
54549
+ className: "mr-2 " + styles['dropdown-menu-flag'],
54550
+ src: "" + getStaticFileUrl(current.image)
54551
+ }), " ", current.name);
54552
+ }, [currentLang, languageList]);
54553
+ return React__default.createElement(reactstrap.Dropdown, {
54554
+ isOpen: dropdownOpen,
54555
+ toggle: toggle,
54556
+ className: "" + styles["dropdown-menu"]
54557
+ }, React__default.createElement(reactstrap.DropdownToggle, {
54558
+ className: styles["header-avatar"] + " d-flex align-items-center"
54559
+ }, React__default.createElement("span", {
54560
+ style: {
54561
+ color: "#000",
54562
+ textTransform: "capitalize",
54563
+ display: 'flex',
54564
+ alignItems: 'center'
54565
+ }
54566
+ }, currentLanguage, React__default.createElement(bs.BsChevronDown, {
54567
+ className: "ml-2",
54568
+ style: {
54569
+ fontSize: '10px'
54570
+ }
54571
+ }))), React__default.createElement(reactstrap.DropdownMenu, {
54572
+ className: styles["dropdown-content-language"]
54573
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
54574
+ return React__default.createElement(reactstrap.DropdownItem, {
54575
+ key: lang.code,
54576
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
54577
+ onClick: function onClick() {
54578
+ return changeLanguageApp(lang.code);
54579
+ }
54580
+ }, React__default.createElement("div", {
54581
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
54582
+ }, React__default.createElement("span", {
54583
+ className: "mr-2 d-flex hover-opacity"
54584
+ }, React__default.createElement("img", {
54585
+ style: {
54586
+ width: "30px",
54587
+ height: "25px",
54588
+ borderRadius: "5px"
54589
+ },
54590
+ src: getStaticFileUrl(lang.image)
54591
+ })), lang.name));
54592
+ })));
54593
+ };
54594
+
54595
+ var TheHeader = function TheHeader(_ref) {
54596
+ var onToggleModel = _ref.onToggleModel;
54597
+ var dispatch = reactRedux.useDispatch();
54598
+ var sidebarShow = reactRedux.useSelector(function (state) {
54599
+ return state.common.sidebarShow;
54600
+ });
54601
+
54602
+ var _useTranslation = reactI18next.useTranslation(),
54603
+ t = _useTranslation.t;
54604
+
54605
+ var toggleSidebarMobile = function toggleSidebarMobile() {
54606
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
54607
+ dispatch(setSidebar(val));
54608
+ };
54609
+
54610
+ var isDistrict = window.location.host.includes("-district");
54611
+ return React__default.createElement(react.CHeader, {
54612
+ withSubheader: true,
54613
+ className: "d-flex align-items-center justify-content-end"
54614
+ }, React__default.createElement(react.CToggler, {
54615
+ inHeader: true,
54616
+ className: "ml-md-3 d-lg-none",
54617
+ onClick: toggleSidebarMobile
54618
+ }), React__default.createElement(react.CHeaderBrand, {
54619
+ className: "mx-auto flex-grow-1 d-lg-none",
54620
+ to: "/"
54621
+ }, React__default.createElement("img", {
54622
+ src: getStaticFileUrl(Images.LOGO_HEADER),
54623
+ className: styles["header-logo"]
54624
+ })), React__default.createElement(react.CHeaderNav, {
54625
+ className: "pr-3"
54626
+ }, React__default.createElement(TheLanguageDropdown, null), React__default.createElement("a", {
54627
+ className: "mr-3",
54628
+ style: {
54629
+ color: '#000'
54630
+ },
54631
+ href: '/privacy-policy',
54632
+ target: "blank"
54633
+ }, t("privacy_policy")), !isDistrict && React__default.createElement(NotificationButton, null), React__default.createElement(TheHeaderDropdown, {
54634
+ onToggleModel: onToggleModel
54635
+ })));
54636
+ };
54637
+
54638
+ var ModelSelectRole = function ModelSelectRole(_ref) {
54639
+ var _handleUserRole;
54640
+
54641
+ var open = _ref.open,
54642
+ onToggleModel = _ref.onToggleModel;
54643
+ var dispatch = reactRedux.useDispatch();
54644
+
54645
+ var _useTranslation = reactI18next.useTranslation(),
54646
+ t = _useTranslation.t;
54647
+
54648
+ var history = reactRouterDom.useHistory();
54649
+ var pathname = window.location.pathname;
54650
+ var user = reactRedux.useSelector(function (state) {
54651
+ return state.common.user;
54652
+ });
54653
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
54654
+
54655
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
54656
+ dispatch(setLoading(true));
54657
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
54658
+ dispatch(setUser(_extends({}, user, {
54659
+ roles: roleSelect
54660
+ })));
54661
+ localStorage.setItem("ROLES", roleSelect.toString());
54662
+ onToggleModel();
54663
+
54664
+ if (roles.includes("Parent")) {
54665
+ history.push("/parent");
54666
+ } else if (roles.includes("Admin")) {
54667
+ history.push("/admin/home");
54668
+ } else {
54669
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
54670
+ }
54671
+ };
54672
+
54673
+ return React__default.createElement(reactstrap.Modal, {
54674
+ isOpen: open,
54675
+ toggle: function toggle() {
54676
+ return onToggleModel();
54677
+ },
54678
+ className: "" + styles["model-switch-roles"],
54679
+ centered: true
54680
+ }, React__default.createElement("p", {
54681
+ className: "" + styles["title"]
54682
+ }, 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) {
54683
+ return React__default.createElement("p", {
54684
+ key: r,
54685
+ 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" : ""],
54686
+ onClick: function onClick() {
54687
+ return handleSelectUserRoles([r]);
54688
+ }
54689
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
54690
+ })));
54691
+ };
54692
+
54693
+ var TheLayout = function TheLayout(_ref) {
54694
+ var routes = _ref.routes,
54695
+ navigation = _ref.navigation;
54696
+ var history = reactRouterDom.useHistory();
54697
+ var dispatch = reactRedux.useDispatch();
54698
+ var user = reactRedux.useSelector(function (state) {
54699
+ return state.common.user;
54700
+ });
54701
+ var language = reactRedux.useSelector(function (state) {
54702
+ return state.common.language;
54703
+ });
54704
+
54705
+ var _useState = React.useState(false),
54706
+ openModelSelectRole = _useState[0],
54707
+ setOpenModelSelectRole = _useState[1];
54708
+
54709
+ var _useTranslation = reactI18next.useTranslation(),
54710
+ t = _useTranslation.t;
54711
+
54712
+ var location = reactRouterDom.useLocation();
54713
+ var isNotification = location.pathname.includes("notifications");
54714
+ var isDistrict = window.location.host.includes("-district");
54715
+
54716
+ var handleToggleModel = function handleToggleModel() {
54717
+ setOpenModelSelectRole(!openModelSelectRole);
54718
+ };
54719
+
54720
+ var authRoutes = React.useMemo(function () {
54721
+ return routes.filter(function (route) {
54722
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
54723
+ }).filter(function (route) {
54724
+ return !!route.isDistrict === isDistrict;
54725
+ });
54726
+ }, [user, language]);
54727
+ var authNavigations = React.useMemo(function () {
54728
+ return navigation.map(function (item) {
54729
+ var _item$_children, _item$_children2;
54730
+
54731
+ return _extends({}, item, {
54732
+ name: t(item.name),
54733
+ _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) {
54734
+ return _extends({}, x, {
54735
+ name: t(x.name)
54736
+ });
54737
+ }) : undefined
54738
+ });
54739
+ }).filter(function (nav) {
54740
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
54741
+ }).filter(function (nav) {
54742
+ return !!nav.isDistrict === isDistrict;
54743
+ });
54744
+ }, [user, language]);
54745
+
54746
+ var getInformationSetting = function getInformationSetting() {
54747
+ try {
54748
+ var _temp2 = _catch(function () {
54749
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
54750
+ dispatch(setSandboxMode(res.data.isSandboxMode));
54751
+ });
54752
+ }, function (err) {
54753
+ console.error(err);
54754
+ });
54755
+
54756
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
54757
+ } catch (e) {
54758
+ return Promise.reject(e);
54759
+ }
54760
+ };
54761
+
54762
+ React.useEffect(function () {
54763
+ checkAuthentication();
54764
+ }, []);
54765
+ React.useEffect(function () {
54766
+ getInformationSetting();
54767
+ }, [location.pathname]);
54768
+
54769
+ var checkAuthentication = function checkAuthentication() {
54770
+ try {
54771
+ var _temp4 = _catch(function () {
54772
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
54773
+ tokenStatus ? loadInfo() : resetAuth();
54774
+ });
54775
+ }, function () {
54776
+ resetAuth();
54777
+ });
54778
+
54779
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
54780
+ } catch (e) {
54781
+ return Promise.reject(e);
54782
+ }
54783
+ };
54784
+
54785
+ var loadInfo = function loadInfo() {
54786
+ try {
54787
+ var _temp6 = _catch(function () {
54788
+ return Promise.resolve(getInfo()).then(function (info) {
54789
+ var _info$data, _info$data$roles;
54790
+
54791
+ 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"))) {
54792
+ resetAuth();
54793
+ }
54794
+
54795
+ dispatch(setUser(info.data));
54796
+ });
54797
+ }, function () {
54798
+ resetAuth();
54799
+ });
54800
+
54801
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54802
+ } catch (e) {
54803
+ return Promise.reject(e);
54804
+ }
54805
+ };
54806
+
54807
+ var resetAuth = function resetAuth() {
54808
+ localStorage.removeItem(ACCESS_TOKEN);
54809
+ sessionStorage.removeItem(ACCESS_TOKEN);
54810
+ localStorage.removeItem("ROLES");
54811
+ history.push("/");
54812
+ };
54813
+
54814
+ if (!user) {
54815
+ return React__default.createElement(Loading, null);
54816
+ }
54817
+
54818
+ return React__default.createElement("div", {
54819
+ className: "c-app c-default-layout"
54820
+ }, !isNotification && React__default.createElement(TheSidebar, {
54821
+ navigation: authNavigations
54822
+ }), React__default.createElement("div", {
54823
+ className: "c-wrapper"
54824
+ }, !isNotification && React__default.createElement(TheHeader, {
54825
+ onToggleModel: handleToggleModel
54826
+ }), React__default.createElement("div", {
54827
+ className: "c-body bg-white"
54828
+ }, React__default.createElement(TheContent$1, {
54829
+ routes: authRoutes
54830
+ }))), React__default.createElement(ModelSelectRole, {
54831
+ open: openModelSelectRole,
54832
+ onToggleModel: handleToggleModel
54833
+ }));
54834
+ };
54835
+
54800
54836
  var amplitudeClient = amplitude;
54801
54837
 
54802
54838
  Object.defineProperty(exports, 'I18nextProvider', {