- {attendance.date || "N/A"}
+
+ {attendance.timeIn?.substring(0, 8) || "N/A"}
- {attendance.timein?.substring(0, 8) || "N/A"}
-
- {attendance.timeout?.substring(0, 8) || "N/A"}
+
+ {attendance.timeOut?.substring(0, 8) || "N/A"}
>
)}
diff --git a/src/lib/apollo-client.ts b/src/lib/apollo-client.ts
index 318602c..ce42e06 100644
--- a/src/lib/apollo-client.ts
+++ b/src/lib/apollo-client.ts
@@ -2,7 +2,7 @@
import { ApolloClient, InMemoryCache } from "@apollo/client";
const client = new ApolloClient({
- uri: "https://root.amfoss.in",
+ uri: "http://root.amfoss.in",
cache: new InMemoryCache(),
defaultOptions: {
watchQuery: {
diff --git a/src/services/attendance-service.ts b/src/services/attendance-service.ts
index 5dfbf64..f9a1043 100644
--- a/src/services/attendance-service.ts
+++ b/src/services/attendance-service.ts
@@ -2,71 +2,44 @@
import client from "@/lib/apollo-client";
import { gql } from "@apollo/client";
+import toast from 'react-hot-toast'
import {
GetAttendanceDetailsQueryResponse,
AttendanceDetails,
- GetMemberDetailsQueryResponse,
} from "@/types/types";
const GET_ATTENDANCE_DETAILS_QUERY = gql`
-
- query
- {attendanceByDate(date : "2025-01-01"){
- # attendance
+ query GABD($date:NaiveDate!) {
+ attendanceByDate(date: $date ) {
+ member {
+ name
+ year
+ }
timeIn
timeOut
- date
isPresent
- }}
-`;
-
-const GET_MEMBER_DETAILS_QUERY = gql`
-
- query {
- members {
- memberId
- name
- year
- }
+ }
}
`;
+
export const AttendanceService = {
// Function to get attendance details based on a specific date
async getAttendanceDetails(date: string): Promise
{
try {
- const [attendanceResponse, memberResponse] = await Promise.all([
+ const [attendanceResponse] = await Promise.all([
client.query({
query: GET_ATTENDANCE_DETAILS_QUERY,
variables: { date },
}),
- client.query({
- query: GET_MEMBER_DETAILS_QUERY,
- }),
]);
- const attendanceDetails = attendanceResponse.data.getAttendance;
- const members = memberResponse.data.getMember;
-
- // Map member IDs to both names and years
- const memberMap = new Map(
- members.map((member) => [
- member.id,
- { name: member.name, year: member.year },
- ])
- );
-
- // Enrich attendance details with member names and years
- const enrichedAttendance = attendanceDetails.map((attendance) => ({
- ...attendance,
- memberName: memberMap.get(attendance.id)?.name || "Unknown", // Get member name or default to 'Unknown'
- year: memberMap.get(attendance.id)?.year || "Unknown", // Get member year or default to 'Unknown'
- }));
-
- return enrichedAttendance;
+ const attendanceDetails = attendanceResponse.data.attendanceByDate;
+ return attendanceDetails;
} catch (error) {
console.error("Error fetching attendance details:", error);
- throw new Error("Could not fetch attendance details");
+ toast.error("failed to fetch attendace data")
+ return [];
}
},
-};
+};
\ No newline at end of file
diff --git a/src/styles/globals.css b/src/styles/globals.css
index 2a91a8e..cda34d9 100644
--- a/src/styles/globals.css
+++ b/src/styles/globals.css
@@ -1,6 +1,12 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
+
+html,
+body {
+ @apply bg-neutral-900 text-white m-0 p-0;
+}
+
li:hover span {
transform: translateY(0) scale(2); /* Spans scale up on hover */
}
diff --git a/src/types/types.ts b/src/types/types.ts
index 4d0ae38..a88d051 100644
--- a/src/types/types.ts
+++ b/src/types/types.ts
@@ -1,17 +1,14 @@
// Type for the AttendanceDetails object returned by the query
export type AttendanceDetails = {
- id: string;
- timein: string;
- timeout: string;
+ member: Member;
+ timeIn: any;
+ timeOut: any;
isPresent: boolean;
- date: string;
- memberName: string;
- year: string;
};
// Type for the Member object
export type Member = {
- id: string;
+ id?: string;
name: string;
year: string;
};
@@ -26,6 +23,7 @@ export type Attendance = {
// Type for the GraphQL Query response for attendance details
export type GetAttendanceDetailsQueryResponse = {
+ [x: string]: any;
getAttendance: AttendanceDetails[];
};