From 0c457d5157841e83fd2b56984d6e5332b4c37aeb Mon Sep 17 00:00:00 2001 From: Owen <91054189+satanakorn@users.noreply.github.com> Date: Wed, 27 Nov 2024 22:30:42 +0700 Subject: [PATCH 1/6] update rating --- frontend/src/Rating.jsx | 87 +++++++++++++++++------------ src/controllers/ratingController.ts | 7 ++- src/controllers/teamController.ts | 53 ++++++++---------- src/controllers/userController.ts | 40 +++++++------ 4 files changed, 103 insertions(+), 84 deletions(-) diff --git a/frontend/src/Rating.jsx b/frontend/src/Rating.jsx index 2d612c5..7f9576e 100644 --- a/frontend/src/Rating.jsx +++ b/frontend/src/Rating.jsx @@ -41,6 +41,7 @@ const Rating = () => { console.error('Error fetching users:', error); } } + console.log(selectedTeam) }; fetchUsers(); @@ -58,9 +59,9 @@ const Rating = () => { return; } - // ดึง TeamID จาก TeamName - const teamResponse = await Axios.get(`http://localhost:3000/team/getTeamID`, { - params: { TeamName: selectedTeam }, + // Fetch TeamID from TeamName + const teamResponse = await Axios.get(`http://localhost:3000/team/getTeam`, { + params: { TeamID: selectedTeam }, }); const TeamID = teamResponse.data.TeamID; @@ -70,22 +71,28 @@ const Rating = () => { return; } - // ดึง UserID จาก Username - const userResponse = await Axios.get(`http://localhost:3000/user/getUserID`, { - params: { Username: selectedUser }, - }); + // // Store TeamID in local storage + // localStorage.setItem('TeamID', TeamID); + + // Fetch UserID from Username + const userResponse = await Axios.get(`http://localhost:3000/user/getUserID/${selectedUser}`); - const ratedUserID = userResponse.data.userID; + console.log(userResponse.data); + + const ratedUserID = userResponse.data.UserID; + if (!ratedUserID) { setErrorMessage('ไม่พบ UserID ของ Username นี้'); return; } - // ตรวจสอบว่าคนให้คะแนนอยู่ในทีมเดียวกันคนถูกให้คะแนนมั้ย - const checkTeam = await Axios.post(`http://localhost:3000/team/checkteam`, { - Teamname: selectedTeam, - userID: ratedUserID, // ตรวจสอบ UserID ในทีม + // Check if the user is part of the team + const checkTeam = await Axios.get(`http://localhost:3000/team/checkteam`, { + params: { + TeamID: TeamID, + UserID: ratedUserID, + }, }); if (!checkTeam.data.valid) { @@ -93,31 +100,37 @@ const Rating = () => { return; } - // เพิ่มข้อมูลลงในตาราง userteam - await Axios.post(`http://localhost:3000/rating/rateuser`, { - ratedByID: UserID, - ratedUserID, - RatingValue: RatingValue, - Comment, - }, - { - headers: { - Authorization: `Bearer ${localStorage.getItem('token')}`, + console.log(UserID) + console.log(ratedUserID) + console.log(RatingValue) + console.log(Comment) + + // Add rating + // Add rating + await Axios.post(`http://localhost:3000/rating/rateuser`, { + ratedByID: UserID, + ratedUserID: ratedUserID, + ratingValue: RatingValue, + comment: Comment, }, - } - ); - - // รีเซ็ตฟอร์ม - setSelectedTeam(''); - setSelectedUser(''); - setRatingValue(''); - setComment(''); - setErrorMessage(''); - alert('บันทึกคะแนนสำเร็จ'); - } catch (error) { - console.error('Error:', error); - setErrorMessage('เกิดข้อผิดพลาดในการบันทึกข้อมูล'); - } + { + headers: { + Authorization: `Bearer ${localStorage.getItem('token')}`, + }, + } + ); + + // Reset form + setSelectedTeam(''); + setSelectedUser(''); + setRatingValue(''); + setComment(''); + setErrorMessage(''); + alert('บันทึกคะแนนสำเร็จ'); + } catch (error) { + console.error('Error:', error); + setErrorMessage('เกิดข้อผิดพลาดในการบันทึกข้อมูล'); + } }; return ( @@ -148,7 +161,7 @@ const Rating = () => { > {users.map((user) => ( - ))} diff --git a/src/controllers/ratingController.ts b/src/controllers/ratingController.ts index 81a4395..6451882 100644 --- a/src/controllers/ratingController.ts +++ b/src/controllers/ratingController.ts @@ -28,7 +28,8 @@ export const ratingController = new Elysia({ prefix: "/rating" }) }), }) -// Rating to someone + +// Rate someone .post("/rateuser", async ({ body, error }) => { const { ratedByID, ratedUserID, ratingValue, comment } = body; @@ -71,6 +72,8 @@ export const ratingController = new Elysia({ prefix: "/rating" }) }), }) +// Other endpoints... + // Update rating .put("/:userRatingID", async ({ params, body, error }) => { const { userRatingID } = params; @@ -103,4 +106,4 @@ export const ratingController = new Elysia({ prefix: "/rating" }) ratingValue: t.Optional(t.Number()), comment: t.Optional(t.String()), }), -}); \ No newline at end of file +}) \ No newline at end of file diff --git a/src/controllers/teamController.ts b/src/controllers/teamController.ts index 5ba67d0..615bd84 100644 --- a/src/controllers/teamController.ts +++ b/src/controllers/teamController.ts @@ -19,7 +19,7 @@ export const teamController = new Elysia({ prefix: "/team" }) }, }); - if (!users) { + if (!users || users.length === 0) { return error(404, "Users not found"); } @@ -30,14 +30,11 @@ export const teamController = new Elysia({ prefix: "/team" }) }), }) - - -// Get TeamID from name and hackathon -.get("/find", async ({ query: { teamName, hackathonID }, error }) => { +// Get Team by TeamID +.get("/getTeam", async ({ query: { TeamID }, error }) => { const team = await prisma.team.findFirst({ where: { - TeamName: teamName, - HackathonID: hackathonID, + TeamID: TeamID, }, }); @@ -48,43 +45,41 @@ export const teamController = new Elysia({ prefix: "/team" }) return team; }, { query: t.Object({ - teamName: t.String(), - hackathonID: t.Number(), + TeamID: t.Number(), }), }) -// check TeamName and UserID in rating -.get("/checkteam", async ({ query: { TeamID, userID }, error }) => { - // ตรวจสอบ input ว่ามีค่าหรือไม่ - if (!TeamID || !userID) { - return error(400, "teamID and userID are required"); - } +// Check if a user is part of a team +.get("/checkteam", async ({ query: { TeamID, UserID }, error }) => { + if (!TeamID || !UserID) { + return error(400, "TeamID and UserID are required"); + } - const teamMember = await prisma.userTeam.findFirst({ + const teamMember = await prisma.userTeam.findFirst({ where: { - TeamID: TeamID, - UserID: userID, + TeamID: TeamID, + UserID: UserID, }, - }); + }); - if (!teamMember) { + if (!teamMember) { return error(404, "User is not part of the team"); - } + } - return "User is part of the team"; - }, - { - query: t.Object({ + return { valid: true }; +}, { + query: t.Object({ TeamID: t.Number(), - userID: t.String(), - }), - }) + UserID: t.String(), + }), +}) +// Other endpoints... // Get TeamID from TeamName .get("/getTeamID", async ({ query: { TeamName }, error }) => { const team = await prisma.team.findFirst({ where: { - TeamName: TeamName, + TeamName: TeamName, }, }); diff --git a/src/controllers/userController.ts b/src/controllers/userController.ts index 0973f36..39a795e 100644 --- a/src/controllers/userController.ts +++ b/src/controllers/userController.ts @@ -255,24 +255,26 @@ export const userController = new Elysia({ prefix: "/user" }) return users; // Return all users with related skills and notifications }) - // Get UserID from Username - .get("/getUserID", async ({ query: { UserName }, error }) => { - const user = await prisma.user.findFirst({ - where: { - UserName: UserName, - }, - }); - - if (!user) { - return error(404, "User not found"); - } - - return {userID: user.UserID}; + + // Get user details from Username + .get("/getUserID/:UserID", async ({params, error }) => { + const user = await prisma.user.findFirst({ + where: { + UserID: params.UserID, + }, + }); + + if (!user) { + return error(404, "User not found"); + } + + return { UserID : user.UserID , UserName : user.UserName}; }, { - query: t.Object({ - UserName: t.String(), + params: t.Object({ + UserID: t.String(), }), }) + // Delete user profile .delete( @@ -299,4 +301,10 @@ export const userController = new Elysia({ prefix: "/user" }) userID: t.String(), }), } - ); \ No newline at end of file + ); + + + + // .get ( + // "/GetId", + // ) \ No newline at end of file From 60b4a35622c27de088a0da237001b2444b64679f Mon Sep 17 00:00:00 2001 From: Pongrawee Sripetpong Date: Wed, 27 Nov 2024 22:31:37 +0700 Subject: [PATCH 2/6] fixsomethingineventdetail --- frontend/src/eventdetail.jsx | 127 ++++++++++++++++++++++++++---- src/controllers/teamController.ts | 61 +++++++++++--- 2 files changed, 163 insertions(+), 25 deletions(-) diff --git a/frontend/src/eventdetail.jsx b/frontend/src/eventdetail.jsx index b7d6fe7..f8d92af 100644 --- a/frontend/src/eventdetail.jsx +++ b/frontend/src/eventdetail.jsx @@ -26,7 +26,74 @@ const EventDetail = () => { useEffect(() => { console.log('member:', member); }, [member]); + + const checkteam = async (TeamID) => { + try { + const responsed = await Axios.get(`http://localhost:3000/team/finduserteam/${TeamID}`); + const team = responsed.data; + const currentUser = team.find(member => member.UserID === UserID); + if (currentUser) { + Swal.fire({ + title: "Sorry", + text: "You are in the team !", + icon: "error" + }); + setTimeout(() => { + Swal.close(); + }, 3000); + + await new Promise(resolve => setTimeout(resolve, 2000)); + window.location.href = `/EventDetail/${HackathonID}`;} + } catch (error) { + console.error("Error deleting from team:", error); + } + } + + + const deleteteam = async (TeamID) => { + try { + const responsed = await Axios.get(`http://localhost:3000/team/finduserteam/${TeamID}`); + const team = responsed.data; + const currentUser = team.find(member => member.UserID === UserID); + if (currentUser) { + setCurrentUserRole(currentUser.role)} + + if (currentUserRole === 'head'){ + const response = await Axios.delete(`http://localhost:3000/team/delete/${TeamID}`,TeamID); + console.log('Delete response:', response.data); + Swal.fire({ + title: "Congratulation", + text: "Delete team success !", + icon: "success" + }); + setTimeout(() => { + Swal.close(); + }, 3000); + + await new Promise(resolve => setTimeout(resolve, 2000)); + + window.location.href = `/EventDetail/${HackathonID}`; + } + else{ + Swal.fire({ + title: "Sorry", + text: "You don't have permission to delete team !", + icon: "error" + }); + setTimeout(() => { + Swal.close(); + }, 3000); + + await new Promise(resolve => setTimeout(resolve, 2000)); + + window.location.href = `/EventDetail/${HackathonID}`; + }} catch (error) { + console.error("Error deleting from team:", error); + } + } + + //delete members from team const deletefromteam = async (TeamID, UserID) => { try { const response = await Axios.delete(`http://localhost:3000/team/removeMember`, { @@ -43,9 +110,9 @@ const EventDetail = () => { }); setTimeout(() => { Swal.close(); - }, 3000); + }, 1000); - await new Promise(resolve => setTimeout(resolve, 2000)); + await new Promise(resolve => setTimeout(resolve, 1000)); window.location.href = `/EventDetail/${HackathonID}`; } catch (error) { @@ -99,6 +166,19 @@ const EventDetail = () => { window.location.href = `/EventDetail/${HackathonID}`; } else{ + + const payloadt = { + teamID: TeamID, + userID: UserID, + role: role + }; + console.log('Payload:', payloadt); + await Axios.post('http://localhost:3000/team/addMember', payloadt); + setuserTeamlist((prev) => [ + ...prev, + { teamID: TeamID, userID: UserID, role: role }, + ]); + Swal.fire({ title: "Good job!", text: "Join team Sucessful!", @@ -112,18 +192,6 @@ const EventDetail = () => { // localStorage.setItem('UserID', JSON.stringify(response.data.UserID)); window.location.href = `/EventDetail/${HackathonID}`; - - const payloadt = { - teamID: TeamID, - userID: UserID, - role: role - }; - console.log('Payload:', payloadt); - await Axios.post('http://localhost:3000/team/addMember', payloadt); - setuserTeamlist((prev) => [ - ...prev, - { teamID: TeamID, userID: UserID, role: role }, - ]); } } catch (error) { console.error("Error joining team:", error); @@ -166,6 +234,18 @@ const addteam = async () => { ]); console.log('Team created successfully'); + Swal.fire({ + title: "Congratulation", + text: "Create team success !", + icon: "success" + }); + setTimeout(() => { + Swal.close(); + }, 3000); + + await new Promise(resolve => setTimeout(resolve, 2000)); + + window.location.href = `/EventDetail/${HackathonID}`; } catch (error) { console.error('Error creating team:', error.response?.data || error.message); } @@ -264,6 +344,19 @@ const addteam = async () => { 👥 {val.CurrentMember}/{val.MaxMember}

Team {val.TeamName}

+ + +
+ +
+ +
+