diff --git a/backend/project/api/users/urls.py b/backend/project/api/users/urls.py index 2708ef3..5e6f3a9 100644 --- a/backend/project/api/users/urls.py +++ b/backend/project/api/users/urls.py @@ -5,6 +5,7 @@ from api.users.views import ( DownloadUsersFromExcelView, RegisterUsersFromExcelView, UserViewSet, + UsersByEvent, ) app_name = "users" @@ -15,6 +16,11 @@ router.register("", UserViewSet) urlpatterns = [ path("", include(router.urls)), + path( + "by-event//", + UsersByEvent.as_view(), + name="users-by-event", + ), path( "upload/excel//", RegisterUsersFromExcelView.as_view(), @@ -24,5 +30,5 @@ urlpatterns = [ "download/excel//", DownloadUsersFromExcelView.as_view(), name="excel-download", - ) + ), ] diff --git a/backend/project/api/users/views.py b/backend/project/api/users/views.py index a67fd2a..eacd739 100644 --- a/backend/project/api/users/views.py +++ b/backend/project/api/users/views.py @@ -18,6 +18,22 @@ class UserViewSet(ModelViewSet): serializer_class = UserSerializer +class UsersByEvent(APIView): + def get(self, _, event_id): + try: + event = Event.objects.get(pk=event_id) + except Event.DoesNotExist: + return Response( + {"error": "Event does not exist"}, + status=status.HTTP_404_NOT_FOUND, + ) + + users = event.users.all() + serializer = UserSerializer(users, many=True) + + return Response(serializer.data) + + class RegisterUsersFromExcelView(APIView): def post(self, request, event_id): try: diff --git a/frontend/src/components/pages/Admin/Admin.module.less b/frontend/src/components/pages/Admin/Admin.module.less index 8cbf9ef..bd7eda8 100644 --- a/frontend/src/components/pages/Admin/Admin.module.less +++ b/frontend/src/components/pages/Admin/Admin.module.less @@ -5,6 +5,16 @@ justify-content: center; align-items: center; gap: 50px; - margin-top: 40px; height: 70vh; -} \ No newline at end of file +} +.full-content{ + padding-top: 80px; + +} +.card{ + max-width: 800px; + padding: 20px; + margin-bottom: 10px; + margin-left: 5px; + +} diff --git a/frontend/src/components/pages/Admin/Admin.tsx b/frontend/src/components/pages/Admin/Admin.tsx index 6d2fdf7..b5dc2e1 100644 --- a/frontend/src/components/pages/Admin/Admin.tsx +++ b/frontend/src/components/pages/Admin/Admin.tsx @@ -8,23 +8,58 @@ import less from "./Admin.module.less"; import PlayerCard from "../../entities/PlayerCard/PlayerCard"; import { useTranslation } from "react-i18next"; import CreateTeam from "../../widgets/CreateTeams/CreateTeams"; +import { UserList } from "../AdminEventPage/AdminEventAPI"; +import { useEffect, useState } from "react"; +import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from "../../shared/ui/card" + const AdminPage = () => { const { t } = useTranslation(); + + + const [players, setPlayerList] = useState([]); + + + + useEffect(() => { + +var index = window.location.pathname.indexOf("/dash/admin/") + "/dash/admin/".length; + +var result = window.location.pathname.substring(index); + + UserList(result) + .then((data) => { + setPlayerList(data); + }) + .catch((error) => { + console.error("Возникла ошибка с получением:", error); + }); + }, []); return ( - - + +
-
- - - - +

Members: {players.length}

+ {players.map((event) => ( + +
+ + {`${event.first_name} | ${event.email}`} + + +

{t("skills")}:

+

{event.bio}

+ +
+
+
+ ))} +
); diff --git a/frontend/src/components/pages/AdminEventPage/AdminEventAPI.ts b/frontend/src/components/pages/AdminEventPage/AdminEventAPI.ts index 672b244..681fc03 100644 --- a/frontend/src/components/pages/AdminEventPage/AdminEventAPI.ts +++ b/frontend/src/components/pages/AdminEventPage/AdminEventAPI.ts @@ -1,5 +1,5 @@ import { FormEvent } from "react"; -import { API_BASE, API_EVENT } from "../../app/APIurl"; +import { API_BASE, API_EVENT, API_USERS } from "../../app/APIurl"; export const submitAddEvent = (e: FormEvent) => { e.preventDefault(); @@ -56,6 +56,8 @@ export const eventList = () => { console.error('Возникла ошибка с получением:', error); }); } + +//удалить ивент export const deleteEvent = (id:string) => { fetch(`${API_BASE}${API_EVENT}${id}`, { method: "DELETE", @@ -74,3 +76,33 @@ export const deleteEvent = (id:string) => { console.error('Возникла ошибка с удалением:', error); }); } + +//получение списка юзеров +export const UserList = (id:string) => { + +return fetch(`${API_BASE}${API_EVENT}${id}/${API_USERS}`, { + method: "GET", + headers: { + "Content-Type": "application/json", + }, +}) +.then(response => { + + console.log(response.status); + + if (response.ok) { + console.log('Получил:', response.headers.get('Location')); + return response.json(); + } else { + + throw new Error('Код ошибки: ' + response.status); + } +}) +.then(data => { + console.log('Успешно:', data); + return data +}) +.catch(error => { + console.error('Возникла ошибка с получением:', error); +}); +} diff --git a/frontend/src/components/pages/Main/Main.module.less b/frontend/src/components/pages/Main/Main.module.less index 751f44a..dec8899 100644 --- a/frontend/src/components/pages/Main/Main.module.less +++ b/frontend/src/components/pages/Main/Main.module.less @@ -51,6 +51,14 @@ justify-content:space-between; padding: 0; } +.model-content{ + display: flex; + flex-direction: column; + justify-content:center; + +} + + @media (max-width: 820px) { .general-left{ width: 100%; diff --git a/frontend/src/components/pages/Main/Main.tsx b/frontend/src/components/pages/Main/Main.tsx index 7feb536..a912c96 100644 --- a/frontend/src/components/pages/Main/Main.tsx +++ b/frontend/src/components/pages/Main/Main.tsx @@ -46,45 +46,72 @@ const Main = () => {
{events.map((event) => ( - -
- -
- {event.title} - Дата начала: {event.start_date} -
- {false && ( - - )} -
- -

{event.description}

-
- - {t("respondRequest")} - - -

{t("entrance")}

- -
submitRegister(event, navigate, graph)}> -
- - - - -