diff --git a/src/app/(companies)/companies/feedback/[id]/page.tsx b/src/app/(companies)/companies/feedback/[id]/page.tsx
new file mode 100644
index 0000000..4fd39de
--- /dev/null
+++ b/src/app/(companies)/companies/feedback/[id]/page.tsx
@@ -0,0 +1,29 @@
+"use client";
+import Breadcrumb from "@/components/Breadcrumbs/Breadcrumb";
+import FeedbackTable from "@/components/Tables/feedback-table";
+
+import { BreadcrumbItem } from "@/types/shared";
+import { use } from "react";
+interface IProps {
+ params: Promise<{
+ id: string;
+ }>;
+}
+
+const TenderFeedbackPage = ({ params }: IProps) => {
+ const { id } = use(params);
+
+ const breadcrumbItems: BreadcrumbItem[] = [
+ { href: "/", name: "Dashboard" },
+ { href: "/companies", name: "Companies" },
+ { href: `/companies/feedback/${id}`, name: "Companies feedback" },
+ ];
+ return (
+ <>
+
+
+ >
+ );
+};
+
+export default TenderFeedbackPage;
diff --git a/src/app/customers/feedback/[id]/page.tsx b/src/app/customers/feedback/[id]/page.tsx
new file mode 100644
index 0000000..287e86b
--- /dev/null
+++ b/src/app/customers/feedback/[id]/page.tsx
@@ -0,0 +1,29 @@
+"use client";
+import Breadcrumb from "@/components/Breadcrumbs/Breadcrumb";
+import FeedbackTable from "@/components/Tables/feedback-table";
+
+import { BreadcrumbItem } from "@/types/shared";
+import { use } from "react";
+interface IProps {
+ params: Promise<{
+ id: string;
+ }>;
+}
+
+const TenderFeedbackPage = ({ params }: IProps) => {
+ const { id } = use(params);
+
+ const breadcrumbItems: BreadcrumbItem[] = [
+ { href: "/", name: "Dashboard" },
+ { href: "/customers", name: "Customers" },
+ { href: `/customers/feedback/${id}`, name: "Customers feedback" },
+ ];
+ return (
+ <>
+
+
+ >
+ );
+};
+
+export default TenderFeedbackPage;
diff --git a/src/app/tenders/feedback/[id]/page.tsx b/src/app/tenders/feedback/[id]/page.tsx
index 60c1f9a..9b0f4c5 100644
--- a/src/app/tenders/feedback/[id]/page.tsx
+++ b/src/app/tenders/feedback/[id]/page.tsx
@@ -1,6 +1,7 @@
"use client";
import Breadcrumb from "@/components/Breadcrumbs/Breadcrumb";
-import TenderFeedbackTable from "@/components/Tables/tenders/feedback";
+import FeedbackTable from "@/components/Tables/feedback-table";
+
import { BreadcrumbItem } from "@/types/shared";
import { use } from "react";
interface IProps {
@@ -20,7 +21,7 @@ const TenderFeedbackPage = ({ params }: IProps) => {
return (
<>
-
+
>
);
};
diff --git a/src/components/Tables/companies/index.tsx b/src/components/Tables/companies/index.tsx
index ebea5d1..8fc3357 100644
--- a/src/components/Tables/companies/index.tsx
+++ b/src/components/Tables/companies/index.tsx
@@ -1,5 +1,5 @@
"use client";
-import { PencilSquareIcon, TrashIcon } from "@/assets/icons";
+import { FeedbackIcon, PencilSquareIcon, TrashIcon } from "@/assets/icons";
import ConfirmationModal from "@/components/ui/ConfirmationModal";
import {
Table,
@@ -112,6 +112,13 @@ const CompaniesTable = ({}: IProps) => {
Edit Company
+
diff --git a/src/components/Tables/customers/index.tsx b/src/components/Tables/customers/index.tsx
index 79c303f..fa72860 100644
--- a/src/components/Tables/customers/index.tsx
+++ b/src/components/Tables/customers/index.tsx
@@ -1,5 +1,5 @@
"use client";
-import { PencilSquareIcon, TrashIcon } from "@/assets/icons";
+import { FeedbackIcon, PencilSquareIcon, TrashIcon } from "@/assets/icons";
import ConfirmationModal from "@/components/ui/ConfirmationModal";
import {
Table,
@@ -117,6 +117,13 @@ const CustomersTable = () => {
Assign To Company
+
diff --git a/src/components/Tables/tenders/feedback/index.tsx b/src/components/Tables/feedback-table/index.tsx
similarity index 69%
rename from src/components/Tables/tenders/feedback/index.tsx
rename to src/components/Tables/feedback-table/index.tsx
index 509b496..3dbd299 100644
--- a/src/components/Tables/tenders/feedback/index.tsx
+++ b/src/components/Tables/feedback-table/index.tsx
@@ -1,31 +1,39 @@
-"use client";
-
import { ExclamationIcon } from "@/assets/icons";
-import { ShowcaseSection } from "@/components/Layouts/showcase-section";
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
+ TableRow,
} from "@/components/ui/table";
import TableSkeleton from "@/components/ui/TableSkeleton";
import { cn } from "@/lib/utils";
-import { unixToDate } from "@/utils/shared";
-import { TableRow } from "../../../ui/table";
-import useTenderFeedbackPresenter from "./useTenderFeedbackPresenter";
+import { capitalize, unixToDate } from "@/utils/shared";
+import { ShowcaseSection } from "@/components/Layouts/showcase-section";
+import useFeedbackTablePresenter from "./useFeedbackTablePresenter";
interface IProps {
id: string;
+ paramKey: "tender_id" | "company_id" | "customer_id";
}
+const FeedbackTable = ({ id, paramKey }: IProps) => {
+ const {
+ columns,
+ feedback,
+ isLoading,
+ pathName,
+ router,
+ getShowcaseSectionTitle,
+ } = useFeedbackTablePresenter({ id, paramKey });
-const TenderFeedbackTable = ({ id }: IProps) => {
- const { feedback, isLoading, columns, pathName, router } =
- useTenderFeedbackPresenter({ id });
return (
@@ -38,11 +46,16 @@ const TenderFeedbackTable = ({ id }: IProps) => {
{isLoading && }
+
- {feedback?.map((item, index) =>
- !item ? (
- No feedback is submitted for this tender
- ) : (
+ {!feedback?.length ? (
+
+
+ No feedback
+
+
+ ) : (
+ feedback?.map((item, index) => (
{
- ),
+ ))
)}
@@ -82,4 +95,4 @@ const TenderFeedbackTable = ({ id }: IProps) => {
);
};
-export default TenderFeedbackTable;
+export default FeedbackTable;
diff --git a/src/components/Tables/feedback-table/useFeedbackTablePresenter.ts b/src/components/Tables/feedback-table/useFeedbackTablePresenter.ts
new file mode 100644
index 0000000..4db3a17
--- /dev/null
+++ b/src/components/Tables/feedback-table/useFeedbackTablePresenter.ts
@@ -0,0 +1,36 @@
+import { useGetFeedback } from "@/hooks/queries";
+import { usePathname, useRouter } from "next/navigation";
+
+interface IProps {
+ id: string;
+ paramKey: "tender_id" | "company_id" | "customer_id";
+}
+const useFeedbackTablePresenter = ({ id, paramKey }: IProps) => {
+ const { data, isLoading } = useGetFeedback({ [paramKey]: id });
+ const router = useRouter();
+ const pathName = usePathname();
+ const columns = [
+ "row",
+ "feedback type",
+ "updated at",
+ "created at",
+ "actions",
+ ];
+ const getShowcaseSectionTitle = () => {
+ if (paramKey === "tender_id") {
+ return `: ${data?.data?.[0]?.tender?.title}`;
+ } else {
+ return "";
+ }
+ };
+ return {
+ isLoading,
+ feedback: data?.data,
+ columns,
+ pathName,
+ router,
+ getShowcaseSectionTitle,
+ };
+};
+
+export default useFeedbackTablePresenter;
diff --git a/src/components/Tables/tenders/feedback/useTenderFeedbackPresenter.ts b/src/components/Tables/tenders/feedback/useTenderFeedbackPresenter.ts
deleted file mode 100644
index 2f10c74..0000000
--- a/src/components/Tables/tenders/feedback/useTenderFeedbackPresenter.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-"use client";
-import { useGetFeedback } from "@/hooks/queries";
-import { usePathname, useRouter } from "next/navigation";
-
-const useTenderFeedbackPresenter = ({ id }: { id: string }) => {
- const { data, isLoading } = useGetFeedback({ tender_id: id });
- const router = useRouter();
- const pathName = usePathname();
- const columns = [
- "row",
- "feedback type",
- "updated at",
-
- "created at",
- "actions",
- ];
- return { feedback: data?.data, isLoading, columns, pathName, router };
-};
-
-export default useTenderFeedbackPresenter;