From 95f0d579d3ccff006b63a252c7bfb62e6fc1c05d Mon Sep 17 00:00:00 2001 From: Farhan Helmy Date: Sun, 19 Feb 2023 02:18:22 +0800 Subject: [PATCH] feat: add review form stars, comments and upload image --- package.json | 2 + prisma/schema.prisma | 32 +++ src/components/AddSurauForm.tsx | 133 +++++++++ src/components/AddSurauFormModal.tsx | 50 ++++ src/components/ReviewSurauForm.tsx | 144 ++++++++++ src/components/ReviewSurauFormModal.tsx | 50 ++++ src/components/SurauList.tsx | 10 +- src/components/SurauOverview.tsx | 7 +- src/components/SurauReview.tsx | 224 ++++++++------- src/pages/surau/[id].tsx | 2 - tailwind.config.cjs | 6 +- yarn.lock | 366 +++++++++++++++++++++++- 12 files changed, 905 insertions(+), 121 deletions(-) create mode 100644 src/components/AddSurauForm.tsx create mode 100644 src/components/AddSurauFormModal.tsx create mode 100644 src/components/ReviewSurauForm.tsx create mode 100644 src/components/ReviewSurauFormModal.tsx diff --git a/package.json b/package.json index aa51517..44559fc 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@prisma/client": "^4.9.0", "@tailwindcss/aspect-ratio": "^0.4.2", "@tailwindcss/forms": "^0.5.3", + "@tailwindcss/typography": "^0.5.9", "@tanstack/react-query": "^4.20.0", "@trpc/client": "^10.9.0", "@trpc/next": "^10.9.0", @@ -25,6 +26,7 @@ "next-auth": "^4.19.0", "react": "18.2.0", "react-dom": "18.2.0", + "react-select": "^5.7.0", "superjson": "1.9.1", "zod": "^3.20.2" }, diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 6d78c6a..51ef744 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -20,6 +20,37 @@ model Example { updatedAt DateTime @updatedAt } +model Surau { + id String @id @default(cuid()) + name String + address String + city String + state String + zip_code String + ratings Rating[] +} + +model Rating { + id String @id @default(cuid()) + rating Int + review String? + created_at DateTime @default(now()) + surau Surau @relation(fields: [id], references: [id]) + place_id Int + user User @relation(fields: [user_id], references: [id]) + user_id String + photos Photo[] +} + +model Photo { + photo_id String @id @default(cuid()) + file_path String + caption String? + created_at DateTime @default(now()) + rating Rating @relation(fields: [rating_id], references: [id]) + rating_id String +} + // Necessary for Next auth model Account { id String @id @default(cuid()) @@ -55,6 +86,7 @@ model User { image String? accounts Account[] sessions Session[] + ratings Rating[] } model VerificationToken { diff --git a/src/components/AddSurauForm.tsx b/src/components/AddSurauForm.tsx new file mode 100644 index 0000000..057a9cb --- /dev/null +++ b/src/components/AddSurauForm.tsx @@ -0,0 +1,133 @@ +/* eslint-disable @typescript-eslint/no-unsafe-member-access */ +/* eslint-disable @typescript-eslint/no-unsafe-return */ +import dynamic from 'next/dynamic' +import type { FC} from 'react'; +import { useEffect, useState } from 'react' +const Select = dynamic(() => import("react-select"), { + ssr: true, +}) + +type State = { + administrative_division: string; + state: string + capital: string, + royal_capital: string, + population: number, + total_area: number, + licence_plate_prefix: string, + phone_area_code: string, + abbreviation: string, + ISO: string, + FIPS: string, + HDI: number, + region: string, + head_of_state: string, + head_of_goverment: string +} + +export type AddSurauFormProps = { + open: boolean, + setOpen: (open: boolean) => void +} + +const AddSurauForm: FC = ({ open, setOpen }) => { + + const [state, setState] = useState([]); + + useEffect(() => { + void fetch("https://jianliew.me/malaysia-api/state/v1/all.json") + .then(res => res.json()) + .then(data => { + console.log(data) + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + setState(data) + }) + }, []) + + return ( + <> +
+
+
+
+

Add surau

+

+ Help us to add surau if it is not in the list. +

+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+