add organization functionality

parent 255213c5
......@@ -16,38 +16,34 @@ interface Organization {
export const apiSlice = createApi({
reducerPath: 'api',
baseQuery: async (args, api, extraOptions) => {
const baseQuery = fetchBaseQuery({
baseUrl: "http://77.243.80.217:8080/esutd/api/organizations",
prepareHeaders: (headers, { getState }) => {
const state = getState() as RootState;
const accessToken = state.auth.token;
baseQuery: fetchBaseQuery({
baseUrl: "http://77.243.80.217:8080/esutd/api/organizations",
prepareHeaders: (headers, { getState }) => {
const state = getState() as RootState;
const accessToken = state.auth.token;
if (accessToken) {
headers.set("Authorization", `Bearer ${accessToken}`);
}
if (accessToken) {
headers.set("Authorization", `Bearer ${accessToken}`);
}
headers.set("Accept", "application/json");
headers.set("Content-Type", "application/json");
headers.set("Accept", "application/json");
return headers;
},
});
const result = await baseQuery(args, api, extraOptions);
return result;
},
return headers;
},
}),
tagTypes: ["organizations"],
endpoints: (builder) => ({
getOrganizations: builder.query<Organization[], void>({ // получить информацию
getOrganizations: builder.query<Organization[], void>({
query: () => '/list',
providesTags: ["organizations"], // для управления кэшем или инвалидации данных в системе управления состоянием
providesTags: ["organizations"],
}),
getOrganization: builder.query<Organization, string>({
query: (orgId) => `/info?id=${orgId}`,
}),
addNewOrganization: builder.mutation<Organization, Partial<Organization>>({ // изменение данных
}),
addNewOrganization: builder.mutation<Organization, Partial<Organization>>({
query: (initialOrg) => ({
url: '/add',
url: '/save', // Ensure the endpoint is correct
method: 'POST',
body: initialOrg,
}),
......
......@@ -3,7 +3,7 @@ import { createSlice } from "@reduxjs/toolkit";
const initialState = {
currentPage: 1,
totalOrgNumber: 0,
ORG_NUMBER_PER_PAGE: 15
ORG_NUMBER_PER_PAGE: 8
}
const mainPaginationSlice = createSlice({
......
......@@ -13,7 +13,7 @@ interface AddValues {
organization_code: string;
organization_name: string;
password: string;
status: number; // Change this line
status: string;
}
......@@ -30,13 +30,15 @@ const AddPage: React.FC = () => {
const onFinish = async (values: AddValues) => {
const newValues = {
...values,
status: values.status, // Since it's now a number
status: values.status === 'active' ? 2 : values.status === 'blocked' ? 1 : 0,
deleted: null,
created: new Date().toISOString(),
};
console.log("Sending data:", newValues);
try {
await addNewOrganization(newValues).unwrap(); // get data from promise
await addNewOrganization(newValues).unwrap();
message.success('Организация успешно добавлена!');
dispatch(setTotalOrgNumber(totalOrgNumber + 1));
const newTotalPages = Math.ceil((totalOrgNumber + 1) / ORG_NUMBER_PER_PAGE);
......@@ -44,6 +46,7 @@ const AddPage: React.FC = () => {
navigate('/');
} catch (err) {
message.error('Произошла ошибка при добавлении организации!');
console.error(err);
}
};
......@@ -53,7 +56,7 @@ const AddPage: React.FC = () => {
<Form
layout="vertical"
name="organization_form"
initialValues={{ status: 2 }} // Change this line
initialValues={{ status: 'active' }}
onFinish={onFinish}
className='form'
>
......@@ -70,7 +73,7 @@ const AddPage: React.FC = () => {
<Item
label="Код организации"
name="organization_code"
name="code"
rules={[
{ required: true, message: 'Пожалуйста, введите код организации!' },
{ pattern: /^[a-zA-Z0-9-_]+$/, message: 'Код организации должен содержать только английские буквы, цифры, символы "-" и "_"' }
......@@ -81,7 +84,7 @@ const AddPage: React.FC = () => {
<Item
label="Наименование организации"
name="organization_name"
name="name"
rules={[{ required: true, message: 'Пожалуйста, введите наименование организации!' }]}
>
<Input maxLength={128} placeholder='Максимальная длина: 128 символов' />
......
......@@ -41,7 +41,7 @@ const HomePage: React.FC = () => {
if (isLoading) {
table = <Spin />
} else if (isSuccess) {
table = <Table dataSource={paginatedData(orgs)} columns={columns} pagination={false} />
table = <Table dataSource={paginatedData(orgs)} columns={columns} pagination={false} rowKey="id" />
} else if (isError) {
console.log(error)
table = <div>{error.toString()}</div>
......
export const getStatusText = (status: number) => {
switch (status) {
case 0: return "удален";
case 1: return "заблокирован";
case 2: return "активен";
default: return "неизвестно";
case 0: return "Удален";
case 1: return "Заблокирован";
case 2: return "Активен";
default: return "Неизвестно";
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment