touchstudy-core 0.1.94 → 0.1.96

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
@@ -116,6 +116,7 @@ var encodeParams = function encodeParams(params) {
116
116
  Role["Teacher"] = "Teacher";
117
117
  Role["Admin"] = "Admin";
118
118
  Role["AcademyAdmin"] = "AcademyAdmin";
119
+ Role["AcademyAdminTeacher"] = "AcademyAdminTeacher";
119
120
  })(exports.Role || (exports.Role = {}));
120
121
  (function (Language) {
121
122
  Language["ko"] = "ko";
@@ -2188,6 +2189,7 @@ var are_you_sure_you_want_to_delete_the_article = "정말로 기사를 삭제하
2188
2189
  var yes = "예";
2189
2190
  var no = "아니요";
2190
2191
  var cancel = "취소";
2192
+ var remove = "제거하다";
2191
2193
  var confirmation = "확인";
2192
2194
  var student_name = "학생 이름";
2193
2195
  var full_pool_time = "전체풀이시간";
@@ -2797,6 +2799,7 @@ var my_classes = "내 수업";
2797
2799
  var choose = "선택하다";
2798
2800
  var additional_duration = "진행중인 시험 시간 추가하기";
2799
2801
  var enter_textbook_name_to_search = "검색할 교재명을 입력하세요";
2802
+ var enter_teacher_name_to_search = "선생님 이름을 입력하여 검색하세요";
2800
2803
  var select_class_placeholder = "수업을 선택하세요...";
2801
2804
  var user_name = "유저 이름";
2802
2805
  var vulnerable_detail = "다른 학생들의 정답률은 높은데, 나는 정답을 맞추지 못한 문제들입니다.";
@@ -2913,6 +2916,8 @@ var view_records = "기록열람";
2913
2916
  var delete_action = "삭제";
2914
2917
  var edit_action = "수정";
2915
2918
  var view_action = "열람";
2919
+ var update_shared_action = "업데이트 권한";
2920
+ var share_action = "공유하다";
2916
2921
  var de_select = "선택 해제";
2917
2922
  var select_output = "선택 출력";
2918
2923
  var print_pdf = "PDF 인쇄";
@@ -2946,6 +2951,15 @@ var manage_users = "사용자 관리";
2946
2951
  var manage_classes = "수업 관리";
2947
2952
  var manage_notifications = "알림 관리";
2948
2953
  var late = "늦은";
2954
+ var authority = "권한";
2955
+ var share_textbook = "교과서 공유하기";
2956
+ var notify_share_textbook = {
2957
+ share_success: "교과서를 성공적으로 공유했습니다!",
2958
+ share_fail: "교과서도 없고 선생님도 없어요!",
2959
+ update_success: "공유 교과서가 성공적으로 업데이트되었습니다!",
2960
+ update_fail: "업데이트 실패!"
2961
+ };
2962
+ var academyadminteacher = "아카데미 관리자/선생님";
2949
2963
  var total_student = "총 학생 수";
2950
2964
  var total_teacher = "총 교사 수";
2951
2965
  var total_exam = "총 시험 수";
@@ -3003,6 +3017,7 @@ var lang_ko = {
3003
3017
  yes: yes,
3004
3018
  no: no,
3005
3019
  cancel: cancel,
3020
+ remove: remove,
3006
3021
  confirmation: confirmation,
3007
3022
  student_name: student_name,
3008
3023
  full_pool_time: full_pool_time,
@@ -3604,6 +3619,7 @@ var lang_ko = {
3604
3619
  choose: choose,
3605
3620
  additional_duration: additional_duration,
3606
3621
  enter_textbook_name_to_search: enter_textbook_name_to_search,
3622
+ enter_teacher_name_to_search: enter_teacher_name_to_search,
3607
3623
  "type_at_least_{number}_characters_to_search": "검색하려면 최소 {{ number }}자를 입력하세요",
3608
3624
  select_class_placeholder: select_class_placeholder,
3609
3625
  user_name: user_name,
@@ -3719,6 +3735,8 @@ var lang_ko = {
3719
3735
  delete_action: delete_action,
3720
3736
  edit_action: edit_action,
3721
3737
  view_action: view_action,
3738
+ update_shared_action: update_shared_action,
3739
+ share_action: share_action,
3722
3740
  de_select: de_select,
3723
3741
  select_output: select_output,
3724
3742
  print_pdf: print_pdf,
@@ -3752,6 +3770,10 @@ var lang_ko = {
3752
3770
  manage_classes: manage_classes,
3753
3771
  manage_notifications: manage_notifications,
3754
3772
  late: late,
3773
+ authority: authority,
3774
+ share_textbook: share_textbook,
3775
+ notify_share_textbook: notify_share_textbook,
3776
+ academyadminteacher: academyadminteacher,
3755
3777
  total_student: total_student,
3756
3778
  total_teacher: total_teacher,
3757
3779
  total_exam: total_exam,
@@ -3808,6 +3830,7 @@ var are_you_sure_you_want_to_delete_the_article$1 = "Are you sure you want to de
3808
3830
  var yes$1 = "Yes";
3809
3831
  var no$1 = "No";
3810
3832
  var cancel$1 = "Cancel";
3833
+ var remove$1 = "Remove";
3811
3834
  var confirmation$1 = "Confirmation";
3812
3835
  var student_name$1 = "Student name";
3813
3836
  var full_pool_time$1 = "Full pool time";
@@ -4070,6 +4093,7 @@ var parent_name$1 = "Parent name";
4070
4093
  var users$1 = "Users";
4071
4094
  var new_user$1 = "New user";
4072
4095
  var academy_admin$1 = "Academy Admin";
4096
+ var academy_admin_teacher = "Academy Admin / Teacher";
4073
4097
  var super_admin$1 = "Super Admin";
4074
4098
  var switch_academy_admin$1 = "Switch Academy Admin";
4075
4099
  var switch_academy$1 = "Switch Academy";
@@ -4418,6 +4442,7 @@ var my_classes$1 = "My Classes";
4418
4442
  var choose$1 = "Choose";
4419
4443
  var additional_duration$1 = "Additional duration";
4420
4444
  var enter_textbook_name_to_search$1 = "Enter textbook name to search";
4445
+ var enter_teacher_name_to_search$1 = "Enter teacher name to search";
4421
4446
  var select_class_placeholder$1 = "Select class...";
4422
4447
  var user_name$1 = "User Name";
4423
4448
  var vulnerable_detail$1 = "Other students had a high percentage of correct answers, but I could not answer these questions correctly.";
@@ -4534,6 +4559,8 @@ var view_records$1 = "View records";
4534
4559
  var delete_action$1 = "Delete";
4535
4560
  var edit_action$1 = "Edit";
4536
4561
  var view_action$1 = "View";
4562
+ var share_action$1 = "Share";
4563
+ var update_shared_action$1 = "Update Authority";
4537
4564
  var de_select$1 = "Deselect";
4538
4565
  var select_output$1 = "Select";
4539
4566
  var print_pdf$1 = "Print PDF";
@@ -4567,6 +4594,15 @@ var manage_users$1 = "Manage users";
4567
4594
  var manage_classes$1 = "Manage classes";
4568
4595
  var manage_notifications$1 = "Manage notifications";
4569
4596
  var late$1 = "Late";
4597
+ var authority$1 = "Authority";
4598
+ var share_textbook$1 = "Share textbook";
4599
+ var notify_share_textbook$1 = {
4600
+ share_success: "Share textbook successfully!",
4601
+ share_fail: "Textbook or teacher not exists!",
4602
+ update_success: "Update shared textbook successfully!",
4603
+ update_fail: "Update fail!"
4604
+ };
4605
+ var academyadminteacher$1 = "AcademyAdmin / Teacher";
4570
4606
  var total_student$1 = "Total Student";
4571
4607
  var total_teacher$1 = "Total Teacher";
4572
4608
  var total_exam$1 = "Total Exam";
@@ -4624,6 +4660,7 @@ var lang_en = {
4624
4660
  yes: yes$1,
4625
4661
  no: no$1,
4626
4662
  cancel: cancel$1,
4663
+ remove: remove$1,
4627
4664
  confirmation: confirmation$1,
4628
4665
  student_name: student_name$1,
4629
4666
  full_pool_time: full_pool_time$1,
@@ -4883,6 +4920,7 @@ var lang_en = {
4883
4920
  users: users$1,
4884
4921
  new_user: new_user$1,
4885
4922
  academy_admin: academy_admin$1,
4923
+ academy_admin_teacher: academy_admin_teacher,
4886
4924
  super_admin: super_admin$1,
4887
4925
  switch_academy_admin: switch_academy_admin$1,
4888
4926
  switch_academy: switch_academy$1,
@@ -5226,6 +5264,7 @@ var lang_en = {
5226
5264
  choose: choose$1,
5227
5265
  additional_duration: additional_duration$1,
5228
5266
  enter_textbook_name_to_search: enter_textbook_name_to_search$1,
5267
+ enter_teacher_name_to_search: enter_teacher_name_to_search$1,
5229
5268
  "type_at_least_{number}_characters_to_search": "Type at least {{ number }} characters to search",
5230
5269
  select_class_placeholder: select_class_placeholder$1,
5231
5270
  user_name: user_name$1,
@@ -5341,6 +5380,8 @@ var lang_en = {
5341
5380
  delete_action: delete_action$1,
5342
5381
  edit_action: edit_action$1,
5343
5382
  view_action: view_action$1,
5383
+ share_action: share_action$1,
5384
+ update_shared_action: update_shared_action$1,
5344
5385
  de_select: de_select$1,
5345
5386
  select_output: select_output$1,
5346
5387
  print_pdf: print_pdf$1,
@@ -5374,6 +5415,10 @@ var lang_en = {
5374
5415
  manage_classes: manage_classes$1,
5375
5416
  manage_notifications: manage_notifications$1,
5376
5417
  late: late$1,
5418
+ authority: authority$1,
5419
+ share_textbook: share_textbook$1,
5420
+ notify_share_textbook: notify_share_textbook$1,
5421
+ academyadminteacher: academyadminteacher$1,
5377
5422
  total_student: total_student$1,
5378
5423
  total_teacher: total_teacher$1,
5379
5424
  total_exam: total_exam$1,
@@ -6953,11 +6998,13 @@ var formatRole = function formatRole(roles, t) {
6953
6998
  if (roles.includes(exports.Role.AcademyAdmin)) return t("academy_admin");
6954
6999
  if (roles.includes(exports.Role.Teacher)) return t("teacher");
6955
7000
  if (roles.includes(exports.Role.Student)) return t("student");
7001
+ if (roles.includes(exports.Role.AcademyAdminTeacher)) return t("academy_admin_teacher");
6956
7002
  return "";
6957
7003
  };
6958
7004
  var getRole = function getRole(roles) {
6959
7005
  if (roles.includes(exports.Role.Admin)) return exports.Role.Admin;
6960
7006
  if (roles.includes(exports.Role.AcademyAdmin)) return exports.Role.AcademyAdmin;
7007
+ if (roles.includes(exports.Role.AcademyAdminTeacher)) return exports.Role.AcademyAdminTeacher;
6961
7008
  if (roles.includes(exports.Role.Teacher)) return exports.Role.Teacher;
6962
7009
  if (roles.includes(exports.Role.Student)) return exports.Role.Student;
6963
7010
  return null;
@@ -7160,7 +7207,8 @@ var ChatHeader = function ChatHeader(_ref) {
7160
7207
  }, t("problem_number_question", {
7161
7208
  number: questionOrder + 1
7162
7209
  }))), !isCompleted ? React__default.createElement("div", {
7163
- onClick: toggleDialog
7210
+ onClick: toggleDialog,
7211
+ className: "pointer"
7164
7212
  }, React__default.createElement(material.Box, {
7165
7213
  padding: "8px 12px",
7166
7214
  display: "flex",
@@ -8563,6 +8611,12 @@ var updateTextbookApi = function updateTextbookApi(textbookId, data) {
8563
8611
  var deleteTextbookApi = function deleteTextbookApi(textbookId) {
8564
8612
  return api["delete"](TEXTBOOK_URL + "/" + textbookId);
8565
8613
  };
8614
+ var shareTextbookApi = function shareTextbookApi(textbookId, data) {
8615
+ return api.post(TEXTBOOK_URL + "/" + textbookId + "/shared-textbook", data);
8616
+ };
8617
+ var updateSharedTextbookApi = function updateSharedTextbookApi(textbookId, data) {
8618
+ return api.put(TEXTBOOK_URL + "/" + textbookId + "/shared-textbook", data);
8619
+ };
8566
8620
 
8567
8621
  var ExamStatus$1;
8568
8622
  (function (ExamStatus) {
@@ -8616,6 +8670,13 @@ var TextbookSortBy;
8616
8670
  TextbookSortBy["Title"] = "Name";
8617
8671
  TextbookSortBy["SubjectName"] = "Subject.Name";
8618
8672
  })(TextbookSortBy || (TextbookSortBy = {}));
8673
+ var TeacherSortBy;
8674
+ (function (TeacherSortBy) {
8675
+ TeacherSortBy["CreatedAt"] = "CreatedAt";
8676
+ TeacherSortBy["Name"] = "UserProfile.FullName";
8677
+ TeacherSortBy["Email"] = "Email";
8678
+ TeacherSortBy["PhoneNumber"] = "UserProfile.PhoneNumber";
8679
+ })(TeacherSortBy || (TeacherSortBy = {}));
8619
8680
  var ExamType;
8620
8681
  (function (ExamType) {
8621
8682
  ExamType["Normal"] = "Normal";
@@ -8629,6 +8690,12 @@ var ExamStatus$2;
8629
8690
  ExamStatus["Completed"] = "Completed";
8630
8691
  })(ExamStatus$2 || (ExamStatus$2 = {}));
8631
8692
 
8693
+ var DefaultTeacherQuery = {
8694
+ currentPage: 1,
8695
+ pageSize: 50,
8696
+ sortColumnDirection: OrderType.DESC,
8697
+ sortColumnName: TeacherSortBy.Name
8698
+ };
8632
8699
  var TEXTBOOK_HEADERS = [{
8633
8700
  title: "#"
8634
8701
  }, {
@@ -8643,7 +8710,26 @@ var TEXTBOOK_HEADERS = [{
8643
8710
  }, {
8644
8711
  title: "total_chapters"
8645
8712
  }, {
8646
- title: ["edit_action", "view_action", "delete_action"]
8713
+ title: "authority"
8714
+ }, {
8715
+ title: ["edit_action", "view_action", "share_action", "update_shared_action", "delete_action"]
8716
+ }];
8717
+ var TEACHER_ACADEMY_HEADERS = [{
8718
+ title: ""
8719
+ }, {
8720
+ title: "#"
8721
+ }, {
8722
+ title: "full_name",
8723
+ sortKey: TeacherSortBy.Name
8724
+ }, {
8725
+ title: "email",
8726
+ sortKey: TeacherSortBy.Email
8727
+ }, {
8728
+ title: "phone_number",
8729
+ sortKey: TeacherSortBy.PhoneNumber
8730
+ }, {
8731
+ title: "created_at",
8732
+ sortKey: TeacherSortBy.CreatedAt
8647
8733
  }];
8648
8734
  var DEFAULT_ANSWER_COUNT = 5;
8649
8735
  var DEFAULT_EXAM_REQUEST = {
@@ -8660,6 +8746,7 @@ var DEFAULT_EXAM_REQUEST = {
8660
8746
  };
8661
8747
  var TEXTBOOK_PAGE_TITLE = "textbooks";
8662
8748
  var TEXT_BOOK_SEARCH_PLACEHOLDER = "enter_textbook_name_to_search";
8749
+ var TEACHER_SEARCH_PLACEHOLDER = "enter_teacher_name_to_search";
8663
8750
  var TextbookDefaultQuery = {
8664
8751
  pageSize: 12,
8665
8752
  currentPage: 1,
@@ -10926,9 +11013,7 @@ var useTextbookList = function useTextbookList(props) {
10926
11013
  });
10927
11014
  };
10928
11015
  var handleCreateTextbook = function handleCreateTextbook() {
10929
- navigate(textbookUrl + "/create", {
10930
- replace: true
10931
- });
11016
+ pushTo(navigate, textbookUrl + "/create");
10932
11017
  };
10933
11018
  var toggleConfirmDialog = function toggleConfirmDialog() {
10934
11019
  handleChangeSelectedItem(undefined);
@@ -10963,6 +11048,7 @@ var useTextbookList = function useTextbookList(props) {
10963
11048
  return {
10964
11049
  filter: filter,
10965
11050
  textSearchRef: textSearchRef,
11051
+ getData: getData,
10966
11052
  paging: paging,
10967
11053
  textbooks: textbooks,
10968
11054
  selectedTextbook: selectedTextbook,
@@ -11084,17 +11170,361 @@ var SearchInput = function SearchInput(_ref) {
11084
11170
  }));
11085
11171
  };
11086
11172
 
11173
+ var ShareToTeacherDialog = function ShareToTeacherDialog(_ref) {
11174
+ var open = _ref.open,
11175
+ selectedShare = _ref.selectedShare,
11176
+ textSearchShareRef = _ref.textSearchShareRef,
11177
+ handleChangeSearchTextShare = _ref.handleChangeSearchTextShare,
11178
+ numSelectedShare = _ref.numSelectedShare,
11179
+ isCheckAllShare = _ref.isCheckAllShare,
11180
+ handleSelectAllClickShare = _ref.handleSelectAllClickShare,
11181
+ teachers = _ref.teachers,
11182
+ handleSortShare = _ref.handleSortShare,
11183
+ filterShare = _ref.filterShare,
11184
+ pagingShare = _ref.pagingShare,
11185
+ handleChangePageShare = _ref.handleChangePageShare,
11186
+ handleShareModel = _ref.handleShareModel,
11187
+ isSelectedShare = _ref.isSelectedShare,
11188
+ handleCloseShareDialog = _ref.handleCloseShareDialog,
11189
+ handleClickCheckboxShare = _ref.handleClickCheckboxShare,
11190
+ selectedTeacher = _ref.selectedTeacher,
11191
+ dataId = _ref.dataId,
11192
+ isUpdate = _ref.isUpdate;
11193
+ var _useTranslation = reactI18next.useTranslation(),
11194
+ t = _useTranslation.t;
11195
+ var theme = material.useTheme();
11196
+ return React__default.createElement(material.Dialog, {
11197
+ open: open,
11198
+ maxWidth: "md"
11199
+ }, React__default.createElement(material.DialogContent, {
11200
+ sx: {
11201
+ overflowY: "unset"
11202
+ }
11203
+ }, React__default.createElement(material.Grid, {
11204
+ container: true,
11205
+ spacing: 3,
11206
+ sx: {
11207
+ position: "relative",
11208
+ zIndex: 999999
11209
+ }
11210
+ }, selectedShare && React__default.createElement(material.Grid, {
11211
+ item: true,
11212
+ xs: 6,
11213
+ className: "d-flex mb-3"
11214
+ }, React__default.createElement(SearchInput, {
11215
+ placeholder: t(TEACHER_SEARCH_PLACEHOLDER),
11216
+ textSearchRef: textSearchShareRef,
11217
+ onChange: handleChangeSearchTextShare
11218
+ })), React__default.createElement(material.Grid, {
11219
+ item: true,
11220
+ xs: 12
11221
+ }, React__default.createElement(material.TableContainer, {
11222
+ sx: {
11223
+ maxHeight: "50vh"
11224
+ }
11225
+ }, React__default.createElement(material.Table, {
11226
+ stickyHeader: true
11227
+ }, React__default.createElement(material.TableHead, null, React__default.createElement(material.TableRow, null, selectedShare && React__default.createElement(material.TableCell, {
11228
+ padding: "checkbox"
11229
+ }, React__default.createElement(material.Checkbox, {
11230
+ color: "primary",
11231
+ checked: numSelectedShare > 0 && isCheckAllShare(teachers.length),
11232
+ onChange: handleSelectAllClickShare
11233
+ })), TEACHER_ACADEMY_HEADERS.map(function (i, index) {
11234
+ return selectedShare && index === 0 ? null : React__default.createElement(material.TableCell, {
11235
+ key: index,
11236
+ onClick: !!i.sortKey ? function () {
11237
+ return handleSortShare(i.sortKey);
11238
+ } : undefined,
11239
+ className: "" + (!!i.sortKey && "pointer")
11240
+ }, React__default.createElement("div", {
11241
+ className: "d-flex justify-content-between align-items-center text-nowrap"
11242
+ }, t(i.title), !!i.sortKey && selectedShare && React__default.createElement(SortIcon, {
11243
+ isAscending: filterShare.sortColumnName !== i.sortKey ? undefined : filterShare.sortColumnDirection === OrderType.ASC
11244
+ })));
11245
+ }))), React__default.createElement(material.TableBody, null, selectedTeacher ? React__default.createElement(material.TableRow, null, React__default.createElement(material.TableCell, null, selectedTeacher === null || selectedTeacher === void 0 ? void 0 : selectedTeacher.teacherName), React__default.createElement(material.TableCell, null, selectedTeacher === null || selectedTeacher === void 0 ? void 0 : selectedTeacher.teacherEmail), React__default.createElement(material.TableCell, null, selectedTeacher === null || selectedTeacher === void 0 ? void 0 : selectedTeacher.phoneNumber), React__default.createElement(material.TableCell, null, utcToLocalTime(selectedTeacher === null || selectedTeacher === void 0 ? void 0 : selectedTeacher.createdAt, t("date_time_format")))) : teachers.map(function (i, index) {
11246
+ var isItemSelected = isSelectedShare(i.id);
11247
+ return React__default.createElement(material.TableRow, {
11248
+ key: i.id
11249
+ }, React__default.createElement(material.TableCell, {
11250
+ padding: "checkbox"
11251
+ }, React__default.createElement(material.Checkbox, {
11252
+ onClick: function onClick() {
11253
+ return handleClickCheckboxShare(i.id);
11254
+ },
11255
+ color: "primary",
11256
+ checked: isItemSelected
11257
+ })), React__default.createElement(material.TableCell, null, (pagingShare.page - 1) * pagingShare.limit + index + 1), React__default.createElement(material.TableCell, null, i.teacherName), React__default.createElement(material.TableCell, null, i.teacherEmail), React__default.createElement(material.TableCell, null, i.phoneNumber), React__default.createElement(material.TableCell, null, utcToLocalTime(i.createdAt, t("date_time_format"))));
11258
+ }), !selectedShare && !teachers.length && React__default.createElement(material.TableRow, null, React__default.createElement(material.TableCell, {
11259
+ colSpan: 12,
11260
+ className: "text-center text-muted"
11261
+ }, t("no_data")))))), React__default.createElement("div", {
11262
+ className: "d-flex justify-content-end mt-4"
11263
+ }, !!pagingShare.totalPages && !selectedShare && React__default.createElement(material.Pagination, {
11264
+ count: pagingShare.totalPages,
11265
+ page: pagingShare.page,
11266
+ onChange: handleChangePageShare
11267
+ }))))), React__default.createElement(material.DialogActions, null, React__default.createElement(material.Stack, {
11268
+ direction: "row",
11269
+ spacing: 2,
11270
+ p: 2,
11271
+ pt: 0,
11272
+ justifyContent: "end"
11273
+ }, React__default.createElement(material.Button, {
11274
+ color: "primary",
11275
+ variant: "contained",
11276
+ type: "submit",
11277
+ disabled: selectedShare.length === 0 && numSelectedShare === 0,
11278
+ onClick: function onClick() {
11279
+ return handleShareModel(selectedShare, dataId);
11280
+ }
11281
+ }, !isUpdate ? t("submit") : t("remove")), React__default.createElement(material.Button, {
11282
+ sx: {
11283
+ bgcolor: theme.palette.grey[700]
11284
+ },
11285
+ color: "secondary",
11286
+ variant: "contained",
11287
+ onClick: handleCloseShareDialog
11288
+ }, t("cancel")))));
11289
+ };
11290
+
11291
+ var TEACHER_URL = BASE_URL + "/api/teacher";
11292
+ var getTeacherListApi = function getTeacherListApi(query) {
11293
+ return api.get("" + TEACHER_URL, {
11294
+ params: query
11295
+ });
11296
+ };
11297
+
11298
+ var useTextbookShare = function useTextbookShare(props) {
11299
+ var getData = props.getData;
11300
+ var _useList = useList(function (search) {
11301
+ return getTeacherListApi(search);
11302
+ }, DefaultTeacherQuery),
11303
+ filterShare = _useList.filter,
11304
+ textSearchShareRef = _useList.textSearchRef,
11305
+ pagingShare = _useList.paging,
11306
+ selectedTeacher = _useList.selectedItem,
11307
+ teachers = _useList.data,
11308
+ handleSortShare = _useList.handleSort,
11309
+ handleChangeSearchTextShare = _useList.handleChangeSearchText,
11310
+ handleChangePageShare = _useList.handleChangePage;
11311
+ var _useState = React.useState([]),
11312
+ selectedShare = _useState[0],
11313
+ setSelectedShare = _useState[1];
11314
+ var _useState2 = React.useState([]),
11315
+ notShared = _useState2[0],
11316
+ setNotShared = _useState2[1];
11317
+ var _useState3 = React.useState([]),
11318
+ shared = _useState3[0],
11319
+ setShared = _useState3[1];
11320
+ var _useState4 = React.useState(false),
11321
+ isUpdate = _useState4[0],
11322
+ setIsUpdate = _useState4[1];
11323
+ var _useState5 = React.useState(),
11324
+ currentModel = _useState5[0],
11325
+ setCurrentModel = _useState5[1];
11326
+ var isSelectedShare = function isSelectedShare(id) {
11327
+ return selectedShare.indexOf(id) !== -1;
11328
+ };
11329
+ var _useState6 = React.useState(false),
11330
+ openShareDialog = _useState6[0],
11331
+ setOpenShareDialog = _useState6[1];
11332
+ var _useTranslation = reactI18next.useTranslation(),
11333
+ t = _useTranslation.t;
11334
+ var dispatch = reactRedux.useDispatch();
11335
+ var infoUser = reactRedux.useSelector(function (state) {
11336
+ var _state$common;
11337
+ return (state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user) || {};
11338
+ });
11339
+ React.useEffect(function () {
11340
+ if (!isUpdate) {
11341
+ filterTeacherNotShared(currentModel);
11342
+ } else {
11343
+ filterTeacherShared(currentModel);
11344
+ }
11345
+ }, [teachers, isUpdate]);
11346
+ var handleOpenShareDialog = function handleOpenShareDialog(textbook) {
11347
+ setIsUpdate(false);
11348
+ setOpenShareDialog(true);
11349
+ setCurrentModel(textbook);
11350
+ filterTeacherNotShared(textbook);
11351
+ };
11352
+ var filterTeacherNotShared = function filterTeacherNotShared(textbook) {
11353
+ var sharedTeacherTextbook = textbook === null || textbook === void 0 ? void 0 : textbook.sharedUsers;
11354
+ var teacherNotShared = teachers.filter(function (teacher) {
11355
+ return !(sharedTeacherTextbook !== null && sharedTeacherTextbook !== void 0 && sharedTeacherTextbook.includes(teacher.teacherEmail.trim().toUpperCase())) && teacher.teacherEmail.trim().toUpperCase() != (textbook === null || textbook === void 0 ? void 0 : textbook.createdBy.email.trim().toUpperCase());
11356
+ });
11357
+ setNotShared(teacherNotShared);
11358
+ };
11359
+ var filterTeacherShared = function filterTeacherShared(textbook) {
11360
+ var sharedTeacherTextbook = textbook === null || textbook === void 0 ? void 0 : textbook.sharedUsers;
11361
+ var teacherShared = teachers.filter(function (teacher) {
11362
+ return (sharedTeacherTextbook === null || sharedTeacherTextbook === void 0 ? void 0 : sharedTeacherTextbook.includes(teacher.teacherEmail.trim().toUpperCase())) && teacher.teacherEmail.trim().toUpperCase() != (textbook === null || textbook === void 0 ? void 0 : textbook.createdBy.email.trim().toUpperCase());
11363
+ });
11364
+ setShared(teacherShared);
11365
+ };
11366
+ var handleCloseShareDialog = function handleCloseShareDialog() {
11367
+ setOpenShareDialog(false);
11368
+ setSelectedShare([]);
11369
+ };
11370
+ var handleOpenUpdateShareDialog = function handleOpenUpdateShareDialog(textbook) {
11371
+ setIsUpdate(true);
11372
+ setOpenShareDialog(true);
11373
+ setCurrentModel(textbook);
11374
+ filterTeacherShared(textbook);
11375
+ };
11376
+ var handleSelectAllClickShare = function handleSelectAllClickShare(event) {
11377
+ var newSelected = isUpdate ? shared.map(function (n) {
11378
+ return n.id;
11379
+ }) : notShared.map(function (n) {
11380
+ return n.id;
11381
+ });
11382
+ if (event.target.checked) {
11383
+ setSelectedShare(function (prev) {
11384
+ return _.uniq([].concat(prev, newSelected));
11385
+ });
11386
+ return;
11387
+ }
11388
+ setSelectedShare(_.difference(selectedShare, newSelected));
11389
+ };
11390
+ var isCheckAllShare = function isCheckAllShare(userLength) {
11391
+ var newSelected = isUpdate ? shared.map(function (n) {
11392
+ return n.id;
11393
+ }) : notShared.map(function (n) {
11394
+ return n.id;
11395
+ });
11396
+ var checkLength = _.intersection(selectedShare, newSelected).length;
11397
+ return checkLength === userLength;
11398
+ };
11399
+ var handleClickCheckboxShare = function handleClickCheckboxShare(id) {
11400
+ var selectedIndex = selectedShare.indexOf(id);
11401
+ var newSelected = [];
11402
+ if (selectedIndex === -1) {
11403
+ newSelected = newSelected.concat(selectedShare, id);
11404
+ } else if (selectedIndex === 0) {
11405
+ newSelected = newSelected.concat(selectedShare.slice(1));
11406
+ } else if (selectedIndex === selectedShare.length - 1) {
11407
+ newSelected = newSelected.concat(selectedShare.slice(0, -1));
11408
+ } else if (selectedIndex > 0) {
11409
+ newSelected = newSelected.concat(selectedShare.slice(0, selectedIndex), selectedShare.slice(selectedIndex + 1));
11410
+ }
11411
+ setSelectedShare(newSelected);
11412
+ };
11413
+ var updateTeacherNotShared = function updateTeacherNotShared(teacherIds) {
11414
+ var removeTeachers = notShared.filter(function (teacher) {
11415
+ return !teacherIds.includes(teacher.id);
11416
+ });
11417
+ setNotShared(removeTeachers);
11418
+ };
11419
+ var updateTeacherShared = function updateTeacherShared(teacherIds) {
11420
+ var existsTeachers = shared.filter(function (teacher) {
11421
+ return !teacherIds.includes(teacher.id);
11422
+ });
11423
+ setShared(existsTeachers);
11424
+ };
11425
+ var handleDisableShare = function handleDisableShare(textbook) {
11426
+ return !textbook.isShared || textbook.sharedUsers.map(function (item) {
11427
+ return item.trim();
11428
+ }).filter(function (item) {
11429
+ return item !== "";
11430
+ }).includes(infoUser.email || "");
11431
+ };
11432
+ var handleShareTextbook = function handleShareTextbook(teacherIds, textbookId) {
11433
+ try {
11434
+ var _temp2 = function _temp2() {
11435
+ dispatch(setLoading(false));
11436
+ setSelectedShare([]);
11437
+ setOpenShareDialog(false);
11438
+ };
11439
+ dispatch(setLoading(true));
11440
+ var _temp = _catch(function () {
11441
+ return Promise.resolve(shareTextbookApi(textbookId, {
11442
+ teacherIds: teacherIds
11443
+ })).then(function () {
11444
+ updateTeacherNotShared(teacherIds);
11445
+ setSelectedShare([]);
11446
+ return Promise.resolve(getData(false)).then(function () {
11447
+ reactToastify.toast.success(t("notify_share_textbook.share_success"));
11448
+ });
11449
+ });
11450
+ }, function (error) {
11451
+ reactToastify.toast.error(getErrorMessage(t, error, t("notify_share_textbook.share_fail")));
11452
+ });
11453
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
11454
+ } catch (e) {
11455
+ return Promise.reject(e);
11456
+ }
11457
+ };
11458
+ var handleUpdateSharedTextbook = function handleUpdateSharedTextbook(teacherIds, textbookId) {
11459
+ try {
11460
+ var _temp4 = function _temp4() {
11461
+ dispatch(setLoading(false));
11462
+ setSelectedShare([]);
11463
+ setOpenShareDialog(false);
11464
+ };
11465
+ dispatch(setLoading(true));
11466
+ var _temp3 = _catch(function () {
11467
+ return Promise.resolve(updateSharedTextbookApi(textbookId, {
11468
+ teacherIds: teacherIds
11469
+ })).then(function () {
11470
+ updateTeacherShared(teacherIds);
11471
+ setSelectedShare([]);
11472
+ return Promise.resolve(getData(false)).then(function () {
11473
+ reactToastify.toast.success(t("notify_share_textbook.update_success"));
11474
+ });
11475
+ });
11476
+ }, function (error) {
11477
+ reactToastify.toast.error(getErrorMessage(t, error, t("notify_share_textbook.update_fail")));
11478
+ });
11479
+ return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
11480
+ } catch (e) {
11481
+ return Promise.reject(e);
11482
+ }
11483
+ };
11484
+ return {
11485
+ filterShare: filterShare,
11486
+ textSearchShareRef: textSearchShareRef,
11487
+ pagingShare: pagingShare,
11488
+ selectedShare: selectedShare,
11489
+ handleSortShare: handleSortShare,
11490
+ handleChangeSearchTextShare: handleChangeSearchTextShare,
11491
+ handleChangePageShare: handleChangePageShare,
11492
+ numSelectedShare: selectedShare.length,
11493
+ handleShareTextbook: handleShareTextbook,
11494
+ isSelectedShare: isSelectedShare,
11495
+ handleOpenShareDialog: handleOpenShareDialog,
11496
+ handleCloseShareDialog: handleCloseShareDialog,
11497
+ openShareDialog: openShareDialog,
11498
+ isCheckAllShare: isCheckAllShare,
11499
+ handleClickCheckboxShare: handleClickCheckboxShare,
11500
+ handleSelectAllClickShare: handleSelectAllClickShare,
11501
+ notShared: notShared,
11502
+ shared: shared,
11503
+ selectedTeacher: selectedTeacher,
11504
+ handleOpenUpdateShareDialog: handleOpenUpdateShareDialog,
11505
+ isUpdate: isUpdate,
11506
+ handleUpdateSharedTextbook: handleUpdateSharedTextbook,
11507
+ handleDisableShare: handleDisableShare,
11508
+ currentModel: currentModel
11509
+ };
11510
+ };
11511
+
11087
11512
  var TextbookList = function TextbookList(props) {
11088
11513
  var _useTranslation = reactI18next.useTranslation(),
11089
11514
  t = _useTranslation.t;
11515
+ var isAdmin = reactRedux.useSelector(function (state) {
11516
+ var _state$common, _state$common$user, _state$common$user$ro;
11517
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : (_state$common$user = _state$common.user) === null || _state$common$user === void 0 ? void 0 : (_state$common$user$ro = _state$common$user.roles) === null || _state$common$user$ro === void 0 ? void 0 : _state$common$user$ro.includes(exports.Role.Admin);
11518
+ });
11090
11519
  var _useTextbookList = useTextbookList(props),
11091
11520
  filter = _useTextbookList.filter,
11092
11521
  textbooks = _useTextbookList.textbooks,
11093
11522
  paging = _useTextbookList.paging,
11523
+ getData = _useTextbookList.getData,
11094
11524
  textSearchRef = _useTextbookList.textSearchRef,
11095
- selectedTextbook = _useTextbookList.selectedTextbook,
11096
11525
  handleChangeSearchText = _useTextbookList.handleChangeSearchText,
11097
11526
  handleSort = _useTextbookList.handleSort,
11527
+ selectedTextbook = _useTextbookList.selectedTextbook,
11098
11528
  handleChangePage = _useTextbookList.handleChangePage,
11099
11529
  calcOrderNumber = _useTextbookList.calcOrderNumber,
11100
11530
  handleViewTextbook = _useTextbookList.handleViewTextbook,
@@ -11103,6 +11533,33 @@ var TextbookList = function TextbookList(props) {
11103
11533
  toggleConfirmDialog = _useTextbookList.toggleConfirmDialog,
11104
11534
  handleDeleteTextbook = _useTextbookList.handleDeleteTextbook,
11105
11535
  handleSelectDeleteTextbook = _useTextbookList.handleSelectDeleteTextbook;
11536
+ var _useTextbookShare = useTextbookShare(_extends({}, props, {
11537
+ getData: getData
11538
+ })),
11539
+ filterShare = _useTextbookShare.filterShare,
11540
+ textSearchShareRef = _useTextbookShare.textSearchShareRef,
11541
+ pagingShare = _useTextbookShare.pagingShare,
11542
+ selectedShare = _useTextbookShare.selectedShare,
11543
+ handleSortShare = _useTextbookShare.handleSortShare,
11544
+ handleChangeSearchTextShare = _useTextbookShare.handleChangeSearchTextShare,
11545
+ handleChangePageShare = _useTextbookShare.handleChangePageShare,
11546
+ numSelectedShare = _useTextbookShare.numSelectedShare,
11547
+ handleShareTextbook = _useTextbookShare.handleShareTextbook,
11548
+ isSelectedShare = _useTextbookShare.isSelectedShare,
11549
+ handleOpenShareDialog = _useTextbookShare.handleOpenShareDialog,
11550
+ handleCloseShareDialog = _useTextbookShare.handleCloseShareDialog,
11551
+ openShareDialog = _useTextbookShare.openShareDialog,
11552
+ isCheckAllShare = _useTextbookShare.isCheckAllShare,
11553
+ handleClickCheckboxShare = _useTextbookShare.handleClickCheckboxShare,
11554
+ handleSelectAllClickShare = _useTextbookShare.handleSelectAllClickShare,
11555
+ notShared = _useTextbookShare.notShared,
11556
+ shared = _useTextbookShare.shared,
11557
+ selectedTeacher = _useTextbookShare.selectedTeacher,
11558
+ handleOpenUpdateShareDialog = _useTextbookShare.handleOpenUpdateShareDialog,
11559
+ isUpdate = _useTextbookShare.isUpdate,
11560
+ handleUpdateSharedTextbook = _useTextbookShare.handleUpdateSharedTextbook,
11561
+ handleDisableShare = _useTextbookShare.handleDisableShare,
11562
+ currentModel = _useTextbookShare.currentModel;
11106
11563
  return React__default.createElement(LayoutList, {
11107
11564
  title: t(TEXTBOOK_PAGE_TITLE)
11108
11565
  }, React__default.createElement(material.Grid, {
@@ -11118,14 +11575,21 @@ var TextbookList = function TextbookList(props) {
11118
11575
  item: true,
11119
11576
  xs: 6
11120
11577
  }, React__default.createElement(material.Stack, {
11121
- alignItems: "end"
11578
+ alignItems: "end",
11579
+ direction: "row",
11580
+ sx: {
11581
+ justifyContent: "flex-end"
11582
+ },
11583
+ spacing: 2
11122
11584
  }, React__default.createElement(material.Button, {
11123
11585
  startIcon: React__default.createElement(fa.FaPlus, {
11124
11586
  size: 12
11125
11587
  }),
11126
11588
  variant: "contained",
11127
11589
  color: "primary",
11128
- onClick: handleCreateTextbook
11590
+ onClick: handleCreateTextbook,
11591
+ disabled: isAdmin,
11592
+ className: (!isAdmin ? "bg-success" : "bg-secondary") + " text-white"
11129
11593
  }, t("create_textbook")))), React__default.createElement(material.Grid, {
11130
11594
  item: true,
11131
11595
  xs: 12,
@@ -11137,7 +11601,11 @@ var TextbookList = function TextbookList(props) {
11137
11601
  }), React__default.createElement(material.TableBody, null, textbooks.map(function (i, index) {
11138
11602
  return React__default.createElement(material.TableRow, {
11139
11603
  key: i.id
11140
- }, React__default.createElement(material.TableCell, null, calcOrderNumber(index)), React__default.createElement(material.TableCell, null, i.name), React__default.createElement(material.TableCell, null, i.subject.name), React__default.createElement(material.TableCell, null, utcToLocalTime(i.createdAt, t("date_format"))), React__default.createElement(material.TableCell, null, i.totalChapters), React__default.createElement(material.TableCell, null, React__default.createElement(material.Stack, {
11604
+ }, React__default.createElement(material.TableCell, null, calcOrderNumber(index)), React__default.createElement(material.TableCell, null, i.name), React__default.createElement(material.TableCell, null, i.subject.name), React__default.createElement(material.TableCell, null, utcToLocalTime(i.createdAt, t("date_format"))), React__default.createElement(material.TableCell, null, i.totalChapters), React__default.createElement(material.TableCell, null, i.sharedUsers.map(function (email, index) {
11605
+ return index > 2 ? null : index === 2 ? React__default.createElement("div", null, "(+", i.sharedUsers.length - 2, ")") : React__default.createElement("div", {
11606
+ key: index
11607
+ }, email.toLowerCase());
11608
+ })), React__default.createElement(material.TableCell, null, React__default.createElement(material.Stack, {
11141
11609
  direction: "row",
11142
11610
  spacing: 1,
11143
11611
  alignItems: "center"
@@ -11158,9 +11626,25 @@ var TextbookList = function TextbookList(props) {
11158
11626
  }
11159
11627
  }, React__default.createElement(fa.FaEye, {
11160
11628
  size: 12
11629
+ })), React__default.createElement(material.IconButton, {
11630
+ disabled: handleDisableShare(i) || isAdmin,
11631
+ className: (handleDisableShare(i) || isAdmin ? "bg-secondary" : "bg-info") + " text-white me-1",
11632
+ onClick: function onClick() {
11633
+ return handleOpenShareDialog(i);
11634
+ }
11635
+ }, React__default.createElement(fa.FaShare, {
11636
+ size: 12
11637
+ })), React__default.createElement(material.IconButton, {
11638
+ disabled: handleDisableShare(i) || isAdmin,
11639
+ className: (handleDisableShare(i) || isAdmin ? "bg-secondary" : "bg-success") + " text-white me-1",
11640
+ onClick: function onClick() {
11641
+ return handleOpenUpdateShareDialog(i);
11642
+ }
11643
+ }, React__default.createElement(fa.FaExchangeAlt, {
11644
+ size: 12
11161
11645
  })), React__default.createElement(material.IconButton, {
11162
11646
  color: "default",
11163
- className: (i.isCreatedByAdmin ? "bg-secondary" : "bg-danger") + " text-white",
11647
+ className: (i.isCreatedByAdmin ? "bg-secondary" : "bg-danger") + " text-white mr-1",
11164
11648
  onClick: function onClick() {
11165
11649
  return handleSelectDeleteTextbook(i);
11166
11650
  },
@@ -11181,6 +11665,26 @@ var TextbookList = function TextbookList(props) {
11181
11665
  onConfirm: handleDeleteTextbook,
11182
11666
  confirmText: selectedTextbook === null || selectedTextbook === void 0 ? void 0 : selectedTextbook.name,
11183
11667
  isDelete: true
11668
+ }), !!currentModel && React__default.createElement(ShareToTeacherDialog, {
11669
+ open: openShareDialog,
11670
+ selectedShare: selectedShare,
11671
+ textSearchShareRef: textSearchShareRef,
11672
+ handleChangeSearchTextShare: handleChangeSearchTextShare,
11673
+ numSelectedShare: numSelectedShare,
11674
+ isCheckAllShare: isCheckAllShare,
11675
+ handleSelectAllClickShare: handleSelectAllClickShare,
11676
+ teachers: !isUpdate ? notShared : shared,
11677
+ filterShare: filterShare,
11678
+ pagingShare: pagingShare,
11679
+ handleSortShare: handleSortShare,
11680
+ handleChangePageShare: handleChangePageShare,
11681
+ handleShareModel: !isUpdate ? handleShareTextbook : handleUpdateSharedTextbook,
11682
+ isSelectedShare: isSelectedShare,
11683
+ handleCloseShareDialog: handleCloseShareDialog,
11684
+ handleClickCheckboxShare: handleClickCheckboxShare,
11685
+ selectedTeacher: selectedTeacher,
11686
+ dataId: currentModel.id,
11687
+ isUpdate: isUpdate
11184
11688
  }));
11185
11689
  };
11186
11690
 
@@ -17665,11 +18169,11 @@ var DayOfWeek;
17665
18169
  DayOfWeek[DayOfWeek["Friday"] = 5] = "Friday";
17666
18170
  DayOfWeek[DayOfWeek["Saturday"] = 6] = "Saturday";
17667
18171
  })(DayOfWeek || (DayOfWeek = {}));
17668
- var TeacherSortBy;
18172
+ var TeacherSortBy$1;
17669
18173
  (function (TeacherSortBy) {
17670
18174
  TeacherSortBy["Name"] = "UserProfile.FullName";
17671
18175
  TeacherSortBy["Email"] = "UserProfile.Email";
17672
- })(TeacherSortBy || (TeacherSortBy = {}));
18176
+ })(TeacherSortBy$1 || (TeacherSortBy$1 = {}));
17673
18177
  var ClassStatus;
17674
18178
  (function (ClassStatus) {
17675
18179
  ClassStatus["Default"] = "Default";
@@ -17773,7 +18277,7 @@ var DefaultTeacherFilter = {
17773
18277
  currentPage: 1,
17774
18278
  pageSize: 50,
17775
18279
  sortColumnDirection: OrderBy$2.DESC,
17776
- sortColumnName: TeacherSortBy.Name,
18280
+ sortColumnName: TeacherSortBy$1.Name,
17777
18281
  textSearch: ""
17778
18282
  };
17779
18283
  var DEFAULT_CLASS_REQUEST = {
@@ -19421,9 +19925,9 @@ var useLessonClassList = function useLessonClassList(courseId) {
19421
19925
  };
19422
19926
  };
19423
19927
 
19424
- var TEACHER_URL = BASE_URL + "/api/teacher";
19425
- var getTeacherListApi = function getTeacherListApi(query) {
19426
- return api.get("" + TEACHER_URL, {
19928
+ var TEACHER_URL$1 = BASE_URL + "/api/teacher";
19929
+ var getTeacherListApi$1 = function getTeacherListApi(query) {
19930
+ return api.get("" + TEACHER_URL$1, {
19427
19931
  params: query
19428
19932
  });
19429
19933
  };
@@ -19444,7 +19948,7 @@ var useTeacherList = function useTeacherList() {
19444
19948
  var getListTeacher = function getListTeacher() {
19445
19949
  try {
19446
19950
  var _temp = _catch(function () {
19447
- return Promise.resolve(getTeacherListApi(teacherFilter)).then(function (res) {
19951
+ return Promise.resolve(getTeacherListApi$1(teacherFilter)).then(function (res) {
19448
19952
  var _res$data;
19449
19953
  setTeachers(((_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.items) || []);
19450
19954
  });
@@ -22726,6 +23230,7 @@ exports.RecentUserAction = RecentUserAction;
22726
23230
  exports.ReleaseAlert = ReleaseAlert;
22727
23231
  exports.SUPER_ADMIN_BASE_URL = SUPER_ADMIN_BASE_URL;
22728
23232
  exports.ScoreSelector = ScoreSelector;
23233
+ exports.ShareToTeacherDialog = ShareToTeacherDialog;
22729
23234
  exports.SubjectSelector = SubjectSelector;
22730
23235
  exports.Textbook = index$2;
22731
23236
  exports.TextbookDetail = TextbookViewDetail;
@@ -22765,11 +23270,13 @@ exports.useChatContainer = useChatContainer;
22765
23270
  exports.useCountDownTimer = useCountDownTimer;
22766
23271
  exports.useGoogleSignOut = useGoogleSignOut;
22767
23272
  exports.useLanguage = useLanguage;
23273
+ exports.useList = useList;
22768
23274
  exports.useLoadMore = useLoadMore;
22769
23275
  exports.useLogin = useLogin;
22770
23276
  exports.usePusherConversation = usePusherConversation;
22771
23277
  exports.useSubjectSelect = useSubjectSelect;
22772
23278
  exports.useSwitchAcademy = useSwitchAcademy;
23279
+ exports.useTextbookShare = useTextbookShare;
22773
23280
  exports.useVirtualizeList = useVirtualizeList;
22774
23281
  exports.utcToLocalTime = utcToLocalTime;
22775
23282
  //# sourceMappingURL=index.js.map