mario-core 2.9.155-level → 2.9.157-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';
@@ -564,7 +564,7 @@ var session = "Session";
564
564
  var flag = "Flag";
565
565
  var external_email = "External email";
566
566
  var scheduled_now = "Scheduled Now";
567
- var session_schedule = "session schedule";
567
+ var session_schedule = "Session schedule";
568
568
  var search_survey = "Search survey";
569
569
  var total_survey = "Total Survey";
570
570
  var survey_result = "Survey Result";
@@ -1928,7 +1928,7 @@ var session$1 = "Session";
1928
1928
  var flag$1 = "Flag";
1929
1929
  var external_email$1 = "External email";
1930
1930
  var scheduled_now$1 = "Scheduled Now";
1931
- var session_schedule$1 = "session schedule";
1931
+ var session_schedule$1 = "Session schedule";
1932
1932
  var search_survey$1 = "Search survey";
1933
1933
  var total_survey$1 = "Total Survey";
1934
1934
  var survey_result$1 = "Survey Result";
@@ -7291,23 +7291,25 @@ var SkillList = function SkillList() {
7291
7291
  var setUserList = createAction("users/setUserList");
7292
7292
  var setStudentList = createAction("users/setStudentList");
7293
7293
 
7294
- var USER_URL$1 = BASE_URL + "/api/user";
7294
+ var STUDENT_URL = BASE_URL + "/api/student";
7295
7295
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
7296
7296
  var ACCOUNT_URL$1 = BASE_URL + "/api/account";
7297
7297
  var EDU_USER_URL = BASE_URL + "/api/User";
7298
- var get$5 = function get(filter) {
7299
- return api.get("" + USER_URL$1, {
7298
+ var ONE_ROSTER_USER_URL = BASE_URL + "/api/usersOneRoster";
7299
+ var ROSTER_USER_URL = BASE_URL + "/api/user/roster";
7300
+ var getRosterUser = function getRosterUser(filter) {
7301
+ return api.get("" + ROSTER_USER_URL, {
7300
7302
  params: filter
7301
7303
  });
7302
7304
  };
7303
- var getById$3 = function getById(id) {
7304
- return api.get(USER_URL$1 + "/" + id);
7305
+ var getRosterUserById = function getRosterUserById(id) {
7306
+ return api.get(ROSTER_USER_URL + "/" + id);
7305
7307
  };
7306
- var create$5 = function create(data) {
7307
- return api.post("" + USER_URL$1, data);
7308
+ var createRosterUser = function createRosterUser(data) {
7309
+ return api.post("" + ROSTER_USER_URL, data);
7308
7310
  };
7309
- var update$5 = function update(data) {
7310
- return api.put(USER_URL$1 + "/" + data.id, data);
7311
+ var updateRosterUser = function updateRosterUser(data) {
7312
+ return api.put(ROSTER_USER_URL + "/" + data.id, data);
7311
7313
  };
7312
7314
  var remove$3 = function remove(id) {
7313
7315
  return api["delete"](EDU_USER_URL + "/delete-item-user/" + id);
@@ -7321,8 +7323,19 @@ var forgotChangePassword = function forgotChangePassword(data) {
7321
7323
  var switchAccountUser = function switchAccountUser(id) {
7322
7324
  return api.post(EDU_USER_URL + "/switch-user/" + id);
7323
7325
  };
7326
+ var getRosterStudentsApi = function getRosterStudentsApi(filter) {
7327
+ return api.get("" + ONE_ROSTER_USER_URL, {
7328
+ params: filter
7329
+ });
7330
+ };
7331
+ var getRosterStudentBySourcedIdApi = function getRosterStudentBySourcedIdApi(sourcedId) {
7332
+ return api.get(ONE_ROSTER_USER_URL + "/" + sourcedId);
7333
+ };
7334
+ var syncRosterStudentsApi = function syncRosterStudentsApi() {
7335
+ return api.put(STUDENT_URL + "/sync-students");
7336
+ };
7324
7337
 
7325
- var USER_URL$2 = "/admin/user";
7338
+ var USER_URL$1 = "/admin/user";
7326
7339
  var CREATE_USER_URL = "/admin/create-user";
7327
7340
  var TITLE$7 = "User list";
7328
7341
  var HOMEPAGE_TEACHER$1 = "/home";
@@ -7362,9 +7375,9 @@ var useUserList = function useUserList() {
7362
7375
  dispatch(setLoading(true));
7363
7376
 
7364
7377
  var _temp4 = _catch(function () {
7365
- return Promise.resolve(fullName ? get$5(_extends({}, filters, {
7378
+ return Promise.resolve(fullName ? getRosterUser(_extends({}, filters, {
7366
7379
  searchString: fullName
7367
- })) : get$5(filters)).then(function (res) {
7380
+ })) : getRosterUser(filters)).then(function (res) {
7368
7381
  var _res$data = res.data,
7369
7382
  items = _res$data.items,
7370
7383
  totalItems = _res$data.totalItems;
@@ -7393,6 +7406,68 @@ var useUserList = function useUserList() {
7393
7406
  return Promise.reject(e);
7394
7407
  }
7395
7408
  }, [dispatch, filters]);
7409
+
7410
+ var handleSyncRosterStudents = function handleSyncRosterStudents() {
7411
+ try {
7412
+ var _temp7 = function _temp7() {
7413
+ dispatch(setLoading(false));
7414
+ };
7415
+
7416
+ dispatch(setLoading(true));
7417
+
7418
+ var _temp8 = _catch(function () {
7419
+ return Promise.resolve(syncRosterStudentsApi()).then(function (res) {
7420
+ if (res.data) {
7421
+ dispatch(setAlert({
7422
+ type: "success",
7423
+ message: res.data + " student" + (res.data > 1 ? "s have" : " has") + " been synchronized"
7424
+ }));
7425
+ getData();
7426
+ } else {
7427
+ dispatch(setAlert({
7428
+ type: "success",
7429
+ message: "Every student synchronized"
7430
+ }));
7431
+ }
7432
+ });
7433
+ }, function (err) {
7434
+ var _err$response2, _err$response2$data;
7435
+
7436
+ dispatch(setAlert({
7437
+ type: "danger",
7438
+ 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
7439
+ }));
7440
+ });
7441
+
7442
+ return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8));
7443
+ } catch (e) {
7444
+ return Promise.reject(e);
7445
+ }
7446
+ };
7447
+
7448
+ var rosterUserInfo = function rosterUserInfo(record) {
7449
+ if (!record) return '';
7450
+ var result = [];
7451
+ var sourcedId = record.sourcedId,
7452
+ rosterUser = record.rosterUser;
7453
+ !!sourcedId && result.push(sourcedId);
7454
+
7455
+ if (rosterUser) {
7456
+ var givenName = rosterUser.givenName,
7457
+ middleName = rosterUser.middleName,
7458
+ familyName = rosterUser.familyName,
7459
+ email = rosterUser.email;
7460
+ var names = [];
7461
+ !!givenName && names.push(givenName);
7462
+ !!middleName && names.push(middleName);
7463
+ !!familyName && names.push(familyName);
7464
+ !!names.length && result.push(names.join(" "));
7465
+ !!email && result.push(email);
7466
+ }
7467
+
7468
+ return result.join(" / ");
7469
+ };
7470
+
7396
7471
  useEffect(function () {
7397
7472
  document.title = TITLE$7;
7398
7473
  }, []);
@@ -7429,11 +7504,11 @@ var useUserList = function useUserList() {
7429
7504
  }
7430
7505
  }));
7431
7506
  } catch (err) {
7432
- var _err$response2, _err$response2$data;
7507
+ var _err$response3, _err$response3$data;
7433
7508
 
7434
7509
  dispatch(setAlert({
7435
7510
  type: "danger",
7436
- 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
7511
+ 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
7437
7512
  }));
7438
7513
  }
7439
7514
 
@@ -7479,7 +7554,7 @@ var useUserList = function useUserList() {
7479
7554
 
7480
7555
  var swicthUser = useCallback(function (id) {
7481
7556
  try {
7482
- var _temp6 = _catch(function () {
7557
+ var _temp10 = _catch(function () {
7483
7558
  return Promise.resolve(switchAccountUser(id)).then(function (res) {
7484
7559
  var data = res.data;
7485
7560
  dispatch(setModal({
@@ -7488,13 +7563,13 @@ var useUserList = function useUserList() {
7488
7563
  message: "Do you want to impersonate this user?",
7489
7564
  onConfirm: function () {
7490
7565
  try {
7491
- var _temp9 = function _temp9() {
7566
+ var _temp13 = function _temp13() {
7492
7567
  dispatch(setLoading(false));
7493
7568
  };
7494
7569
 
7495
7570
  dispatch(setLoading(true));
7496
7571
 
7497
- var _temp10 = _catch(function () {
7572
+ var _temp14 = _catch(function () {
7498
7573
  var req = {
7499
7574
  email: data.email,
7500
7575
  password: "default",
@@ -7505,15 +7580,15 @@ var useUserList = function useUserList() {
7505
7580
  redirectLoginUser(res);
7506
7581
  });
7507
7582
  }, function (err) {
7508
- var _err$response3, _err$response3$data;
7583
+ var _err$response4, _err$response4$data;
7509
7584
 
7510
7585
  setAlert({
7511
7586
  type: "danger",
7512
- 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
7587
+ 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
7513
7588
  });
7514
7589
  });
7515
7590
 
7516
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7591
+ return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7517
7592
  } catch (e) {
7518
7593
  return Promise.reject(e);
7519
7594
  }
@@ -7521,22 +7596,22 @@ var useUserList = function useUserList() {
7521
7596
  }));
7522
7597
  });
7523
7598
  }, function (err) {
7524
- var _err$response4, _err$response4$data;
7599
+ var _err$response5, _err$response5$data;
7525
7600
 
7526
7601
  dispatch(setAlert({
7527
7602
  type: "danger",
7528
- 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
7603
+ 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
7529
7604
  }));
7530
7605
  });
7531
7606
 
7532
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7607
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(function () {}) : void 0);
7533
7608
  } catch (e) {
7534
7609
  return Promise.reject(e);
7535
7610
  }
7536
7611
  }, [filters]);
7537
7612
 
7538
7613
  var reDirectDetailPage = function reDirectDetailPage(id) {
7539
- var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
7614
+ var url = !!id ? USER_URL$1 + "/" + id : CREATE_USER_URL;
7540
7615
  history.push(url);
7541
7616
  };
7542
7617
 
@@ -7549,7 +7624,9 @@ var useUserList = function useUserList() {
7549
7624
  removeData: removeData,
7550
7625
  changeFilters: changeFilters,
7551
7626
  reDirectDetailPage: reDirectDetailPage,
7552
- swicthUser: swicthUser
7627
+ swicthUser: swicthUser,
7628
+ handleSyncRosterStudents: handleSyncRosterStudents,
7629
+ rosterUserInfo: rosterUserInfo
7553
7630
  };
7554
7631
  };
7555
7632
 
@@ -7628,6 +7705,29 @@ var utcToLocalTime = (function (time, FORMAT) {
7628
7705
  }
7629
7706
  });
7630
7707
 
7708
+ var buttonTextStyle$1 = {
7709
+ fontWeight: 500
7710
+ };
7711
+ var buttonStyle$1 = {
7712
+ height: 38
7713
+ };
7714
+
7715
+ var SyncButtonIcon = function SyncButtonIcon(_ref) {
7716
+ var text = _ref.text,
7717
+ onClick = _ref.onClick,
7718
+ _ref$className = _ref.className,
7719
+ className = _ref$className === void 0 ? "" : _ref$className;
7720
+ return React.createElement(Button, {
7721
+ onClick: onClick,
7722
+ color: 'primary',
7723
+ style: buttonStyle$1,
7724
+ className: "d-flex align-items-center " + className
7725
+ }, React.createElement(FaSyncAlt, null), React.createElement("span", {
7726
+ className: 'ml-2',
7727
+ style: buttonTextStyle$1
7728
+ }, text));
7729
+ };
7730
+
7631
7731
  var header$2 = "User";
7632
7732
 
7633
7733
  var UserList = function UserList() {
@@ -7639,7 +7739,9 @@ var UserList = function UserList() {
7639
7739
  removeData = _useUserList.removeData,
7640
7740
  changeFilters = _useUserList.changeFilters,
7641
7741
  reDirectDetailPage = _useUserList.reDirectDetailPage,
7642
- swicthUser = _useUserList.swicthUser;
7742
+ swicthUser = _useUserList.swicthUser,
7743
+ handleSyncRosterStudents = _useUserList.handleSyncRosterStudents,
7744
+ rosterUserInfo = _useUserList.rosterUserInfo;
7643
7745
 
7644
7746
  var _useTranslation = useTranslation(),
7645
7747
  t = _useTranslation.t;
@@ -7667,7 +7769,13 @@ var UserList = function UserList() {
7667
7769
  })), React.createElement(Col, {
7668
7770
  md: 4,
7669
7771
  className: "d-flex justify-content-end align-items-center"
7670
- }, t("total_of_users"), " : ", totalItems)), React.createElement(Row, {
7772
+ }, t("total_of_users"), " : ", totalItems), React.createElement(Col, {
7773
+ md: 12,
7774
+ className: "d-flex justify-content-end my-2"
7775
+ }, React.createElement(SyncButtonIcon, {
7776
+ text: "Sync Roster students",
7777
+ onClick: handleSyncRosterStudents
7778
+ }))), React.createElement(Row, {
7671
7779
  className: "mb-2"
7672
7780
  }, React.createElement(Col, {
7673
7781
  md: 12
@@ -7690,6 +7798,8 @@ var UserList = function UserList() {
7690
7798
  }, t("active_status")), React.createElement("th", {
7691
7799
  className: "align-top"
7692
7800
  }, t("created_time")), React.createElement("th", {
7801
+ className: "align-top"
7802
+ }, "Information Roster (Sourced Id / Full name / Email)"), React.createElement("th", {
7693
7803
  className: "text-center"
7694
7804
  }, t("action")))), React.createElement("tbody", null, userList.map(function (record) {
7695
7805
  return React.createElement("tr", {
@@ -7713,7 +7823,7 @@ var UserList = function UserList() {
7713
7823
  className: "align-middle"
7714
7824
  }, record.isActive ? t("active") : t("inactive")), React.createElement("td", {
7715
7825
  className: "align-middle"
7716
- }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React.createElement("td", {
7826
+ }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React.createElement("td", null, rosterUserInfo(record)), React.createElement("td", {
7717
7827
  className: "text-center align-middle"
7718
7828
  }, React.createElement(FaUsersCog, {
7719
7829
  style: {
@@ -7893,7 +8003,7 @@ var useUserDetail = function useUserDetail(id) {
7893
8003
  dispatch(setLoading(true));
7894
8004
 
7895
8005
  var _temp4 = _catch(function () {
7896
- return Promise.resolve(getById$3(id)).then(function (res) {
8006
+ return Promise.resolve(getRosterUserById(id)).then(function (res) {
7897
8007
  var _res$data$roles, _res$data, _res$data2;
7898
8008
 
7899
8009
  setUserDetail(_extends({}, res.data, {
@@ -7930,11 +8040,11 @@ var useUserDetail = function useUserDetail(id) {
7930
8040
 
7931
8041
  var _temp10 = _catch(function () {
7932
8042
  function _temp6() {
7933
- var next = !!id ? update$5 : create$5;
8043
+ var next = !!id ? updateRosterUser : createRosterUser;
7934
8044
  !id && delete data.id;
7935
8045
  return Promise.resolve(next(data)).then(function (result) {
7936
8046
  if (!!result) {
7937
- getById$3(result.data.id).then(function (e) {
8047
+ getRosterUserById(result.data.id).then(function (e) {
7938
8048
  backToList(e.data.fullName);
7939
8049
  });
7940
8050
  }
@@ -8073,6 +8183,163 @@ var changePasswordSchema = object({
8073
8183
  confirmedNewPassword: string().required("Confirm password is required")
8074
8184
  });
8075
8185
 
8186
+ var defaultFilter = {
8187
+ currentPage: 1,
8188
+ pageSize: 100,
8189
+ role: "student"
8190
+ };
8191
+
8192
+ var useStudentSelector = function useStudentSelector(value) {
8193
+ var _useState = useState([]),
8194
+ students = _useState[0],
8195
+ setStudents = _useState[1];
8196
+
8197
+ var _useState2 = useState(false),
8198
+ isLoading = _useState2[0],
8199
+ setLoading = _useState2[1];
8200
+
8201
+ var _useState3 = useState(defaultFilter),
8202
+ filter = _useState3[0],
8203
+ setFilter = _useState3[1];
8204
+
8205
+ var _useState4 = useState(),
8206
+ student = _useState4[0],
8207
+ setStudent = _useState4[1];
8208
+
8209
+ var dispatch = useDispatch();
8210
+ var getRosterStudents = useCallback(function () {
8211
+ try {
8212
+ var _temp3 = function _temp3() {
8213
+ setLoading(false);
8214
+ };
8215
+
8216
+ setLoading(true);
8217
+
8218
+ var _temp4 = _catch(function () {
8219
+ return Promise.resolve(getRosterStudentsApi(filter)).then(function (res) {
8220
+ var _res$data;
8221
+
8222
+ var students = ((_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.items) || [];
8223
+ setStudents(mapStudentsToOptions(students));
8224
+ });
8225
+ }, function (err) {
8226
+ console.log("err:", err);
8227
+ dispatch(setAlert({
8228
+ type: "error",
8229
+ message: "Cannot get roster students"
8230
+ }));
8231
+ });
8232
+
8233
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
8234
+ } catch (e) {
8235
+ return Promise.reject(e);
8236
+ }
8237
+ }, [JSON.stringify(filter)]);
8238
+ var getStudentBySourcedId = useCallback(function () {
8239
+ try {
8240
+ var _temp7 = function _temp7() {
8241
+ setLoading(false);
8242
+ };
8243
+
8244
+ if (!value) return Promise.resolve();
8245
+ var v = students.find(function (i) {
8246
+ return i.value === value;
8247
+ });
8248
+
8249
+ if (v) {
8250
+ setStudent(v);
8251
+ return Promise.resolve();
8252
+ }
8253
+
8254
+ setLoading(true);
8255
+
8256
+ var _temp8 = _catch(function () {
8257
+ return Promise.resolve(getRosterStudentBySourcedIdApi(value)).then(function (res) {
8258
+ var student = res.data;
8259
+ setStudent({
8260
+ label: student.sourcedId + " - " + student.givenName + " - " + student.email,
8261
+ value: student.sourcedId
8262
+ });
8263
+ });
8264
+ }, function (err) {
8265
+ console.log("err:", err);
8266
+ });
8267
+
8268
+ return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8));
8269
+ } catch (e) {
8270
+ return Promise.reject(e);
8271
+ }
8272
+ }, [value]);
8273
+
8274
+ var mapStudentsToOptions = function mapStudentsToOptions(students) {
8275
+ return students.map(function (i) {
8276
+ return {
8277
+ label: rosterUserInfo(i),
8278
+ value: i.sourcedId
8279
+ };
8280
+ });
8281
+ };
8282
+
8283
+ var rosterUserInfo = function rosterUserInfo(rosterUser) {
8284
+ var result = [];
8285
+ var givenName = rosterUser.givenName,
8286
+ middleName = rosterUser.middleName,
8287
+ familyName = rosterUser.familyName,
8288
+ email = rosterUser.email;
8289
+ var names = [];
8290
+ !!givenName && names.push(givenName);
8291
+ !!middleName && names.push(middleName);
8292
+ !!familyName && names.push(familyName);
8293
+ !!names.length && result.push(names.join(" "));
8294
+ !!email && result.push(email);
8295
+ return result.join(" - ");
8296
+ };
8297
+
8298
+ var handleInputChange = function handleInputChange(value) {
8299
+ setFilter(function (state) {
8300
+ return _extends({}, state, {
8301
+ searchString: value
8302
+ });
8303
+ });
8304
+ };
8305
+
8306
+ useEffect(function () {
8307
+ getRosterStudents();
8308
+ }, [JSON.stringify(filter)]);
8309
+ useEffect(function () {
8310
+ getStudentBySourcedId();
8311
+ }, [value]);
8312
+ return {
8313
+ students: students,
8314
+ isLoading: isLoading,
8315
+ student: student,
8316
+ handleInputChange: handleInputChange
8317
+ };
8318
+ };
8319
+
8320
+ var RosterStudentSelector = function RosterStudentSelector(_ref) {
8321
+ var value = _ref.value,
8322
+ onChange = _ref.onChange;
8323
+
8324
+ var _useTranslation = useTranslation(),
8325
+ t = _useTranslation.t;
8326
+
8327
+ var _useStudentSelector = useStudentSelector(value),
8328
+ students = _useStudentSelector.students,
8329
+ isLoading = _useStudentSelector.isLoading,
8330
+ student = _useStudentSelector.student,
8331
+ handleInputChange = _useStudentSelector.handleInputChange;
8332
+
8333
+ return React.createElement(CustomSelector, {
8334
+ options: students,
8335
+ value: student,
8336
+ placeholder: t("Select student"),
8337
+ onChange: onChange,
8338
+ isLoading: isLoading,
8339
+ onInputChange: handleInputChange
8340
+ });
8341
+ };
8342
+
8076
8343
  var CREATE_USER = "create_user";
8077
8344
  var EDIT_USER_HEADER = "edit_user";
8078
8345
  var CHANGE_PASSWORD$1 = "change_password";
@@ -8300,7 +8567,12 @@ var UserDetail = function UserDetail() {
8300
8567
  }
8301
8568
  })))))), !!id && React.createElement(Row, null, React.createElement(Col, {
8302
8569
  md: 6
8303
- }), React.createElement(Col, {
8570
+ }, values.roles.includes("Student") && React.createElement(FormGroup, null, React.createElement(Label, null, "Map student from Roster"), React.createElement(RosterStudentSelector, {
8571
+ value: values.sourcedId,
8572
+ onChange: function onChange(e) {
8573
+ return setFieldValue("sourcedId", e.value);
8574
+ }
8575
+ }))), React.createElement(Col, {
8304
8576
  md: 6
8305
8577
  }, React.createElement(Button, {
8306
8578
  color: "primary",
@@ -8626,7 +8898,7 @@ var QuestionTypeSelector = function QuestionTypeSelector(props) {
8626
8898
  };
8627
8899
 
8628
8900
  var CATEGORY_URL = BASE_URL + "/api/SuggestionCategory";
8629
- var get$6 = function get() {
8901
+ var get$5 = function get() {
8630
8902
  return api.get(CATEGORY_URL);
8631
8903
  };
8632
8904
 
@@ -8642,7 +8914,7 @@ var SuggestionCategorySelector = function SuggestionCategorySelector(props) {
8642
8914
  var fetchCategory = function fetchCategory() {
8643
8915
  try {
8644
8916
  var _temp2 = _catch(function () {
8645
- return Promise.resolve(get$6()).then(function (res) {
8917
+ return Promise.resolve(get$5()).then(function (res) {
8646
8918
  setCategoryList(res.data.items);
8647
8919
  });
8648
8920
  }, function (err) {
@@ -8673,7 +8945,7 @@ var SuggestionCategorySelector = function SuggestionCategorySelector(props) {
8673
8945
  };
8674
8946
 
8675
8947
  var CATEGORY_URL$1 = BASE_URL + "/api/QuestionCategory";
8676
- var get$7 = function get(parentCategoryId) {
8948
+ var get$6 = function get(parentCategoryId) {
8677
8949
  return api.get(CATEGORY_URL$1, {
8678
8950
  params: {
8679
8951
  parentCategoryId: parentCategoryId
@@ -8700,7 +8972,7 @@ var QuestionCategorySelector = function QuestionCategorySelector(props) {
8700
8972
  var fetchCategory = function fetchCategory() {
8701
8973
  try {
8702
8974
  var _temp2 = _catch(function () {
8703
- return Promise.resolve(get$7(parentCategoryId)).then(function (res) {
8975
+ return Promise.resolve(get$6(parentCategoryId)).then(function (res) {
8704
8976
  setCategoryList(res.data.items);
8705
8977
  });
8706
8978
  }, function (err) {
@@ -9721,14 +9993,14 @@ var setGallery = createAction("gallery/setGallery");
9721
9993
  var setTargetMedia = createAction("gallery/setTargetMedia");
9722
9994
 
9723
9995
  var GALLERY_URL = BASE_URL + "/api/file";
9724
- var get$8 = function get(filter) {
9996
+ var get$7 = function get(filter) {
9725
9997
  return api.get("" + GALLERY_URL, {
9726
9998
  params: filter
9727
9999
  });
9728
10000
  };
9729
10001
 
9730
10002
  var TITLE$a = "Gallery";
9731
- var defaultFilter = {
10003
+ var defaultFilter$1 = {
9732
10004
  searchString: ""
9733
10005
  };
9734
10006
 
@@ -9752,7 +10024,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
9752
10024
  formDataMediaType = _useState[0],
9753
10025
  handleSelectFile = _useState[1];
9754
10026
 
9755
- var _useState2 = useState(Object.assign(_extends({}, defaultFilter), isLibrary ? {
10027
+ var _useState2 = useState(Object.assign(_extends({}, defaultFilter$1), isLibrary ? {
9756
10028
  isLibrary: true
9757
10029
  } : {})),
9758
10030
  filters = _useState2[0],
@@ -9943,7 +10215,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
9943
10215
  dispatch(setLoading(true));
9944
10216
 
9945
10217
  var _temp12 = _catch(function () {
9946
- return Promise.resolve(get$8(filters)).then(function (res) {
10218
+ return Promise.resolve(get$7(filters)).then(function (res) {
9947
10219
  dispatch(setGallery({
9948
10220
  mediaList: res.data,
9949
10221
  totalItems: res.data.length || 0
@@ -10183,7 +10455,7 @@ var GalleryList = function GalleryList(_ref) {
10183
10455
  };
10184
10456
 
10185
10457
  var CLASS_URL = BASE_URL + "/api/academicclass";
10186
- var get$9 = function get() {
10458
+ var get$8 = function get() {
10187
10459
  return api.get(CLASS_URL);
10188
10460
  };
10189
10461
 
@@ -10199,7 +10471,7 @@ var AcademicClassSelector = function AcademicClassSelector(props) {
10199
10471
  var getData = function getData() {
10200
10472
  try {
10201
10473
  var _temp2 = _catch(function () {
10202
- return Promise.resolve(get$9()).then(function (res) {
10474
+ return Promise.resolve(get$8()).then(function (res) {
10203
10475
  setClasses(res.data.items);
10204
10476
  });
10205
10477
  }, function (err) {