diff --git a/src/components/Benefit_CA.jsx b/src/components/Benefit_CA.jsx index 4a45856..4558b24 100644 --- a/src/components/Benefit_CA.jsx +++ b/src/components/Benefit_CA.jsx @@ -64,6 +64,11 @@ const BenefitsSection = () => { CA Leaderboard + + + { user?.role === "admin" && diff --git a/src/components/WinzoAddModel.jsx b/src/components/WinzoAddModel.jsx new file mode 100644 index 0000000..4e9711e --- /dev/null +++ b/src/components/WinzoAddModel.jsx @@ -0,0 +1,61 @@ +import React, { useState } from "react"; + +const Winzo_AddCard = ({ isOpen, onClose }) => { + const [username, setUsername] = useState(""); + const [email, setEmail] = useState(""); + + if (!isOpen) return null; + + return ( +
+
+

Enter Details of Referee

+ +
+ + setUsername(e.target.value)} + className="text-black w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-lime-500" + placeholder="Enter refree's username" + /> +
+ +
+ + setEmail(e.target.value)} + className="text-black w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-lime-500" + placeholder="Enter refree's email" + /> +
+ +
+ + +
+
+
+ ); +}; + +export default Winzo_AddCard; diff --git a/src/router.jsx b/src/router.jsx index 71c55a2..6e699bc 100644 --- a/src/router.jsx +++ b/src/router.jsx @@ -19,6 +19,7 @@ import Layout from "./layout/Layout"; import PageTitle from "./components/PageTitle"; import CALeaderboard from "./routes/CALeaderboard"; import AllTeams from "./routes/Admin/AllTeams"; +import Winzo_Referral from "./routes/Winzo_Referral"; export const router = createBrowserRouter([ { @@ -100,6 +101,13 @@ export const router = createBrowserRouter([ , }, + { + path: "/winzo_referral", + element: <> + + , + + }, { path: "/event/teams/:eventId", element: ( diff --git a/src/routes/Winzo_Referral.jsx b/src/routes/Winzo_Referral.jsx new file mode 100644 index 0000000..059495e --- /dev/null +++ b/src/routes/Winzo_Referral.jsx @@ -0,0 +1,107 @@ +import React, { useEffect, useState } from "react"; +import axios from "../utils/axiosInstance"; +import Navbar from "../components/Navbar"; +import Loader from "../components/Loader"; +import Winzo_AddCard from "../components/WinzoAddModel"; + +const Winzo_Referral = () => { + const [leaderboard, setLeaderboard] = useState([]); + const [loading, setLoading] = useState(false); + const [isCardOpen, setIsCardOpen] = useState(false); + + useEffect(() => { + async function fetchData() { + setLoading(true); + try { + const response = await axios.get("/ca/leaderboard"); + const data = response.data; + let currentRank = 1; + let board = []; + for (let i = 0; i < data.length; i++) { + let rank; + if (i > 0 && data[i].points === data[i - 1].points) { + rank = currentRank; + } else { + rank = i + 1; + } + currentRank = rank; + board.push({ ...data[i], rank }); + } + setLeaderboard(board); + } catch (error) { + console.error(error); + } finally { + setLoading(false); + } + } + fetchData(); + }, []); + + return ( + <> + +
+

Winzo Referral

+ +

+ Point System: + + ₹10 for each participant's Winzo Referral +

+

+ UNFAIR means{" "} + (registering through fake emails etc) to get points will lead to{" "} + + rejection of your CA position. + +

+ + + + {isCardOpen && ( + setIsCardOpen(false)} /> + )} + + {loading ? ( + + ) : ( + + + + + + + + + + + + {leaderboard.map((entry, index) => ( + + + + + + + + ))} + +
#NameUsernameEmail AddressVerification Status
{entry.srno}{entry.name}{entry.username}{entry.email} + {entry.verification_status} +
+ )} +
+ + ); +}; + +export default Winzo_Referral;