"use client"; import { createSupabaseClient } from "@/lib/supabase/clientComponentClient"; import { useState, useEffect, useRef } from "react"; import { SubmitHandler } from "react-hook-form"; import { z } from "zod"; import BusinessForm from "@/components/BusinessForm"; import { businessFormSchema } from "@/types/schemas/application.schema"; import Swal from "sweetalert2"; import { getCurrentUserID } from "@/app/api/userApi"; import { uploadFile } from "@/app/api/generalApi"; type businessSchema = z.infer; const BUCKET_PITCH_NAME = "business-pitches"; let supabase = createSupabaseClient(); export default function ApplyBusiness() { const [applyProject, setApplyProject] = useState(false); const alertShownRef = useRef(false); const onSubmit: SubmitHandler = async (data) => { const transformedData = await transformChoice(data); await sendApplication(transformedData); }; const sendApplication = async (recvData: any) => { const { data: { user }, } = await supabase.auth.getUser(); const pitchType = typeof recvData["businessPitchDeck"]; if (pitchType === "object") { if (user?.id) { const uploadSuccess = await uploadFile( recvData["businessPitchDeck"], user.id, BUCKET_PITCH_NAME, `${user?.id}/${recvData["businessPitchDeck"].name}` ); if (!uploadSuccess) { return; } console.log("file upload successful"); } else { console.error("user ID is undefined."); return; } } const { data, error } = await supabase .from("business_application") .insert([ { user_id: user?.id, business_name: recvData["companyName"], business_type_id: recvData["industry"], location: recvData["country"], is_for_sale: recvData["isForSale"], is_generating_revenue: recvData["isGenerating"], is_in_us: recvData["isInUS"], pitch_deck_url: pitchType === "string" ? recvData["businessPitchDeck"] : "", money_raised_to_date: recvData["totalRaised"], community_size: recvData["communitySize"], }, ]) .select(); // console.table(data); Swal.fire({ icon: error == null ? "success" : "error", title: error == null ? "success" : "Error: " + error.code, text: error == null ? "Your application has been submitted" : error.message, confirmButtonColor: error == null ? "green" : "red", }).then((result) => { if (result.isConfirmed && applyProject) { window.location.href = "/project/apply"; } else { window.location.href = "/"; } }); }; const hasUserApplied = async (userID: string) => { let { data: business, error } = await supabase .from("business") .select("*") .eq("user_id", userID); console.table(business); if (error) { console.error(error); } if (business) { return true; } return false; }; const transformChoice = (data: any) => { // convert any yes and no to true or false const transformedData = Object.entries(data).reduce( (acc: Record, [key, value]) => { if (typeof value === "string") { const lowerValue = value.toLowerCase(); if (lowerValue === "yes") { acc[key] = true; } else if (lowerValue === "no") { acc[key] = false; } else { acc[key] = value; // keep other string values unchanged } } else { acc[key] = value; // keep other types unchanged } return acc; }, {} ); return transformedData; }; useEffect(() => { const fetchUserData = async () => { try { const userID = await getCurrentUserID(); if (userID) { const hasApplied = await hasUserApplied(userID); if (hasApplied && !alertShownRef.current) { alertShownRef.current = true; Swal.fire({ icon: "info", title: "You Already Have an Account", text: "You have already submitted your business application.", confirmButtonText: "OK", allowOutsideClick: false, allowEscapeKey: false, }).then((result) => { if (result.isConfirmed) { window.location.href = "/"; } }); } } else { console.error("User ID is undefined."); } } catch (error) { console.error("Error fetching user ID:", error); } }; // fetchUserData(); }, []); return (

Apply to raise on B2DVentures

All information submitted in this application is for internal use only and is treated with the utmost{" "}

confidentiality. Companies may apply to raise with B2DVentures more than once.

{/* form */} {/*
*/}
); }