mario-core 2.9.149-level → 2.9.151-level

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.
@@ -21,7 +21,7 @@ import { CgMenuRight } from 'react-icons/cg';
21
21
  import { RiLogoutBoxRLine } from 'react-icons/ri';
22
22
  import Pusher from 'pusher-js/with-encryption';
23
23
  import { BsChevronDown } from 'react-icons/bs';
24
- import { FaPlus, FaTrashAlt, FaUsersCog, FaRegEdit, FaArrowLeft, FaDownload, FaTrash, FaEdit, FaFolderPlus, FaFileUpload } from 'react-icons/fa';
24
+ import { FaPlus, FaTrashAlt, FaSyncAlt, FaUsersCog, FaRegEdit, FaArrowLeft, FaDownload, FaTrash, FaEdit, FaFolderPlus, FaFileUpload } from 'react-icons/fa';
25
25
  import { format } from 'date-fns';
26
26
  import { Editor } from '@tinymce/tinymce-react';
27
27
  import differenceInCalendarYears from 'date-fns/differenceInCalendarYears';
@@ -3269,9 +3269,7 @@ var useLogin = function useLogin() {
3269
3269
 
3270
3270
  amplitude.getInstance().init(!isLocalhost ? INIT_AMPLITUDE_KEY_PROD : INIT_AMPLITUDE_KEY_STAGE, data.email, {
3271
3271
  includeReferrer: false,
3272
- includeUtm: false,
3273
- includeGclid: false,
3274
- includeFbclid: false
3272
+ includeUtm: false
3275
3273
  });
3276
3274
  var hostName = window.location.hostname;
3277
3275
  amplitude.getInstance().setUserProperties({
@@ -7251,23 +7249,25 @@ var SkillList = function SkillList() {
7251
7249
  var setUserList = createAction("users/setUserList");
7252
7250
  var setStudentList = createAction("users/setStudentList");
7253
7251
 
7254
- var USER_URL$1 = BASE_URL + "/api/user";
7252
+ var STUDENT_URL = BASE_URL + "/api/student";
7255
7253
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
7256
7254
  var ACCOUNT_URL$1 = BASE_URL + "/api/account";
7257
7255
  var EDU_USER_URL = BASE_URL + "/api/User";
7258
- var get$5 = function get(filter) {
7259
- return api.get("" + USER_URL$1, {
7256
+ var ONE_ROSTER_USER_URL = BASE_URL + "/api/usersOneRoster";
7257
+ var ROSTER_USER_URL = BASE_URL + "/api/user/roster";
7258
+ var getRosterUser = function getRosterUser(filter) {
7259
+ return api.get("" + ROSTER_USER_URL, {
7260
7260
  params: filter
7261
7261
  });
7262
7262
  };
7263
- var getById$3 = function getById(id) {
7264
- return api.get(USER_URL$1 + "/" + id);
7263
+ var getRosterUserById = function getRosterUserById(id) {
7264
+ return api.get(ROSTER_USER_URL + "/" + id);
7265
7265
  };
7266
- var create$5 = function create(data) {
7267
- return api.post("" + USER_URL$1, data);
7266
+ var createRosterUser = function createRosterUser(data) {
7267
+ return api.post("" + ROSTER_USER_URL, data);
7268
7268
  };
7269
- var update$5 = function update(data) {
7270
- return api.put(USER_URL$1 + "/" + data.id, data);
7269
+ var updateRosterUser = function updateRosterUser(data) {
7270
+ return api.put(ROSTER_USER_URL + "/" + data.id, data);
7271
7271
  };
7272
7272
  var remove$3 = function remove(id) {
7273
7273
  return api["delete"](EDU_USER_URL + "/delete-item-user/" + id);
@@ -7281,8 +7281,19 @@ var forgotChangePassword = function forgotChangePassword(data) {
7281
7281
  var switchAccountUser = function switchAccountUser(id) {
7282
7282
  return api.post(EDU_USER_URL + "/switch-user/" + id);
7283
7283
  };
7284
+ var getRosterStudentsApi = function getRosterStudentsApi(filter) {
7285
+ return api.get("" + ONE_ROSTER_USER_URL, {
7286
+ params: filter
7287
+ });
7288
+ };
7289
+ var getRosterStudentBySourcedIdApi = function getRosterStudentBySourcedIdApi(sourcedId) {
7290
+ return api.get(ONE_ROSTER_USER_URL + "/" + sourcedId);
7291
+ };
7292
+ var syncRosterStudentsApi = function syncRosterStudentsApi() {
7293
+ return api.put(STUDENT_URL + "/sync-students");
7294
+ };
7284
7295
 
7285
- var USER_URL$2 = "/admin/user";
7296
+ var USER_URL$1 = "/admin/user";
7286
7297
  var CREATE_USER_URL = "/admin/create-user";
7287
7298
  var TITLE$7 = "User list";
7288
7299
  var HOMEPAGE_TEACHER$1 = "/home";
@@ -7322,9 +7333,9 @@ var useUserList = function useUserList() {
7322
7333
  dispatch(setLoading(true));
7323
7334
 
7324
7335
  var _temp4 = _catch(function () {
7325
- return Promise.resolve(fullName ? get$5(_extends({}, filters, {
7336
+ return Promise.resolve(fullName ? getRosterUser(_extends({}, filters, {
7326
7337
  searchString: fullName
7327
- })) : get$5(filters)).then(function (res) {
7338
+ })) : getRosterUser(filters)).then(function (res) {
7328
7339
  var _res$data = res.data,
7329
7340
  items = _res$data.items,
7330
7341
  totalItems = _res$data.totalItems;
@@ -7353,6 +7364,68 @@ var useUserList = function useUserList() {
7353
7364
  return Promise.reject(e);
7354
7365
  }
7355
7366
  }, [dispatch, filters]);
7367
+
7368
+ var handleSyncRosterStudents = function handleSyncRosterStudents() {
7369
+ try {
7370
+ var _temp7 = function _temp7() {
7371
+ dispatch(setLoading(false));
7372
+ };
7373
+
7374
+ dispatch(setLoading(true));
7375
+
7376
+ var _temp8 = _catch(function () {
7377
+ return Promise.resolve(syncRosterStudentsApi()).then(function (res) {
7378
+ if (res.data) {
7379
+ dispatch(setAlert({
7380
+ type: "success",
7381
+ message: res.data + " student" + (res.data > 1 ? "s have" : " has") + " been synchronized"
7382
+ }));
7383
+ getData();
7384
+ } else {
7385
+ dispatch(setAlert({
7386
+ type: "success",
7387
+ message: "Every student synchronized"
7388
+ }));
7389
+ }
7390
+ });
7391
+ }, function (err) {
7392
+ var _err$response2, _err$response2$data;
7393
+
7394
+ dispatch(setAlert({
7395
+ type: "danger",
7396
+ 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
7397
+ }));
7398
+ });
7399
+
7400
+ return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8));
7401
+ } catch (e) {
7402
+ return Promise.reject(e);
7403
+ }
7404
+ };
7405
+
7406
+ var rosterUserInfo = function rosterUserInfo(record) {
7407
+ if (!record) return '';
7408
+ var result = [];
7409
+ var sourcedId = record.sourcedId,
7410
+ rosterUser = record.rosterUser;
7411
+ !!sourcedId && result.push(sourcedId);
7412
+
7413
+ if (rosterUser) {
7414
+ var givenName = rosterUser.givenName,
7415
+ middleName = rosterUser.middleName,
7416
+ familyName = rosterUser.familyName,
7417
+ email = rosterUser.email;
7418
+ var names = [];
7419
+ !!givenName && names.push(givenName);
7420
+ !!middleName && names.push(middleName);
7421
+ !!familyName && names.push(familyName);
7422
+ !!names.length && result.push(names.join(" "));
7423
+ !!email && result.push(email);
7424
+ }
7425
+
7426
+ return result.join(" / ");
7427
+ };
7428
+
7356
7429
  useEffect(function () {
7357
7430
  document.title = TITLE$7;
7358
7431
  }, []);
@@ -7389,11 +7462,11 @@ var useUserList = function useUserList() {
7389
7462
  }
7390
7463
  }));
7391
7464
  } catch (err) {
7392
- var _err$response2, _err$response2$data;
7465
+ var _err$response3, _err$response3$data;
7393
7466
 
7394
7467
  dispatch(setAlert({
7395
7468
  type: "danger",
7396
- 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
7469
+ message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message
7397
7470
  }));
7398
7471
  }
7399
7472
 
@@ -7439,7 +7512,7 @@ var useUserList = function useUserList() {
7439
7512
 
7440
7513
  var swicthUser = useCallback(function (id) {
7441
7514
  try {
7442
- var _temp6 = _catch(function () {
7515
+ var _temp10 = _catch(function () {
7443
7516
  return Promise.resolve(switchAccountUser(id)).then(function (res) {
7444
7517
  var data = res.data;
7445
7518
  dispatch(setModal({
@@ -7448,13 +7521,13 @@ var useUserList = function useUserList() {
7448
7521
  message: "Do you want to impersonate this user?",
7449
7522
  onConfirm: function () {
7450
7523
  try {
7451
- var _temp9 = function _temp9() {
7524
+ var _temp13 = function _temp13() {
7452
7525
  dispatch(setLoading(false));
7453
7526
  };
7454
7527
 
7455
7528
  dispatch(setLoading(true));
7456
7529
 
7457
- var _temp10 = _catch(function () {
7530
+ var _temp14 = _catch(function () {
7458
7531
  var req = {
7459
7532
  email: data.email,
7460
7533
  password: "default",
@@ -7465,15 +7538,15 @@ var useUserList = function useUserList() {
7465
7538
  redirectLoginUser(res);
7466
7539
  });
7467
7540
  }, function (err) {
7468
- var _err$response3, _err$response3$data;
7541
+ var _err$response4, _err$response4$data;
7469
7542
 
7470
7543
  setAlert({
7471
7544
  type: "danger",
7472
- message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message
7545
+ message: ((_err$response4 = err.response) === null || _err$response4 === void 0 ? void 0 : (_err$response4$data = _err$response4.data) === null || _err$response4$data === void 0 ? void 0 : _err$response4$data.title) || err.message
7473
7546
  });
7474
7547
  });
7475
7548
 
7476
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7549
+ return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7477
7550
  } catch (e) {
7478
7551
  return Promise.reject(e);
7479
7552
  }
@@ -7481,22 +7554,22 @@ var useUserList = function useUserList() {
7481
7554
  }));
7482
7555
  });
7483
7556
  }, function (err) {
7484
- var _err$response4, _err$response4$data;
7557
+ var _err$response5, _err$response5$data;
7485
7558
 
7486
7559
  dispatch(setAlert({
7487
7560
  type: "danger",
7488
- message: ((_err$response4 = err.response) === null || _err$response4 === void 0 ? void 0 : (_err$response4$data = _err$response4.data) === null || _err$response4$data === void 0 ? void 0 : _err$response4$data.title) || err.message
7561
+ message: ((_err$response5 = err.response) === null || _err$response5 === void 0 ? void 0 : (_err$response5$data = _err$response5.data) === null || _err$response5$data === void 0 ? void 0 : _err$response5$data.title) || err.message
7489
7562
  }));
7490
7563
  });
7491
7564
 
7492
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7565
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(function () {}) : void 0);
7493
7566
  } catch (e) {
7494
7567
  return Promise.reject(e);
7495
7568
  }
7496
7569
  }, [filters]);
7497
7570
 
7498
7571
  var reDirectDetailPage = function reDirectDetailPage(id) {
7499
- var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
7572
+ var url = !!id ? USER_URL$1 + "/" + id : CREATE_USER_URL;
7500
7573
  history.push(url);
7501
7574
  };
7502
7575
 
@@ -7509,7 +7582,9 @@ var useUserList = function useUserList() {
7509
7582
  removeData: removeData,
7510
7583
  changeFilters: changeFilters,
7511
7584
  reDirectDetailPage: reDirectDetailPage,
7512
- swicthUser: swicthUser
7585
+ swicthUser: swicthUser,
7586
+ handleSyncRosterStudents: handleSyncRosterStudents,
7587
+ rosterUserInfo: rosterUserInfo
7513
7588
  };
7514
7589
  };
7515
7590
 
@@ -7588,6 +7663,29 @@ var utcToLocalTime = (function (time, FORMAT) {
7588
7663
  }
7589
7664
  });
7590
7665
 
7666
+ var buttonTextStyle$1 = {
7667
+ fontWeight: 500
7668
+ };
7669
+ var buttonStyle$1 = {
7670
+ height: 38
7671
+ };
7672
+
7673
+ var SyncButtonIcon = function SyncButtonIcon(_ref) {
7674
+ var text = _ref.text,
7675
+ onClick = _ref.onClick,
7676
+ _ref$className = _ref.className,
7677
+ className = _ref$className === void 0 ? "" : _ref$className;
7678
+ return React.createElement(Button, {
7679
+ onClick: onClick,
7680
+ color: 'primary',
7681
+ style: buttonStyle$1,
7682
+ className: "d-flex align-items-center " + className
7683
+ }, React.createElement(FaSyncAlt, null), React.createElement("span", {
7684
+ className: 'ml-2',
7685
+ style: buttonTextStyle$1
7686
+ }, text));
7687
+ };
7688
+
7591
7689
  var header$2 = "User";
7592
7690
 
7593
7691
  var UserList = function UserList() {
@@ -7599,7 +7697,9 @@ var UserList = function UserList() {
7599
7697
  removeData = _useUserList.removeData,
7600
7698
  changeFilters = _useUserList.changeFilters,
7601
7699
  reDirectDetailPage = _useUserList.reDirectDetailPage,
7602
- swicthUser = _useUserList.swicthUser;
7700
+ swicthUser = _useUserList.swicthUser,
7701
+ handleSyncRosterStudents = _useUserList.handleSyncRosterStudents,
7702
+ rosterUserInfo = _useUserList.rosterUserInfo;
7603
7703
 
7604
7704
  var _useTranslation = useTranslation(),
7605
7705
  t = _useTranslation.t;
@@ -7627,7 +7727,13 @@ var UserList = function UserList() {
7627
7727
  })), React.createElement(Col, {
7628
7728
  md: 4,
7629
7729
  className: "d-flex justify-content-end align-items-center"
7630
- }, t("total_of_users"), " : ", totalItems)), React.createElement(Row, {
7730
+ }, t("total_of_users"), " : ", totalItems), React.createElement(Col, {
7731
+ md: 12,
7732
+ className: "d-flex justify-content-end my-2"
7733
+ }, React.createElement(SyncButtonIcon, {
7734
+ text: "Sync Roster students",
7735
+ onClick: handleSyncRosterStudents
7736
+ }))), React.createElement(Row, {
7631
7737
  className: "mb-2"
7632
7738
  }, React.createElement(Col, {
7633
7739
  md: 12
@@ -7650,6 +7756,8 @@ var UserList = function UserList() {
7650
7756
  }, t("active_status")), React.createElement("th", {
7651
7757
  className: "align-top"
7652
7758
  }, t("created_time")), React.createElement("th", {
7759
+ className: "align-top"
7760
+ }, "Information Roster (Sourced Id / Full name / Email)"), React.createElement("th", {
7653
7761
  className: "text-center"
7654
7762
  }, t("action")))), React.createElement("tbody", null, userList.map(function (record) {
7655
7763
  return React.createElement("tr", {
@@ -7673,7 +7781,7 @@ var UserList = function UserList() {
7673
7781
  className: "align-middle"
7674
7782
  }, record.isActive ? t("active") : t("inactive")), React.createElement("td", {
7675
7783
  className: "align-middle"
7676
- }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React.createElement("td", {
7784
+ }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React.createElement("td", null, rosterUserInfo(record)), React.createElement("td", {
7677
7785
  className: "text-center align-middle"
7678
7786
  }, React.createElement(FaUsersCog, {
7679
7787
  style: {
@@ -7853,7 +7961,7 @@ var useUserDetail = function useUserDetail(id) {
7853
7961
  dispatch(setLoading(true));
7854
7962
 
7855
7963
  var _temp4 = _catch(function () {
7856
- return Promise.resolve(getById$3(id)).then(function (res) {
7964
+ return Promise.resolve(getRosterUserById(id)).then(function (res) {
7857
7965
  var _res$data$roles, _res$data, _res$data2;
7858
7966
 
7859
7967
  setUserDetail(_extends({}, res.data, {
@@ -7890,11 +7998,11 @@ var useUserDetail = function useUserDetail(id) {
7890
7998
 
7891
7999
  var _temp10 = _catch(function () {
7892
8000
  function _temp6() {
7893
- var next = !!id ? update$5 : create$5;
8001
+ var next = !!id ? updateRosterUser : createRosterUser;
7894
8002
  !id && delete data.id;
7895
8003
  return Promise.resolve(next(data)).then(function (result) {
7896
8004
  if (!!result) {
7897
- getById$3(result.data.id).then(function (e) {
8005
+ getRosterUserById(result.data.id).then(function (e) {
7898
8006
  backToList(e.data.fullName);
7899
8007
  });
7900
8008
  }
@@ -8033,6 +8141,163 @@ var changePasswordSchema = object({
8033
8141
  confirmedNewPassword: string().required("Confirm password is required")
8034
8142
  });
8035
8143
 
8144
+ var defaultFilter = {
8145
+ currentPage: 1,
8146
+ pageSize: 100,
8147
+ role: "student"
8148
+ };
8149
+
8150
+ var useStudentSelector = function useStudentSelector(value) {
8151
+ var _useState = useState([]),
8152
+ students = _useState[0],
8153
+ setStudents = _useState[1];
8154
+
8155
+ var _useState2 = useState(false),
8156
+ isLoading = _useState2[0],
8157
+ setLoading = _useState2[1];
8158
+
8159
+ var _useState3 = useState(defaultFilter),
8160
+ filter = _useState3[0],
8161
+ setFilter = _useState3[1];
8162
+
8163
+ var _useState4 = useState(),
8164
+ student = _useState4[0],
8165
+ setStudent = _useState4[1];
8166
+
8167
+ var dispatch = useDispatch();
8168
+ var getRosterStudents = useCallback(function () {
8169
+ try {
8170
+ var _temp3 = function _temp3() {
8171
+ setLoading(false);
8172
+ };
8173
+
8174
+ setLoading(true);
8175
+
8176
+ var _temp4 = _catch(function () {
8177
+ return Promise.resolve(getRosterStudentsApi(filter)).then(function (res) {
8178
+ var _res$data;
8179
+
8180
+ var students = ((_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.items) || [];
8181
+ setStudents(mapStudentsToOptions(students));
8182
+ });
8183
+ }, function (err) {
8184
+ console.log("err:", err);
8185
+ dispatch(setAlert({
8186
+ type: "error",
8187
+ message: "Cannot get roster students"
8188
+ }));
8189
+ });
8190
+
8191
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
8192
+ } catch (e) {
8193
+ return Promise.reject(e);
8194
+ }
8195
+ }, [JSON.stringify(filter)]);
8196
+ var getStudentBySourcedId = useCallback(function () {
8197
+ try {
8198
+ var _temp7 = function _temp7() {
8199
+ setLoading(false);
8200
+ };
8201
+
8202
+ if (!value) return Promise.resolve();
8203
+ var v = students.find(function (i) {
8204
+ return i.value === value;
8205
+ });
8206
+
8207
+ if (v) {
8208
+ setStudent(v);
8209
+ return Promise.resolve();
8210
+ }
8211
+
8212
+ setLoading(true);
8213
+
8214
+ var _temp8 = _catch(function () {
8215
+ return Promise.resolve(getRosterStudentBySourcedIdApi(value)).then(function (res) {
8216
+ var student = res.data;
8217
+ setStudent({
8218
+ label: student.sourcedId + " - " + student.givenName + " - " + student.email,
8219
+ value: student.sourcedId
8220
+ });
8221
+ });
8222
+ }, function (err) {
8223
+ console.log("err:", err);
8224
+ });
8225
+
8226
+ return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8));
8227
+ } catch (e) {
8228
+ return Promise.reject(e);
8229
+ }
8230
+ }, [value]);
8231
+
8232
+ var mapStudentsToOptions = function mapStudentsToOptions(students) {
8233
+ return students.map(function (i) {
8234
+ return {
8235
+ label: rosterUserInfo(i),
8236
+ value: i.sourcedId
8237
+ };
8238
+ });
8239
+ };
8240
+
8241
+ var rosterUserInfo = function rosterUserInfo(rosterUser) {
8242
+ var result = [];
8243
+ var givenName = rosterUser.givenName,
8244
+ middleName = rosterUser.middleName,
8245
+ familyName = rosterUser.familyName,
8246
+ email = rosterUser.email;
8247
+ var names = [];
8248
+ !!givenName && names.push(givenName);
8249
+ !!middleName && names.push(middleName);
8250
+ !!familyName && names.push(familyName);
8251
+ !!names.length && result.push(names.join(" "));
8252
+ !!email && result.push(email);
8253
+ return result.join(" - ");
8254
+ };
8255
+
8256
+ var handleInputChange = function handleInputChange(value) {
8257
+ setFilter(function (state) {
8258
+ return _extends({}, state, {
8259
+ searchString: value
8260
+ });
8261
+ });
8262
+ };
8263
+
8264
+ useEffect(function () {
8265
+ getRosterStudents();
8266
+ }, [JSON.stringify(filter)]);
8267
+ useEffect(function () {
8268
+ getStudentBySourcedId();
8269
+ }, [value]);
8270
+ return {
8271
+ students: students,
8272
+ isLoading: isLoading,
8273
+ student: student,
8274
+ handleInputChange: handleInputChange
8275
+ };
8276
+ };
8277
+
8278
+ var RosterStudentSelector = function RosterStudentSelector(_ref) {
8279
+ var value = _ref.value,
8280
+ onChange = _ref.onChange;
8281
+
8282
+ var _useTranslation = useTranslation(),
8283
+ t = _useTranslation.t;
8284
+
8285
+ var _useStudentSelector = useStudentSelector(value),
8286
+ students = _useStudentSelector.students,
8287
+ isLoading = _useStudentSelector.isLoading,
8288
+ student = _useStudentSelector.student,
8289
+ handleInputChange = _useStudentSelector.handleInputChange;
8290
+
8291
+ return React.createElement(CustomSelector, {
8292
+ options: students,
8293
+ value: student,
8294
+ placeholder: t("Select student"),
8295
+ onChange: onChange,
8296
+ isLoading: isLoading,
8297
+ onInputChange: handleInputChange
8298
+ });
8299
+ };
8300
+
8036
8301
  var CREATE_USER = "create_user";
8037
8302
  var EDIT_USER_HEADER = "edit_user";
8038
8303
  var CHANGE_PASSWORD$1 = "change_password";
@@ -8260,7 +8525,12 @@ var UserDetail = function UserDetail() {
8260
8525
  }
8261
8526
  })))))), !!id && React.createElement(Row, null, React.createElement(Col, {
8262
8527
  md: 6
8263
- }), React.createElement(Col, {
8528
+ }, values.roles.includes("Student") && React.createElement(FormGroup, null, React.createElement(Label, null, "Map student from Roster"), React.createElement(RosterStudentSelector, {
8529
+ value: values.sourcedId,
8530
+ onChange: function onChange(e) {
8531
+ return setFieldValue("sourcedId", e.value);
8532
+ }
8533
+ }))), React.createElement(Col, {
8264
8534
  md: 6
8265
8535
  }, React.createElement(Button, {
8266
8536
  color: "primary",
@@ -8586,7 +8856,7 @@ var QuestionTypeSelector = function QuestionTypeSelector(props) {
8586
8856
  };
8587
8857
 
8588
8858
  var CATEGORY_URL = BASE_URL + "/api/SuggestionCategory";
8589
- var get$6 = function get() {
8859
+ var get$5 = function get() {
8590
8860
  return api.get(CATEGORY_URL);
8591
8861
  };
8592
8862
 
@@ -8602,7 +8872,7 @@ var SuggestionCategorySelector = function SuggestionCategorySelector(props) {
8602
8872
  var fetchCategory = function fetchCategory() {
8603
8873
  try {
8604
8874
  var _temp2 = _catch(function () {
8605
- return Promise.resolve(get$6()).then(function (res) {
8875
+ return Promise.resolve(get$5()).then(function (res) {
8606
8876
  setCategoryList(res.data.items);
8607
8877
  });
8608
8878
  }, function (err) {
@@ -8633,7 +8903,7 @@ var SuggestionCategorySelector = function SuggestionCategorySelector(props) {
8633
8903
  };
8634
8904
 
8635
8905
  var CATEGORY_URL$1 = BASE_URL + "/api/QuestionCategory";
8636
- var get$7 = function get(parentCategoryId) {
8906
+ var get$6 = function get(parentCategoryId) {
8637
8907
  return api.get(CATEGORY_URL$1, {
8638
8908
  params: {
8639
8909
  parentCategoryId: parentCategoryId
@@ -8660,7 +8930,7 @@ var QuestionCategorySelector = function QuestionCategorySelector(props) {
8660
8930
  var fetchCategory = function fetchCategory() {
8661
8931
  try {
8662
8932
  var _temp2 = _catch(function () {
8663
- return Promise.resolve(get$7(parentCategoryId)).then(function (res) {
8933
+ return Promise.resolve(get$6(parentCategoryId)).then(function (res) {
8664
8934
  setCategoryList(res.data.items);
8665
8935
  });
8666
8936
  }, function (err) {
@@ -9681,14 +9951,14 @@ var setGallery = createAction("gallery/setGallery");
9681
9951
  var setTargetMedia = createAction("gallery/setTargetMedia");
9682
9952
 
9683
9953
  var GALLERY_URL = BASE_URL + "/api/file";
9684
- var get$8 = function get(filter) {
9954
+ var get$7 = function get(filter) {
9685
9955
  return api.get("" + GALLERY_URL, {
9686
9956
  params: filter
9687
9957
  });
9688
9958
  };
9689
9959
 
9690
9960
  var TITLE$a = "Gallery";
9691
- var defaultFilter = {
9961
+ var defaultFilter$1 = {
9692
9962
  searchString: ""
9693
9963
  };
9694
9964
 
@@ -9712,7 +9982,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
9712
9982
  formDataMediaType = _useState[0],
9713
9983
  handleSelectFile = _useState[1];
9714
9984
 
9715
- var _useState2 = useState(Object.assign(_extends({}, defaultFilter), isLibrary ? {
9985
+ var _useState2 = useState(Object.assign(_extends({}, defaultFilter$1), isLibrary ? {
9716
9986
  isLibrary: true
9717
9987
  } : {})),
9718
9988
  filters = _useState2[0],
@@ -9903,7 +10173,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
9903
10173
  dispatch(setLoading(true));
9904
10174
 
9905
10175
  var _temp12 = _catch(function () {
9906
- return Promise.resolve(get$8(filters)).then(function (res) {
10176
+ return Promise.resolve(get$7(filters)).then(function (res) {
9907
10177
  dispatch(setGallery({
9908
10178
  mediaList: res.data,
9909
10179
  totalItems: res.data.length || 0
@@ -10143,7 +10413,7 @@ var GalleryList = function GalleryList(_ref) {
10143
10413
  };
10144
10414
 
10145
10415
  var CLASS_URL = BASE_URL + "/api/academicclass";
10146
- var get$9 = function get() {
10416
+ var get$8 = function get() {
10147
10417
  return api.get(CLASS_URL);
10148
10418
  };
10149
10419
 
@@ -10159,7 +10429,7 @@ var AcademicClassSelector = function AcademicClassSelector(props) {
10159
10429
  var getData = function getData() {
10160
10430
  try {
10161
10431
  var _temp2 = _catch(function () {
10162
- return Promise.resolve(get$9()).then(function (res) {
10432
+ return Promise.resolve(get$8()).then(function (res) {
10163
10433
  setClasses(res.data.items);
10164
10434
  });
10165
10435
  }, function (err) {