diff --git a/src/components/projectCard.tsx b/src/components/projectCard.tsx
index 3189ced..ff221f3 100644
--- a/src/components/projectCard.tsx
+++ b/src/components/projectCard.tsx
@@ -22,6 +22,18 @@ interface ProjectCardProps {
}
export function ProjectCard(props: ProjectCardProps) {
+ if (props.minInvestment === null) {
+ props.minInvestment = 0;
+ }
+
+ if (props.totalInvestor === null) {
+ props.minInvestment = 0;
+ }
+
+ if (props.totalRaised === null) {
+ props.minInvestment = 0;
+ }
+
return (
{
`);
};
+export const getBusinessByName = (
+ client: SupabaseClient,
+ params: { businessName?: string | null; single?: boolean } = { single: false }
+) => {
+ const query = client.from("business").select(`
+ business_id:id,
+ location,
+ business_name,
+ ...business_type (
+ business_type_id: id,
+ business_type: value
+ ),
+ joined_date,
+ user_id
+ `);
+
+ if (params.businessName && params.businessName.trim() !== "") {
+ query.ilike("business_name", `%${params.businessName}%`);
+ }
+
+ if (params.single) {
+ query.single();
+ }
+
+ return query;
+};
+
export const getBusinessAndProject = (
client: SupabaseClient,
params: { businessName?: String | null; businessId?: number | null; single?: boolean } = { single: false }
@@ -53,7 +80,7 @@ export const getBusinessAndProject = (
`);
if (params.businessName && params.businessName.trim() !== "") {
- return query.ilike("business_name", `%${params.businessName}%`);
+ return query.or(`business_name.ilike.%${params.businessName}%,project_name.ilike.%${params.businessName}%`);
}
if (params.businessId) {
diff --git a/src/lib/data/projectQuery.ts b/src/lib/data/projectQuery.ts
index 27ca3c3..9402632 100644
--- a/src/lib/data/projectQuery.ts
+++ b/src/lib/data/projectQuery.ts
@@ -1,4 +1,5 @@
import { SupabaseClient } from "@supabase/supabase-js";
+import { ProjectCardProps } from "@/types/ProjectCard";
async function getTopProjects(client: SupabaseClient, numberOfRecords: number = 4) {
try {
@@ -241,6 +242,62 @@ const getProjectByUserId = (client: SupabaseClient, userId: string) => {
.eq("business.user_id", userId);
};
+function getProjectByName(client: SupabaseClient, searchTerm: string) {
+ return client
+ .from("project")
+ .select(
+ `
+ id,
+ project_name,
+ business_id,
+ published_time,
+ project_short_description,
+ card_image_url,
+ project_investment_detail (
+ min_investment,
+ total_investment,
+ target_investment,
+ investment_deadline
+ ),
+ project_tag (
+ tag (
+ id,
+ value
+ )
+ ),
+ business (
+ location
+ )
+ `
+ )
+ .ilike("project_name", `%${searchTerm}%`);
+}
+
+const getProjectCardData = async (client: SupabaseClient, projectIds: string[]) => {
+ const { data, error } = await client.from("project_card").select("*").in("project_id", projectIds);
+
+ if (error) {
+ return { data: null, error: error.message };
+ }
+
+ const projectSections = data.map((project) => {
+ const projectSection: ProjectCardProps = {
+ id: project.project_id,
+ project_name: project.project_name,
+ short_description: project.short_description,
+ image_url: project.image_url,
+ join_date: project.join_date,
+ location: project.location,
+ tags: project.tags || [],
+ min_investment: project.min_investment,
+ total_investor: project.total_investor,
+ total_raise: project.total_raise,
+ };
+ return projectSection;
+ });
+
+ return { data: projectSections, error: null };
+};
export {
getProjectData,
getProjectDataQuery,
@@ -248,4 +305,6 @@ export {
searchProjectsQuery,
getProjectByBusinessId,
getProjectByUserId,
+ getProjectByName,
+ getProjectCardData,
};
diff --git a/src/types/BusinessCard.ts b/src/types/BusinessCard.ts
new file mode 100644
index 0000000..1371428
--- /dev/null
+++ b/src/types/BusinessCard.ts
@@ -0,0 +1,7 @@
+export interface BusinessCardProps {
+ business_id: number;
+ business_name: string;
+ joined_date: string;
+ location: string;
+ business_type: string;
+}
diff --git a/src/types/ProjectCard.ts b/src/types/ProjectCard.ts
new file mode 100644
index 0000000..51e9955
--- /dev/null
+++ b/src/types/ProjectCard.ts
@@ -0,0 +1,12 @@
+export interface ProjectCardProps {
+ id?: number;
+ project_name: string;
+ short_description: string;
+ image_url: string;
+ join_date: string;
+ location: string;
+ tags: string[] | null;
+ min_investment: number;
+ total_investor: number;
+ total_raise: number;
+}
diff --git a/src/types/database.types.ts b/src/types/database.types.ts
index 57dc0aca9d3c6b02fd9df922302f6a28d29832a6..9169905fac1846b659658521c1e1b25d8d38b94e 100644
GIT binary patch
literal 65178
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
q(|440J5(E961>YLh9
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
NuTI;Iky