trithuc-mvc-react 2.6.8 → 2.7.0

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.
@@ -13,8 +13,8 @@ import { TableRowRender } from "./TableRowRender";
13
13
  import TableToolbar from "./TableToolbar";
14
14
  import { useDataTable } from "./hooks";
15
15
  import { usePermission } from "../../hooks";
16
- import { URL_APPLICATION ,URL_APPLICATION_API } from "@/constants";
17
- const DataTable = ({ multipleActions = [],page, setPage = () => { }, disableEdit, disableDelete }) => {
16
+ import { URL_APPLICATION, URL_APPLICATION_API } from "@/constants";
17
+ const DataTable = ({ multipleActions = [], page, setPage = () => {}, disableEdit, disableDelete }) => {
18
18
  const {
19
19
  tableName,
20
20
  selectedField,
@@ -46,6 +46,9 @@ const DataTable = ({ multipleActions = [],page, setPage = () => { }, disableEdit
46
46
  }),
47
47
  // keepPreviousData: true,
48
48
  onSuccess: ({ PermissionModel, status }) => {
49
+ if (dataSearch?.TrangThaiXuLy !== undefined) {
50
+ PermissionModel.TrangThaiXuLy = dataSearch?.TrangThaiXuLy;
51
+ }
49
52
  if (status) {
50
53
  setPermission(PermissionModel);
51
54
  // console.log("LOAD LAI PermissionModel");
@@ -56,21 +59,31 @@ const DataTable = ({ multipleActions = [],page, setPage = () => { }, disableEdit
56
59
  onSuccess: ({ status = false, message = " Có lỗi xảy ra !" }) => {
57
60
  if (URL_APPLICATION_API) {
58
61
  toast.success(message);
59
- }else{
62
+ } else {
60
63
  toast.success("Thay đổi trạng thái thành công !");
61
64
  }
62
65
  queryClient.invalidateQueries({ queryKey: [tableName] });
63
66
  },
64
- onError: () => {
65
- toast.error(" lỗi xảy ra !");
67
+ onError: (error) => {
68
+ if (error.response && error.response.data && error.response.data.errors) {
69
+ const errors = error.response.data.errors;
70
+ // Chuyển đổi đối tượng lỗi thành chuỗi để hiển thị
71
+ const errorMessages = Object.entries(errors)
72
+ .map(([field, messages]) => `${field}: ${messages.join(", ")}`)
73
+ .join("\n");
74
+ toast.error(errorMessages);
75
+ } else {
76
+ // Nếu lỗi không theo định dạng mong đợi, hiển thị thông tin lỗi chung
77
+ toast.error("Đã xảy ra lỗi không mong muốn.");
78
+ }
66
79
  }
67
80
  });
68
81
  const deleteMutation = useMutation(deleteDataFromTable, {
69
82
  onSuccess: ({ status = false, message = " Có lỗi xảy ra !" }) => {
70
- if (status) {
83
+ if (status) {
71
84
  if (URL_APPLICATION_API) {
72
85
  toast.success(message);
73
- }else{
86
+ } else {
74
87
  toast.success("Xóa thành công !");
75
88
  }
76
89
  } else {
@@ -79,27 +92,52 @@ const DataTable = ({ multipleActions = [],page, setPage = () => { }, disableEdit
79
92
 
80
93
  queryClient.invalidateQueries({ queryKey: [tableName] });
81
94
  },
82
- onError: () => {
83
- toast.error(" lỗi xảy ra !");
95
+ onError: (error) => {
96
+ if (error.response && error.response.data && error.response.data.errors) {
97
+ const errors = error.response.data.errors;
98
+ // Chuyển đổi đối tượng lỗi thành chuỗi để hiển thị
99
+ const errorMessages = Object.entries(errors)
100
+ .map(([field, messages]) => `${field}: ${messages.join(", ")}`)
101
+ .join("\n");
102
+ toast.error(errorMessages);
103
+ } else {
104
+ // Nếu lỗi không theo định dạng mong đợi, hiển thị thông tin lỗi chung
105
+ toast.error("Đã xảy ra lỗi không mong muốn.");
106
+ }
84
107
  }
85
108
  });
86
109
  const deleteMultipleMutation = useMutation(deleteMultipleDataFromTable, {
87
110
  onSuccess: ({ status = false, message = " Có lỗi xảy ra !" }) => {
88
111
  if (URL_APPLICATION_API) {
89
112
  toast.success(message);
90
- }else{
113
+ } else {
91
114
  toast.success("Xóa thành công !");
92
115
  }
93
116
  setSelectedItems([]);
94
117
  queryClient.invalidateQueries({ queryKey: [tableName] });
95
118
  },
96
- onError: () => {
97
- toast.error(" lỗi xảy ra !");
119
+ onError: (error) => {
120
+ if (error.response && error.response.data && error.response.data.errors) {
121
+ const errors = error.response.data.errors;
122
+ // Chuyển đổi đối tượng lỗi thành chuỗi để hiển thị
123
+ const errorMessages = Object.entries(errors)
124
+ .map(([field, messages]) => `${field}: ${messages.join(", ")}`)
125
+ .join("\n");
126
+ toast.error(errorMessages);
127
+ } else {
128
+ // Nếu lỗi không theo định dạng mong đợi, hiển thị thông tin lỗi chung
129
+ toast.error("Đã xảy ra lỗi không mong muốn.");
130
+ }
98
131
  }
99
132
  });
100
133
 
101
134
  const handleDelete = (id) => {
102
- confirm({ description: "Bạn có chắc chắn muốn xóa bản ghi này không?", title: "Xác nhận", cancellationText: "Hủy", confirmationText: "Xóa"})
135
+ confirm({
136
+ description: "Bạn có chắc chắn muốn xóa bản ghi này không?",
137
+ title: "Xác nhận",
138
+ cancellationText: "Hủy",
139
+ confirmationText: "Xóa"
140
+ })
103
141
  .then(() => {
104
142
  deleteMutation.mutate({
105
143
  id,
@@ -177,7 +215,12 @@ const DataTable = ({ multipleActions = [],page, setPage = () => { }, disableEdit
177
215
  setPage(0);
178
216
  };
179
217
  const handleDeleteMultiple = () => {
180
- confirm({ description: `Bạn có chắc chắn muốn xóa ${selectedItems?.length} bản ghi này không?`, title: "Xác nhận", cancellationText: "Hủy", confirmationText: "Đồng ý" })
218
+ confirm({
219
+ description: `Bạn có chắc chắn muốn xóa ${selectedItems?.length} bản ghi này không?`,
220
+ title: "Xác nhận",
221
+ cancellationText: "Hủy",
222
+ confirmationText: "Đồng ý"
223
+ })
181
224
  .then(() => {
182
225
  deleteMultipleMutation.mutate({
183
226
  tableName,
@@ -106,8 +106,18 @@ function EditorForm({ fields, submitRef }) {
106
106
  toast.error(message);
107
107
  }
108
108
  },
109
- onError: () => {
110
- toast.error(" lỗi xảy ra !");
109
+ onError: (error) => {
110
+ if (error.response && error.response.data && error.response.data.errors) {
111
+ const errors = error.response.data.errors;
112
+ // Chuyển đổi đối tượng lỗi thành chuỗi để hiển thị
113
+ const errorMessages = Object.entries(errors)
114
+ .map(([field, messages]) => `${field}: ${messages.join(", ")}`)
115
+ .join("\n");
116
+ toast.error(errorMessages);
117
+ } else {
118
+ // Nếu lỗi không theo định dạng mong đợi, hiển thị thông tin lỗi chung
119
+ toast.error("Đã xảy ra lỗi không mong muốn.");
120
+ }
111
121
  }
112
122
  });
113
123
  const onSubmit = (data) => {
@@ -1,33 +1,62 @@
1
1
  import { useContext, useMemo } from "react";
2
2
  import { PermissionContext } from "../contexts";
3
3
 
4
- const usePermission = (apiUrl,tableName) => {
5
- // if (!tableName && !apiUrl) {
6
- // throw new Error("api is required");
7
- // }
4
+ const usePermission = (tableName) => {
5
+ if (!tableName) {
6
+ throw new Error("api is required");
7
+ }
8
8
  const context = useContext(PermissionContext);
9
9
  if (!context) {
10
10
  throw new Error("usePermission must be used within a PermissionProvider");
11
11
  }
12
12
  const { permissionMap, setPermission } = context;
13
13
 
14
- const permission = permissionMap[apiUrl?apiUrl:tableName];
14
+ const permission = permissionMap[tableName];
15
15
 
16
16
  const { canEdit, canDelete, canDeleteMulti, canSave, canCreate, canAction, canView, canImport } = useMemo(() => {
17
- const canEdit = !permission || permission.Edit;
18
- const canDelete = !permission || permission.Delete;
19
- const canDeleteMulti = !permission || permission.DeleteMulti;
20
- const canSave = !permission || permission.Save;
21
- const canCreate = !permission || permission.Create;
22
- const canAction = !permission || permission.Action;
23
- const canView = !permission || permission.View;
24
- const canImport = !permission || permission.ImportFile;
17
+ if (permission) {
18
+ if (permission.TrangThaiXuLy !== undefined && permission.ObjTrangThai) {
19
+ const status = permission.ObjTrangThai.find((t) => t.StatusId === permission.TrangThaiXuLy) || {};
25
20
 
26
- return { canEdit, canDelete, canDeleteMulti, canSave, canCreate, canAction, canView, canImport };
21
+ return {
22
+ canEdit: status.Edit ?? false,
23
+ canDelete: status.Delete ?? false,
24
+ canDeleteMulti: status.DeleteMulti ?? false,
25
+ canSave: status.Save ?? false,
26
+ canCreate: status.Create ?? false,
27
+ canAction: status.Action ?? false,
28
+ canView: status.View ?? false,
29
+ canImport: status.ImportFile ?? false
30
+ };
31
+ } else {
32
+ return {
33
+ canEdit: permission.Edit ?? false,
34
+ canDelete: permission.Delete ?? false,
35
+ canDeleteMulti: permission.DeleteMulti ?? false,
36
+ canSave: permission.Save ?? false,
37
+ canCreate: permission.Create ?? false,
38
+ canAction: permission.Action ?? false,
39
+ canView: permission.View ?? false,
40
+ canImport: permission.ImportFile ?? false
41
+ };
42
+ }
43
+ } else {
44
+ // Trường hợp permission không tồn tại
45
+ return {
46
+ canEdit: false,
47
+ canDelete: false,
48
+ canDeleteMulti: false,
49
+ canSave: false,
50
+ canCreate: false,
51
+ canAction: false,
52
+ canView: false,
53
+ canImport: false
54
+ };
55
+ }
27
56
  }, [permission]);
28
57
 
29
58
  const set = (permission) => {
30
- setPermission({ ...permissionMap, [apiUrl?apiUrl:tableName]: permission });
59
+ setPermission({ ...permissionMap, [tableName]: permission });
31
60
  };
32
61
 
33
62
  return { permission, set, canEdit, canDelete, canDeleteMulti, canSave, canCreate, canAction, canView, canImport };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trithuc-mvc-react",
3
- "version": "2.6.8",
3
+ "version": "2.7.0",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"