aq-fe-framework 0.1.139 → 0.1.140

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.
@@ -1,79 +1,3991 @@
1
1
  import {
2
- F_Authenticate_Login,
3
- F_Authenticate_Logout,
4
- F_authenticate_SplashPage,
5
- F_core12196,
6
- F_core12196_Create,
7
- F_core12196_Delete,
8
- F_core12196_Read,
9
- F_core12196_Update,
10
- F_core16209,
11
- F_core16209_Create,
12
- F_core16209_Delete,
13
- F_core16209_Update,
14
- F_core18256,
15
- F_core18256_Create,
16
- F_core18256_Delete,
17
- F_core18256_Read,
18
- F_core18256_Select,
19
- F_core18256_Update,
20
- F_core26965,
21
- F_core26965_Create,
22
- F_core26965_Delete,
23
- F_core26965_Update,
24
- F_core27311,
25
- F_core27311_Create,
26
- F_core27311_Delete,
27
- F_core27311_Read,
28
- F_core27311_Update,
29
- F_core35923,
30
- F_core38677,
31
- F_core38677_ReadUser,
32
- F_core38677_Save,
33
- F_core38677_ViewMenuPermissions,
34
- F_core40207,
35
- F_core40207_Create,
36
- F_core40207_Delete,
37
- F_core40207_Read,
38
- F_core40207_Update,
39
- F_core47643,
40
- F_core47643_Delete,
41
- F_core47643_Form,
42
- F_core47643_Read,
43
- F_core60524,
44
- F_core64229,
45
- F_core64229_Delete,
46
- F_core64229_Form,
47
- F_core64229_Read,
48
- F_core71678,
49
- F_core71678_ChangePermission,
50
- F_core71678_Create,
51
- F_core71678_Delete,
52
- F_core71678_Read,
53
- F_core71678_Update,
54
- F_core76318,
55
- F_core76318_Create,
56
- F_core76318_Delete,
57
- F_core76318_Update,
58
- F_core83092,
59
- F_core83092_ReadUser,
60
- F_core83092_Save,
61
- F_core83092_ViewMenuPermissions,
62
- PieChart_DiscountUsedPercentage,
63
- PieChart_VoucherUsedPercentage,
2
+ F_authenticate_Logout,
3
+ MyActionIconDelete,
4
+ MyActionIconUpdate,
5
+ MyBoxesBackground,
6
+ MyButton,
7
+ MyButtonCreate,
8
+ MyButtonModal,
9
+ MyButtonViewPDF,
10
+ MyCenterFull,
11
+ MyDataTable,
12
+ MyDateInput,
13
+ MyFieldset,
14
+ MyFileInput,
15
+ MyFlexColumn,
16
+ MyFlexEnd,
17
+ MyFlexRow,
18
+ MyNumberInput,
19
+ MyPageContent,
20
+ MySelect,
21
+ MyTab,
22
+ MyTextInput,
23
+ OBJECT_COlORS,
24
+ groupToTwoLevels,
64
25
  useS_authenticate,
65
- useS_core60524,
66
- useS_core83092,
67
- utils_core83092_mergePage
68
- } from "../chunk-2TDR7DML.mjs";
69
- import "../chunk-Z6OQG54Q.mjs";
70
- import "../chunk-CJDXLINF.mjs";
71
- import "../chunk-7ZCOFATU.mjs";
72
- import "../chunk-Y3YGC5IH.mjs";
73
- import "../chunk-FWCSY2DS.mjs";
26
+ utils_layout_getItemsWithoutLinks
27
+ } from "../chunk-6OPAZECG.mjs";
28
+ import {
29
+ baseAxios_default,
30
+ useQ_AQ_GetAQModule
31
+ } from "../chunk-Z6OQG54Q.mjs";
32
+ import {
33
+ createGenericStore
34
+ } from "../chunk-Y3YGC5IH.mjs";
35
+ import {
36
+ U0DateToDDMMYYYString,
37
+ U0MyValidateEmail,
38
+ utils_converter_enumToSelectOptions,
39
+ utils_file_fileToAQDocumentType
40
+ } from "../chunk-DRMICFA6.mjs";
41
+ import "../chunk-5U2JSHSJ.mjs";
42
+ import {
43
+ utils_notification_show
44
+ } from "../chunk-7ZCOFATU.mjs";
45
+ import {
46
+ __objRest,
47
+ __spreadProps,
48
+ __spreadValues
49
+ } from "../chunk-FWCSY2DS.mjs";
50
+
51
+ // src/modules-features/admin/core/core12196/F_core12196_Read.tsx
52
+ import { Accordion, Blockquote } from "@mantine/core";
53
+ import { useQuery as useQuery2 } from "@tanstack/react-query";
54
+ import { useMemo } from "react";
55
+
56
+ // src/modules-features/admin/core/core12196/F_core12196_Delete.tsx
57
+ import { jsx } from "react/jsx-runtime";
58
+ function F_core12196_Delete({
59
+ id,
60
+ contextData
61
+ }) {
62
+ return /* @__PURE__ */ jsx(
63
+ MyActionIconDelete,
64
+ {
65
+ contextData,
66
+ onSubmit: async () => await baseAxios_default.post("/Document/delete", { id })
67
+ }
68
+ );
69
+ }
70
+
71
+ // src/modules-features/admin/core/core18256/F_core18256_Select.tsx
72
+ import { Select } from "@mantine/core";
73
+ import { useQuery } from "@tanstack/react-query";
74
+ import { jsx as jsx2 } from "react/jsx-runtime";
75
+ function F_core18256_Select(_a) {
76
+ var _b = _a, { documentTypeId, label = "", dataMapper } = _b, rest = __objRest(_b, ["documentTypeId", "label", "dataMapper"]);
77
+ var _a2, _b2;
78
+ const query = useQuery({
79
+ queryKey: [`/DocumentAttribute/GetByType?documentType=${documentTypeId}`],
80
+ queryFn: async () => {
81
+ const result = (await baseAxios_default.get(`/DocumentAttribute/GetByType?documentType=${documentTypeId}`)).data.data;
82
+ return result;
83
+ }
84
+ });
85
+ if (query.isLoading) return "Loading...";
86
+ const data = (_a2 = query.data) == null ? void 0 : _a2.map((item) => {
87
+ var _a3;
88
+ if (dataMapper) return dataMapper(item);
89
+ return {
90
+ value: (_a3 = item.id) == null ? void 0 : _a3.toString(),
91
+ label: `${item.code}-${item.name}`
92
+ };
93
+ });
94
+ return /* @__PURE__ */ jsx2(
95
+ Select,
96
+ __spreadProps(__spreadValues({
97
+ label,
98
+ placeholder: `Ch\u1ECDn ${label == null ? void 0 : label.toLowerCase()}`,
99
+ data
100
+ }, rest), {
101
+ value: (_b2 = rest.value) == null ? void 0 : _b2.toString()
102
+ })
103
+ );
104
+ }
105
+
106
+ // src/modules-features/admin/core/core12196/F_core12196_Update.tsx
107
+ import { useForm } from "@mantine/form";
108
+ import { jsx as jsx3, jsxs } from "react/jsx-runtime";
109
+ function F_core12196_Update({
110
+ values,
111
+ FormTypeId
112
+ }) {
113
+ var _a;
114
+ const form = useForm({
115
+ initialValues: __spreadProps(__spreadValues({}, values), {
116
+ file: new File(
117
+ [],
118
+ (_a = values.path) == null ? void 0 : _a.split("/")[values.path.split("/").length - 1]
119
+ ),
120
+ promulgateDate: new Date(values.promulgateDate)
121
+ }),
122
+ validate: {
123
+ decisionCode: (value) => value ? null : "S\u1ED1 quy \u0111\u1ECBnh kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
124
+ promulgateDate: (value) => value ? null : "Ng\xE0y ban h\xE0nh kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
125
+ name: (value) => value ? null : "T\xEAn t\xE0i li\u1EC7u kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
126
+ documentAttributeId: (value) => value ? null : "Lo\u1EA1i v\u0103n b\u1EA3n kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
127
+ file: (value) => value ? null : "T\u1EC7p \u0111\xEDnh k\xE8m kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng"
128
+ }
129
+ });
130
+ return /* @__PURE__ */ jsxs(
131
+ MyActionIconUpdate,
132
+ {
133
+ form,
134
+ onSubmit: async (values2) => {
135
+ return await baseAxios_default.post("/Document/Update", __spreadProps(__spreadValues({}, values2), {
136
+ fileDetail: await utils_file_fileToAQDocumentType(values2.file)
137
+ }));
138
+ },
139
+ children: [
140
+ /* @__PURE__ */ jsx3(
141
+ MyTextInput,
142
+ __spreadValues({
143
+ withAsterisk: true,
144
+ label: "S\u1ED1 quy \u0111\u1ECBnh"
145
+ }, form.getInputProps("decisionCode"))
146
+ ),
147
+ /* @__PURE__ */ jsx3(
148
+ MyDateInput,
149
+ __spreadValues({
150
+ withAsterisk: true,
151
+ label: "Ng\xE0y ban h\xE0nh"
152
+ }, form.getInputProps("promulgateDate"))
153
+ ),
154
+ /* @__PURE__ */ jsx3(
155
+ MyTextInput,
156
+ __spreadValues({
157
+ withAsterisk: true,
158
+ label: "T\xEAn t\xE0i li\u1EC7u"
159
+ }, form.getInputProps("name"))
160
+ ),
161
+ /* @__PURE__ */ jsx3(
162
+ F_core18256_Select,
163
+ __spreadValues({
164
+ withAsterisk: true,
165
+ label: "Lo\u1EA1i v\u0103n b\u1EA3n",
166
+ documentTypeId: FormTypeId
167
+ }, form.getInputProps("documentAttributeId"))
168
+ ),
169
+ /* @__PURE__ */ jsx3(
170
+ MyFileInput,
171
+ __spreadValues({
172
+ withAsterisk: true,
173
+ label: "V\u0103n b\u1EA3n"
174
+ }, form.getInputProps("file"))
175
+ ),
176
+ /* @__PURE__ */ jsx3(
177
+ MyNumberInput,
178
+ __spreadValues({
179
+ label: "Th\u1EE9 t\u1EF1 hi\u1EC3n th\u1ECB tr\xEAn danh s\xE1ch"
180
+ }, form.getInputProps("orderBy"))
181
+ )
182
+ ]
183
+ }
184
+ );
185
+ }
186
+
187
+ // src/modules-features/admin/core/core12196/F_core12196_Read.tsx
188
+ import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
189
+ function F_core12196_Read({ FormTypeId }) {
190
+ var _a, _b, _c;
191
+ const documentAttributeQuery = useQuery2({
192
+ queryKey: ["F_core12196_Read", FormTypeId],
193
+ queryFn: async () => {
194
+ var _a2;
195
+ const result = await baseAxios_default.get("/DocumentAttribute/GetByType?", {
196
+ params: { documentType: FormTypeId }
197
+ });
198
+ return ((_a2 = result.data) == null ? void 0 : _a2.data) || [];
199
+ }
200
+ });
201
+ if (documentAttributeQuery.isLoading) return "Loading...";
202
+ if (documentAttributeQuery.isError) return "c\xF3 l\u1ED7i x\u1EA3y ra!";
203
+ if (((_a = documentAttributeQuery.data) == null ? void 0 : _a.length) == 0)
204
+ return /* @__PURE__ */ jsx4(Blockquote, { color: "yellow", children: "Ch\u01B0a c\xF3 lo\u1EA1i v\u0103n b\u1EA3n" });
205
+ return /* @__PURE__ */ jsx4(MyFlexColumn, { children: /* @__PURE__ */ jsx4(
206
+ Accordion,
207
+ {
208
+ variant: "contained",
209
+ defaultValue: (_b = documentAttributeQuery.data) == null ? void 0 : _b.map(
210
+ (item) => {
211
+ var _a2;
212
+ return (_a2 = item.id) == null ? void 0 : _a2.toString();
213
+ }
214
+ ),
215
+ multiple: true,
216
+ children: (_c = documentAttributeQuery.data) == null ? void 0 : _c.map((item, idx) => /* @__PURE__ */ jsx4(
217
+ SubRead,
218
+ {
219
+ name: item.name,
220
+ documentType: item.id,
221
+ FormTypeId
222
+ },
223
+ idx
224
+ ))
225
+ }
226
+ ) });
227
+ }
228
+ function SubRead({
229
+ name,
230
+ documentType,
231
+ FormTypeId
232
+ }) {
233
+ const documentQuery = useQuery2({
234
+ queryKey: ["SF2_3Read" + documentType],
235
+ queryFn: async () => {
236
+ const result = await baseAxios_default.get(
237
+ `/Document/GetByDocumentAttribute?id=${documentType}`
238
+ );
239
+ return result.data.data;
240
+ }
241
+ });
242
+ const columns = useMemo(
243
+ () => [
244
+ {
245
+ header: "S\u1ED1 quy \u0111\u1ECBnh",
246
+ accessorKey: "decisionCode"
247
+ },
248
+ {
249
+ header: "Ng\xE0y ban h\xE0nh",
250
+ accessorFn: (row) => U0DateToDDMMYYYString(new Date(row.promulgateDate))
251
+ },
252
+ {
253
+ header: "T\xEAn t\xE0i li\u1EC7u",
254
+ accessorKey: "name"
255
+ },
256
+ {
257
+ header: "File",
258
+ accessorFn: (row) => {
259
+ return /* @__PURE__ */ jsx4(MyCenterFull, { children: /* @__PURE__ */ jsx4(MyButtonViewPDF, { id: row.id }) });
260
+ }
261
+ }
262
+ ],
263
+ []
264
+ );
265
+ if (documentQuery.isLoading) return "Loading...";
266
+ if (documentQuery.isError) return "Error!";
267
+ return /* @__PURE__ */ jsxs2(Accordion.Item, { value: documentType.toString(), children: [
268
+ /* @__PURE__ */ jsx4(Accordion.Control, { children: name }),
269
+ /* @__PURE__ */ jsx4(Accordion.Panel, { children: /* @__PURE__ */ jsx4(
270
+ MyDataTable,
271
+ {
272
+ columns,
273
+ data: documentQuery.data,
274
+ renderRowActions: ({ row }) => /* @__PURE__ */ jsxs2(MyCenterFull, { children: [
275
+ /* @__PURE__ */ jsx4(
276
+ F_core12196_Update,
277
+ {
278
+ FormTypeId,
279
+ values: row.original
280
+ }
281
+ ),
282
+ /* @__PURE__ */ jsx4(
283
+ F_core12196_Delete,
284
+ {
285
+ id: row.original.id,
286
+ contextData: row.original.decisionCode
287
+ }
288
+ )
289
+ ] })
290
+ }
291
+ ) })
292
+ ] });
293
+ }
294
+
295
+ // src/constants/object/documentTypes.ts
296
+ var OBJECT_DOCUMENT_TYPES = {
297
+ Security: 1,
298
+ Refinement: 2,
299
+ Guideline: 3,
300
+ Regulations: 4,
301
+ Workflow: 5,
302
+ Form: 6
303
+ };
304
+
305
+ // src/modules-features/admin/core/core12196/F_core12196_Create.tsx
306
+ import { useForm as useForm2 } from "@mantine/form";
307
+ import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
308
+ function F_core12196_Create({ FormTypeId }) {
309
+ const form = useForm2({
310
+ mode: "uncontrolled",
311
+ validate: {
312
+ decisionCode: (value) => value ? null : "S\u1ED1 quy \u0111\u1ECBnh kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
313
+ promulgateDate: (value) => value ? null : "Ng\xE0y ban h\xE0nh kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
314
+ name: (value) => value ? null : "T\xEAn t\xE0i li\u1EC7u kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
315
+ documentAttributeId: (value) => value ? null : "Lo\u1EA1i v\u0103n b\u1EA3n kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
316
+ file: (value) => value ? null : "T\u1EC7p \u0111\xEDnh k\xE8m kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng"
317
+ }
318
+ });
319
+ return /* @__PURE__ */ jsxs3(
320
+ MyButtonCreate,
321
+ {
322
+ objectName: "V\u0103n b\u1EA3n quy \u0111\u1ECBnh t\u1ED5 ch\u1EE9c",
323
+ form,
324
+ onSubmit: async (values) => {
325
+ return await baseAxios_default.post("/Document/create", __spreadProps(__spreadValues({}, values), {
326
+ DocumentType: OBJECT_DOCUMENT_TYPES.Form,
327
+ fileDetail: await utils_file_fileToAQDocumentType(values.file)
328
+ }));
329
+ },
330
+ children: [
331
+ /* @__PURE__ */ jsx5(
332
+ MyTextInput,
333
+ __spreadValues({
334
+ withAsterisk: true,
335
+ label: "S\u1ED1 quy \u0111\u1ECBnh"
336
+ }, form.getInputProps("decisionCode"))
337
+ ),
338
+ /* @__PURE__ */ jsx5(
339
+ MyDateInput,
340
+ __spreadValues({
341
+ withAsterisk: true,
342
+ label: "Ng\xE0y ban h\xE0nh"
343
+ }, form.getInputProps("promulgateDate"))
344
+ ),
345
+ /* @__PURE__ */ jsx5(
346
+ MyTextInput,
347
+ __spreadValues({
348
+ withAsterisk: true,
349
+ label: "T\xEAn t\xE0i li\u1EC7u"
350
+ }, form.getInputProps("name"))
351
+ ),
352
+ /* @__PURE__ */ jsx5(
353
+ F_core18256_Select,
354
+ __spreadValues({
355
+ withAsterisk: true,
356
+ label: "Lo\u1EA1i v\u0103n b\u1EA3n",
357
+ documentTypeId: FormTypeId
358
+ }, form.getInputProps("documentAttributeId"))
359
+ ),
360
+ /* @__PURE__ */ jsx5(
361
+ MyFileInput,
362
+ __spreadValues({
363
+ withAsterisk: true,
364
+ label: "V\u0103n b\u1EA3n"
365
+ }, form.getInputProps("file"))
366
+ ),
367
+ /* @__PURE__ */ jsx5(
368
+ MyNumberInput,
369
+ __spreadValues({
370
+ label: "Th\u1EE9 t\u1EF1 hi\u1EC3n th\u1ECB tr\xEAn danh s\xE1ch"
371
+ }, form.getInputProps("orderBy"))
372
+ )
373
+ ]
374
+ }
375
+ );
376
+ }
377
+
378
+ // src/modules-features/admin/core/core12196/F_core12196.tsx
379
+ import { Paper as Paper2, Space as Space2 } from "@mantine/core";
380
+ import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
381
+ function F_core12196({
382
+ FormTypeId
383
+ }) {
384
+ return /* @__PURE__ */ jsxs4(Paper2, { p: "md", children: [
385
+ /* @__PURE__ */ jsx6(MyFlexEnd, { children: /* @__PURE__ */ jsx6(F_core12196_Create, { FormTypeId }) }),
386
+ /* @__PURE__ */ jsx6(Space2, {}),
387
+ /* @__PURE__ */ jsx6(F_core12196_Read, { FormTypeId })
388
+ ] });
389
+ }
390
+
391
+ // src/modules-features/admin/core/core16209/F_core16209.tsx
392
+ import { useQuery as useQuery3 } from "@tanstack/react-query";
393
+ import { useMemo as useMemo2 } from "react";
394
+
395
+ // src/modules-features/admin/core/core16209/F_core16209_Create.tsx
396
+ import { FileInput, Textarea } from "@mantine/core";
397
+ import { useForm as useForm3 } from "@mantine/form";
398
+ import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
399
+ function F_core16209_Create({
400
+ RefinementTypeId
401
+ }) {
402
+ const form = useForm3({
403
+ mode: "uncontrolled",
404
+ validate: {
405
+ meetingDate: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
406
+ departmentName: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
407
+ description: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
408
+ file: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
409
+ startDate: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
410
+ endDate: (value, values) => value && values.startDate && new Date(value) > new Date(values.startDate) ? null : "Ng\xE0y k\u1EBFt th\xFAc ph\u1EA3i l\u1EDBn h\u01A1n ng\xE0y b\u1EAFt \u0111\u1EA7u"
411
+ }
412
+ });
413
+ return /* @__PURE__ */ jsxs5(
414
+ MyButtonCreate,
415
+ {
416
+ objectName: "v\u0103n b\u1EA3n",
417
+ form,
418
+ onSubmit: async (values) => {
419
+ return await baseAxios_default.post("/Document/create", __spreadProps(__spreadValues({}, values), {
420
+ DocumentType: RefinementTypeId,
421
+ //1.4 Thông tin xây dựng, cải tiến, bảo trì hệ thống
422
+ fileDetail: await utils_file_fileToAQDocumentType(values.file)
423
+ }));
424
+ },
425
+ children: [
426
+ /* @__PURE__ */ jsx7(
427
+ MyDateInput,
428
+ __spreadValues({
429
+ withAsterisk: true,
430
+ label: "Ng\xE0y h\u1ECDp"
431
+ }, form.getInputProps("meetingDate"))
432
+ ),
433
+ /* @__PURE__ */ jsx7(
434
+ MyTextInput,
435
+ __spreadValues({
436
+ withAsterisk: true,
437
+ label: "\u0110\u01A1n v\u1ECB y\xEAu c\u1EA7u"
438
+ }, form.getInputProps("departmentName"))
439
+ ),
440
+ /* @__PURE__ */ jsx7(
441
+ MyTextInput,
442
+ __spreadValues({
443
+ withAsterisk: true,
444
+ label: "N\u1ED9i dung c\u1EA3i ti\u1EBFn"
445
+ }, form.getInputProps("description"))
446
+ ),
447
+ /* @__PURE__ */ jsx7(MyTextInput, __spreadValues({ label: "K\u1EBFt lu\u1EADn" }, form.getInputProps("conclusion"))),
448
+ /* @__PURE__ */ jsx7(
449
+ MyDateInput,
450
+ __spreadValues({
451
+ withAsterisk: true,
452
+ label: "Ng\xE0y b\u1EAFt \u0111\u1EA7u"
453
+ }, form.getInputProps("startDate"))
454
+ ),
455
+ /* @__PURE__ */ jsx7(
456
+ MyDateInput,
457
+ __spreadValues({
458
+ withAsterisk: true,
459
+ label: "Ng\xE0y k\u1EBFt th\xFAc"
460
+ }, form.getInputProps("endDate"))
461
+ ),
462
+ /* @__PURE__ */ jsx7(
463
+ FileInput,
464
+ __spreadValues({
465
+ placeholder: "T\u1EA3i l\xEAn t\xE0i li\u1EC7u",
466
+ withAsterisk: true,
467
+ label: "T\xE0i li\u1EC7u"
468
+ }, form.getInputProps("file"))
469
+ ),
470
+ /* @__PURE__ */ jsx7(Textarea, __spreadValues({ label: "Ghi ch\xFA" }, form.getInputProps("note")))
471
+ ]
472
+ }
473
+ );
474
+ }
475
+
476
+ // src/modules-features/admin/core/core16209/F_core16209_Delete.tsx
477
+ import { jsx as jsx8 } from "react/jsx-runtime";
478
+ function F_core16209_Delete({
479
+ id,
480
+ contextData
481
+ }) {
482
+ return /* @__PURE__ */ jsx8(
483
+ MyActionIconDelete,
484
+ {
485
+ contextData,
486
+ onSubmit: () => baseAxios_default.post("/Document/delete", { id })
487
+ }
488
+ );
489
+ }
490
+
491
+ // src/modules-features/admin/core/core16209/F_core16209_Update.tsx
492
+ import { FileInput as FileInput2, Textarea as Textarea2 } from "@mantine/core";
493
+ import { useForm as useForm4 } from "@mantine/form";
494
+ import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
495
+ function F_core16209_Update({ values }) {
496
+ var _a;
497
+ const form = useForm4({
498
+ mode: "uncontrolled",
499
+ initialValues: __spreadProps(__spreadValues({}, values), {
500
+ file: new File(
501
+ [],
502
+ (_a = values.path) == null ? void 0 : _a.split("/")[values.path.split("/").length - 1]
503
+ ),
504
+ startDate: new Date(values.startDate),
505
+ endDate: new Date(values.endDate),
506
+ meetingDate: new Date(values.meetingDate)
507
+ }),
508
+ validate: {
509
+ meetingDate: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
510
+ departmentName: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
511
+ description: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
512
+ file: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
513
+ startDate: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
514
+ endDate: (value, values2) => value && values2.startDate && new Date(value) > new Date(values2.startDate) ? null : "Ng\xE0y k\u1EBFt th\xFAc ph\u1EA3i l\u1EDBn h\u01A1n ng\xE0y b\u1EAFt \u0111\u1EA7u"
515
+ }
516
+ });
517
+ return /* @__PURE__ */ jsxs6(
518
+ MyActionIconUpdate,
519
+ {
520
+ form,
521
+ onSubmit: async (values2) => {
522
+ return await baseAxios_default.post("/Document/Update", __spreadProps(__spreadValues({}, values2), {
523
+ fileDetail: await utils_file_fileToAQDocumentType(values2.file)
524
+ }));
525
+ },
526
+ children: [
527
+ /* @__PURE__ */ jsx9(
528
+ MyDateInput,
529
+ __spreadValues({
530
+ withAsterisk: true,
531
+ label: "Ng\xE0y h\u1ECDp"
532
+ }, form.getInputProps("meetingDate"))
533
+ ),
534
+ /* @__PURE__ */ jsx9(
535
+ MyTextInput,
536
+ __spreadValues({
537
+ withAsterisk: true,
538
+ label: "\u0110\u01A1n v\u1ECB y\xEAu c\u1EA7u"
539
+ }, form.getInputProps("departmentName"))
540
+ ),
541
+ /* @__PURE__ */ jsx9(
542
+ MyTextInput,
543
+ __spreadValues({
544
+ withAsterisk: true,
545
+ label: "N\u1ED9i dung c\u1EA3i ti\u1EBFn"
546
+ }, form.getInputProps("description"))
547
+ ),
548
+ /* @__PURE__ */ jsx9(MyTextInput, __spreadValues({ label: "K\u1EBFt lu\u1EADn" }, form.getInputProps("conclusion"))),
549
+ /* @__PURE__ */ jsx9(
550
+ MyDateInput,
551
+ __spreadValues({
552
+ withAsterisk: true,
553
+ label: "Ng\xE0y b\u1EAFt \u0111\u1EA7u"
554
+ }, form.getInputProps("startDate"))
555
+ ),
556
+ /* @__PURE__ */ jsx9(
557
+ MyDateInput,
558
+ __spreadValues({
559
+ withAsterisk: true,
560
+ label: "Ng\xE0y k\u1EBFt th\xFAc"
561
+ }, form.getInputProps("endDate"))
562
+ ),
563
+ /* @__PURE__ */ jsx9(
564
+ FileInput2,
565
+ __spreadValues({
566
+ placeholder: "T\u1EA3i l\xEAn t\xE0i li\u1EC7u",
567
+ withAsterisk: true,
568
+ label: "T\xE0i li\u1EC7u"
569
+ }, form.getInputProps("file"))
570
+ ),
571
+ /* @__PURE__ */ jsx9(Textarea2, __spreadValues({ label: "Ghi ch\xFA" }, form.getInputProps("note")))
572
+ ]
573
+ }
574
+ );
575
+ }
576
+
577
+ // src/modules-features/admin/core/core16209/F_core16209.tsx
578
+ import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
579
+ function F_core16209({ RefinementTypeId }) {
580
+ const query = useQuery3({
581
+ queryKey: ["F_core16209_Read"],
582
+ queryFn: async () => {
583
+ var _a;
584
+ const result = await baseAxios_default.get(
585
+ `/Document/GetByType?documentType=${RefinementTypeId}`
586
+ );
587
+ return ((_a = result.data) == null ? void 0 : _a.data) || [];
588
+ }
589
+ });
590
+ const columns = useMemo2(
591
+ () => [
592
+ {
593
+ header: "\u0110\u01A1n v\u1ECB y\xEAu c\u1EA7u",
594
+ accessorKey: "departmentName"
595
+ },
596
+ {
597
+ header: "N\u1ED9i dung c\u1EA3i ti\u1EBFn",
598
+ accessorKey: "description"
599
+ },
600
+ {
601
+ header: "Ng\xE0y b\u1EAFt \u0111\u1EA7u",
602
+ accessorFn: (row) => U0DateToDDMMYYYString(new Date(row.startDate))
603
+ },
604
+ {
605
+ header: "Ng\xE0y k\u1EBFt th\xFAc",
606
+ accessorFn: (row) => U0DateToDDMMYYYString(new Date(row.endDate))
607
+ },
608
+ {
609
+ header: "File",
610
+ accessorFn: (row) => {
611
+ return /* @__PURE__ */ jsx10(MyCenterFull, { children: /* @__PURE__ */ jsx10(MyButtonViewPDF, { id: row.id }) });
612
+ }
613
+ }
614
+ ],
615
+ []
616
+ );
617
+ if (query.isLoading) return "Loading...";
618
+ if (query.isError) return "c\xF3 l\u1ED7i x\u1EA3y ra!";
619
+ return /* @__PURE__ */ jsx10(
620
+ MyDataTable,
621
+ {
622
+ columns,
623
+ data: query.data,
624
+ renderTopToolbarCustomActions: () => /* @__PURE__ */ jsx10(F_core16209_Create, { RefinementTypeId }),
625
+ renderRowActions: ({ row }) => {
626
+ return /* @__PURE__ */ jsxs7(MyCenterFull, { children: [
627
+ /* @__PURE__ */ jsx10(F_core16209_Update, { values: row.original }),
628
+ /* @__PURE__ */ jsx10(
629
+ F_core16209_Delete,
630
+ {
631
+ id: row.original.id,
632
+ contextData: row.original.departmentName
633
+ }
634
+ )
635
+ ] });
636
+ }
637
+ }
638
+ );
639
+ }
640
+
641
+ // src/modules-features/admin/core/core18256/F_core18256.tsx
642
+ import { Tabs } from "@mantine/core";
643
+
644
+ // src/modules-features/admin/core/core18256/F_core18256_Read.tsx
645
+ import { useQuery as useQuery4 } from "@tanstack/react-query";
646
+ import { useMemo as useMemo3 } from "react";
647
+
648
+ // src/modules-features/admin/core/core18256/F_core18256_Create.tsx
649
+ import { useForm as useForm5 } from "@mantine/form";
650
+ import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
651
+ function F_core18256_Create({ documentType }) {
652
+ const form = useForm5({
653
+ mode: "uncontrolled",
654
+ initialValues: {
655
+ name: "",
656
+ code: "",
657
+ documentType
658
+ },
659
+ validate: {
660
+ name: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng"
661
+ }
662
+ });
663
+ return /* @__PURE__ */ jsxs8(MyButtonCreate, { objectName: "Lo\u1EA1i v\u0103n b\u1EA3n", form, onSubmit: (values) => baseAxios_default.post("/DocumentAttribute/Create", values), children: [
664
+ /* @__PURE__ */ jsx11(MyTextInput, __spreadValues({ label: "M\xE3 lo\u1EA1i v\u0103n b\u1EA3n" }, form.getInputProps("code"))),
665
+ /* @__PURE__ */ jsx11(MyTextInput, __spreadValues({ label: "T\xEAn lo\u1EA1i v\u0103n b\u1EA3n" }, form.getInputProps("name")))
666
+ ] });
667
+ }
668
+
669
+ // src/modules-features/admin/core/core18256/F_core18256_Delete.tsx
670
+ import { jsx as jsx12 } from "react/jsx-runtime";
671
+ function F_core18256_Delete({ id }) {
672
+ return /* @__PURE__ */ jsx12(
673
+ MyActionIconDelete,
674
+ {
675
+ onSubmit: async () => await baseAxios_default.post("/DocumentAttribute/Delete", { id })
676
+ }
677
+ );
678
+ }
679
+
680
+ // src/modules-features/admin/core/core18256/F_core18256_Update.tsx
681
+ import { useForm as useForm6 } from "@mantine/form";
682
+ import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
683
+ function F_core18256_Update({ values }) {
684
+ const form = useForm6({
685
+ initialValues: values
686
+ });
687
+ return /* @__PURE__ */ jsxs9(MyActionIconUpdate, { form, onSubmit: async (values2) => await baseAxios_default.post("/DocumentAttribute/Update", values2), children: [
688
+ /* @__PURE__ */ jsx13(MyTextInput, __spreadValues({ label: "M\xE3 lo\u1EA1i v\u0103n b\u1EA3n" }, form.getInputProps("code"))),
689
+ /* @__PURE__ */ jsx13(MyTextInput, __spreadValues({ label: "T\xEAn lo\u1EA1i v\u0103n b\u1EA3n" }, form.getInputProps("name")))
690
+ ] });
691
+ }
692
+
693
+ // src/modules-features/admin/core/core18256/F_core18256_Read.tsx
694
+ import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
695
+ function F_core18256_Read({ documentType }) {
696
+ const documentAttributeQuery = useQuery4({
697
+ queryKey: ["F_core18256_Read", documentType],
698
+ queryFn: async () => {
699
+ var _a;
700
+ const result = await baseAxios_default.get("/DocumentAttribute/GetByType?", { params: { documentType } });
701
+ return ((_a = result.data) == null ? void 0 : _a.data) || [];
702
+ }
703
+ });
704
+ const columns = useMemo3(
705
+ () => [
706
+ {
707
+ header: "M\xE3 lo\u1EA1i v\u0103n b\u1EA3n",
708
+ accessorKey: "code"
709
+ },
710
+ {
711
+ header: "T\xEAn Lo\u1EA1i V\u0103n B\u1EA3n",
712
+ accessorKey: "name"
713
+ }
714
+ ],
715
+ []
716
+ );
717
+ if (documentAttributeQuery.isLoading) return "\u0110ang t\u1EA3i d\u1EEF li\u1EC7u...";
718
+ if (documentAttributeQuery.isError) return "C\xF3 l\u1ED7i x\u1EA3y ra!";
719
+ return /* @__PURE__ */ jsx14(
720
+ MyDataTable,
721
+ {
722
+ columns,
723
+ enableRowNumbers: true,
724
+ data: documentAttributeQuery.data,
725
+ renderTopToolbarCustomActions: () => /* @__PURE__ */ jsx14(F_core18256_Create, { documentType }),
726
+ renderRowActions: ({ row }) => {
727
+ return /* @__PURE__ */ jsxs10(MyCenterFull, { children: [
728
+ /* @__PURE__ */ jsx14(F_core18256_Update, { values: row.original }),
729
+ /* @__PURE__ */ jsx14(F_core18256_Delete, { id: row.original.id })
730
+ ] });
731
+ }
732
+ }
733
+ );
734
+ }
735
+
736
+ // src/modules-features/admin/core/core18256/F_core18256.tsx
737
+ import { jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
738
+ var tabData = [
739
+ { label: "1. V\u0103n b\u1EA3n quy \u0111\u1ECBnh" },
740
+ { label: "2. Quy tr\xECnh x\u1EED l\xFD c\xF4ng vi\u1EC7c" },
741
+ { label: "3. Danh m\u1EE5c bi\u1EC3u m\u1EABu" }
742
+ ];
743
+ function F_core18256() {
744
+ return /* @__PURE__ */ jsxs11(MyTab, { tabList: tabData, children: [
745
+ /* @__PURE__ */ jsx15(Tabs.Panel, { value: "1. V\u0103n b\u1EA3n quy \u0111\u1ECBnh", children: /* @__PURE__ */ jsx15(F_core18256_Read, { documentType: OBJECT_DOCUMENT_TYPES.Regulations }) }),
746
+ /* @__PURE__ */ jsx15(Tabs.Panel, { value: "2. Quy tr\xECnh x\u1EED l\xFD c\xF4ng vi\u1EC7c", children: /* @__PURE__ */ jsx15(F_core18256_Read, { documentType: OBJECT_DOCUMENT_TYPES.Workflow }) }),
747
+ /* @__PURE__ */ jsx15(Tabs.Panel, { value: "3. Danh m\u1EE5c bi\u1EC3u m\u1EABu", children: /* @__PURE__ */ jsx15(F_core18256_Read, { documentType: OBJECT_DOCUMENT_TYPES.Form }) })
748
+ ] });
749
+ }
750
+
751
+ // src/modules-features/admin/core/core26965/F_core26965_Create.tsx
752
+ import { useForm as useForm7 } from "@mantine/form";
753
+ import { jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
754
+ function F_core26965_Create({
755
+ RegulationsTypeId
756
+ }) {
757
+ const form = useForm7({
758
+ mode: "uncontrolled",
759
+ validate: {
760
+ decisionCode: (value) => value ? null : "S\u1ED1 quy \u0111\u1ECBnh kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
761
+ promulgateDate: (value) => value ? null : "Ng\xE0y ban h\xE0nh kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
762
+ name: (value) => value ? null : "T\xEAn t\xE0i li\u1EC7u kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
763
+ documentAttributeId: (value) => value ? null : "Lo\u1EA1i v\u0103n b\u1EA3n kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
764
+ file: (value) => value ? null : "T\u1EC7p \u0111\xEDnh k\xE8m kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng"
765
+ }
766
+ });
767
+ return /* @__PURE__ */ jsxs12(
768
+ MyButtonCreate,
769
+ {
770
+ objectName: "V\u0103n b\u1EA3n quy \u0111\u1ECBnh t\u1ED5 ch\u1EE9c",
771
+ form,
772
+ onSubmit: async (values) => {
773
+ return await baseAxios_default.post("/Document/create", __spreadProps(__spreadValues({}, values), {
774
+ DocumentType: RegulationsTypeId,
775
+ fileDetail: await utils_file_fileToAQDocumentType(values.file)
776
+ }));
777
+ },
778
+ children: [
779
+ /* @__PURE__ */ jsx16(
780
+ MyTextInput,
781
+ __spreadValues({
782
+ withAsterisk: true,
783
+ label: "S\u1ED1 quy \u0111\u1ECBnh"
784
+ }, form.getInputProps("decisionCode"))
785
+ ),
786
+ /* @__PURE__ */ jsx16(
787
+ MyDateInput,
788
+ __spreadValues({
789
+ withAsterisk: true,
790
+ label: "Ng\xE0y ban h\xE0nh"
791
+ }, form.getInputProps("promulgateDate"))
792
+ ),
793
+ /* @__PURE__ */ jsx16(
794
+ MyTextInput,
795
+ __spreadValues({
796
+ withAsterisk: true,
797
+ label: "T\xEAn t\xE0i li\u1EC7u"
798
+ }, form.getInputProps("name"))
799
+ ),
800
+ /* @__PURE__ */ jsx16(
801
+ F_core18256_Select,
802
+ __spreadValues({
803
+ withAsterisk: true,
804
+ label: "Lo\u1EA1i v\u0103n b\u1EA3n",
805
+ documentTypeId: RegulationsTypeId
806
+ }, form.getInputProps("documentAttributeId"))
807
+ ),
808
+ /* @__PURE__ */ jsx16(
809
+ MyFileInput,
810
+ __spreadValues({
811
+ withAsterisk: true,
812
+ label: "V\u0103n b\u1EA3n"
813
+ }, form.getInputProps("file"))
814
+ ),
815
+ /* @__PURE__ */ jsx16(
816
+ MyNumberInput,
817
+ __spreadValues({
818
+ label: "Th\u1EE9 t\u1EF1 hi\u1EC3n th\u1ECB tr\xEAn danh s\xE1ch"
819
+ }, form.getInputProps("orderBy"))
820
+ )
821
+ ]
822
+ }
823
+ );
824
+ }
825
+
826
+ // src/modules-features/admin/core/core26965/F_core26965_Read.tsx
827
+ import { Accordion as Accordion2, Blockquote as Blockquote2 } from "@mantine/core";
828
+ import { useQuery as useQuery5 } from "@tanstack/react-query";
829
+ import { useMemo as useMemo4 } from "react";
830
+
831
+ // src/modules-features/admin/core/core26965/F_core26965_Delete.tsx
832
+ import { jsx as jsx17 } from "react/jsx-runtime";
833
+ function F_core26965_Delete({
834
+ id,
835
+ contextData
836
+ }) {
837
+ return /* @__PURE__ */ jsx17(
838
+ MyActionIconDelete,
839
+ {
840
+ contextData,
841
+ onSubmit: async () => await baseAxios_default.post("/Document/delete", { id })
842
+ }
843
+ );
844
+ }
845
+
846
+ // src/modules-features/admin/core/core26965/F_core26965_Update.tsx
847
+ import { useForm as useForm8 } from "@mantine/form";
848
+ import { jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
849
+ function F_core26965_Update({
850
+ values,
851
+ RegulationsTypeId
852
+ }) {
853
+ var _a;
854
+ const form = useForm8({
855
+ initialValues: __spreadProps(__spreadValues({}, values), {
856
+ file: new File(
857
+ [],
858
+ (_a = values.path) == null ? void 0 : _a.split("/")[values.path.split("/").length - 1]
859
+ ),
860
+ promulgateDate: new Date(values.promulgateDate)
861
+ }),
862
+ validate: {
863
+ decisionCode: (value) => value ? null : "S\u1ED1 quy \u0111\u1ECBnh kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
864
+ promulgateDate: (value) => value ? null : "Ng\xE0y ban h\xE0nh kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
865
+ name: (value) => value ? null : "T\xEAn t\xE0i li\u1EC7u kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
866
+ documentAttributeId: (value) => value ? null : "Lo\u1EA1i v\u0103n b\u1EA3n kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
867
+ file: (value) => value ? null : "T\u1EC7p \u0111\xEDnh k\xE8m kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng"
868
+ }
869
+ });
870
+ return /* @__PURE__ */ jsxs13(
871
+ MyActionIconUpdate,
872
+ {
873
+ form,
874
+ onSubmit: async (values2) => {
875
+ return await baseAxios_default.post("/Document/Update", __spreadProps(__spreadValues({}, values2), {
876
+ fileDetail: await utils_file_fileToAQDocumentType(values2.file)
877
+ }));
878
+ },
879
+ children: [
880
+ /* @__PURE__ */ jsx18(
881
+ MyTextInput,
882
+ __spreadValues({
883
+ withAsterisk: true,
884
+ label: "S\u1ED1 quy \u0111\u1ECBnh"
885
+ }, form.getInputProps("decisionCode"))
886
+ ),
887
+ /* @__PURE__ */ jsx18(
888
+ MyDateInput,
889
+ __spreadValues({
890
+ withAsterisk: true,
891
+ label: "Ng\xE0y ban h\xE0nh"
892
+ }, form.getInputProps("promulgateDate"))
893
+ ),
894
+ /* @__PURE__ */ jsx18(
895
+ MyTextInput,
896
+ __spreadValues({
897
+ withAsterisk: true,
898
+ label: "T\xEAn t\xE0i li\u1EC7u"
899
+ }, form.getInputProps("name"))
900
+ ),
901
+ /* @__PURE__ */ jsx18(
902
+ F_core18256_Select,
903
+ __spreadValues({
904
+ withAsterisk: true,
905
+ label: "Lo\u1EA1i v\u0103n b\u1EA3n",
906
+ documentTypeId: RegulationsTypeId
907
+ }, form.getInputProps("documentAttributeId"))
908
+ ),
909
+ /* @__PURE__ */ jsx18(
910
+ MyFileInput,
911
+ __spreadValues({
912
+ withAsterisk: true,
913
+ label: "V\u0103n b\u1EA3n"
914
+ }, form.getInputProps("file"))
915
+ ),
916
+ /* @__PURE__ */ jsx18(
917
+ MyNumberInput,
918
+ __spreadValues({
919
+ label: "Th\u1EE9 t\u1EF1 hi\u1EC3n th\u1ECB tr\xEAn danh s\xE1ch"
920
+ }, form.getInputProps("orderBy"))
921
+ )
922
+ ]
923
+ }
924
+ );
925
+ }
926
+
927
+ // src/modules-features/admin/core/core26965/F_core26965_Read.tsx
928
+ import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
929
+ function F_core26965_Read({
930
+ RegulationsTypeId
931
+ }) {
932
+ var _a, _b, _c;
933
+ const documentAttributeQuery = useQuery5({
934
+ queryKey: ["F_core26965_Read", RegulationsTypeId],
935
+ queryFn: async () => {
936
+ var _a2;
937
+ const result = await baseAxios_default.get("/DocumentAttribute/GetByType?", {
938
+ params: { documentType: RegulationsTypeId }
939
+ });
940
+ return ((_a2 = result.data) == null ? void 0 : _a2.data) || [];
941
+ }
942
+ });
943
+ if (documentAttributeQuery.isLoading) return "Loading...";
944
+ if (documentAttributeQuery.isError) return "c\xF3 l\u1ED7i x\u1EA3y ra!";
945
+ if (((_a = documentAttributeQuery.data) == null ? void 0 : _a.length) == 0)
946
+ return /* @__PURE__ */ jsx19(Blockquote2, { color: "yellow", children: "Ch\u01B0a c\xF3 lo\u1EA1i v\u0103n b\u1EA3n" });
947
+ return /* @__PURE__ */ jsx19(MyFlexColumn, { children: /* @__PURE__ */ jsx19(
948
+ Accordion2,
949
+ {
950
+ variant: "contained",
951
+ defaultValue: (_b = documentAttributeQuery.data) == null ? void 0 : _b.map(
952
+ (item) => {
953
+ var _a2;
954
+ return (_a2 = item.id) == null ? void 0 : _a2.toString();
955
+ }
956
+ ),
957
+ multiple: true,
958
+ children: (_c = documentAttributeQuery.data) == null ? void 0 : _c.map((item, idx) => /* @__PURE__ */ jsx19(
959
+ SubRead2,
960
+ {
961
+ name: item.name,
962
+ documentType: item.id,
963
+ RegulationsTypeId
964
+ },
965
+ idx
966
+ ))
967
+ }
968
+ ) });
969
+ }
970
+ function SubRead2({
971
+ name,
972
+ documentType,
973
+ RegulationsTypeId
974
+ }) {
975
+ const documentQuery = useQuery5({
976
+ queryKey: ["SubRead" + documentType],
977
+ queryFn: async () => {
978
+ const result = await baseAxios_default.get(
979
+ `/Document/GetByDocumentAttribute?id=${documentType}`
980
+ );
981
+ return result.data.data;
982
+ }
983
+ });
984
+ const columns = useMemo4(
985
+ () => [
986
+ {
987
+ header: "S\u1ED1 quy \u0111\u1ECBnh",
988
+ accessorKey: "decisionCode"
989
+ },
990
+ {
991
+ header: "Ng\xE0y ban h\xE0nh",
992
+ accessorFn: (row) => U0DateToDDMMYYYString(new Date(row.promulgateDate))
993
+ },
994
+ {
995
+ header: "T\xEAn t\xE0i li\u1EC7u",
996
+ accessorKey: "name"
997
+ },
998
+ {
999
+ header: "File",
1000
+ accessorFn: (row) => {
1001
+ return /* @__PURE__ */ jsx19(MyCenterFull, { children: /* @__PURE__ */ jsx19(MyButtonViewPDF, { id: row.id }) });
1002
+ }
1003
+ }
1004
+ ],
1005
+ []
1006
+ );
1007
+ if (documentQuery.isLoading) return "Loading...";
1008
+ if (documentQuery.isError) return "Error!";
1009
+ return /* @__PURE__ */ jsxs14(Accordion2.Item, { value: documentType.toString(), children: [
1010
+ /* @__PURE__ */ jsx19(Accordion2.Control, { children: name }),
1011
+ /* @__PURE__ */ jsx19(Accordion2.Panel, { children: /* @__PURE__ */ jsx19(
1012
+ MyDataTable,
1013
+ {
1014
+ columns,
1015
+ data: documentQuery.data,
1016
+ renderRowActions: ({ row }) => /* @__PURE__ */ jsxs14(MyCenterFull, { children: [
1017
+ /* @__PURE__ */ jsx19(
1018
+ F_core26965_Update,
1019
+ {
1020
+ RegulationsTypeId,
1021
+ values: row.original
1022
+ }
1023
+ ),
1024
+ /* @__PURE__ */ jsx19(
1025
+ F_core26965_Delete,
1026
+ {
1027
+ id: row.original.id,
1028
+ contextData: row.original.decisionCode
1029
+ }
1030
+ )
1031
+ ] })
1032
+ }
1033
+ ) })
1034
+ ] });
1035
+ }
1036
+
1037
+ // src/modules-features/admin/core/core26965/F_core26965.tsx
1038
+ import { Paper as Paper3, Space as Space3 } from "@mantine/core";
1039
+ import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
1040
+ function F_core26965({ RegulationsTypeId }) {
1041
+ return /* @__PURE__ */ jsxs15(Paper3, { p: "md", children: [
1042
+ /* @__PURE__ */ jsx20(MyFlexEnd, { children: /* @__PURE__ */ jsx20(F_core26965_Create, { RegulationsTypeId }) }),
1043
+ /* @__PURE__ */ jsx20(Space3, {}),
1044
+ /* @__PURE__ */ jsx20(F_core26965_Read, { RegulationsTypeId })
1045
+ ] });
1046
+ }
1047
+
1048
+ // src/modules-features/admin/core/core27311/F_core27311_Create.tsx
1049
+ import { useForm as useForm9 } from "@mantine/form";
1050
+ import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
1051
+ function F_core27311_Create({
1052
+ WorkflowTypeId
1053
+ }) {
1054
+ const form = useForm9({
1055
+ mode: "uncontrolled",
1056
+ validate: {
1057
+ decisionCode: (value) => value ? null : "S\u1ED1 quy \u0111\u1ECBnh kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
1058
+ promulgateDate: (value) => value ? null : "Ng\xE0y ban h\xE0nh kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
1059
+ name: (value) => value ? null : "T\xEAn t\xE0i li\u1EC7u kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
1060
+ documentAttributeId: (value) => value ? null : "Lo\u1EA1i v\u0103n b\u1EA3n kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
1061
+ file: (value) => value ? null : "T\u1EC7p \u0111\xEDnh k\xE8m kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng"
1062
+ }
1063
+ });
1064
+ return /* @__PURE__ */ jsxs16(
1065
+ MyButtonCreate,
1066
+ {
1067
+ objectName: "V\u0103n b\u1EA3n quy \u0111\u1ECBnh t\u1ED5 ch\u1EE9c",
1068
+ form,
1069
+ onSubmit: async (values) => {
1070
+ return await baseAxios_default.post("/Document/create", __spreadProps(__spreadValues({}, values), {
1071
+ DocumentType: WorkflowTypeId,
1072
+ fileDetail: await utils_file_fileToAQDocumentType(values.file)
1073
+ }));
1074
+ },
1075
+ children: [
1076
+ /* @__PURE__ */ jsx21(
1077
+ MyTextInput,
1078
+ __spreadValues({
1079
+ withAsterisk: true,
1080
+ label: "S\u1ED1 quy \u0111\u1ECBnh"
1081
+ }, form.getInputProps("decisionCode"))
1082
+ ),
1083
+ /* @__PURE__ */ jsx21(
1084
+ MyDateInput,
1085
+ __spreadValues({
1086
+ withAsterisk: true,
1087
+ label: "Ng\xE0y ban h\xE0nh"
1088
+ }, form.getInputProps("promulgateDate"))
1089
+ ),
1090
+ /* @__PURE__ */ jsx21(
1091
+ MyTextInput,
1092
+ __spreadValues({
1093
+ withAsterisk: true,
1094
+ label: "T\xEAn t\xE0i li\u1EC7u"
1095
+ }, form.getInputProps("name"))
1096
+ ),
1097
+ /* @__PURE__ */ jsx21(
1098
+ F_core18256_Select,
1099
+ __spreadValues({
1100
+ withAsterisk: true,
1101
+ label: "Lo\u1EA1i v\u0103n b\u1EA3n",
1102
+ documentTypeId: WorkflowTypeId
1103
+ }, form.getInputProps("documentAttributeId"))
1104
+ ),
1105
+ /* @__PURE__ */ jsx21(
1106
+ MyFileInput,
1107
+ __spreadValues({
1108
+ withAsterisk: true,
1109
+ label: "V\u0103n b\u1EA3n"
1110
+ }, form.getInputProps("file"))
1111
+ ),
1112
+ /* @__PURE__ */ jsx21(
1113
+ MyNumberInput,
1114
+ __spreadValues({
1115
+ label: "Th\u1EE9 t\u1EF1 hi\u1EC3n th\u1ECB tr\xEAn danh s\xE1ch"
1116
+ }, form.getInputProps("orderBy"))
1117
+ )
1118
+ ]
1119
+ }
1120
+ );
1121
+ }
1122
+
1123
+ // src/modules-features/admin/core/core27311/F_core27311_Read.tsx
1124
+ import { Accordion as Accordion3, Blockquote as Blockquote3 } from "@mantine/core";
1125
+ import { useQuery as useQuery6 } from "@tanstack/react-query";
1126
+ import { useMemo as useMemo5 } from "react";
1127
+
1128
+ // src/modules-features/admin/core/core27311/F_core27311_Delete.tsx
1129
+ import { jsx as jsx22 } from "react/jsx-runtime";
1130
+ function F_core27311_Delete({
1131
+ id,
1132
+ contextData
1133
+ }) {
1134
+ return /* @__PURE__ */ jsx22(
1135
+ MyActionIconDelete,
1136
+ {
1137
+ contextData,
1138
+ onSubmit: async () => await baseAxios_default.post("/Document/delete", { id })
1139
+ }
1140
+ );
1141
+ }
1142
+
1143
+ // src/modules-features/admin/core/core27311/F_core27311_Update.tsx
1144
+ import { useForm as useForm10 } from "@mantine/form";
1145
+ import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
1146
+ function F_core27311_Update({
1147
+ values,
1148
+ WorkflowTypeId
1149
+ }) {
1150
+ var _a;
1151
+ const form = useForm10({
1152
+ initialValues: __spreadProps(__spreadValues({}, values), {
1153
+ file: new File(
1154
+ [],
1155
+ (_a = values.path) == null ? void 0 : _a.split("/")[values.path.split("/").length - 1]
1156
+ ),
1157
+ promulgateDate: new Date(values.promulgateDate)
1158
+ }),
1159
+ validate: {
1160
+ decisionCode: (value) => value ? null : "S\u1ED1 quy \u0111\u1ECBnh kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
1161
+ promulgateDate: (value) => value ? null : "Ng\xE0y ban h\xE0nh kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
1162
+ name: (value) => value ? null : "T\xEAn t\xE0i li\u1EC7u kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
1163
+ documentAttributeId: (value) => value ? null : "Lo\u1EA1i v\u0103n b\u1EA3n kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
1164
+ file: (value) => value ? null : "T\u1EC7p \u0111\xEDnh k\xE8m kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng"
1165
+ }
1166
+ });
1167
+ return /* @__PURE__ */ jsxs17(
1168
+ MyActionIconUpdate,
1169
+ {
1170
+ form,
1171
+ onSubmit: async (values2) => {
1172
+ return await baseAxios_default.post("/Document/Update", __spreadProps(__spreadValues({}, values2), {
1173
+ fileDetail: await utils_file_fileToAQDocumentType(values2.file)
1174
+ }));
1175
+ },
1176
+ children: [
1177
+ /* @__PURE__ */ jsx23(
1178
+ MyTextInput,
1179
+ __spreadValues({
1180
+ withAsterisk: true,
1181
+ label: "S\u1ED1 quy \u0111\u1ECBnh"
1182
+ }, form.getInputProps("decisionCode"))
1183
+ ),
1184
+ /* @__PURE__ */ jsx23(
1185
+ MyDateInput,
1186
+ __spreadValues({
1187
+ withAsterisk: true,
1188
+ label: "Ng\xE0y ban h\xE0nh"
1189
+ }, form.getInputProps("promulgateDate"))
1190
+ ),
1191
+ /* @__PURE__ */ jsx23(
1192
+ MyTextInput,
1193
+ __spreadValues({
1194
+ withAsterisk: true,
1195
+ label: "T\xEAn t\xE0i li\u1EC7u"
1196
+ }, form.getInputProps("name"))
1197
+ ),
1198
+ /* @__PURE__ */ jsx23(
1199
+ F_core18256_Select,
1200
+ __spreadValues({
1201
+ withAsterisk: true,
1202
+ label: "Lo\u1EA1i v\u0103n b\u1EA3n",
1203
+ documentTypeId: WorkflowTypeId
1204
+ }, form.getInputProps("documentAttributeId"))
1205
+ ),
1206
+ /* @__PURE__ */ jsx23(
1207
+ MyFileInput,
1208
+ __spreadValues({
1209
+ withAsterisk: true,
1210
+ label: "V\u0103n b\u1EA3n"
1211
+ }, form.getInputProps("file"))
1212
+ ),
1213
+ /* @__PURE__ */ jsx23(
1214
+ MyNumberInput,
1215
+ __spreadValues({
1216
+ label: "Th\u1EE9 t\u1EF1 hi\u1EC3n th\u1ECB tr\xEAn danh s\xE1ch"
1217
+ }, form.getInputProps("orderBy"))
1218
+ )
1219
+ ]
1220
+ }
1221
+ );
1222
+ }
1223
+
1224
+ // src/modules-features/admin/core/core27311/F_core27311_Read.tsx
1225
+ import { jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
1226
+ function F_core27311_Read({
1227
+ WorkflowTypeId
1228
+ }) {
1229
+ var _a, _b, _c;
1230
+ const documentAttributeQuery = useQuery6({
1231
+ queryKey: ["F_core27311_Read", WorkflowTypeId],
1232
+ queryFn: async () => {
1233
+ var _a2;
1234
+ const result = await baseAxios_default.get("/DocumentAttribute/GetByType?", {
1235
+ params: { documentType: WorkflowTypeId }
1236
+ });
1237
+ return ((_a2 = result.data) == null ? void 0 : _a2.data) || [];
1238
+ }
1239
+ });
1240
+ if (documentAttributeQuery.isLoading) return "Loading...";
1241
+ if (documentAttributeQuery.isError) return "c\xF3 l\u1ED7i x\u1EA3y ra!";
1242
+ if (((_a = documentAttributeQuery.data) == null ? void 0 : _a.length) == 0)
1243
+ return /* @__PURE__ */ jsx24(Blockquote3, { color: "yellow", children: "Ch\u01B0a c\xF3 lo\u1EA1i v\u0103n b\u1EA3n" });
1244
+ return /* @__PURE__ */ jsx24(MyFlexColumn, { children: /* @__PURE__ */ jsx24(
1245
+ Accordion3,
1246
+ {
1247
+ variant: "contained",
1248
+ defaultValue: (_b = documentAttributeQuery.data) == null ? void 0 : _b.map(
1249
+ (item) => {
1250
+ var _a2;
1251
+ return (_a2 = item.id) == null ? void 0 : _a2.toString();
1252
+ }
1253
+ ),
1254
+ multiple: true,
1255
+ children: (_c = documentAttributeQuery.data) == null ? void 0 : _c.map((item, idx) => /* @__PURE__ */ jsx24(
1256
+ SubRead3,
1257
+ {
1258
+ name: item.name,
1259
+ documentType: item.id,
1260
+ WorkflowTypeId
1261
+ },
1262
+ idx
1263
+ ))
1264
+ }
1265
+ ) });
1266
+ }
1267
+ function SubRead3({
1268
+ name,
1269
+ documentType,
1270
+ WorkflowTypeId
1271
+ }) {
1272
+ const documentQuery = useQuery6({
1273
+ queryKey: ["SubRead" + documentType],
1274
+ queryFn: async () => {
1275
+ const result = await baseAxios_default.get(
1276
+ `/Document/GetByDocumentAttribute?id=${documentType}`
1277
+ );
1278
+ return result.data.data;
1279
+ }
1280
+ });
1281
+ const columns = useMemo5(
1282
+ () => [
1283
+ {
1284
+ header: "S\u1ED1 quy \u0111\u1ECBnh",
1285
+ accessorKey: "decisionCode"
1286
+ },
1287
+ {
1288
+ header: "Ng\xE0y ban h\xE0nh",
1289
+ accessorFn: (row) => U0DateToDDMMYYYString(new Date(row.promulgateDate))
1290
+ },
1291
+ {
1292
+ header: "T\xEAn t\xE0i li\u1EC7u",
1293
+ accessorKey: "name"
1294
+ },
1295
+ {
1296
+ header: "File",
1297
+ accessorFn: (row) => {
1298
+ return /* @__PURE__ */ jsx24(MyCenterFull, { children: /* @__PURE__ */ jsx24(MyButtonViewPDF, { id: row.id }) });
1299
+ }
1300
+ }
1301
+ ],
1302
+ []
1303
+ );
1304
+ if (documentQuery.isLoading) return "Loading...";
1305
+ if (documentQuery.isError) return "Error!";
1306
+ return /* @__PURE__ */ jsxs18(Accordion3.Item, { value: documentType.toString(), children: [
1307
+ /* @__PURE__ */ jsx24(Accordion3.Control, { children: name }),
1308
+ /* @__PURE__ */ jsx24(Accordion3.Panel, { children: /* @__PURE__ */ jsx24(
1309
+ MyDataTable,
1310
+ {
1311
+ columns,
1312
+ data: documentQuery.data,
1313
+ renderRowActions: ({ row }) => /* @__PURE__ */ jsxs18(MyCenterFull, { children: [
1314
+ /* @__PURE__ */ jsx24(
1315
+ F_core27311_Update,
1316
+ {
1317
+ WorkflowTypeId,
1318
+ values: row.original
1319
+ }
1320
+ ),
1321
+ /* @__PURE__ */ jsx24(
1322
+ F_core27311_Delete,
1323
+ {
1324
+ id: row.original.id,
1325
+ contextData: row.original.decisionCode
1326
+ }
1327
+ )
1328
+ ] })
1329
+ }
1330
+ ) })
1331
+ ] });
1332
+ }
1333
+
1334
+ // src/modules-features/admin/core/core27311/F_core27311.tsx
1335
+ import { Paper as Paper4, Space as Space4 } from "@mantine/core";
1336
+ import { jsx as jsx25, jsxs as jsxs19 } from "react/jsx-runtime";
1337
+ function F_core27311({
1338
+ WorkflowTypeId
1339
+ }) {
1340
+ return /* @__PURE__ */ jsxs19(Paper4, { p: "md", children: [
1341
+ /* @__PURE__ */ jsx25(MyFlexEnd, { children: /* @__PURE__ */ jsx25(F_core27311_Create, { WorkflowTypeId }) }),
1342
+ /* @__PURE__ */ jsx25(Space4, {}),
1343
+ /* @__PURE__ */ jsx25(F_core27311_Read, { WorkflowTypeId })
1344
+ ] });
1345
+ }
1346
+
1347
+ // src/modules-features/admin/core/core35923/F_core35923.tsx
1348
+ import { Grid } from "@mantine/core";
1349
+ import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
1350
+ function F_core35923() {
1351
+ return /* @__PURE__ */ jsxs20(MyFieldset, { title: "C\u1EADp nh\u1EADt th\xF4ng tin \u0111\u01A1n v\u1ECB ch\u1EE7 qu\u1EA3n", children: [
1352
+ /* @__PURE__ */ jsxs20(Grid, { children: [
1353
+ /* @__PURE__ */ jsx26(Grid.Col, { span: { base: 12, md: 5 }, children: /* @__PURE__ */ jsx26(MyTextInput, { label: "M\xE3 module", disabled: true }) }),
1354
+ /* @__PURE__ */ jsx26(Grid.Col, { span: { base: 12, md: 7 }, children: /* @__PURE__ */ jsx26(MyTextInput, { label: "T\xEAn module" }) }),
1355
+ /* @__PURE__ */ jsx26(Grid.Col, { span: 12, children: /* @__PURE__ */ jsx26(MyTextInput, { label: "T\xEAn \u0111\u01A1n v\u1ECB ch\u1EE7 qu\u1EA3n" }) }),
1356
+ /* @__PURE__ */ jsx26(Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx26(MyTextInput, { label: "Email" }) }),
1357
+ /* @__PURE__ */ jsx26(Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx26(MyTextInput, { label: "S\u1ED1 \u0111i\u1EC7n tho\u1EA1i" }) }),
1358
+ /* @__PURE__ */ jsx26(Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx26(MyTextInput, { label: "Ng\xE0y \u0111\u0103ng k\xFD" }) }),
1359
+ /* @__PURE__ */ jsx26(Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx26(MyTextInput, { label: "Ng\xE0y h\u1EBFt h\u1EA1n" }) }),
1360
+ /* @__PURE__ */ jsx26(Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx26(MyFileInput, { label: "Favicon (16px x 16px)" }) }),
1361
+ /* @__PURE__ */ jsx26(Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx26(MyFileInput, { label: "Logo (330px x 115px)" }) })
1362
+ ] }),
1363
+ /* @__PURE__ */ jsx26(MyFlexEnd, { children: /* @__PURE__ */ jsx26(MyButton, { crudType: "save" }) })
1364
+ ] });
1365
+ }
1366
+
1367
+ // src/modules-features/admin/core/core38677/F_core38677.tsx
1368
+ import { Grid as Grid2, Paper as Paper5, ScrollArea as ScrollArea2 } from "@mantine/core";
1369
+
1370
+ // src/modules-features/admin/core/core38677/F_core38677_ReadUser.tsx
1371
+ import { Container } from "@mantine/core";
1372
+ import { useQuery as useQuery7 } from "@tanstack/react-query";
1373
+ import { useEffect, useMemo as useMemo6, useState } from "react";
1374
+
1375
+ // src/modules-features/admin/core/core83092/useS_core83092.tsx
1376
+ var useStore = createGenericStore({
1377
+ initialState: { roleId: 0 },
1378
+ storageKey: "useS_core83092"
1379
+ });
1380
+ function useS_core83092() {
1381
+ const store = useStore();
1382
+ function toogleAllPermissionWithType(field, isCheck) {
1383
+ var _a;
1384
+ const updatedData = (_a = store.state.rolePermissions) == null ? void 0 : _a.map((item) => __spreadProps(__spreadValues({}, item), {
1385
+ [field]: isCheck
1386
+ }));
1387
+ store.setProperty("rolePermissions", updatedData);
1388
+ }
1389
+ function findByPageId(pageId) {
1390
+ var _a;
1391
+ const rolePermission = (_a = store.state.rolePermissions) == null ? void 0 : _a.find((item) => item.pageId == pageId);
1392
+ return rolePermission;
1393
+ }
1394
+ function updatePermission(pageId, updatedPermission) {
1395
+ var _a;
1396
+ const updatedData = (_a = store.state.rolePermissions) == null ? void 0 : _a.map(
1397
+ (item) => item.pageId === pageId ? __spreadValues(__spreadValues({}, item), updatedPermission) : item
1398
+ );
1399
+ store.setProperty("rolePermissions", updatedData);
1400
+ }
1401
+ function isAllPermission(field) {
1402
+ var _a, _b;
1403
+ return (_b = (_a = store.state.rolePermissions) == null ? void 0 : _a.every((item) => item[field] === true)) != null ? _b : false;
1404
+ }
1405
+ return __spreadProps(__spreadValues({}, store), {
1406
+ toogleAllPermissionWithType,
1407
+ findByPageId,
1408
+ updatePermission,
1409
+ isAllPermission
1410
+ });
1411
+ }
1412
+ function utils_core83092_mergePage(arr1, arr2) {
1413
+ const pageMap = /* @__PURE__ */ new Map();
1414
+ arr1.forEach((page) => pageMap.set(page.pageId, page));
1415
+ arr2.forEach((page) => {
1416
+ if (pageMap.has(page.pageId)) {
1417
+ pageMap.set(page.pageId, page);
1418
+ }
1419
+ });
1420
+ return Array.from(pageMap.values());
1421
+ }
1422
+
1423
+ // src/modules-features/admin/core/core38677/F_core38677_ReadUser.tsx
1424
+ import { jsx as jsx27 } from "react/jsx-runtime";
1425
+ function F_core38677_ReadUser() {
1426
+ const store = useS_core83092();
1427
+ const query = useQ_Account_GetAdminAccount();
1428
+ const [rowSelection, setRowSelection] = useState({});
1429
+ const columns = useMemo6(
1430
+ () => [
1431
+ {
1432
+ header: "M\xE3",
1433
+ accessorKey: "code",
1434
+ size: 60
1435
+ },
1436
+ {
1437
+ header: "T\xEAn quy\u1EC1n",
1438
+ accessorKey: "name"
1439
+ }
1440
+ ],
1441
+ []
1442
+ );
1443
+ const handleRowClick = (rowId) => {
1444
+ setRowSelection({ [rowId]: true });
1445
+ store.setProperty("roleId", parseInt(rowId));
1446
+ };
1447
+ useEffect(() => {
1448
+ if (store.state.roleId == 0) return;
1449
+ setRowSelection({ [store.state.roleId]: true });
1450
+ }, [store.state.roleId]);
1451
+ useEffect(() => {
1452
+ if (!query.data) return;
1453
+ store.setProperty("roleId", query.data[0].id);
1454
+ }, [query.data]);
1455
+ if (query.isLoading) return "Loading...";
1456
+ if (query.isError) return "C\xF3 l\u1ED7i x\u1EA3y ra!";
1457
+ return /* @__PURE__ */ jsx27(Container, { fluid: true, children: /* @__PURE__ */ jsx27(
1458
+ MyDataTable,
1459
+ {
1460
+ columns,
1461
+ data: query.data,
1462
+ getRowId: (row) => {
1463
+ var _a;
1464
+ return (_a = row.id) == null ? void 0 : _a.toString();
1465
+ },
1466
+ mantineTableBodyRowProps: ({ row }) => ({
1467
+ onClick: () => handleRowClick(row.id),
1468
+ style: {
1469
+ cursor: "pointer",
1470
+ backgroundColor: rowSelection[row.id] ? "var(--mantine-color-blue-light)" : "transparent"
1471
+ }
1472
+ }),
1473
+ state: rowSelection
1474
+ }
1475
+ ) });
1476
+ }
1477
+ function useQ_Account_GetAdminAccount() {
1478
+ const query = useQuery7({
1479
+ queryKey: ["useQ_Role_GetAdminRole"],
1480
+ queryFn: async () => {
1481
+ var _a;
1482
+ const result = await baseAxios_default.get(`/Role/GetAdminRole`);
1483
+ return ((_a = result.data) == null ? void 0 : _a.data) || [];
1484
+ },
1485
+ refetchOnWindowFocus: false
1486
+ });
1487
+ return query;
1488
+ }
1489
+
1490
+ // src/modules-features/admin/core/core38677/F_core38677_Save.tsx
1491
+ import { useMutation } from "@tanstack/react-query";
1492
+ import { useEffect as useEffect2, useState as useState2 } from "react";
1493
+ import { jsx as jsx28 } from "react/jsx-runtime";
1494
+ function F_core38677_Save() {
1495
+ const store = useS_core83092();
1496
+ const disable = useState2(false);
1497
+ const mutation = useMutation({
1498
+ mutationFn: async (body) => {
1499
+ const res = await baseAxios_default.put("/Role/UpdatePermission", body);
1500
+ return res;
1501
+ }
1502
+ });
1503
+ function handleSave() {
1504
+ mutation.mutate({
1505
+ pagePermissions: store.state.rolePermissions,
1506
+ roleId: store.state.roleId
1507
+ }, {
1508
+ onSuccess: () => {
1509
+ utils_notification_show({
1510
+ crudType: "update"
1511
+ });
1512
+ }
1513
+ });
1514
+ }
1515
+ useEffect2(() => {
1516
+ if (!store.state.rolePermissions || store.state.rolePermissions.length == 0) {
1517
+ disable[1](true);
1518
+ return;
1519
+ }
1520
+ disable[1](false);
1521
+ }, [store.state.rolePermissions]);
1522
+ return /* @__PURE__ */ jsx28(MyButton, { disabled: disable[0], crudType: "save", onClick: handleSave });
1523
+ }
1524
+
1525
+ // src/data/menuData.ts
1526
+ var menuData = [
1527
+ {
1528
+ label: "Qu\u1EA3n l\xED h\u1EC7 th\u1ED1ng",
1529
+ links: [
1530
+ { pageId: 1, name: "Account management", label: "Qu\u1EA3n l\xED t\xE0i kho\u1EA3n", link: "core71678" },
1531
+ { pageId: 2, name: "Access control level", label: "Ph\xE2n quy\u1EC1n c\u1EA5p \u0111\u01A1n v\u1ECB", link: "core38677" },
1532
+ { pageId: 3, name: "Access control", label: "Ph\xE2n quy\u1EC1n s\u1EED d\u1EE5ng", link: "core83092" },
1533
+ { pageId: 4, name: "Security regulations", label: "Quy \u0111\u1ECBnh an to\xE0n/ b\u1EA3o m\u1EADt th\xF4ng tin", link: "core76318", status: "Default" },
1534
+ { pageId: 5, name: "System updates", label: "Th\xF4ng tin x\xE2y d\u1EF1ng, c\u1EA3i ti\u1EBFn, b\u1EA3o tr\xEC h\u1EC7 th\u1ED1ng", link: "core16209", status: "Default" },
1535
+ { pageId: 6, name: "User guide", label: "T\xE0i li\u1EC7u h\u01B0\u1EDBng d\u1EABn s\u1EED d\u1EE5ng", link: "core40207", status: "Default" }
1536
+ ]
1537
+ },
1538
+ {
1539
+ label: "V\u0103n b\u1EA3n - Quy \u0111\u1ECBnh",
1540
+ links: [
1541
+ { pageId: 7, name: "Organizational regulations", label: "V\u0103n b\u1EA3n - Quy \u0111\u1ECBnh t\u1ED5 ch\u1EE9c", link: "core26965", status: "Default" },
1542
+ { pageId: 8, name: "Workflow process", label: "Quy tr\xECnh x\u1EED l\xFD c\xF4ng vi\u1EC7c", link: "core27311", status: "Default" },
1543
+ { pageId: 9, name: "Form templates", label: "T\xE0i li\u1EC7u bi\u1EC3u m\u1EABu", link: "core12196", status: "Default" }
1544
+ ]
1545
+ },
1546
+ {
1547
+ label: "Danh m\u1EE5c h\u1EC7 th\u1ED1ng ",
1548
+ links: [
1549
+ { pageId: 0, name: "Document categories", label: "Danh m\u1EE5c lo\u1EA1i v\u0103n b\u1EA3n", link: "core18256" },
1550
+ { pageId: 0, name: "", label: "Danh m\u1EE5c c\u1EA5u h\xECnh mail", link: "core64229", status: "Default" },
1551
+ { pageId: 0, name: "", label: "C\u1EA5u h\xECnh th\xF4ng tin ch\u1EE7 qu\u1EA3n", link: "core60524", status: "Default" }
1552
+ ]
1553
+ }
1554
+ ];
1555
+
1556
+ // src/modules-features/admin/core/core38677/F_core38677_ViewMenuPermissions.tsx
1557
+ import { Checkbox, Flex, ScrollArea, Table, Text } from "@mantine/core";
1558
+ import { IconEdit, IconEyeUp, IconFileExport, IconPlus, IconPrinter, IconTrash } from "@tabler/icons-react";
1559
+ import { useQuery as useQuery8 } from "@tanstack/react-query";
1560
+ import React, { useEffect as useEffect3, useState as useState3 } from "react";
1561
+ import { jsx as jsx29, jsxs as jsxs21 } from "react/jsx-runtime";
1562
+ var title = "Danh s\xE1ch ch\u1EE9c n\u0103ng";
1563
+ function F_core38677_ViewMenuPermissions({ menuData: menuData2 }) {
1564
+ var _a, _b;
1565
+ const store = useS_core83092();
1566
+ const query = useGetUserPermission();
1567
+ const list = useState3([]);
1568
+ useEffect3(() => {
1569
+ list[1](groupToTwoLevels(menuData2));
1570
+ }, []);
1571
+ useEffect3(() => {
1572
+ if (!query.data) return;
1573
+ store.setProperty("rolePermissions", query.data);
1574
+ }, [query.data]);
1575
+ if (((_a = list[0]) == null ? void 0 : _a.length) == 0) return "\u0110ang t\u1EA3i...";
1576
+ return /* @__PURE__ */ jsx29(ScrollArea.Autosize, { h: "70vh", children: /* @__PURE__ */ jsxs21(Table, { children: [
1577
+ /* @__PURE__ */ jsx29(
1578
+ Table.Thead,
1579
+ {
1580
+ bg: "light-dark(var(--mantine-color-white), var(--mantine-color-dark-8))",
1581
+ style: {
1582
+ position: "sticky",
1583
+ top: 0,
1584
+ zIndex: 1,
1585
+ boxShadow: "0px 4px 6px rgba(0, 0, 0, 0.1)",
1586
+ border: "1px solid var(--mantine-color-gray-4)"
1587
+ },
1588
+ children: /* @__PURE__ */ jsxs21(Table.Tr, { children: [
1589
+ /* @__PURE__ */ jsx29(Table.Th, { children: title }),
1590
+ /* @__PURE__ */ jsx29(Table.Th, { children: /* @__PURE__ */ jsxs21(Flex, { gap: 3, direction: "column", justify: "center", align: "center", children: [
1591
+ /* @__PURE__ */ jsx29(Checkbox, { checked: store.isAllPermission("isRead"), onChange: (e) => {
1592
+ store.toogleAllPermissionWithType("isRead", e.target.checked);
1593
+ } }),
1594
+ /* @__PURE__ */ jsxs21(MyFlexRow, { gap: 3, children: [
1595
+ "Xem",
1596
+ /* @__PURE__ */ jsx29(IconEyeUp, { color: "gray" })
1597
+ ] })
1598
+ ] }) }),
1599
+ /* @__PURE__ */ jsx29(Table.Th, { children: /* @__PURE__ */ jsxs21(Flex, { gap: 3, direction: "column", justify: "center", align: "center", children: [
1600
+ /* @__PURE__ */ jsx29(Checkbox, { checked: store.isAllPermission("isCreate"), onChange: (e) => {
1601
+ store.toogleAllPermissionWithType("isCreate", e.target.checked);
1602
+ } }),
1603
+ /* @__PURE__ */ jsxs21(MyFlexRow, { gap: 3, children: [
1604
+ "Th\xEAm",
1605
+ /* @__PURE__ */ jsx29(IconPlus, { color: "blue" })
1606
+ ] })
1607
+ ] }) }),
1608
+ /* @__PURE__ */ jsx29(Table.Th, { children: /* @__PURE__ */ jsxs21(Flex, { gap: 3, direction: "column", justify: "center", align: "center", children: [
1609
+ /* @__PURE__ */ jsx29(Checkbox, { checked: store.isAllPermission("isUpdate"), onChange: (e) => {
1610
+ store.toogleAllPermissionWithType("isUpdate", e.target.checked);
1611
+ } }),
1612
+ /* @__PURE__ */ jsxs21(MyFlexRow, { gap: 3, children: [
1613
+ "S\u1EEDa",
1614
+ /* @__PURE__ */ jsx29(IconEdit, { color: "var(--mantine-color-yellow-8)" })
1615
+ ] })
1616
+ ] }) }),
1617
+ /* @__PURE__ */ jsx29(Table.Th, { children: /* @__PURE__ */ jsxs21(Flex, { gap: 3, direction: "column", justify: "center", align: "center", children: [
1618
+ /* @__PURE__ */ jsx29(Checkbox, { checked: store.isAllPermission("isDelete"), onChange: (e) => {
1619
+ store.toogleAllPermissionWithType("isDelete", e.target.checked);
1620
+ } }),
1621
+ /* @__PURE__ */ jsxs21(MyFlexRow, { gap: 3, children: [
1622
+ "X\xF3a",
1623
+ /* @__PURE__ */ jsx29(IconTrash, { color: "var(--mantine-color-red-8)" })
1624
+ ] })
1625
+ ] }) }),
1626
+ /* @__PURE__ */ jsx29(Table.Th, { children: /* @__PURE__ */ jsxs21(Flex, { gap: 3, direction: "column", justify: "center", align: "center", children: [
1627
+ /* @__PURE__ */ jsx29(Checkbox, { checked: store.isAllPermission("isPrint"), onChange: (e) => {
1628
+ store.toogleAllPermissionWithType("isPrint", e.target.checked);
1629
+ } }),
1630
+ /* @__PURE__ */ jsxs21(MyFlexRow, { gap: 3, children: [
1631
+ "In",
1632
+ /* @__PURE__ */ jsx29(IconPrinter, { color: "var(--mantine-color-cyan-8)" })
1633
+ ] })
1634
+ ] }) }),
1635
+ /* @__PURE__ */ jsx29(Table.Th, { children: /* @__PURE__ */ jsxs21(Flex, { gap: 3, direction: "column", justify: "center", align: "center", children: [
1636
+ /* @__PURE__ */ jsx29(Checkbox, { checked: store.isAllPermission("isExport"), onChange: (e) => {
1637
+ store.toogleAllPermissionWithType("isExport", e.target.checked);
1638
+ } }),
1639
+ /* @__PURE__ */ jsxs21(MyFlexRow, { gap: 3, children: [
1640
+ "Xu\u1EA5t",
1641
+ /* @__PURE__ */ jsx29(IconFileExport, { color: "var(--mantine-color-green-8)" })
1642
+ ] })
1643
+ ] }) })
1644
+ ] })
1645
+ }
1646
+ ),
1647
+ /* @__PURE__ */ jsx29(Table.Tbody, { bg: "light-dark(var(--mantine-color-white), var(--mantine-color-dark-8))", children: (_b = list[0]) == null ? void 0 : _b.map((item, idx) => {
1648
+ if (item.links == void 0) return /* @__PURE__ */ jsxs21(Table.Tr, { children: [
1649
+ /* @__PURE__ */ jsx29(Table.Td, { children: item.label }),
1650
+ /* @__PURE__ */ jsx29(Table.Td, { children: /* @__PURE__ */ jsx29(MyCenterFull, { children: /* @__PURE__ */ jsx29(Checkbox, {}) }) }),
1651
+ /* @__PURE__ */ jsx29(Table.Td, { children: /* @__PURE__ */ jsx29(MyCenterFull, { children: /* @__PURE__ */ jsx29(Checkbox, {}) }) }),
1652
+ /* @__PURE__ */ jsx29(Table.Td, { children: /* @__PURE__ */ jsx29(MyCenterFull, { children: /* @__PURE__ */ jsx29(Checkbox, {}) }) }),
1653
+ /* @__PURE__ */ jsx29(Table.Td, { children: /* @__PURE__ */ jsx29(MyCenterFull, { children: /* @__PURE__ */ jsx29(Checkbox, {}) }) }),
1654
+ /* @__PURE__ */ jsx29(Table.Td, { children: /* @__PURE__ */ jsx29(MyCenterFull, { children: /* @__PURE__ */ jsx29(Checkbox, {}) }) }),
1655
+ /* @__PURE__ */ jsx29(Table.Td, { children: /* @__PURE__ */ jsx29(MyCenterFull, { children: /* @__PURE__ */ jsx29(Checkbox, {}) }) })
1656
+ ] }, idx);
1657
+ return /* @__PURE__ */ jsxs21(React.Fragment, { children: [
1658
+ /* @__PURE__ */ jsx29(Table.Tr, { children: /* @__PURE__ */ jsx29(
1659
+ Table.Td,
1660
+ {
1661
+ colSpan: 7,
1662
+ bg: OBJECT_COlORS.mantineBackgroundBlueLight,
1663
+ children: /* @__PURE__ */ jsx29(Text, { fs: "oblique", size: "sm", fw: "bold", children: item.label })
1664
+ }
1665
+ ) }, item.label),
1666
+ item.links.map(
1667
+ (item2, idx2) => {
1668
+ var _a2, _b2, _c, _d, _e, _f;
1669
+ return /* @__PURE__ */ jsxs21(Table.Tr, { children: [
1670
+ /* @__PURE__ */ jsx29(Table.Td, { children: item2.label }),
1671
+ /* @__PURE__ */ jsx29(Table.Td, { children: /* @__PURE__ */ jsx29(MyCenterFull, { children: /* @__PURE__ */ jsx29(
1672
+ Checkbox,
1673
+ {
1674
+ checked: ((_a2 = store.findByPageId(item2.pageId)) == null ? void 0 : _a2.isRead) || false,
1675
+ onChange: (e) => {
1676
+ store.updatePermission(item2.pageId, {
1677
+ isRead: e.target.checked
1678
+ });
1679
+ }
1680
+ }
1681
+ ) }) }),
1682
+ /* @__PURE__ */ jsx29(Table.Td, { children: /* @__PURE__ */ jsx29(MyCenterFull, { children: /* @__PURE__ */ jsx29(
1683
+ Checkbox,
1684
+ {
1685
+ checked: ((_b2 = store.findByPageId(item2.pageId)) == null ? void 0 : _b2.isCreate) || false,
1686
+ onChange: (e) => {
1687
+ store.updatePermission(item2.pageId, {
1688
+ isCreate: e.target.checked
1689
+ });
1690
+ }
1691
+ }
1692
+ ) }) }),
1693
+ /* @__PURE__ */ jsx29(Table.Td, { children: /* @__PURE__ */ jsx29(MyCenterFull, { children: /* @__PURE__ */ jsx29(
1694
+ Checkbox,
1695
+ {
1696
+ checked: ((_c = store.findByPageId(item2.pageId)) == null ? void 0 : _c.isUpdate) || false,
1697
+ onChange: (e) => {
1698
+ store.updatePermission(item2.pageId, {
1699
+ isUpdate: e.target.checked
1700
+ });
1701
+ }
1702
+ }
1703
+ ) }) }),
1704
+ /* @__PURE__ */ jsx29(Table.Td, { children: /* @__PURE__ */ jsx29(MyCenterFull, { children: /* @__PURE__ */ jsx29(
1705
+ Checkbox,
1706
+ {
1707
+ checked: ((_d = store.findByPageId(item2.pageId)) == null ? void 0 : _d.isDelete) || false,
1708
+ onChange: (e) => {
1709
+ store.updatePermission(item2.pageId, {
1710
+ isDelete: e.target.checked
1711
+ });
1712
+ }
1713
+ }
1714
+ ) }) }),
1715
+ /* @__PURE__ */ jsx29(Table.Td, { children: /* @__PURE__ */ jsx29(MyCenterFull, { children: /* @__PURE__ */ jsx29(
1716
+ Checkbox,
1717
+ {
1718
+ checked: ((_e = store.findByPageId(item2.pageId)) == null ? void 0 : _e.isPrint) || false,
1719
+ onChange: (e) => {
1720
+ store.updatePermission(item2.pageId, {
1721
+ isPrint: e.target.checked
1722
+ });
1723
+ }
1724
+ }
1725
+ ) }) }),
1726
+ /* @__PURE__ */ jsx29(Table.Td, { children: /* @__PURE__ */ jsx29(MyCenterFull, { children: /* @__PURE__ */ jsx29(
1727
+ Checkbox,
1728
+ {
1729
+ checked: ((_f = store.findByPageId(item2.pageId)) == null ? void 0 : _f.isExport) || false,
1730
+ onChange: (e) => {
1731
+ store.updatePermission(item2.pageId, {
1732
+ isExport: e.target.checked
1733
+ });
1734
+ }
1735
+ }
1736
+ ) }) })
1737
+ ] }, idx2);
1738
+ }
1739
+ )
1740
+ ] }, idx);
1741
+ }) })
1742
+ ] }) });
1743
+ }
1744
+ function useGetUserPermission() {
1745
+ const store = useS_core83092();
1746
+ const query = useQuery8({
1747
+ queryKey: ["F_7p4mh9d75x_AuthorizationTable", store.state.roleId],
1748
+ queryFn: async () => {
1749
+ const result = await baseAxios_default.get("/Role/GetRolePermission?roleId=" + store.state.roleId);
1750
+ const menudataFinal = utils_layout_getItemsWithoutLinks(menuData);
1751
+ if (result.data.data.length == 0) {
1752
+ const final = menudataFinal.map((item) => ({
1753
+ pageId: item.pageId,
1754
+ isRead: false,
1755
+ isCreate: false,
1756
+ isUpdate: false,
1757
+ isDelete: false,
1758
+ isExport: false,
1759
+ isPrint: false
1760
+ }));
1761
+ return final.filter((item) => item.pageId != void 0);
1762
+ }
1763
+ const menuDataFromAPI = result.data.data;
1764
+ const mergedArray = utils_core83092_mergePage(menudataFinal, menuDataFromAPI).map((item) => ({
1765
+ pageId: item.pageId,
1766
+ isCreate: item.isCreate || false,
1767
+ isRead: item.isRead || false,
1768
+ isUpdate: item.isUpdate || false || false,
1769
+ isDelete: item.isDelete,
1770
+ isPrint: item.isPrint || false,
1771
+ isExport: item.isExport || false
1772
+ })).filter((item) => item.pageId != void 0);
1773
+ return mergedArray;
1774
+ },
1775
+ enabled: store.state.roleId != 0,
1776
+ refetchOnWindowFocus: false
1777
+ });
1778
+ return query;
1779
+ }
1780
+
1781
+ // src/modules-features/admin/core/core38677/F_core38677.tsx
1782
+ import { jsx as jsx30, jsxs as jsxs22 } from "react/jsx-runtime";
1783
+ function F_core38677({ menuData: menuData2 }) {
1784
+ return /* @__PURE__ */ jsxs22(Grid2, { grow: true, children: [
1785
+ /* @__PURE__ */ jsx30(Grid2.Col, { span: 4, children: /* @__PURE__ */ jsx30(F_core38677_ReadUser, {}) }),
1786
+ /* @__PURE__ */ jsx30(Grid2.Col, { span: 8, children: /* @__PURE__ */ jsxs22(MyFlexColumn, { h: "80vh", flex: 1, children: [
1787
+ /* @__PURE__ */ jsx30(ScrollArea2.Autosize, { h: "100%", children: /* @__PURE__ */ jsx30(Paper5, { p: "md", bg: OBJECT_COlORS.mantineBackgroundSecondary, children: /* @__PURE__ */ jsx30(F_core38677_ViewMenuPermissions, { menuData: menuData2 }) }) }),
1788
+ /* @__PURE__ */ jsx30(F_core38677_Save, {})
1789
+ ] }) })
1790
+ ] });
1791
+ }
1792
+
1793
+ // src/modules-features/admin/core/core40207/F_core40207_Read.tsx
1794
+ import { useQuery as useQuery9 } from "@tanstack/react-query";
1795
+ import { useMemo as useMemo7 } from "react";
1796
+
1797
+ // src/modules-features/admin/core/core40207/F_core40207_Create.tsx
1798
+ import { FileInput as FileInput3 } from "@mantine/core";
1799
+ import { useForm as useForm11 } from "@mantine/form";
1800
+ import { jsx as jsx31, jsxs as jsxs23 } from "react/jsx-runtime";
1801
+ function F_core40207_Create({ GuidelineTypeId }) {
1802
+ const form = useForm11({
1803
+ mode: "uncontrolled",
1804
+ validate: {
1805
+ code: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
1806
+ name: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
1807
+ file: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng"
1808
+ }
1809
+ });
1810
+ return /* @__PURE__ */ jsxs23(
1811
+ MyButtonCreate,
1812
+ {
1813
+ objectName: "v\u0103n b\u1EA3n",
1814
+ form,
1815
+ onSubmit: async (values) => {
1816
+ return await baseAxios_default.post("/Document/create", __spreadProps(__spreadValues({}, values), {
1817
+ DocumentType: GuidelineTypeId,
1818
+ //1.4 Thông tin xây dựng, cải tiến, bảo trì hệ thống
1819
+ fileDetail: await utils_file_fileToAQDocumentType(values.file)
1820
+ }));
1821
+ },
1822
+ children: [
1823
+ /* @__PURE__ */ jsx31(
1824
+ MyTextInput,
1825
+ __spreadValues({
1826
+ withAsterisk: true,
1827
+ label: "M\xE3 t\xE0i li\u1EC7u"
1828
+ }, form.getInputProps("code"))
1829
+ ),
1830
+ /* @__PURE__ */ jsx31(
1831
+ MyTextInput,
1832
+ __spreadValues({
1833
+ withAsterisk: true,
1834
+ label: "T\xEAn t\xE0i li\u1EC7u"
1835
+ }, form.getInputProps("name"))
1836
+ ),
1837
+ /* @__PURE__ */ jsx31(
1838
+ FileInput3,
1839
+ __spreadValues({
1840
+ withAsterisk: true,
1841
+ label: "T\xE0i li\u1EC7u",
1842
+ placeholder: "T\u1EA3i l\xEAn t\xE0i li\u1EC7u"
1843
+ }, form.getInputProps("file"))
1844
+ )
1845
+ ]
1846
+ }
1847
+ );
1848
+ }
1849
+
1850
+ // src/modules-features/admin/core/core40207/F_core40207_Delete.tsx
1851
+ import { jsx as jsx32 } from "react/jsx-runtime";
1852
+ function F_core40207_Delete({
1853
+ id,
1854
+ contextData
1855
+ }) {
1856
+ return /* @__PURE__ */ jsx32(
1857
+ MyActionIconDelete,
1858
+ {
1859
+ contextData,
1860
+ onSubmit: () => baseAxios_default.post("/Document/delete", { id })
1861
+ }
1862
+ );
1863
+ }
1864
+
1865
+ // src/modules-features/admin/core/core40207/F_core40207_Update.tsx
1866
+ import { FileInput as FileInput4 } from "@mantine/core";
1867
+ import { useForm as useForm12 } from "@mantine/form";
1868
+ import { jsx as jsx33, jsxs as jsxs24 } from "react/jsx-runtime";
1869
+ function F_core40207_Update({ values }) {
1870
+ var _a;
1871
+ const form = useForm12({
1872
+ mode: "uncontrolled",
1873
+ initialValues: __spreadProps(__spreadValues({}, values), {
1874
+ file: new File(
1875
+ [],
1876
+ (_a = values.path) == null ? void 0 : _a.split("/")[values.path.split("/").length - 1]
1877
+ )
1878
+ }),
1879
+ validate: {
1880
+ code: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
1881
+ name: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
1882
+ file: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng"
1883
+ }
1884
+ });
1885
+ return /* @__PURE__ */ jsxs24(
1886
+ MyActionIconUpdate,
1887
+ {
1888
+ form,
1889
+ onSubmit: async (values2) => {
1890
+ return await baseAxios_default.post("/Document/Update", __spreadProps(__spreadValues({}, values2), {
1891
+ fileDetail: await utils_file_fileToAQDocumentType(values2.file)
1892
+ }));
1893
+ },
1894
+ children: [
1895
+ /* @__PURE__ */ jsx33(
1896
+ MyTextInput,
1897
+ __spreadValues({
1898
+ withAsterisk: true,
1899
+ label: "M\xE3 t\xE0i li\u1EC7u"
1900
+ }, form.getInputProps("code"))
1901
+ ),
1902
+ /* @__PURE__ */ jsx33(
1903
+ MyTextInput,
1904
+ __spreadValues({
1905
+ withAsterisk: true,
1906
+ label: "T\xEAn t\xE0i li\u1EC7u"
1907
+ }, form.getInputProps("name"))
1908
+ ),
1909
+ /* @__PURE__ */ jsx33(
1910
+ FileInput4,
1911
+ __spreadValues({
1912
+ withAsterisk: true,
1913
+ label: "T\xE0i li\u1EC7u",
1914
+ placeholder: "T\u1EA3i l\xEAn t\xE0i li\u1EC7u"
1915
+ }, form.getInputProps("file"))
1916
+ )
1917
+ ]
1918
+ }
1919
+ );
1920
+ }
1921
+
1922
+ // src/modules-features/admin/core/core40207/F_core40207_Read.tsx
1923
+ import { jsx as jsx34, jsxs as jsxs25 } from "react/jsx-runtime";
1924
+ function F_core40207_Read({ GuidelineTypeId }) {
1925
+ const query = useQuery9({
1926
+ queryKey: ["F_core40207_Read"],
1927
+ queryFn: async () => {
1928
+ var _a;
1929
+ const result = await baseAxios_default.get(
1930
+ `/Document/GetByType?documentType=${GuidelineTypeId}`
1931
+ );
1932
+ return ((_a = result.data) == null ? void 0 : _a.data) || [];
1933
+ }
1934
+ });
1935
+ const columns = useMemo7(
1936
+ () => [
1937
+ {
1938
+ header: "M\xE3 t\xE0i li\u1EC7u",
1939
+ accessorKey: "code"
1940
+ },
1941
+ {
1942
+ header: "T\xEAn t\xE0i li\u1EC7u",
1943
+ accessorKey: "name"
1944
+ },
1945
+ {
1946
+ header: "File",
1947
+ accessorFn: (row) => {
1948
+ return /* @__PURE__ */ jsx34(MyCenterFull, { children: /* @__PURE__ */ jsx34(MyButtonViewPDF, { id: row.id }) });
1949
+ }
1950
+ }
1951
+ ],
1952
+ []
1953
+ );
1954
+ if (query.isLoading) return "Loading...";
1955
+ if (query.isError) return "c\xF3 l\u1ED7i x\u1EA3y ra!";
1956
+ return /* @__PURE__ */ jsx34(
1957
+ MyDataTable,
1958
+ {
1959
+ columns,
1960
+ data: query.data,
1961
+ renderTopToolbarCustomActions: () => /* @__PURE__ */ jsx34(F_core40207_Create, { GuidelineTypeId }),
1962
+ renderRowActions: ({ row }) => {
1963
+ return /* @__PURE__ */ jsxs25(MyCenterFull, { children: [
1964
+ /* @__PURE__ */ jsx34(F_core40207_Update, { values: row.original }),
1965
+ /* @__PURE__ */ jsx34(
1966
+ F_core40207_Delete,
1967
+ {
1968
+ id: row.original.id,
1969
+ contextData: row.original.code
1970
+ }
1971
+ )
1972
+ ] });
1973
+ }
1974
+ }
1975
+ );
1976
+ }
1977
+
1978
+ // src/modules-features/admin/core/core40207/F_core40207.tsx
1979
+ import { jsx as jsx35 } from "react/jsx-runtime";
1980
+ function F_core40207({ GuidelineTypeId }) {
1981
+ return /* @__PURE__ */ jsx35(F_core40207_Read, { GuidelineTypeId });
1982
+ }
1983
+
1984
+ // src/modules-features/admin/core/core47643/F_core47643_Read.tsx
1985
+ import { Group } from "@mantine/core";
1986
+ import { useQuery as useQuery10 } from "@tanstack/react-query";
1987
+ import { useMemo as useMemo8 } from "react";
1988
+
1989
+ // src/modules-features/admin/core/core47643/F_core47643_Delete.tsx
1990
+ import { jsx as jsx36 } from "react/jsx-runtime";
1991
+ var ENDPOINT = "/Role/Delete";
1992
+ function F_core47643_Delete({ values }) {
1993
+ return /* @__PURE__ */ jsx36(
1994
+ MyActionIconDelete,
1995
+ {
1996
+ contextData: values.code,
1997
+ onSubmit: () => baseAxios_default.post(ENDPOINT, { id: values.id })
1998
+ }
1999
+ );
2000
+ }
2001
+
2002
+ // src/modules-features/admin/core/core47643/F_core47643_Form.tsx
2003
+ import { useForm as useForm13 } from "@mantine/form";
2004
+ import { jsx as jsx37, jsxs as jsxs26 } from "react/jsx-runtime";
2005
+ function F_core47643_Form({ values }) {
2006
+ const form = useForm13({
2007
+ mode: "uncontrolled",
2008
+ initialValues: values
2009
+ });
2010
+ if (values) return /* @__PURE__ */ jsxs26(MyActionIconUpdate, { form, onSubmit: async () => {
2011
+ return await baseAxios_default.post("/Role/Update", form.getValues());
2012
+ }, children: [
2013
+ /* @__PURE__ */ jsx37(MyTextInput, __spreadValues({ readOnly: true, variant: "filled", label: "M\xE3" }, form.getInputProps("code"))),
2014
+ /* @__PURE__ */ jsx37(MyTextInput, __spreadValues({ label: "Quy\u1EC1n" }, form.getInputProps("name")))
2015
+ ] });
2016
+ return /* @__PURE__ */ jsxs26(MyButtonCreate, { form, onSubmit: async () => {
2017
+ return await baseAxios_default.post("/Role/Create", form.getValues());
2018
+ }, children: [
2019
+ /* @__PURE__ */ jsx37(MyTextInput, __spreadValues({ label: "M\xE3" }, form.getInputProps("code"))),
2020
+ /* @__PURE__ */ jsx37(MyTextInput, __spreadValues({ label: "Quy\u1EC1n" }, form.getInputProps("name")))
2021
+ ] });
2022
+ }
2023
+
2024
+ // src/modules-features/admin/core/core47643/F_core47643_Read.tsx
2025
+ import { jsx as jsx38, jsxs as jsxs27 } from "react/jsx-runtime";
2026
+ function F_core47643_Read() {
2027
+ const query = useQ_core47643_GetAdminRole();
2028
+ const columns = useMemo8(() => [
2029
+ {
2030
+ header: "M\xE3",
2031
+ accessorKey: "code"
2032
+ },
2033
+ {
2034
+ header: "Quy\u1EC1n",
2035
+ accessorKey: "name"
2036
+ }
2037
+ ], []);
2038
+ if (query.isLoading) return "\u0110ang t\u1EA3i d\u1EEF li\u1EC7u...";
2039
+ if (query.isError) return "C\xF3 l\u1ED7i x\u1EA3y ra!";
2040
+ return /* @__PURE__ */ jsx38(
2041
+ MyDataTable,
2042
+ {
2043
+ data: query.data,
2044
+ columns,
2045
+ renderTopToolbarCustomActions: () => /* @__PURE__ */ jsx38(Group, { children: /* @__PURE__ */ jsx38(F_core47643_Form, {}) }),
2046
+ renderRowActions: ({ row }) => /* @__PURE__ */ jsxs27(MyCenterFull, { children: [
2047
+ /* @__PURE__ */ jsx38(F_core47643_Form, { values: row.original }),
2048
+ /* @__PURE__ */ jsx38(F_core47643_Delete, { values: row.original })
2049
+ ] })
2050
+ }
2051
+ );
2052
+ }
2053
+ function useQ_core47643_GetAdminRole() {
2054
+ const query = useQuery10({
2055
+ queryKey: ["useQ_core47643_GetAdminRole"],
2056
+ queryFn: async () => {
2057
+ const res = await baseAxios_default.get("/Role/GetAdminRole");
2058
+ return res.data.data;
2059
+ }
2060
+ });
2061
+ return query;
2062
+ }
2063
+
2064
+ // src/modules-features/admin/core/core47643/F_core47643.tsx
2065
+ import { jsx as jsx39 } from "react/jsx-runtime";
2066
+ function F_core47643() {
2067
+ return /* @__PURE__ */ jsx39(MyPageContent, { title: "Danh m\u1EE5c quy\u1EC1n", canBack: true, children: /* @__PURE__ */ jsx39(F_core47643_Read, {}) });
2068
+ }
2069
+
2070
+ // src/modules-features/admin/core/core60524/F_core60524.tsx
2071
+ import { useEffect as useEffect5 } from "react";
2072
+
2073
+ // src/modules-features/admin/core/core60524/F_core60524_Form.tsx
2074
+ import { Grid as Grid3, Paper as Paper6 } from "@mantine/core";
2075
+ import { useForm as useForm14 } from "@mantine/form";
2076
+ import { useEffect as useEffect4 } from "react";
2077
+
2078
+ // src/modules-features/admin/core/core60524/F_core60524_Save.tsx
2079
+ import { useMutation as useMutation2 } from "@tanstack/react-query";
2080
+
2081
+ // src/modules-features/admin/core/core60524/useS_core60524.ts
2082
+ var useStore2 = createGenericStore({
2083
+ initialState: {}
2084
+ });
2085
+ function useS_core60524() {
2086
+ const store = useStore2();
2087
+ return __spreadValues({}, store);
2088
+ }
2089
+
2090
+ // src/modules-features/admin/core/core60524/F_core60524_Save.tsx
2091
+ import { jsx as jsx40 } from "react/jsx-runtime";
2092
+ function F_core60524_Save({
2093
+ form
2094
+ }) {
2095
+ const store = useS_core60524();
2096
+ const mutation = useMutation2({
2097
+ mutationFn: async (body) => {
2098
+ const res = await baseAxios_default.post("/AQ/UpdateAQSetting", body);
2099
+ return res;
2100
+ }
2101
+ });
2102
+ async function handleSave() {
2103
+ var _b, _c, _d, _e;
2104
+ const _a = form.getValues(), { faviconFile, logoFile } = _a, formValues = __objRest(_a, ["faviconFile", "logoFile"]);
2105
+ mutation.mutate(__spreadProps(__spreadValues({}, formValues), {
2106
+ logoFileDetail: form.isDirty("logoFileDetail") == false ? {
2107
+ fileName: (_b = formValues.logoFileDetail) == null ? void 0 : _b.fileName,
2108
+ fileExtension: (_c = formValues.logoFileDetail) == null ? void 0 : _c.fileExtension,
2109
+ fileBase64String: ""
2110
+ } : formValues.logoFileDetail,
2111
+ faviconFileDetail: form.isDirty("faviconFileDetail") == false ? {
2112
+ fileName: (_d = formValues.faviconFileDetail) == null ? void 0 : _d.fileName,
2113
+ fileExtension: (_e = formValues.faviconFileDetail) == null ? void 0 : _e.fileExtension,
2114
+ fileBase64String: ""
2115
+ } : formValues.faviconFileDetail,
2116
+ id: store.state.AQModuleId
2117
+ }), {
2118
+ onSuccess: () => {
2119
+ utils_notification_show({
2120
+ crudType: "update"
2121
+ });
2122
+ }
2123
+ });
2124
+ }
2125
+ return /* @__PURE__ */ jsx40(
2126
+ MyButton,
2127
+ {
2128
+ disabled: !form.isDirty(),
2129
+ crudType: "save",
2130
+ onClick: handleSave
2131
+ }
2132
+ );
2133
+ }
2134
+
2135
+ // src/modules-features/admin/core/core60524/F_core60524_Form.tsx
2136
+ import { jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
2137
+ function F_core60524_Form() {
2138
+ const query = useQ_AQ_GetAQModule();
2139
+ const form = useForm14({
2140
+ mode: "uncontrolled",
2141
+ validate: {
2142
+ faviconFileDetail: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
2143
+ logoFileDetail: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng"
2144
+ }
2145
+ });
2146
+ useEffect4(() => {
2147
+ var _a, _b;
2148
+ if (!query.data) return;
2149
+ const values = {
2150
+ code: query.data.code || "",
2151
+ name: query.data.name || "",
2152
+ officelName: query.data.officelName || "",
2153
+ email: query.data.email || "",
2154
+ phoneNumber: query.data.phoneNumber || "",
2155
+ registrationDate: new Date(query.data.registrationDate) || /* @__PURE__ */ new Date(),
2156
+ limiteDate: new Date(query.data.limiteDate) || /* @__PURE__ */ new Date(),
2157
+ faviconPath: query.data.faviconPath || "",
2158
+ logoPath: query.data.logoPath || "",
2159
+ faviconFile: new File([], (_a = query.data.faviconFileDetail) == null ? void 0 : _a.fileName),
2160
+ logoFile: new File([], (_b = query.data.logoFileDetail) == null ? void 0 : _b.fileName),
2161
+ faviconFileDetail: query.data.faviconFileDetail,
2162
+ logoFileDetail: query.data.logoFileDetail
2163
+ };
2164
+ form.setInitialValues(values);
2165
+ form.setValues(values);
2166
+ }, [query.data]);
2167
+ return /* @__PURE__ */ jsxs28(Paper6, { p: "md", children: [
2168
+ /* @__PURE__ */ jsxs28(Grid3, { children: [
2169
+ /* @__PURE__ */ jsx41(Grid3.Col, { span: 5, children: /* @__PURE__ */ jsx41(MyTextInput, __spreadProps(__spreadValues({}, form.getInputProps("code")), { label: "M\xE3 module", disabled: true })) }),
2170
+ /* @__PURE__ */ jsx41(Grid3.Col, { span: { base: 12, md: 7 }, children: /* @__PURE__ */ jsx41(MyTextInput, __spreadProps(__spreadValues({}, form.getInputProps("name")), { label: "T\xEAn module" })) }),
2171
+ /* @__PURE__ */ jsx41(Grid3.Col, { span: 12, children: /* @__PURE__ */ jsx41(MyTextInput, __spreadProps(__spreadValues({}, form.getInputProps("officelName")), { label: "T\xEAn \u0111\u01A1n v\u1ECB ch\u1EE7 qu\u1EA3n" })) }),
2172
+ /* @__PURE__ */ jsx41(Grid3.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx41(MyTextInput, __spreadProps(__spreadValues({}, form.getInputProps("email")), { label: "Email" })) }),
2173
+ /* @__PURE__ */ jsx41(Grid3.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx41(MyTextInput, __spreadProps(__spreadValues({ isPhoneNumber: true }, form.getInputProps("phoneNumber")), { label: "S\u1ED1 \u0111i\u1EC7n tho\u1EA1i" })) }),
2174
+ /* @__PURE__ */ jsx41(Grid3.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx41(
2175
+ MyDateInput,
2176
+ {
2177
+ value: form.getValues().registrationDate,
2178
+ onChange: (date) => form.setFieldValue("registrationDate", date),
2179
+ label: "Ng\xE0y \u0111\u0103ng k\xFD"
2180
+ }
2181
+ ) }),
2182
+ /* @__PURE__ */ jsx41(Grid3.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx41(
2183
+ MyDateInput,
2184
+ {
2185
+ value: form.getValues().limiteDate,
2186
+ onChange: (date) => form.setFieldValue("limiteDate", date),
2187
+ label: "Ng\xE0y h\u1EBFt h\u1EA1n"
2188
+ }
2189
+ ) }),
2190
+ /* @__PURE__ */ jsx41(Grid3.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx41(
2191
+ MyFileInput,
2192
+ {
2193
+ accept: "image/png,image/jpeg",
2194
+ label: "Favicon (16px x 16px)",
2195
+ value: form.getValues().faviconFile,
2196
+ onChange: async (e) => {
2197
+ form.setFieldValue("faviconFile", e);
2198
+ form.setFieldValue("faviconFileDetail", await utils_file_fileToAQDocumentType(e));
2199
+ }
2200
+ }
2201
+ ) }),
2202
+ /* @__PURE__ */ jsx41(Grid3.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx41(
2203
+ MyFileInput,
2204
+ {
2205
+ accept: "image/png,image/jpeg",
2206
+ label: "Logo (330px x 115px)",
2207
+ value: form.getValues().logoFile,
2208
+ onChange: async (e) => {
2209
+ form.setFieldValue("logoFile", e);
2210
+ form.setFieldValue("logoFileDetail", await utils_file_fileToAQDocumentType(e));
2211
+ }
2212
+ }
2213
+ ) })
2214
+ ] }),
2215
+ /* @__PURE__ */ jsx41(MyFlexEnd, { children: /* @__PURE__ */ jsx41(F_core60524_Save, { form }) })
2216
+ ] });
2217
+ }
2218
+
2219
+ // src/modules-features/admin/core/core60524/F_core60524.tsx
2220
+ import { jsx as jsx42 } from "react/jsx-runtime";
2221
+ function F_core60524({ AQModuleId }) {
2222
+ const store = useS_core60524();
2223
+ useEffect5(() => {
2224
+ store.setProperty("AQModuleId", AQModuleId);
2225
+ }, []);
2226
+ return /* @__PURE__ */ jsx42(F_core60524_Form, {});
2227
+ }
2228
+
2229
+ // src/constants/enum/ENUM_EMAILCONFIG.ts
2230
+ var ENUM_EMAILCONFIG_MODULE = /* @__PURE__ */ ((ENUM_EMAILCONFIG_MODULE2) => {
2231
+ ENUM_EMAILCONFIG_MODULE2[ENUM_EMAILCONFIG_MODULE2["\u0110\xE0o t\u1EA1o"] = 1] = "\u0110\xE0o t\u1EA1o";
2232
+ ENUM_EMAILCONFIG_MODULE2[ENUM_EMAILCONFIG_MODULE2["Tuy\u1EC3n sinh"] = 2] = "Tuy\u1EC3n sinh";
2233
+ ENUM_EMAILCONFIG_MODULE2[ENUM_EMAILCONFIG_MODULE2["Sinh vi\xEAn"] = 3] = "Sinh vi\xEAn";
2234
+ ENUM_EMAILCONFIG_MODULE2[ENUM_EMAILCONFIG_MODULE2["Kh\u1EA3o th\xED"] = 4] = "Kh\u1EA3o th\xED";
2235
+ return ENUM_EMAILCONFIG_MODULE2;
2236
+ })(ENUM_EMAILCONFIG_MODULE || {});
2237
+
2238
+ // src/modules-features/admin/core/core64229/F_core64229_Read.tsx
2239
+ import { useQuery as useQuery11 } from "@tanstack/react-query";
2240
+ import { useMemo as useMemo9 } from "react";
2241
+
2242
+ // src/modules-features/admin/core/core64229/F_core64229_Form.tsx
2243
+ import { PasswordInput } from "@mantine/core";
2244
+ import { useForm as useForm15 } from "@mantine/form";
2245
+ import { jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
2246
+ function F_core64229_Form({ values }) {
2247
+ const form = useForm15({
2248
+ mode: "uncontrolled",
2249
+ initialValues: values ? values : {
2250
+ emailModule: 1 /* Đào tạo */
2251
+ }
2252
+ });
2253
+ function handleSubmit() {
2254
+ const formValues = form.getValues();
2255
+ return baseAxios_default.post(`/EmailConfig/${values ? "update" : "create"}`, {
2256
+ "id": values ? formValues.id : 0,
2257
+ "code": "string",
2258
+ "name": "string",
2259
+ "concurrencyStamp": "string",
2260
+ "isEnabled": true,
2261
+ "order": 0,
2262
+ "emailModule": formValues.emailModule,
2263
+ "hostMailServer": formValues.hostMailServer,
2264
+ "outgoingPort": formValues.outgoingPort,
2265
+ "incomingPort": formValues.incomingPort,
2266
+ "sll": formValues.sll,
2267
+ "userName": formValues.userName,
2268
+ "password": formValues.password
2269
+ });
2270
+ }
2271
+ if (values) return /* @__PURE__ */ jsx43(
2272
+ MyActionIconUpdate,
2273
+ {
2274
+ form,
2275
+ onSubmit: handleSubmit,
2276
+ children: /* @__PURE__ */ jsx43(FormInput, { form })
2277
+ }
2278
+ );
2279
+ return /* @__PURE__ */ jsx43(
2280
+ MyButtonCreate,
2281
+ {
2282
+ form,
2283
+ onSubmit: handleSubmit,
2284
+ children: /* @__PURE__ */ jsx43(FormInput, { form })
2285
+ }
2286
+ );
2287
+ }
2288
+ function FormInput({ form }) {
2289
+ var _a, _b;
2290
+ return /* @__PURE__ */ jsxs29(MyFlexColumn, { children: [
2291
+ /* @__PURE__ */ jsx43(
2292
+ MySelect,
2293
+ __spreadProps(__spreadValues({
2294
+ label: "Ph\xE2n h\u1EC7",
2295
+ data: utils_converter_enumToSelectOptions(ENUM_EMAILCONFIG_MODULE)
2296
+ }, form.getInputProps("emailModule")), {
2297
+ value: (_a = form.getValues().emailModule) == null ? void 0 : _a.toString()
2298
+ })
2299
+ ),
2300
+ /* @__PURE__ */ jsx43(
2301
+ MyTextInput,
2302
+ __spreadValues({
2303
+ label: "Host mail server"
2304
+ }, form.getInputProps("hostMailServer"))
2305
+ ),
2306
+ /* @__PURE__ */ jsx43(
2307
+ MyNumberInput,
2308
+ __spreadValues({
2309
+ label: "Outgoing port"
2310
+ }, form.getInputProps("outgoingPort"))
2311
+ ),
2312
+ /* @__PURE__ */ jsx43(
2313
+ MyNumberInput,
2314
+ __spreadValues({
2315
+ label: "Incoming port"
2316
+ }, form.getInputProps("incomingPort"))
2317
+ ),
2318
+ /* @__PURE__ */ jsx43(
2319
+ MySelect,
2320
+ {
2321
+ label: "SSL",
2322
+ data: ["true", "false"],
2323
+ value: (_b = form.getValues().sll) == null ? void 0 : _b.toString(),
2324
+ onChange: (e) => form.setFieldValue("sll", e == "true" ? true : false)
2325
+ }
2326
+ ),
2327
+ /* @__PURE__ */ jsx43(
2328
+ MyTextInput,
2329
+ __spreadValues({
2330
+ label: "Username"
2331
+ }, form.getInputProps("userName"))
2332
+ ),
2333
+ /* @__PURE__ */ jsx43(
2334
+ PasswordInput,
2335
+ __spreadValues({
2336
+ label: "Password",
2337
+ placeholder: "Nh\u1EADp password"
2338
+ }, form.getInputProps("password"))
2339
+ )
2340
+ ] });
2341
+ }
2342
+
2343
+ // src/modules-features/admin/core/core64229/F_core64229_Delete.tsx
2344
+ import { jsx as jsx44 } from "react/jsx-runtime";
2345
+ function F_core64229_Delete({ values }) {
2346
+ return /* @__PURE__ */ jsx44(
2347
+ MyActionIconDelete,
2348
+ {
2349
+ contextData: values == null ? void 0 : values.code,
2350
+ onSubmit: () => {
2351
+ return baseAxios_default.post("/EmailConfig/Delete", {
2352
+ id: values == null ? void 0 : values.id
2353
+ });
2354
+ }
2355
+ }
2356
+ );
2357
+ }
2358
+
2359
+ // src/modules-features/admin/core/core64229/F_core64229_Read.tsx
2360
+ import { jsx as jsx45, jsxs as jsxs30 } from "react/jsx-runtime";
2361
+ function F_core64229_Read() {
2362
+ const query = useQuery11({
2363
+ queryKey: ["F_core64229_Read"],
2364
+ queryFn: async () => {
2365
+ const res = await baseAxios_default.get("/EmailConfig/GetAll");
2366
+ return res.data.data;
2367
+ }
2368
+ });
2369
+ const columns = useMemo9(() => [
2370
+ {
2371
+ header: "Ph\xE2n h\u1EC7",
2372
+ accessorFn: (row) => {
2373
+ return ENUM_EMAILCONFIG_MODULE[row.emailModule];
2374
+ }
2375
+ },
2376
+ {
2377
+ header: "Host mail server",
2378
+ accessorKey: "hostMailServer"
2379
+ },
2380
+ {
2381
+ header: "Outgoing port",
2382
+ accessorKey: "outgoingPort"
2383
+ },
2384
+ {
2385
+ header: "Incoming port",
2386
+ accessorKey: "incomingPort"
2387
+ },
2388
+ {
2389
+ header: "SSL",
2390
+ accessorFn: (row) => {
2391
+ var _a;
2392
+ return (_a = row.sll) == null ? void 0 : _a.toString();
2393
+ }
2394
+ },
2395
+ {
2396
+ header: "Username",
2397
+ accessorKey: "userName"
2398
+ },
2399
+ {
2400
+ header: "Password",
2401
+ accessorFn: () => "*******"
2402
+ }
2403
+ ], []);
2404
+ if (query.isLoading) return "\u0110ang t\u1EA3i";
2405
+ return /* @__PURE__ */ jsx45(
2406
+ MyDataTable,
2407
+ {
2408
+ columns,
2409
+ data: query.data,
2410
+ renderTopToolbarCustomActions: () => /* @__PURE__ */ jsx45(F_core64229_Form, {}),
2411
+ renderRowActions: ({ row }) => /* @__PURE__ */ jsxs30(MyCenterFull, { children: [
2412
+ /* @__PURE__ */ jsx45(F_core64229_Form, { values: row.original }),
2413
+ /* @__PURE__ */ jsx45(F_core64229_Delete, { values: row.original })
2414
+ ] })
2415
+ }
2416
+ );
2417
+ }
2418
+
2419
+ // src/modules-features/admin/core/core64229/F_core64229.tsx
2420
+ import { jsx as jsx46 } from "react/jsx-runtime";
2421
+ function F_core64229() {
2422
+ return /* @__PURE__ */ jsx46(F_core64229_Read, {});
2423
+ }
2424
+
2425
+ // src/modules-features/admin/core/core71678/F_core71678_Read.tsx
2426
+ import { Button as Button2, Group as Group3 } from "@mantine/core";
2427
+ import { IconShield } from "@tabler/icons-react";
2428
+ import { useQuery as useQuery13 } from "@tanstack/react-query";
2429
+ import { useRouter } from "next/navigation";
2430
+ import { useMemo as useMemo11, useState as useState5 } from "react";
2431
+
2432
+ // src/modules-features/admin/core/core71678/F_core71678_ChangePermission.tsx
2433
+ import { Button, Fieldset, Group as Group2, Table as Table2 } from "@mantine/core";
2434
+ import { useDisclosure } from "@mantine/hooks";
2435
+ import { useMutation as useMutation3, useQuery as useQuery12, useQueryClient } from "@tanstack/react-query";
2436
+ import { useEffect as useEffect6, useMemo as useMemo10, useState as useState4 } from "react";
2437
+ import { jsx as jsx47, jsxs as jsxs31 } from "react/jsx-runtime";
2438
+ function F_core71678_ChangePermission({ user }) {
2439
+ const disc = useDisclosure();
2440
+ const queryClient = useQueryClient();
2441
+ const [rowSelection, setRowSelection] = useState4({});
2442
+ const rowSelect = useState4();
2443
+ const query = useQuery12({
2444
+ queryKey: [`F1_1ChangePermission`],
2445
+ queryFn: async () => {
2446
+ const response = await baseAxios_default.get("/Role/GetAdminRole");
2447
+ return response.data.data;
2448
+ }
2449
+ });
2450
+ const mutation = useMutation3({
2451
+ mutationFn: async (roleIds) => {
2452
+ const res = await baseAxios_default.post("/Role/AddUser?userId=" + user.id, roleIds);
2453
+ return res;
2454
+ }
2455
+ });
2456
+ const permissionColumns = useMemo10(
2457
+ () => [
2458
+ {
2459
+ header: "Quy\u1EC1n",
2460
+ accessorKey: "name"
2461
+ }
2462
+ ],
2463
+ []
2464
+ );
2465
+ function handleSave() {
2466
+ mutation.mutate(Object.keys(rowSelection).map(Number), {
2467
+ onSuccess: () => {
2468
+ utils_notification_show({ crudType: "update" });
2469
+ disc[1].close();
2470
+ queryClient.invalidateQueries();
2471
+ }
2472
+ });
2473
+ }
2474
+ useEffect6(() => {
2475
+ var _a;
2476
+ const result = (_a = user.roles) == null ? void 0 : _a.reduce((acc, item) => {
2477
+ if (item.id !== void 0) {
2478
+ acc[item.id] = true;
2479
+ }
2480
+ return acc;
2481
+ }, {});
2482
+ setRowSelection(result);
2483
+ }, []);
2484
+ return /* @__PURE__ */ jsxs31(MyButtonModal, { modalSize: "xl", disclosure: disc, title: "Ch\u1ECDn quy\u1EC1n cho ng\u01B0\u1EDDi d\xF9ng", label: "S\u1EEDa quy\u1EC1n", children: [
2485
+ /* @__PURE__ */ jsx47(
2486
+ Table2,
2487
+ {
2488
+ w: "100%",
2489
+ variant: "vertical",
2490
+ layout: "fixed",
2491
+ children: /* @__PURE__ */ jsxs31(Table2.Tbody, { children: [
2492
+ /* @__PURE__ */ jsxs31(Table2.Tr, { children: [
2493
+ /* @__PURE__ */ jsx47(Table2.Th, { w: 160, children: "H\u1ECD v\xE0 t\xEAn:" }),
2494
+ /* @__PURE__ */ jsx47(Table2.Td, { children: user.fullName })
2495
+ ] }),
2496
+ /* @__PURE__ */ jsxs31(Table2.Tr, { children: [
2497
+ /* @__PURE__ */ jsx47(Table2.Th, { children: "T\xEAn \u0111\u0103ng nh\u1EADp:" }),
2498
+ /* @__PURE__ */ jsx47(Table2.Td, { children: user.userName })
2499
+ ] }),
2500
+ /* @__PURE__ */ jsxs31(Table2.Tr, { children: [
2501
+ /* @__PURE__ */ jsx47(Table2.Th, { children: "Email:" }),
2502
+ /* @__PURE__ */ jsx47(Table2.Td, { children: user.email })
2503
+ ] })
2504
+ ] })
2505
+ }
2506
+ ),
2507
+ query.isLoading && "\u0110ang t\u1EA3i d\u1EEF li\u1EC7u...",
2508
+ query.isError && "L\u1ED7i khi t\u1EA3i d\u1EEF li\u1EC7u...",
2509
+ /* @__PURE__ */ jsx47(Fieldset, { legend: "Ch\u1ECDn quy\u1EC1n", children: /* @__PURE__ */ jsx47(
2510
+ MyDataTable,
2511
+ {
2512
+ enableRowSelection: true,
2513
+ onRowSelectionChange: setRowSelection,
2514
+ state: { rowSelection },
2515
+ setSelectedRow: rowSelect[1],
2516
+ getRowId: (originalRow) => {
2517
+ var _a;
2518
+ return (_a = originalRow.id) == null ? void 0 : _a.toString();
2519
+ },
2520
+ initialState: {
2521
+ density: "xs",
2522
+ pagination: { pageIndex: 0, pageSize: 10 },
2523
+ columnPinning: { right: ["mrt-row-actions"] },
2524
+ columnVisibility: {
2525
+ nguoiCapNhat: false,
2526
+ ngayCapNhat: false
2527
+ }
2528
+ },
2529
+ columns: permissionColumns,
2530
+ data: query.data
2531
+ }
2532
+ ) }),
2533
+ /* @__PURE__ */ jsx47(Group2, { justify: "flex-end", mt: 24, children: /* @__PURE__ */ jsx47(Button, { onClick: handleSave, children: "L\u01B0u" }) })
2534
+ ] });
2535
+ }
2536
+
2537
+ // src/modules-features/admin/core/core71678/F_core71678_Create.tsx
2538
+ import { useForm as useForm16 } from "@mantine/form";
2539
+ import { jsx as jsx48, jsxs as jsxs32 } from "react/jsx-runtime";
2540
+ var ENDPOINT2 = "/Account/create";
2541
+ function F_core71678_Create() {
2542
+ const form = useForm16({
2543
+ initialValues: {
2544
+ fullName: "",
2545
+ code: "",
2546
+ userName: "",
2547
+ password: "",
2548
+ email: "",
2549
+ phoneNumber: ""
2550
+ },
2551
+ validate: {
2552
+ email: (value) => U0MyValidateEmail(value)
2553
+ }
2554
+ });
2555
+ async function handleSubmit() {
2556
+ return await baseAxios_default.post(ENDPOINT2, __spreadProps(__spreadValues({}, form.getValues()), {
2557
+ passwordHash: "",
2558
+ id: 0,
2559
+ address: "",
2560
+ concurrencyStamp: "",
2561
+ isBlocked: false,
2562
+ isEnabled: true,
2563
+ workingUnitId: void 0,
2564
+ AQModuleId: 1002
2565
+ }));
2566
+ }
2567
+ return /* @__PURE__ */ jsxs32(MyButtonCreate, { form, onSubmit: handleSubmit, objectName: "ng\u01B0\u1EDDi d\xF9ng", children: [
2568
+ /* @__PURE__ */ jsx48(MyTextInput, __spreadValues({ label: "M\xE3 t\xE0i kho\u1EA3n" }, form.getInputProps("code"))),
2569
+ /* @__PURE__ */ jsx48(MyTextInput, __spreadValues({ label: "T\xEAn t\xE0i kho\u1EA3n" }, form.getInputProps("userName"))),
2570
+ /* @__PURE__ */ jsx48(MyTextInput, __spreadValues({ label: "M\u1EADt kh\u1EA9u" }, form.getInputProps("password"))),
2571
+ /* @__PURE__ */ jsx48(MyTextInput, __spreadValues({ label: "H\u1ECD v\xE0 t\xEAn" }, form.getInputProps("fullName"))),
2572
+ /* @__PURE__ */ jsx48(MyTextInput, __spreadValues({ label: "Email" }, form.getInputProps("email"))),
2573
+ /* @__PURE__ */ jsx48(MyTextInput, __spreadValues({ label: "S\u1ED1 \u0111i\u1EC7n tho\u1EA1i" }, form.getInputProps("phoneNumber")))
2574
+ ] });
2575
+ }
2576
+
2577
+ // src/modules-features/admin/core/core71678/F_core71678_Delete.tsx
2578
+ import { jsx as jsx49 } from "react/jsx-runtime";
2579
+ var ENDPOINT3 = "/Account/delete";
2580
+ function F_core71678_Delete({ id, code }) {
2581
+ return /* @__PURE__ */ jsx49(
2582
+ MyActionIconDelete,
2583
+ {
2584
+ contextData: code,
2585
+ onSubmit: async () => await baseAxios_default.post(ENDPOINT3, { id })
2586
+ }
2587
+ );
2588
+ }
2589
+
2590
+ // src/modules-features/admin/core/core71678/F_core71678_Update.tsx
2591
+ import { useForm as useForm17 } from "@mantine/form";
2592
+ import { useEffect as useEffect7 } from "react";
2593
+ import { jsx as jsx50, jsxs as jsxs33 } from "react/jsx-runtime";
2594
+ function F_core71678_Update({ user }) {
2595
+ const form = useForm17({
2596
+ initialValues: user
2597
+ });
2598
+ useEffect7(() => {
2599
+ console.log(form.values);
2600
+ }, [form.values]);
2601
+ return /* @__PURE__ */ jsx50(MyActionIconUpdate, { form, onSubmit: async (values) => {
2602
+ return await baseAxios_default.post(
2603
+ "/Account/update",
2604
+ __spreadProps(__spreadValues({}, values), {
2605
+ id: values.id,
2606
+ address: "",
2607
+ concurrencyStamp: "",
2608
+ isBlocked: false,
2609
+ isEnabled: true,
2610
+ workingUnitId: null
2611
+ })
2612
+ );
2613
+ }, children: /* @__PURE__ */ jsxs33(MyFlexColumn, { children: [
2614
+ /* @__PURE__ */ jsx50(MyTextInput, __spreadValues({ disabled: true, label: "M\xE3 t\xE0i kho\u1EA3n" }, form.getInputProps("code"))),
2615
+ /* @__PURE__ */ jsx50(MyTextInput, __spreadValues({ disabled: true, label: "T\xEAn t\xE0i kho\u1EA3n" }, form.getInputProps("userName"))),
2616
+ /* @__PURE__ */ jsx50(MyTextInput, __spreadValues({ label: "H\u1ECD v\xE0 t\xEAn" }, form.getInputProps("fullName"))),
2617
+ /* @__PURE__ */ jsx50(MyTextInput, __spreadValues({ label: "Email" }, form.getInputProps("email"))),
2618
+ /* @__PURE__ */ jsx50(MyTextInput, __spreadValues({ label: "S\u1ED1 \u0111i\u1EC7n tho\u1EA1i" }, form.getInputProps("phoneNumber")))
2619
+ ] }) });
2620
+ }
2621
+
2622
+ // src/modules-features/admin/core/core71678/F_core71678_Read.tsx
2623
+ import { jsx as jsx51, jsxs as jsxs34 } from "react/jsx-runtime";
2624
+ var ENDPOINT4 = "/Account/GetAdminAccount";
2625
+ function F_core71678_Read() {
2626
+ const router = useRouter();
2627
+ const [rowSelection, setRowSelection] = useState5({});
2628
+ const AllUserQuery = useQuery13({
2629
+ queryKey: ["F_core71678_Read"],
2630
+ queryFn: async () => {
2631
+ var _a;
2632
+ const result = await baseAxios_default.get(
2633
+ ENDPOINT4,
2634
+ { params: { page: 5, pageNumber: 1 } }
2635
+ );
2636
+ return ((_a = result.data) == null ? void 0 : _a.data) || [];
2637
+ }
2638
+ });
2639
+ const columns = useMemo11(
2640
+ () => [
2641
+ {
2642
+ header: "T\xEAn t\xE0i kho\u1EA3n",
2643
+ accessorKey: "userName"
2644
+ },
2645
+ {
2646
+ header: "H\u1ECD v\xE0 t\xEAn",
2647
+ accessorKey: "fullName"
2648
+ },
2649
+ {
2650
+ header: "Email",
2651
+ accessorKey: "email"
2652
+ },
2653
+ {
2654
+ header: "Quy\u1EC1n",
2655
+ accessorFn: (row) => /* @__PURE__ */ jsx51(F_core71678_ChangePermission, { user: row })
2656
+ }
2657
+ ],
2658
+ []
2659
+ );
2660
+ if (AllUserQuery.isLoading) return "Loading...";
2661
+ return /* @__PURE__ */ jsx51(
2662
+ MyDataTable,
2663
+ {
2664
+ columns,
2665
+ data: AllUserQuery.data,
2666
+ renderTopToolbarCustomActions: () => {
2667
+ return /* @__PURE__ */ jsxs34(Group3, { children: [
2668
+ /* @__PURE__ */ jsx51(F_core71678_Create, {}),
2669
+ /* @__PURE__ */ jsx51(
2670
+ Button2,
2671
+ {
2672
+ color: "violet",
2673
+ leftSection: /* @__PURE__ */ jsx51(IconShield, {}),
2674
+ onClick: () => {
2675
+ router.push("core47643");
2676
+ },
2677
+ children: "Danh m\u1EE5c quy\u1EC1n"
2678
+ }
2679
+ )
2680
+ ] });
2681
+ },
2682
+ renderRowActions: ({ row }) => {
2683
+ return /* @__PURE__ */ jsxs34(MyCenterFull, { children: [
2684
+ /* @__PURE__ */ jsx51(F_core71678_Update, { user: row.original }),
2685
+ /* @__PURE__ */ jsx51(F_core71678_Delete, { id: row.original.id, code: row.original.code })
2686
+ ] });
2687
+ }
2688
+ }
2689
+ );
2690
+ }
2691
+
2692
+ // src/modules-features/admin/core/core71678/F_core71678.tsx
2693
+ import { jsx as jsx52 } from "react/jsx-runtime";
2694
+ function F_core71678() {
2695
+ return /* @__PURE__ */ jsx52(F_core71678_Read, {});
2696
+ }
2697
+
2698
+ // src/modules-features/admin/core/core76318/F_core76318_Read.tsx
2699
+ import { useQuery as useQuery14 } from "@tanstack/react-query";
2700
+ import { useMemo as useMemo12 } from "react";
2701
+
2702
+ // src/modules-features/admin/core/core76318/F_core76318_Create.tsx
2703
+ import { FileInput as FileInput5 } from "@mantine/core";
2704
+ import { useForm as useForm18 } from "@mantine/form";
2705
+ import { jsx as jsx53, jsxs as jsxs35 } from "react/jsx-runtime";
2706
+ function F_core76318_Create({ SecurityTypeId }) {
2707
+ const form = useForm18({
2708
+ mode: "uncontrolled",
2709
+ validate: {
2710
+ decisionCode: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
2711
+ promulgateDate: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
2712
+ name: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
2713
+ file: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng"
2714
+ }
2715
+ });
2716
+ return /* @__PURE__ */ jsxs35(
2717
+ MyButtonCreate,
2718
+ {
2719
+ objectName: "v\u0103n b\u1EA3n",
2720
+ form,
2721
+ onSubmit: async (values) => {
2722
+ return await baseAxios_default.post("/Document/create", __spreadProps(__spreadValues({}, values), {
2723
+ DocumentType: SecurityTypeId,
2724
+ //1.4 Thông tin xây dựng, cải tiến, bảo trì hệ thống
2725
+ fileDetail: await utils_file_fileToAQDocumentType(values.file)
2726
+ }));
2727
+ },
2728
+ children: [
2729
+ /* @__PURE__ */ jsx53(
2730
+ MyTextInput,
2731
+ __spreadValues({
2732
+ withAsterisk: true,
2733
+ label: "S\u1ED1 quy \u0111\u1ECBnh"
2734
+ }, form.getInputProps("decisionCode"))
2735
+ ),
2736
+ /* @__PURE__ */ jsx53(
2737
+ MyDateInput,
2738
+ __spreadValues({
2739
+ withAsterisk: true,
2740
+ label: "Ng\xE0y ban h\xE0nh"
2741
+ }, form.getInputProps("promulgateDate"))
2742
+ ),
2743
+ /* @__PURE__ */ jsx53(
2744
+ MyTextInput,
2745
+ __spreadValues({
2746
+ withAsterisk: true,
2747
+ label: "T\xEAn t\xE0i li\u1EC7u"
2748
+ }, form.getInputProps("name"))
2749
+ ),
2750
+ /* @__PURE__ */ jsx53(
2751
+ FileInput5,
2752
+ __spreadValues({
2753
+ withAsterisk: true,
2754
+ placeholder: "T\u1EA3i l\xEAn t\xE0i li\u1EC7u",
2755
+ label: "T\xE0i li\u1EC7u"
2756
+ }, form.getInputProps("file"))
2757
+ )
2758
+ ]
2759
+ }
2760
+ );
2761
+ }
2762
+
2763
+ // src/modules-features/admin/core/core76318/F_core76318_Delete.tsx
2764
+ import { jsx as jsx54 } from "react/jsx-runtime";
2765
+ function F_core76318_Delete({
2766
+ id,
2767
+ contextData
2768
+ }) {
2769
+ return /* @__PURE__ */ jsx54(
2770
+ MyActionIconDelete,
2771
+ {
2772
+ contextData,
2773
+ onSubmit: () => baseAxios_default.post("/Document/delete", { id })
2774
+ }
2775
+ );
2776
+ }
2777
+
2778
+ // src/modules-features/admin/core/core76318/F_core76318_Update.tsx
2779
+ import { FileInput as FileInput6, TextInput as TextInput2 } from "@mantine/core";
2780
+ import { useForm as useForm19 } from "@mantine/form";
2781
+ import { jsx as jsx55, jsxs as jsxs36 } from "react/jsx-runtime";
2782
+ function F_core76318_Update({ values }) {
2783
+ var _a;
2784
+ const form = useForm19({
2785
+ mode: "uncontrolled",
2786
+ initialValues: __spreadProps(__spreadValues({}, values), {
2787
+ file: new File(
2788
+ [],
2789
+ (_a = values.path) == null ? void 0 : _a.split("/")[values.path.split("/").length - 1]
2790
+ ),
2791
+ promulgateDate: new Date(values.promulgateDate)
2792
+ }),
2793
+ validate: {
2794
+ decisionCode: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
2795
+ promulgateDate: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
2796
+ name: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
2797
+ file: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng"
2798
+ }
2799
+ });
2800
+ return /* @__PURE__ */ jsxs36(
2801
+ MyActionIconUpdate,
2802
+ {
2803
+ form,
2804
+ onSubmit: async (values2) => {
2805
+ return await baseAxios_default.post("/Document/Update", __spreadProps(__spreadValues({}, values2), {
2806
+ fileDetail: await utils_file_fileToAQDocumentType(values2.file)
2807
+ }));
2808
+ },
2809
+ children: [
2810
+ /* @__PURE__ */ jsx55(
2811
+ TextInput2,
2812
+ __spreadValues({
2813
+ withAsterisk: true,
2814
+ label: "S\u1ED1 quy \u0111\u1ECBnh"
2815
+ }, form.getInputProps("decisionCode"))
2816
+ ),
2817
+ /* @__PURE__ */ jsx55(
2818
+ MyDateInput,
2819
+ __spreadValues({
2820
+ withAsterisk: true,
2821
+ label: "Ng\xE0y ban h\xE0nh"
2822
+ }, form.getInputProps("promulgateDate"))
2823
+ ),
2824
+ /* @__PURE__ */ jsx55(
2825
+ TextInput2,
2826
+ __spreadValues({
2827
+ withAsterisk: true,
2828
+ label: "T\xEAn t\xE0i li\u1EC7u"
2829
+ }, form.getInputProps("name"))
2830
+ ),
2831
+ /* @__PURE__ */ jsx55(
2832
+ FileInput6,
2833
+ __spreadValues({
2834
+ withAsterisk: true,
2835
+ label: "Ch\u1ECDn file"
2836
+ }, form.getInputProps("file"))
2837
+ )
2838
+ ]
2839
+ }
2840
+ );
2841
+ }
2842
+
2843
+ // src/modules-features/admin/core/core76318/F_core76318_Read.tsx
2844
+ import { jsx as jsx56, jsxs as jsxs37 } from "react/jsx-runtime";
2845
+ function F_core76318_Read({ SecurityTypeId }) {
2846
+ const query = useQuery14({
2847
+ queryKey: ["F_core76318_Read"],
2848
+ queryFn: async () => {
2849
+ var _a;
2850
+ const result = await baseAxios_default.get(
2851
+ `/Document/GetByType?documentType=${SecurityTypeId}`
2852
+ );
2853
+ return ((_a = result.data) == null ? void 0 : _a.data) || [];
2854
+ }
2855
+ });
2856
+ const columns = useMemo12(
2857
+ () => [
2858
+ {
2859
+ header: "S\u1ED1 quy \u0111\u1ECBnh",
2860
+ accessorKey: "decisionCode"
2861
+ },
2862
+ {
2863
+ header: "Ng\xE0y ban h\xE0nh",
2864
+ accessorFn: (row) => U0DateToDDMMYYYString(new Date(row.promulgateDate))
2865
+ },
2866
+ {
2867
+ header: "T\xEAn t\xE0i li\u1EC7u",
2868
+ accessorKey: "name"
2869
+ },
2870
+ {
2871
+ header: "File",
2872
+ accessorFn: (row) => {
2873
+ return /* @__PURE__ */ jsx56(MyCenterFull, { children: /* @__PURE__ */ jsx56(MyButtonViewPDF, { id: row.id }) });
2874
+ }
2875
+ }
2876
+ ],
2877
+ []
2878
+ );
2879
+ if (query.isLoading) return "Loading...";
2880
+ if (query.isError) return "c\xF3 l\u1ED7i x\u1EA3y ra!";
2881
+ return /* @__PURE__ */ jsx56(
2882
+ MyDataTable,
2883
+ {
2884
+ columns,
2885
+ data: query.data,
2886
+ renderTopToolbarCustomActions: () => /* @__PURE__ */ jsx56(F_core76318_Create, { SecurityTypeId }),
2887
+ renderRowActions: ({ row }) => {
2888
+ var _a;
2889
+ return /* @__PURE__ */ jsxs37(MyCenterFull, { children: [
2890
+ /* @__PURE__ */ jsx56(F_core76318_Update, { values: row.original }),
2891
+ /* @__PURE__ */ jsx56(
2892
+ F_core76318_Delete,
2893
+ {
2894
+ id: row.original.id,
2895
+ contextData: (_a = row.original.decisionCode) == null ? void 0 : _a.toString()
2896
+ }
2897
+ )
2898
+ ] });
2899
+ }
2900
+ }
2901
+ );
2902
+ }
2903
+
2904
+ // src/modules-features/admin/core/core76318/F_core76318.tsx
2905
+ import { jsx as jsx57 } from "react/jsx-runtime";
2906
+ function F_core76318({ SecurityTypeId }) {
2907
+ return /* @__PURE__ */ jsx57(F_core76318_Read, { SecurityTypeId });
2908
+ }
2909
+
2910
+ // src/modules-features/admin/core/core83092/F_core83092.tsx
2911
+ import { Grid as Grid4, Paper as Paper7, ScrollArea as ScrollArea4 } from "@mantine/core";
2912
+
2913
+ // src/modules-features/admin/core/core83092/F_core83092_ReadUser.tsx
2914
+ import { Container as Container2 } from "@mantine/core";
2915
+ import { useQuery as useQuery15 } from "@tanstack/react-query";
2916
+ import { useEffect as useEffect8, useMemo as useMemo13, useState as useState6 } from "react";
2917
+ import { jsx as jsx58 } from "react/jsx-runtime";
2918
+ function F_core83092_ReadUser() {
2919
+ const store = useS_core83092();
2920
+ const query = useQ_core83092_Account_GetAdminAccount();
2921
+ const [rowSelection, setRowSelection] = useState6({});
2922
+ const columns = useMemo13(
2923
+ () => [
2924
+ {
2925
+ header: "H\u1ECD v\xE0 t\xEAn",
2926
+ accessorKey: "fullName",
2927
+ size: 60
2928
+ },
2929
+ {
2930
+ header: "Email",
2931
+ accessorKey: "email"
2932
+ }
2933
+ ],
2934
+ []
2935
+ );
2936
+ const handleRowClick = (rowId) => {
2937
+ setRowSelection({ [rowId]: true });
2938
+ store.setProperty("roleId", parseInt(rowId));
2939
+ };
2940
+ useEffect8(() => {
2941
+ if (store.state.roleId == 0) return;
2942
+ setRowSelection({ [store.state.roleId]: true });
2943
+ }, [store.state.roleId]);
2944
+ useEffect8(() => {
2945
+ if (!query.data) return;
2946
+ store.setProperty("roleId", query.data[0].id);
2947
+ }, [query.data]);
2948
+ if (query.isLoading) return "Loading...";
2949
+ if (query.isError) return "C\xF3 l\u1ED7i x\u1EA3y ra!";
2950
+ return /* @__PURE__ */ jsx58(Container2, { fluid: true, w: "100%", children: /* @__PURE__ */ jsx58(
2951
+ MyDataTable,
2952
+ {
2953
+ columns,
2954
+ data: query.data,
2955
+ getRowId: (row) => {
2956
+ var _a;
2957
+ return (_a = row.id) == null ? void 0 : _a.toString();
2958
+ },
2959
+ mantineTableBodyRowProps: ({ row }) => ({
2960
+ onClick: () => handleRowClick(row.id),
2961
+ style: {
2962
+ cursor: "pointer",
2963
+ backgroundColor: rowSelection[row.id] ? "#d0e7ff" : "transparent"
2964
+ }
2965
+ }),
2966
+ state: rowSelection
2967
+ }
2968
+ ) });
2969
+ }
2970
+ function useQ_core83092_Account_GetAdminAccount() {
2971
+ const query = useQuery15({
2972
+ queryKey: ["useQ_core83092_Account_GetAdminAccount"],
2973
+ queryFn: async () => {
2974
+ var _a;
2975
+ const result = await baseAxios_default.get(`/Account/GetAdminAccount`, { params: { page: 5, pageNumber: 1 } });
2976
+ return ((_a = result.data) == null ? void 0 : _a.data) || [];
2977
+ },
2978
+ refetchOnWindowFocus: false
2979
+ });
2980
+ return query;
2981
+ }
2982
+
2983
+ // src/modules-features/admin/core/core83092/F_core83092_Save.tsx
2984
+ import { useMutation as useMutation4 } from "@tanstack/react-query";
2985
+ import { useEffect as useEffect9, useState as useState7 } from "react";
2986
+ import { jsx as jsx59 } from "react/jsx-runtime";
2987
+ function F_core83092_Save() {
2988
+ const store = useS_core83092();
2989
+ const disable = useState7(false);
2990
+ const mutation = useMutation4({
2991
+ mutationFn: async (body) => {
2992
+ const res = await baseAxios_default.put("/Role/UpdateUserPermission", body);
2993
+ return res;
2994
+ }
2995
+ });
2996
+ function handleSave() {
2997
+ mutation.mutate({
2998
+ pagePermissions: store.state.rolePermissions,
2999
+ userId: store.state.roleId
3000
+ }, {
3001
+ onSuccess: () => {
3002
+ utils_notification_show({
3003
+ crudType: "update"
3004
+ });
3005
+ }
3006
+ });
3007
+ }
3008
+ useEffect9(() => {
3009
+ if (!store.state.rolePermissions || store.state.rolePermissions.length == 0) {
3010
+ disable[1](true);
3011
+ return;
3012
+ }
3013
+ disable[1](false);
3014
+ }, [store.state.rolePermissions]);
3015
+ return /* @__PURE__ */ jsx59(MyButton, { disabled: disable[0], crudType: "save", onClick: handleSave });
3016
+ }
3017
+
3018
+ // src/modules-features/admin/core/core83092/F_core83092_ViewMenuPermissions.tsx
3019
+ import { Checkbox as Checkbox2, Flex as Flex2, ScrollArea as ScrollArea3, Table as Table3, Text as Text2 } from "@mantine/core";
3020
+ import { IconEdit as IconEdit2, IconEyeUp as IconEyeUp2, IconFileExport as IconFileExport2, IconPlus as IconPlus2, IconPrinter as IconPrinter2, IconTrash as IconTrash2 } from "@tabler/icons-react";
3021
+ import { useQuery as useQuery16 } from "@tanstack/react-query";
3022
+ import React3, { useEffect as useEffect10, useState as useState8 } from "react";
3023
+ import { jsx as jsx60, jsxs as jsxs38 } from "react/jsx-runtime";
3024
+ var title2 = "Danh s\xE1ch ch\u1EE9c n\u0103ng";
3025
+ function F_core83092_ViewMenuPermissions({ menuData: menuData2 }) {
3026
+ var _a, _b;
3027
+ const store = useS_core83092();
3028
+ const query = useGetUserPermission2({ menuData: menuData2 });
3029
+ const list = useState8([]);
3030
+ useEffect10(() => {
3031
+ list[1](groupToTwoLevels(menuData2));
3032
+ }, []);
3033
+ useEffect10(() => {
3034
+ if (!query.data) return;
3035
+ store.setProperty("rolePermissions", query.data);
3036
+ }, [query.data]);
3037
+ if (((_a = list[0]) == null ? void 0 : _a.length) == 0) return "\u0110ang t\u1EA3i...";
3038
+ return /* @__PURE__ */ jsx60(ScrollArea3.Autosize, { h: "70vh", children: /* @__PURE__ */ jsxs38(Table3, { children: [
3039
+ /* @__PURE__ */ jsx60(
3040
+ Table3.Thead,
3041
+ {
3042
+ bg: "light-dark(var(--mantine-color-white), var(--mantine-color-dark-8))",
3043
+ style: {
3044
+ position: "sticky",
3045
+ top: 0,
3046
+ zIndex: 1,
3047
+ boxShadow: "0px 4px 6px rgba(0, 0, 0, 0.1)",
3048
+ border: "1px solid var(--mantine-color-gray-4)"
3049
+ },
3050
+ children: /* @__PURE__ */ jsxs38(Table3.Tr, { children: [
3051
+ /* @__PURE__ */ jsx60(Table3.Th, { children: title2 }),
3052
+ /* @__PURE__ */ jsx60(Table3.Th, { children: /* @__PURE__ */ jsxs38(Flex2, { gap: 3, direction: "column", justify: "center", align: "center", children: [
3053
+ /* @__PURE__ */ jsx60(Checkbox2, { checked: store.isAllPermission("isRead"), onChange: (e) => {
3054
+ store.toogleAllPermissionWithType("isRead", e.target.checked);
3055
+ } }),
3056
+ /* @__PURE__ */ jsxs38(MyFlexRow, { gap: 3, children: [
3057
+ "Xem",
3058
+ /* @__PURE__ */ jsx60(IconEyeUp2, { color: "gray" })
3059
+ ] })
3060
+ ] }) }),
3061
+ /* @__PURE__ */ jsx60(Table3.Th, { children: /* @__PURE__ */ jsxs38(Flex2, { gap: 3, direction: "column", justify: "center", align: "center", children: [
3062
+ /* @__PURE__ */ jsx60(Checkbox2, { checked: store.isAllPermission("isCreate"), onChange: (e) => {
3063
+ store.toogleAllPermissionWithType("isCreate", e.target.checked);
3064
+ } }),
3065
+ /* @__PURE__ */ jsxs38(MyFlexRow, { gap: 3, children: [
3066
+ "Th\xEAm",
3067
+ /* @__PURE__ */ jsx60(IconPlus2, { color: "blue" })
3068
+ ] })
3069
+ ] }) }),
3070
+ /* @__PURE__ */ jsx60(Table3.Th, { children: /* @__PURE__ */ jsxs38(Flex2, { gap: 3, direction: "column", justify: "center", align: "center", children: [
3071
+ /* @__PURE__ */ jsx60(Checkbox2, { checked: store.isAllPermission("isUpdate"), onChange: (e) => {
3072
+ store.toogleAllPermissionWithType("isUpdate", e.target.checked);
3073
+ } }),
3074
+ /* @__PURE__ */ jsxs38(MyFlexRow, { gap: 3, children: [
3075
+ "S\u1EEDa",
3076
+ /* @__PURE__ */ jsx60(IconEdit2, { color: "var(--mantine-color-yellow-8)" })
3077
+ ] })
3078
+ ] }) }),
3079
+ /* @__PURE__ */ jsx60(Table3.Th, { children: /* @__PURE__ */ jsxs38(Flex2, { gap: 3, direction: "column", justify: "center", align: "center", children: [
3080
+ /* @__PURE__ */ jsx60(Checkbox2, { checked: store.isAllPermission("isDelete"), onChange: (e) => {
3081
+ store.toogleAllPermissionWithType("isDelete", e.target.checked);
3082
+ } }),
3083
+ /* @__PURE__ */ jsxs38(MyFlexRow, { gap: 3, children: [
3084
+ "X\xF3a",
3085
+ /* @__PURE__ */ jsx60(IconTrash2, { color: "var(--mantine-color-red-8)" })
3086
+ ] })
3087
+ ] }) }),
3088
+ /* @__PURE__ */ jsx60(Table3.Th, { children: /* @__PURE__ */ jsxs38(Flex2, { gap: 3, direction: "column", justify: "center", align: "center", children: [
3089
+ /* @__PURE__ */ jsx60(Checkbox2, { checked: store.isAllPermission("isPrint"), onChange: (e) => {
3090
+ store.toogleAllPermissionWithType("isPrint", e.target.checked);
3091
+ } }),
3092
+ /* @__PURE__ */ jsxs38(MyFlexRow, { gap: 3, children: [
3093
+ "In",
3094
+ /* @__PURE__ */ jsx60(IconPrinter2, { color: "var(--mantine-color-cyan-8)" })
3095
+ ] })
3096
+ ] }) }),
3097
+ /* @__PURE__ */ jsx60(Table3.Th, { children: /* @__PURE__ */ jsxs38(Flex2, { gap: 3, direction: "column", justify: "center", align: "center", children: [
3098
+ /* @__PURE__ */ jsx60(Checkbox2, { checked: store.isAllPermission("isExport"), onChange: (e) => {
3099
+ store.toogleAllPermissionWithType("isExport", e.target.checked);
3100
+ } }),
3101
+ /* @__PURE__ */ jsxs38(MyFlexRow, { gap: 3, children: [
3102
+ "Xu\u1EA5t",
3103
+ /* @__PURE__ */ jsx60(IconFileExport2, { color: "var(--mantine-color-green-8)" })
3104
+ ] })
3105
+ ] }) })
3106
+ ] })
3107
+ }
3108
+ ),
3109
+ /* @__PURE__ */ jsx60(Table3.Tbody, { bg: "light-dark(var(--mantine-color-white), var(--mantine-color-dark-8))", children: (_b = list[0]) == null ? void 0 : _b.map((item, idx) => {
3110
+ if (item.links == void 0) return /* @__PURE__ */ jsxs38(Table3.Tr, { children: [
3111
+ /* @__PURE__ */ jsx60(Table3.Td, { children: item.label }),
3112
+ /* @__PURE__ */ jsx60(Table3.Td, { children: /* @__PURE__ */ jsx60(MyCenterFull, { children: /* @__PURE__ */ jsx60(Checkbox2, {}) }) }),
3113
+ /* @__PURE__ */ jsx60(Table3.Td, { children: /* @__PURE__ */ jsx60(MyCenterFull, { children: /* @__PURE__ */ jsx60(Checkbox2, {}) }) }),
3114
+ /* @__PURE__ */ jsx60(Table3.Td, { children: /* @__PURE__ */ jsx60(MyCenterFull, { children: /* @__PURE__ */ jsx60(Checkbox2, {}) }) }),
3115
+ /* @__PURE__ */ jsx60(Table3.Td, { children: /* @__PURE__ */ jsx60(MyCenterFull, { children: /* @__PURE__ */ jsx60(Checkbox2, {}) }) }),
3116
+ /* @__PURE__ */ jsx60(Table3.Td, { children: /* @__PURE__ */ jsx60(MyCenterFull, { children: /* @__PURE__ */ jsx60(Checkbox2, {}) }) }),
3117
+ /* @__PURE__ */ jsx60(Table3.Td, { children: /* @__PURE__ */ jsx60(MyCenterFull, { children: /* @__PURE__ */ jsx60(Checkbox2, {}) }) })
3118
+ ] }, idx);
3119
+ return /* @__PURE__ */ jsxs38(React3.Fragment, { children: [
3120
+ /* @__PURE__ */ jsx60(Table3.Tr, { children: /* @__PURE__ */ jsx60(
3121
+ Table3.Td,
3122
+ {
3123
+ colSpan: 7,
3124
+ bg: OBJECT_COlORS.mantineBackgroundBlueLight,
3125
+ children: /* @__PURE__ */ jsx60(Text2, { fs: "oblique", size: "sm", fw: "bold", children: item.label })
3126
+ }
3127
+ ) }, item.label),
3128
+ item.links.map(
3129
+ (item2, idx2) => {
3130
+ var _a2, _b2, _c, _d, _e, _f;
3131
+ return /* @__PURE__ */ jsxs38(Table3.Tr, { children: [
3132
+ /* @__PURE__ */ jsx60(Table3.Td, { children: item2.label }),
3133
+ /* @__PURE__ */ jsx60(Table3.Td, { children: /* @__PURE__ */ jsx60(MyCenterFull, { children: /* @__PURE__ */ jsx60(
3134
+ Checkbox2,
3135
+ {
3136
+ checked: ((_a2 = store.findByPageId(item2.pageId)) == null ? void 0 : _a2.isRead) || false,
3137
+ onChange: (e) => {
3138
+ store.updatePermission(item2.pageId, {
3139
+ isRead: e.target.checked
3140
+ });
3141
+ }
3142
+ }
3143
+ ) }) }),
3144
+ /* @__PURE__ */ jsx60(Table3.Td, { children: /* @__PURE__ */ jsx60(MyCenterFull, { children: /* @__PURE__ */ jsx60(
3145
+ Checkbox2,
3146
+ {
3147
+ checked: ((_b2 = store.findByPageId(item2.pageId)) == null ? void 0 : _b2.isCreate) || false,
3148
+ onChange: (e) => {
3149
+ store.updatePermission(item2.pageId, {
3150
+ isCreate: e.target.checked
3151
+ });
3152
+ }
3153
+ }
3154
+ ) }) }),
3155
+ /* @__PURE__ */ jsx60(Table3.Td, { children: /* @__PURE__ */ jsx60(MyCenterFull, { children: /* @__PURE__ */ jsx60(
3156
+ Checkbox2,
3157
+ {
3158
+ checked: ((_c = store.findByPageId(item2.pageId)) == null ? void 0 : _c.isUpdate) || false,
3159
+ onChange: (e) => {
3160
+ store.updatePermission(item2.pageId, {
3161
+ isUpdate: e.target.checked
3162
+ });
3163
+ }
3164
+ }
3165
+ ) }) }),
3166
+ /* @__PURE__ */ jsx60(Table3.Td, { children: /* @__PURE__ */ jsx60(MyCenterFull, { children: /* @__PURE__ */ jsx60(
3167
+ Checkbox2,
3168
+ {
3169
+ checked: ((_d = store.findByPageId(item2.pageId)) == null ? void 0 : _d.isDelete) || false,
3170
+ onChange: (e) => {
3171
+ store.updatePermission(item2.pageId, {
3172
+ isDelete: e.target.checked
3173
+ });
3174
+ }
3175
+ }
3176
+ ) }) }),
3177
+ /* @__PURE__ */ jsx60(Table3.Td, { children: /* @__PURE__ */ jsx60(MyCenterFull, { children: /* @__PURE__ */ jsx60(
3178
+ Checkbox2,
3179
+ {
3180
+ checked: ((_e = store.findByPageId(item2.pageId)) == null ? void 0 : _e.isPrint) || false,
3181
+ onChange: (e) => {
3182
+ store.updatePermission(item2.pageId, {
3183
+ isPrint: e.target.checked
3184
+ });
3185
+ }
3186
+ }
3187
+ ) }) }),
3188
+ /* @__PURE__ */ jsx60(Table3.Td, { children: /* @__PURE__ */ jsx60(MyCenterFull, { children: /* @__PURE__ */ jsx60(
3189
+ Checkbox2,
3190
+ {
3191
+ checked: ((_f = store.findByPageId(item2.pageId)) == null ? void 0 : _f.isExport) || false,
3192
+ onChange: (e) => {
3193
+ store.updatePermission(item2.pageId, {
3194
+ isExport: e.target.checked
3195
+ });
3196
+ }
3197
+ }
3198
+ ) }) })
3199
+ ] }, idx2);
3200
+ }
3201
+ )
3202
+ ] }, idx);
3203
+ }) })
3204
+ ] }) });
3205
+ }
3206
+ function useGetUserPermission2({ menuData: menuData2 }) {
3207
+ const store = useS_core83092();
3208
+ const query = useQuery16({
3209
+ queryKey: ["F_7p4mh9d75x_AuthorizationTable", store.state.roleId],
3210
+ queryFn: async () => {
3211
+ const result = await baseAxios_default.get("/Role/GetUserPermission?userId=" + store.state.roleId);
3212
+ const menudataFinal = utils_layout_getItemsWithoutLinks(menuData2);
3213
+ if (result.data.data.length == 0) {
3214
+ const final = menudataFinal.map((item) => ({
3215
+ pageId: item.pageId,
3216
+ isRead: false,
3217
+ isCreate: false,
3218
+ isUpdate: false,
3219
+ isDelete: false,
3220
+ isExport: false,
3221
+ isPrint: false
3222
+ }));
3223
+ return final.filter((item) => item.pageId != void 0);
3224
+ }
3225
+ const menuDataFromAPI = result.data.data;
3226
+ const mergedArray = utils_core83092_mergePage(menudataFinal, menuDataFromAPI).map((item) => ({
3227
+ pageId: item.pageId,
3228
+ isCreate: item.isCreate || false,
3229
+ isRead: item.isRead || false,
3230
+ isUpdate: item.isUpdate || false || false,
3231
+ isDelete: item.isDelete,
3232
+ isPrint: item.isPrint || false,
3233
+ isExport: item.isExport || false
3234
+ })).filter((item) => item.pageId != void 0);
3235
+ return mergedArray;
3236
+ },
3237
+ enabled: store.state.roleId != 0,
3238
+ refetchOnWindowFocus: false
3239
+ });
3240
+ return query;
3241
+ }
3242
+
3243
+ // src/modules-features/admin/core/core83092/F_core83092.tsx
3244
+ import { jsx as jsx61, jsxs as jsxs39 } from "react/jsx-runtime";
3245
+ function F_core83092({ menuData: menuData2 }) {
3246
+ return /* @__PURE__ */ jsxs39(Grid4, { grow: true, children: [
3247
+ /* @__PURE__ */ jsx61(Grid4.Col, { span: 4, children: /* @__PURE__ */ jsx61(F_core83092_ReadUser, {}) }),
3248
+ /* @__PURE__ */ jsx61(Grid4.Col, { span: 8, children: /* @__PURE__ */ jsxs39(MyFlexColumn, { h: "80vh", flex: 1, children: [
3249
+ /* @__PURE__ */ jsx61(ScrollArea4.Autosize, { h: "100%", children: /* @__PURE__ */ jsx61(Paper7, { p: "md", bg: OBJECT_COlORS.mantineBackgroundSecondary, children: /* @__PURE__ */ jsx61(F_core83092_ViewMenuPermissions, { menuData: menuData2 }) }) }),
3250
+ /* @__PURE__ */ jsx61(F_core83092_Save, {})
3251
+ ] }) })
3252
+ ] });
3253
+ }
3254
+
3255
+ // src/modules-features/admin/core/MainDashboard/BarChart_CourseStatus.tsx
3256
+ import { BarChart } from "@mantine/charts";
3257
+ import { Group as Group4, Paper as Paper8, Text as Text3, useMantineColorScheme } from "@mantine/core";
3258
+ import { Fragment, jsx as jsx62, jsxs as jsxs40 } from "react/jsx-runtime";
3259
+
3260
+ // src/modules-features/admin/core/MainDashboard/BarChart_ExamStatus.tsx
3261
+ import { BarChart as BarChart2 } from "@mantine/charts";
3262
+ import { Group as Group5, Paper as Paper9, Text as Text4, useMantineColorScheme as useMantineColorScheme2 } from "@mantine/core";
3263
+ import { Fragment as Fragment2, jsx as jsx63, jsxs as jsxs41 } from "react/jsx-runtime";
3264
+
3265
+ // src/modules-features/admin/core/MainDashboard/BarChart_RevenueByAcademicYear.tsx
3266
+ import { BarChart as BarChart3 } from "@mantine/charts";
3267
+ import { Group as Group6, Paper as Paper10, Text as Text5, useMantineColorScheme as useMantineColorScheme3 } from "@mantine/core";
3268
+ import { Fragment as Fragment3, jsx as jsx64, jsxs as jsxs42 } from "react/jsx-runtime";
3269
+
3270
+ // src/modules-features/admin/core/MainDashboard/BarChart_StudentStatusIn30Days.tsx
3271
+ import { BarChart as BarChart4 } from "@mantine/charts";
3272
+ import { Group as Group7, Paper as Paper11, Text as Text6, useMantineColorScheme as useMantineColorScheme4 } from "@mantine/core";
3273
+ import { Fragment as Fragment4, jsx as jsx65, jsxs as jsxs43 } from "react/jsx-runtime";
3274
+
3275
+ // src/modules-features/admin/core/MainDashboard/HBarChart_CourseDropOutPercentage.tsx
3276
+ import { BarChart as BarChart5 } from "@mantine/charts";
3277
+ import { Group as Group8, Paper as Paper12, Text as Text7, useMantineColorScheme as useMantineColorScheme5 } from "@mantine/core";
3278
+ import { jsx as jsx66, jsxs as jsxs44 } from "react/jsx-runtime";
3279
+
3280
+ // src/modules-features/admin/core/MainDashboard/HBarChart_CourseProgressPercentage.tsx
3281
+ import { BarChart as BarChart6 } from "@mantine/charts";
3282
+ import { Group as Group9, Paper as Paper13, Text as Text8, useMantineColorScheme as useMantineColorScheme6 } from "@mantine/core";
3283
+ import { jsx as jsx67, jsxs as jsxs45 } from "react/jsx-runtime";
3284
+
3285
+ // src/modules-features/admin/core/MainDashboard/LineChart_RevenueIn12Months.tsx
3286
+ import { LineChart } from "@mantine/charts";
3287
+ import { Group as Group10, Paper as Paper14, Text as Text9 } from "@mantine/core";
3288
+ import { Fragment as Fragment5, jsx as jsx68, jsxs as jsxs46 } from "react/jsx-runtime";
3289
+
3290
+ // src/modules-features/admin/core/MainDashboard/LineChart_TotalRevenueByDiscountIn3Months.tsx
3291
+ import { LineChart as LineChart2 } from "@mantine/charts";
3292
+ import { Group as Group11, Paper as Paper15, Text as Text10 } from "@mantine/core";
3293
+ import { Fragment as Fragment6, jsx as jsx69, jsxs as jsxs47 } from "react/jsx-runtime";
3294
+
3295
+ // src/modules-features/admin/core/MainDashboard/LineChart_TotalRevenueByVoucherIn3Months.tsx
3296
+ import { LineChart as LineChart3 } from "@mantine/charts";
3297
+ import { Group as Group12, Paper as Paper16, Text as Text11 } from "@mantine/core";
3298
+ import { Fragment as Fragment7, jsx as jsx70, jsxs as jsxs48 } from "react/jsx-runtime";
3299
+
3300
+ // src/modules-features/admin/core/MainDashboard/LineChart_TotalStudentIn12Months.tsx
3301
+ import { LineChart as LineChart4 } from "@mantine/charts";
3302
+ import { Group as Group13, Paper as Paper17, Text as Text12 } from "@mantine/core";
3303
+ import { Fragment as Fragment8, jsx as jsx71, jsxs as jsxs49 } from "react/jsx-runtime";
3304
+
3305
+ // src/modules-features/admin/core/MainDashboard/ViewDiscountStat.tsx
3306
+ import { Center, Progress, Space as Space5, Text as Text13 } from "@mantine/core";
3307
+ import { PieChart } from "@mantine/charts";
3308
+ import { useMemo as useMemo14 } from "react";
3309
+ import { Fragment as Fragment9, jsx as jsx72, jsxs as jsxs50 } from "react/jsx-runtime";
3310
+ function getRandomColor(seed) {
3311
+ const random = Math.sin(seed) * 1e4;
3312
+ const color = `#${Math.floor((random - Math.floor(random)) * 16777215).toString(16).padStart(6, "0")}`;
3313
+ return color;
3314
+ }
3315
+ var data_used_discountCode = [
3316
+ { name: "DSC01", value: 54, color: getRandomColor(1) },
3317
+ { name: "DSC02", value: 32, color: getRandomColor(2) },
3318
+ { name: "DSC03", value: 5, color: getRandomColor(3) },
3319
+ { name: "DSC04", value: 20, color: getRandomColor(4) },
3320
+ { name: "DSC05", value: 12, color: getRandomColor(5) },
3321
+ { name: "DSC06", value: 45, color: getRandomColor(6) },
3322
+ { name: "DSC07", value: 23, color: getRandomColor(7) },
3323
+ { name: "DSC08", value: 34, color: getRandomColor(8) },
3324
+ { name: "DSC09", value: 29, color: getRandomColor(9) },
3325
+ { name: "DSC10", value: 18, color: getRandomColor(10) },
3326
+ { name: "DSC11", value: 37, color: getRandomColor(11) },
3327
+ { name: "DSC12", value: 22, color: getRandomColor(12) },
3328
+ { name: "DSC13", value: 41, color: getRandomColor(13) },
3329
+ { name: "DSC14", value: 27, color: getRandomColor(14) },
3330
+ { name: "DSC15", value: 33, color: getRandomColor(15) },
3331
+ { name: "DSC16", value: 19, color: getRandomColor(16) },
3332
+ { name: "DSC17", value: 25, color: getRandomColor(17) },
3333
+ { name: "DSC18", value: 30, color: getRandomColor(18) },
3334
+ { name: "DSC19", value: 21, color: getRandomColor(19) },
3335
+ { name: "DSC20", value: 26, color: getRandomColor(20) }
3336
+ ];
3337
+ var mockData = [
3338
+ {
3339
+ code: "DSC01",
3340
+ name: "Discount Code 1",
3341
+ total: 100,
3342
+ used: 54,
3343
+ color: getRandomColor(1)
3344
+ },
3345
+ {
3346
+ code: "DSC02",
3347
+ name: "Discount Code 2",
3348
+ total: 150,
3349
+ used: 32,
3350
+ color: getRandomColor(2)
3351
+ },
3352
+ {
3353
+ code: "DSC03",
3354
+ name: "Discount Code 3",
3355
+ total: 10,
3356
+ used: 5,
3357
+ color: getRandomColor(3)
3358
+ },
3359
+ {
3360
+ code: "DSC04",
3361
+ name: "Discount Code 4",
3362
+ total: 100,
3363
+ used: 20,
3364
+ color: getRandomColor(4)
3365
+ },
3366
+ {
3367
+ code: "DSC05",
3368
+ name: "Discount Code 5",
3369
+ total: 100,
3370
+ used: 12,
3371
+ color: getRandomColor(5)
3372
+ },
3373
+ {
3374
+ code: "DSC06",
3375
+ name: "Discount Code 6",
3376
+ total: 100,
3377
+ used: 45,
3378
+ color: getRandomColor(6)
3379
+ },
3380
+ {
3381
+ code: "DSC07",
3382
+ name: "Discount Code 7",
3383
+ total: 100,
3384
+ used: 23,
3385
+ color: getRandomColor(7)
3386
+ },
3387
+ {
3388
+ code: "DSC08",
3389
+ name: "Discount Code 8",
3390
+ total: 100,
3391
+ used: 34,
3392
+ color: getRandomColor(8)
3393
+ },
3394
+ {
3395
+ code: "DSC09",
3396
+ name: "Discount Code 9",
3397
+ total: 100,
3398
+ used: 29,
3399
+ color: getRandomColor(9)
3400
+ },
3401
+ {
3402
+ code: "DSC10",
3403
+ name: "Discount Code 10",
3404
+ total: 100,
3405
+ used: 18,
3406
+ color: getRandomColor(10)
3407
+ },
3408
+ {
3409
+ code: "DSC11",
3410
+ name: "Discount Code 11",
3411
+ total: 100,
3412
+ used: 37,
3413
+ color: getRandomColor(11)
3414
+ },
3415
+ {
3416
+ code: "DSC12",
3417
+ name: "Discount Code 12",
3418
+ total: 100,
3419
+ used: 22,
3420
+ color: getRandomColor(12)
3421
+ },
3422
+ {
3423
+ code: "DSC13",
3424
+ name: "Discount Code 13",
3425
+ total: 100,
3426
+ used: 41,
3427
+ color: getRandomColor(13)
3428
+ },
3429
+ {
3430
+ code: "DSC14",
3431
+ name: "Discount Code 14",
3432
+ total: 100,
3433
+ used: 27,
3434
+ color: getRandomColor(14)
3435
+ },
3436
+ {
3437
+ code: "DSC15",
3438
+ name: "Discount Code 15",
3439
+ total: 100,
3440
+ used: 33,
3441
+ color: getRandomColor(15)
3442
+ },
3443
+ {
3444
+ code: "DSC16",
3445
+ name: "Discount Code 16",
3446
+ total: 100,
3447
+ used: 19,
3448
+ color: getRandomColor(16)
3449
+ },
3450
+ {
3451
+ code: "DSC17",
3452
+ name: "Discount Code 17",
3453
+ total: 100,
3454
+ used: 25,
3455
+ color: getRandomColor(17)
3456
+ },
3457
+ {
3458
+ code: "DSC18",
3459
+ name: "Discount Code 18",
3460
+ total: 100,
3461
+ used: 30,
3462
+ color: getRandomColor(18)
3463
+ },
3464
+ {
3465
+ code: "DSC19",
3466
+ name: "Discount Code 19",
3467
+ total: 100,
3468
+ used: 21,
3469
+ color: getRandomColor(19)
3470
+ },
3471
+ {
3472
+ code: "DSC20",
3473
+ name: "Discount Code 20",
3474
+ total: 100,
3475
+ used: 26,
3476
+ color: getRandomColor(20)
3477
+ }
3478
+ ];
3479
+ function PieChart_DiscountUsedPercentage() {
3480
+ const totalDisountCode = mockData.reduce((acc, cur) => acc + cur.used, 0);
3481
+ const columns = useMemo14(
3482
+ () => [
3483
+ {
3484
+ header: "M\xE0u",
3485
+ accessorKey: "color",
3486
+ accessorFn(originalRow) {
3487
+ return /* @__PURE__ */ jsx72("div", { style: { width: 20, height: 20, backgroundColor: originalRow.color } });
3488
+ },
3489
+ minSize: 30,
3490
+ maxSize: 30
3491
+ },
3492
+ {
3493
+ header: "M\xE3",
3494
+ accessorKey: "code",
3495
+ minSize: 20,
3496
+ maxSize: 20
3497
+ },
3498
+ {
3499
+ header: "%",
3500
+ accessorKey: "used",
3501
+ accessorFn(originalRow) {
3502
+ return /* @__PURE__ */ jsx72(Fragment9, { children: /* @__PURE__ */ jsx72(Center, { children: /* @__PURE__ */ jsxs50(Text13, { children: [
3503
+ (originalRow.used / totalDisountCode * 100).toFixed(0),
3504
+ "%"
3505
+ ] }) }) });
3506
+ },
3507
+ minSize: 64,
3508
+ maxSize: 64
3509
+ },
3510
+ {
3511
+ header: "S\u1ED1 l\u01B0\u1EE3ng s\u1EED d\u1EE5ng",
3512
+ accessorKey: "value",
3513
+ accessorFn(originalRow) {
3514
+ return originalRow.used;
3515
+ },
3516
+ Cell: ({ row }) => {
3517
+ return /* @__PURE__ */ jsxs50(Fragment9, { children: [
3518
+ /* @__PURE__ */ jsx72(Center, { children: /* @__PURE__ */ jsxs50(Text13, { children: [
3519
+ "\u0110\xE3 s\u1EED d\u1EE5ng: ",
3520
+ /* @__PURE__ */ jsxs50("strong", { children: [
3521
+ row.original.used,
3522
+ " / ",
3523
+ row.original.total
3524
+ ] }),
3525
+ " - (",
3526
+ (row.original.used / row.original.total * 100).toFixed(2),
3527
+ "%)"
3528
+ ] }) }),
3529
+ /* @__PURE__ */ jsx72(Progress, { color: "yellow", radius: "xs", size: "lg", value: row.original.used / row.original.total * 100 })
3530
+ ] });
3531
+ },
3532
+ minSize: 50,
3533
+ maxSize: 50
3534
+ }
3535
+ ],
3536
+ []
3537
+ );
3538
+ return /* @__PURE__ */ jsx72(Fragment9, { children: /* @__PURE__ */ jsxs50(MyFlexColumn, { children: [
3539
+ /* @__PURE__ */ jsx72(Text13, { mb: "20", children: "Bi\u1EC3u \u0111\u1ED3 ph\u1EA7n tr\u0103m s\u1EED d\u1EE5ng chi\u1EBFt kh\u1EA5u h\u1ECDc vi\xEAn trong 60 ng\xE0y qua" }),
3540
+ /* @__PURE__ */ jsx72(Center, { children: /* @__PURE__ */ jsx72(
3541
+ PieChart,
3542
+ {
3543
+ startAngle: 90,
3544
+ endAngle: -270,
3545
+ strokeWidth: 0,
3546
+ withLabelsLine: true,
3547
+ labelsPosition: "outside",
3548
+ withLabels: true,
3549
+ labelsType: "percent",
3550
+ data: data_used_discountCode
3551
+ }
3552
+ ) }),
3553
+ /* @__PURE__ */ jsx72(Space5, { mt: 5 }),
3554
+ /* @__PURE__ */ jsx72(
3555
+ MyDataTable,
3556
+ {
3557
+ data: mockData,
3558
+ columns,
3559
+ initialState: {
3560
+ density: "xs",
3561
+ pagination: { pageIndex: 0, pageSize: 5 }
3562
+ }
3563
+ }
3564
+ )
3565
+ ] }) });
3566
+ }
3567
+
3568
+ // src/modules-features/admin/core/MainDashboard/ViewVoucherStat.tsx
3569
+ import { Center as Center2, Progress as Progress2, Space as Space6, Text as Text14 } from "@mantine/core";
3570
+ import { PieChart as PieChart2 } from "@mantine/charts";
3571
+ import { useMemo as useMemo15 } from "react";
3572
+ import { Fragment as Fragment10, jsx as jsx73, jsxs as jsxs51 } from "react/jsx-runtime";
3573
+ function getRandomColor2(seed) {
3574
+ const random = Math.sin(seed) * 1e4;
3575
+ const color = `#${Math.floor((random - Math.floor(random)) * 16777215).toString(16).padStart(6, "0")}`;
3576
+ return color;
3577
+ }
3578
+ var data_used_discountCode2 = [
3579
+ { name: "VOU01", value: 124, color: getRandomColor2(1) },
3580
+ { name: "VOU02", value: 34, color: getRandomColor2(2) },
3581
+ { name: "VOU03", value: 23, color: getRandomColor2(3) },
3582
+ { name: "VOU04", value: 34, color: getRandomColor2(4) },
3583
+ { name: "VOU05", value: 46, color: getRandomColor2(5) },
3584
+ { name: "VOU06", value: 123, color: getRandomColor2(6) },
3585
+ { name: "VOU07", value: 87, color: getRandomColor2(7) },
3586
+ { name: "VOU08", value: 25, color: getRandomColor2(8) },
3587
+ { name: "VOU09", value: 34, color: getRandomColor2(9) },
3588
+ { name: "VOU10", value: 67, color: getRandomColor2(10) },
3589
+ { name: "VOU11", value: 23, color: getRandomColor2(11) },
3590
+ { name: "VOU12", value: 98, color: getRandomColor2(12) },
3591
+ { name: "VOU13", value: 54, color: getRandomColor2(13) },
3592
+ { name: "VOU14", value: 27, color: getRandomColor2(14) },
3593
+ { name: "VOU15", value: 3, color: getRandomColor2(15) },
3594
+ { name: "VOU16", value: 56, color: getRandomColor2(16) },
3595
+ { name: "VOU17", value: 85, color: getRandomColor2(17) },
3596
+ { name: "VOU18", value: 45, color: getRandomColor2(18) },
3597
+ { name: "VOU19", value: 64, color: getRandomColor2(19) },
3598
+ { name: "VOU20", value: 12, color: getRandomColor2(20) }
3599
+ ];
3600
+ var mockData2 = [
3601
+ {
3602
+ code: "VOU01",
3603
+ name: "Voucher Code 1",
3604
+ total: 150,
3605
+ used: 124,
3606
+ color: getRandomColor2(1)
3607
+ },
3608
+ {
3609
+ code: "VOU02",
3610
+ name: "Voucher Code 2",
3611
+ total: 150,
3612
+ used: 34,
3613
+ color: getRandomColor2(2)
3614
+ },
3615
+ {
3616
+ code: "VOU03",
3617
+ name: "Voucher Code 3",
3618
+ total: 50,
3619
+ used: 23,
3620
+ color: getRandomColor2(3)
3621
+ },
3622
+ {
3623
+ code: "VOU04",
3624
+ name: "Voucher Code 4",
3625
+ total: 100,
3626
+ used: 34,
3627
+ color: getRandomColor2(4)
3628
+ },
3629
+ {
3630
+ code: "VOU05",
3631
+ name: "Voucher Code 5",
3632
+ total: 100,
3633
+ used: 46,
3634
+ color: getRandomColor2(5)
3635
+ },
3636
+ {
3637
+ code: "VOU06",
3638
+ name: "Voucher Code 6",
3639
+ total: 130,
3640
+ used: 123,
3641
+ color: getRandomColor2(6)
3642
+ },
3643
+ {
3644
+ code: "VOU07",
3645
+ name: "Voucher Code 7",
3646
+ total: 100,
3647
+ used: 87,
3648
+ color: getRandomColor2(7)
3649
+ },
3650
+ {
3651
+ code: "VOU08",
3652
+ name: "Voucher Code 8",
3653
+ total: 100,
3654
+ used: 25,
3655
+ color: getRandomColor2(8)
3656
+ },
3657
+ {
3658
+ code: "VOU09",
3659
+ name: "Voucher Code 9",
3660
+ total: 100,
3661
+ used: 34,
3662
+ color: getRandomColor2(9)
3663
+ },
3664
+ {
3665
+ code: "VOU10",
3666
+ name: "Voucher Code 10",
3667
+ total: 100,
3668
+ used: 67,
3669
+ color: getRandomColor2(10)
3670
+ },
3671
+ {
3672
+ code: "VOU11",
3673
+ name: "Voucher Code 11",
3674
+ total: 100,
3675
+ used: 23,
3676
+ color: getRandomColor2(11)
3677
+ },
3678
+ {
3679
+ code: "VOU12",
3680
+ name: "Voucher Code 12",
3681
+ total: 100,
3682
+ used: 98,
3683
+ color: getRandomColor2(12)
3684
+ },
3685
+ {
3686
+ code: "VOU13",
3687
+ name: "Voucher Code 13",
3688
+ total: 100,
3689
+ used: 54,
3690
+ color: getRandomColor2(13)
3691
+ },
3692
+ {
3693
+ code: "VOU14",
3694
+ name: "Voucher Code 14",
3695
+ total: 100,
3696
+ used: 27,
3697
+ color: getRandomColor2(14)
3698
+ },
3699
+ {
3700
+ code: "VOU15",
3701
+ name: "Voucher Code 15",
3702
+ total: 100,
3703
+ used: 3,
3704
+ color: getRandomColor2(15)
3705
+ },
3706
+ {
3707
+ code: "VOU16",
3708
+ name: "Voucher Code 16",
3709
+ total: 100,
3710
+ used: 56,
3711
+ color: getRandomColor2(16)
3712
+ },
3713
+ {
3714
+ code: "VOU17",
3715
+ name: "Voucher Code 17",
3716
+ total: 100,
3717
+ used: 85,
3718
+ color: getRandomColor2(17)
3719
+ },
3720
+ {
3721
+ code: "VOU18",
3722
+ name: "Voucher Code 18",
3723
+ total: 100,
3724
+ used: 45,
3725
+ color: getRandomColor2(18)
3726
+ },
3727
+ {
3728
+ code: "VOU19",
3729
+ name: "Voucher Code 19",
3730
+ total: 100,
3731
+ used: 64,
3732
+ color: getRandomColor2(19)
3733
+ },
3734
+ {
3735
+ code: "VOU20",
3736
+ name: "Voucher Code 20",
3737
+ total: 100,
3738
+ used: 12,
3739
+ color: getRandomColor2(20)
3740
+ }
3741
+ ];
3742
+ function PieChart_VoucherUsedPercentage() {
3743
+ const totalVoucherCode = mockData2.reduce((acc, cur) => acc + cur.used, 0);
3744
+ const columns = useMemo15(
3745
+ () => [
3746
+ {
3747
+ header: "M\xE0u",
3748
+ accessorKey: "color",
3749
+ accessorFn(originalRow) {
3750
+ return /* @__PURE__ */ jsx73("div", { style: { width: 20, height: 20, backgroundColor: originalRow.color } });
3751
+ },
3752
+ minSize: 30,
3753
+ maxSize: 30
3754
+ },
3755
+ {
3756
+ header: "M\xE3",
3757
+ accessorKey: "code",
3758
+ minSize: 20,
3759
+ maxSize: 20
3760
+ },
3761
+ {
3762
+ header: "%",
3763
+ accessorKey: "used",
3764
+ accessorFn(originalRow) {
3765
+ return /* @__PURE__ */ jsx73(Fragment10, { children: /* @__PURE__ */ jsx73(Center2, { children: /* @__PURE__ */ jsxs51(Text14, { children: [
3766
+ (originalRow.used / totalVoucherCode * 100).toFixed(0),
3767
+ "%"
3768
+ ] }) }) });
3769
+ },
3770
+ minSize: 64,
3771
+ maxSize: 64
3772
+ },
3773
+ {
3774
+ header: "S\u1ED1 l\u01B0\u1EE3ng s\u1EED d\u1EE5ng",
3775
+ accessorKey: "value",
3776
+ accessorFn(originalRow) {
3777
+ return originalRow.used;
3778
+ },
3779
+ Cell: ({ row }) => {
3780
+ return /* @__PURE__ */ jsxs51(Fragment10, { children: [
3781
+ /* @__PURE__ */ jsx73(Center2, { children: /* @__PURE__ */ jsxs51(Text14, { children: [
3782
+ "\u0110\xE3 s\u1EED d\u1EE5ng: ",
3783
+ /* @__PURE__ */ jsxs51("strong", { children: [
3784
+ row.original.used,
3785
+ " / ",
3786
+ row.original.total
3787
+ ] }),
3788
+ " - (",
3789
+ (row.original.used / row.original.total * 100).toFixed(2),
3790
+ "%)"
3791
+ ] }) }),
3792
+ /* @__PURE__ */ jsx73(Progress2, { color: "yellow", radius: "xs", size: "lg", value: row.original.used / row.original.total * 100 })
3793
+ ] });
3794
+ },
3795
+ minSize: 50,
3796
+ maxSize: 50
3797
+ }
3798
+ ],
3799
+ []
3800
+ );
3801
+ return /* @__PURE__ */ jsx73(Fragment10, { children: /* @__PURE__ */ jsxs51(MyFlexColumn, { children: [
3802
+ /* @__PURE__ */ jsx73(Text14, { mb: "20", children: "Bi\u1EC3u \u0111\u1ED3 ph\u1EA7n tr\u0103m s\u1EED d\u1EE5ng m\xE3 gi\u1EA3m gi\xE1 h\u1ECDc vi\xEAn trong 60 ng\xE0y qua" }),
3803
+ /* @__PURE__ */ jsx73(Center2, { children: /* @__PURE__ */ jsx73(
3804
+ PieChart2,
3805
+ {
3806
+ startAngle: 90,
3807
+ endAngle: -270,
3808
+ strokeWidth: 0,
3809
+ withLabelsLine: true,
3810
+ labelsPosition: "outside",
3811
+ withLabels: true,
3812
+ labelsType: "percent",
3813
+ data: data_used_discountCode2
3814
+ }
3815
+ ) }),
3816
+ /* @__PURE__ */ jsx73(Space6, { mt: 5 }),
3817
+ /* @__PURE__ */ jsx73(
3818
+ MyDataTable,
3819
+ {
3820
+ data: mockData2,
3821
+ columns,
3822
+ initialState: {
3823
+ density: "xs",
3824
+ pagination: { pageIndex: 0, pageSize: 5 }
3825
+ }
3826
+ }
3827
+ )
3828
+ ] }) });
3829
+ }
3830
+
3831
+ // src/modules-features/authenticate/F_authenticate_SplashPage.tsx
3832
+ import { useRouter as useRouter2 } from "next/navigation";
3833
+ import { useEffect as useEffect11 } from "react";
3834
+ import { jsx as jsx74 } from "react/jsx-runtime";
3835
+ function F_authenticate_SplashPage() {
3836
+ const router = useRouter2();
3837
+ const S_Authenticate = useS_authenticate();
3838
+ useEffect11(() => {
3839
+ if (S_Authenticate.state.token == "") {
3840
+ router.push("/authenticate/login");
3841
+ return;
3842
+ }
3843
+ router.push("/admin/core71678");
3844
+ }, [S_Authenticate.state.token]);
3845
+ return /* @__PURE__ */ jsx74(MyBoxesBackground, { title: "H\u1EC7 th\u1ED1ng th\xF4ng tin qu\u1EA3n l\xED \u0111\xE0o t\u1EA1o ng\u1EAFn h\u1EA1n" });
3846
+ }
3847
+
3848
+ // src/modules-features/authenticate/F_authenticate_Login/F_authenticate_Login.tsx
3849
+ import {
3850
+ Anchor,
3851
+ BackgroundImage,
3852
+ Button as Button3,
3853
+ Center as Center3,
3854
+ Checkbox as Checkbox3,
3855
+ Flex as Flex3,
3856
+ Group as Group14,
3857
+ Paper as Paper18,
3858
+ PasswordInput as PasswordInput2,
3859
+ Text as Text15,
3860
+ TextInput as TextInput3,
3861
+ Title
3862
+ } from "@mantine/core";
3863
+ import { useForm as useForm20 } from "@mantine/form";
3864
+ import { useMutation as useMutation5 } from "@tanstack/react-query";
3865
+ import axios from "axios";
3866
+ import Link from "next/link";
3867
+ import { useRouter as useRouter3 } from "next/navigation";
3868
+ import { useState as useState9 } from "react";
3869
+
3870
+ // src/modules-features/authenticate/F_authenticate_Login/css.module.css
3871
+ var css_default = {};
3872
+
3873
+ // src/modules-features/authenticate/F_authenticate_Login/F_authenticate_Login.tsx
3874
+ import { jsx as jsx75, jsxs as jsxs52 } from "react/jsx-runtime";
3875
+ function F_authenticate_Login({
3876
+ loginInfo,
3877
+ redirectUrlAfterLogin = "/admin/dashboard",
3878
+ additionalActions,
3879
+ backgroundImage = "/imgs/0/IMG0AuthBackground.png",
3880
+ onSuccess
3881
+ }) {
3882
+ const router = useRouter3();
3883
+ const authenticate_store = useS_authenticate();
3884
+ const loadingState = useState9(false);
3885
+ const mutation = useM_Account_Sigin();
3886
+ const form = useForm20({
3887
+ mode: "uncontrolled",
3888
+ initialValues: {
3889
+ username: (loginInfo == null ? void 0 : loginInfo.username) || "admincoe",
3890
+ password: (loginInfo == null ? void 0 : loginInfo.password) || "123456"
3891
+ },
3892
+ validate: {
3893
+ username: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng",
3894
+ password: (value) => value ? null : "Kh\xF4ng \u0111\u01B0\u1EE3c \u0111\u1EC3 tr\u1ED1ng"
3895
+ }
3896
+ });
3897
+ function handleSubmit(userName, passWord) {
3898
+ loadingState[1](true);
3899
+ mutation.mutate({
3900
+ "userName": userName,
3901
+ "passWord": passWord
3902
+ }, {
3903
+ onSuccess: (data) => {
3904
+ if (data.isSuccess === false) {
3905
+ form.setFieldError("username", "T\xE0i kho\u1EA3n kh\xF4ng t\u1ED3n t\u1EA1i");
3906
+ loadingState[1](false);
3907
+ return;
3908
+ }
3909
+ if (data.isSuccess == 0) {
3910
+ form.setFieldError("password", data.message);
3911
+ loadingState[1](false);
3912
+ return;
3913
+ }
3914
+ authenticate_store.setProperty("code", data.data.userName);
3915
+ authenticate_store.setProperty("fullName", data.data.userFullName);
3916
+ authenticate_store.setProperty("userId", data.data.userId);
3917
+ authenticate_store.setProperty("token", data.data.token);
3918
+ if (onSuccess) {
3919
+ onSuccess(data);
3920
+ loadingState[1](false);
3921
+ return;
3922
+ }
3923
+ router.replace(redirectUrlAfterLogin);
3924
+ }
3925
+ });
3926
+ }
3927
+ return /* @__PURE__ */ jsx75(
3928
+ BackgroundImage,
3929
+ {
3930
+ src: backgroundImage,
3931
+ h: "100vh",
3932
+ children: /* @__PURE__ */ jsx75(Center3, { h: "100vh", children: /* @__PURE__ */ jsxs52(Paper18, { withBorder: true, w: 400, m: "md", shadow: "md", p: 30, mt: 30, radius: "md", children: [
3933
+ /* @__PURE__ */ jsxs52(Flex3, { direction: "column", mb: "md", children: [
3934
+ /* @__PURE__ */ jsx75(Title, { ta: "center", className: css_default.title, children: "\u0110\u0103ng nh\u1EADp!" }),
3935
+ /* @__PURE__ */ jsxs52(Text15, { c: "dimmed", size: "sm", ta: "center", mt: 5, children: [
3936
+ "B\u1EA1n g\u1EB7p v\u1EA5n \u0111\u1EC1 k\u1EF9 thu\u1EADt?\xA0",
3937
+ /* @__PURE__ */ jsx75(Anchor, { size: "sm", component: "button", children: "V\xE0o link n\xE0y" })
3938
+ ] })
3939
+ ] }),
3940
+ /* @__PURE__ */ jsx75("form", { onSubmit: form.onSubmit(async (values) => handleSubmit(values.username, values.password)), children: /* @__PURE__ */ jsxs52(MyFlexColumn, { children: [
3941
+ /* @__PURE__ */ jsx75(
3942
+ TextInput3,
3943
+ __spreadProps(__spreadValues({}, form.getInputProps("username")), {
3944
+ label: "T\xE0i kho\u1EA3n",
3945
+ placeholder: "Nh\u1EADp t\xE0i kho\u1EA3n c\u1EE7a b\u1EA1n",
3946
+ withAsterisk: true
3947
+ })
3948
+ ),
3949
+ /* @__PURE__ */ jsx75(
3950
+ PasswordInput2,
3951
+ __spreadProps(__spreadValues({}, form.getInputProps("password")), {
3952
+ label: "M\u1EADt kh\u1EA9u",
3953
+ placeholder: "Nh\u1EADp m\u1EADt kh\u1EA9u c\u1EE7a b\u1EA1n",
3954
+ withAsterisk: true
3955
+ })
3956
+ ),
3957
+ /* @__PURE__ */ jsxs52(Group14, { justify: "space-between", children: [
3958
+ /* @__PURE__ */ jsx75(Checkbox3, { label: "L\u01B0u \u0111\u0103ng nh\u1EADp" }),
3959
+ /* @__PURE__ */ jsx75(Anchor, { component: Link, href: "quen-mat-khau", size: "sm", children: "Qu\xEAn m\u1EADt kh\u1EA9u?" })
3960
+ ] }),
3961
+ /* @__PURE__ */ jsx75(
3962
+ Button3,
3963
+ {
3964
+ loading: loadingState[0],
3965
+ type: "submit",
3966
+ fullWidth: true,
3967
+ children: "\u0110\u0103ng nh\u1EADp"
3968
+ }
3969
+ ),
3970
+ additionalActions
3971
+ ] }) })
3972
+ ] }) })
3973
+ }
3974
+ );
3975
+ }
3976
+ function useM_Account_Sigin() {
3977
+ const ENDPOINT5 = process.env.NEXT_PUBLIC_API + "/Account/SignIn";
3978
+ const mutation = useMutation5({
3979
+ mutationFn: async (values) => {
3980
+ const result = await axios.post(ENDPOINT5, values);
3981
+ return result.data;
3982
+ }
3983
+ });
3984
+ return mutation;
3985
+ }
74
3986
  export {
75
- F_Authenticate_Login,
76
- F_Authenticate_Logout,
3987
+ F_authenticate_Login,
3988
+ F_authenticate_Logout,
77
3989
  F_authenticate_SplashPage,
78
3990
  F_core12196,
79
3991
  F_core12196_Create,