diff --git a/src/components/Layouts/sidebar/data/index.ts b/src/components/Layouts/sidebar/data/index.ts index 3c781b2..1f7c361 100644 --- a/src/components/Layouts/sidebar/data/index.ts +++ b/src/components/Layouts/sidebar/data/index.ts @@ -73,13 +73,13 @@ export const NAV_DATA: NavData = [ icon: Icons.NotificationIcon, items: [], }, - // { - // title: "Contact Us", - // url: "/contact-us", - // icon: Icons.CallIncome, - // items: [], - // visible: false, - // }, + { + title: "Contact Us", + url: "/contact-us", + icon: Icons.CallIncome, + items: [], + visible: true, + }, { title: "Marketing", url: "/marketing", diff --git a/src/components/Tables/contact-us/index.tsx b/src/components/Tables/contact-us/index.tsx index 521b02d..c3c5131 100644 --- a/src/components/Tables/contact-us/index.tsx +++ b/src/components/Tables/contact-us/index.tsx @@ -10,9 +10,10 @@ import { } from "@/components/ui/table"; import TableSkeleton from "@/components/ui/TableSkeleton"; import { useContactUsListPresenter } from "./useContactUsListPresenter"; +import { unixToDate } from "@/utils/shared"; const ContactUsTable = () => { - const { columns, pathname, router, isPending, data } = + const { columns, pathname, router, isPending, contacts } = useContactUsListPresenter(); return (
@@ -33,13 +34,35 @@ const ContactUsTable = () => { {isPending && } - -
hjgfjhg
-
+ {contacts?.map((item, index) => ( + + + {index + 1} + + + {item?.full_name} + + + {item?.email} + + + {item?.status} + + + {item?.phone} + + + {unixToDate({ unix: item?.created_at })} + + + ))}
diff --git a/src/components/Tables/contact-us/useContactUsListPresenter.ts b/src/components/Tables/contact-us/useContactUsListPresenter.ts index afc6940..f9ddddf 100644 --- a/src/components/Tables/contact-us/useContactUsListPresenter.ts +++ b/src/components/Tables/contact-us/useContactUsListPresenter.ts @@ -2,7 +2,15 @@ import { useReadAllContactUs } from "@/hooks/queries/useContactUsQuery"; import { usePathname, useRouter } from "next/navigation"; export const useContactUsListPresenter = () => { - const columns: string[] = ["row", "actions"]; + const columns: string[] = [ + "row", + "Full name", + "email", + "status", + "phone", + "created at", + "actions", + ]; const pathname = usePathname(); const router = useRouter(); const { data, isPending } = useReadAllContactUs(); @@ -11,6 +19,6 @@ export const useContactUsListPresenter = () => { pathname, router, isPending, - data, + contacts: data?.data.contacts, }; }; diff --git a/src/lib/api/services/contact-us-service.ts b/src/lib/api/services/contact-us-service.ts index 5bbe2c1..7e6758b 100644 --- a/src/lib/api/services/contact-us-service.ts +++ b/src/lib/api/services/contact-us-service.ts @@ -1,8 +1,9 @@ import api from "../axios"; import { API_ENDPOINTS } from "../endpoints"; +import { TContactApiResponseSchema } from "../types/TContacts"; export const contactUsService = { - getAllContactUs: async () => { + getAllContactUs: async (): Promise => { try { return (await api.get(API_ENDPOINTS.CONTACT_US.READ_ALL)).data; } catch (error) { diff --git a/src/lib/api/types/TContacts.ts b/src/lib/api/types/TContacts.ts new file mode 100644 index 0000000..3a31912 --- /dev/null +++ b/src/lib/api/types/TContacts.ts @@ -0,0 +1,24 @@ +import { z } from "zod"; +import { createApiResponseSchema } from "./Factory"; +const contactsListSchema = z.object({ + admin_notes: z.string(), + created_at: z.number(), + email: z.string(), + full_name: z.string(), + id: z.string(), + message: z.string(), + phone: z.string(), + resolved_at: z.number(), + resolved_by: z.string(), + status: z.string(), + updated_at: z.number(), +}); + +export const contactsListResponseSchema = z.object({ + contacts: z.array(contactsListSchema), +}); +export const contactsApiResponse = createApiResponseSchema( + contactsListResponseSchema, +); + +export type TContactApiResponseSchema = z.infer;