Update structure code

This commit is contained in:
2023-11-05 20:42:03 +07:00
parent 0b9450a0ce
commit 61ec8e9f68
22 changed files with 149 additions and 174 deletions
+2 -1
View File
@@ -11,7 +11,8 @@ import Dialog from '../../components/Dialog';
import RoomForm from './Form';
// Types
import { Nullable, TRoom } from '../../globals/types';
import { Nullable } from '../../types/common';
import { TRoom } from '../../types/rooms';
// Hooks
import { useForwardRef } from '../../hooks/useForwardRef';
+24 -7
View File
@@ -10,12 +10,16 @@ import Button from '../../commons/styles/Button.ts';
import Input from '../../commons/styles/Input.ts';
// Types
import { Nullable, TRoom } from '../../globals/types.ts';
import { Nullable } from '../../types/common';
import { TRoom } from '../../types/rooms.ts';
// Constants
import { ROOM_PATH } from '../../constants/path.ts';
import { STATUS_CODE } from '../../constants/responseStatus.ts';
import {
ADD_SUCCESS,
EDIT_SUCCESS,
errorMsg,
} from '../../constants/messages.ts';
import {
INVALID_DISCOUNT,
@@ -24,6 +28,7 @@ import {
} from '../../constants/formValidateMessage.ts';
// Helpers
import { sendRequest } from '../../helpers/sendRequest.ts';
import {
isValidDiscount,
isValidNumber,
@@ -33,7 +38,6 @@ import {
// Components
import FormRow from '../../components/LabelControl/index.tsx';
import Form from '../../components/Form/index.tsx';
import { addRoom, updateRoom } from '../../services/roomServices.ts';
const FormBtn = styled(Button)`
width: 100%;
@@ -83,17 +87,30 @@ const RoomForm = ({
try {
if (isAdd) {
// Add request
const response = await addRoom(room);
if(response) {
const response = await sendRequest(
ROOM_PATH,
'POST',
JSON.stringify(room)
);
if (response.statusCode === STATUS_CODE.CREATE) {
toast.success(ADD_SUCCESS);
} else {
throw new Error(errorMsg(response.statusCode, response.msg));
}
} else {
// Edit request
const response = await updateRoom(room);
const response = await sendRequest(
ROOM_PATH + `/${room!.id}`,
'PUT',
JSON.stringify(room)
);
if (response) {
if (response.statusCode == STATUS_CODE.OK) {
toast.success(EDIT_SUCCESS);
} else {
throw new Error(errorMsg(response.statusCode, response.msg));
}
}
// Reload table data
+2 -1
View File
@@ -15,7 +15,8 @@ import SortBy from '../../components/SortBy';
import OrderBy from '../../components/OrderBy';
// Types
import { Nullable, TRoom } from '../../globals/types';
import { Nullable } from '../../types/common';
import { TRoom } from '../../types/rooms';
// Constants
import { useFetch } from '../../hooks/useFetch';
+2 -1
View File
@@ -10,7 +10,8 @@ import Button from '../../commons/styles/Button';
import RoomDialog from './Dialog';
// Types
import { Nullable, TRoom } from '../../globals/types';
import { Nullable } from '../../types/common';
import { TRoom } from '../../types/rooms';
const Room = () => {
const dialogRef = useRef<HTMLDialogElement>(null);
+2 -1
View File
@@ -11,7 +11,8 @@ import Dialog from '../../components/Dialog';
import UserForm from './Form';
// Types
import { Nullable, TUser } from '../../globals/types';
import { Nullable } from '../../types/common';
import { TUser } from '../../types/user';
// Hooks
import { useForwardRef } from '../../hooks/useForwardRef';
+29 -14
View File
@@ -19,6 +19,7 @@ import FormRow from '../../components/LabelControl/index.tsx';
import Select, { ISelectOptions } from '../../components/Select';
// Helpers
import { sendRequest } from '../../helpers/sendRequest.ts';
import {
isEmptyObj,
isValidName,
@@ -27,10 +28,13 @@ import {
} from '../../helpers/validators.ts';
// Constants
import { STATUS_CODE } from '../../constants/responseStatus.ts';
import {
ADD_SUCCESS,
EDIT_SUCCESS,
errorMsg,
} from '../../constants/messages.ts';
import { USER_PATH } from '../../constants/path.ts';
import {
INVALID_FIELD,
INVALID_PHONE,
@@ -45,8 +49,9 @@ import { FormBtn } from './styled.ts';
import { getAllRoom, updateRoomStatus } from '../../services/roomServices.ts';
// Types
import { Nullable, TRoom, TUser } from '../../globals/types.ts';
import { createUser, updateUser } from '../../services/userServices.ts';
import { Nullable } from '../../types/common';
import { TUser } from '../../types/user.ts';
import { TRoom } from '../../types/rooms.ts';
interface IUserFormProp {
onClose: () => void;
@@ -82,12 +87,6 @@ const UserForm = ({
// Load and set default options room
if (rooms.length > 0) {
// Init first options
options.push({
label: '---Select---',
value: '0'
})
rooms.forEach((item) => {
if (!item.status || tempUser?.roomId === item.id)
options.push({
@@ -99,11 +98,16 @@ const UserForm = ({
if (options.length > 0) {
setOptions(options);
reset({ roomId: +options[0].value });
}
if (!isEmptyObj(tempUser)) {
// Init value
// Set default value when user not have room yet.
if (!tempUser.roomId) {
tempUser.roomId = +options[0].value;
}
reset(tempUser);
} else {
reset(INIT_VALUE_USER_FORM);
@@ -119,20 +123,32 @@ const UserForm = ({
try {
if (isAdd) {
// Add request
const response = await createUser(newUser);
const response = await sendRequest(
USER_PATH,
'POST',
JSON.stringify(newUser)
);
if (response) {
if (response.statusCode === STATUS_CODE.CREATE) {
toast.success(ADD_SUCCESS);
} else {
throw new Error(errorMsg(response.statusCode, response.msg));
}
// Update room status
updateRoomStatus(newUser.roomId, true);
} else {
// Edit request
const response = await updateUser(newUser);
const response = await sendRequest(
USER_PATH + `/${newUser.id}`,
'PUT',
JSON.stringify(newUser)
);
if (response) {
if (response.statusCode == STATUS_CODE.OK) {
toast.success(EDIT_SUCCESS);
} else {
throw new Error(errorMsg(response.statusCode, response.msg));
}
// Update room status
@@ -224,7 +240,6 @@ const UserForm = ({
optionsConfigForm={{
valueAsNumber: true,
onChange: () => trigger('roomId'),
validate: (v) => v !== 0
}}
/>
) : (
+2 -1
View File
@@ -14,7 +14,8 @@ import SortBy from '../../components/SortBy';
import OrderBy from '../../components/OrderBy';
// Types
import { Nullable, TUser } from '../../globals/types';
import { Nullable } from '../../types/common';
import { TUser } from '../../types/user';
// Hooks
import { useFetch } from '../../hooks/useFetch';
+2 -1
View File
@@ -10,7 +10,8 @@ import { StyledUser, Title } from './styled';
import UserDialog from './Dialog';
// Types
import { Nullable, TUser } from '../../globals/types';
import { Nullable } from '../../types/common';
import { TUser } from '../../types/user';
const User = () => {
const dialogRef = useRef<HTMLDialogElement>(null);