mirror of
https://github.com/SrIzan10/fireentity-movienights.git
synced 2026-06-06 00:56:52 +00:00
parentheses stuff
This commit is contained in:
@@ -9,9 +9,45 @@ const prisma = new PrismaClient();
|
||||
export async function POST(req: Request) {
|
||||
const { title, description, posterUrl, suggestedBy } = await req.json();
|
||||
|
||||
// Check if there's already a pending request for this movie (not approved)
|
||||
const existingPendingMovies = await prisma.movie.findMany({
|
||||
where: {
|
||||
title: {
|
||||
equals: title,
|
||||
mode: "insensitive"
|
||||
},
|
||||
approved: false
|
||||
}
|
||||
});
|
||||
|
||||
// If there's already a pending request, don't allow duplicate
|
||||
if (existingPendingMovies.length > 0) {
|
||||
return NextResponse.json(
|
||||
{ error: "This movie has already been suggested and is pending approval." },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
// Check if there are already approved movies with the same title
|
||||
const existingApprovedMovies = await prisma.movie.findMany({
|
||||
where: {
|
||||
title: {
|
||||
equals: title,
|
||||
mode: "insensitive"
|
||||
},
|
||||
approved: true
|
||||
}
|
||||
});
|
||||
|
||||
// If there are existing approved movies, append a number to the title
|
||||
let finalTitle = title;
|
||||
if (existingApprovedMovies.length > 0) {
|
||||
finalTitle = `${title} (${existingApprovedMovies.length + 1})`;
|
||||
}
|
||||
|
||||
const movie = await prisma.movie.create({
|
||||
data: {
|
||||
title,
|
||||
title: finalTitle,
|
||||
description,
|
||||
posterUrl,
|
||||
suggestedBy,
|
||||
|
||||
@@ -28,6 +28,7 @@ export default function SuggestPage() {
|
||||
const [query, setQuery] = useState("");
|
||||
const [movies, setMovies] = useState<Movie[]>([]);
|
||||
const [selectedMovie, setSelectedMovie] = useState<Movie | null>(null);
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
|
||||
const handleSearch = async (searchQuery: string) => {
|
||||
setQuery(searchQuery);
|
||||
@@ -42,13 +43,17 @@ export default function SuggestPage() {
|
||||
|
||||
const handleSelectMovie = (movie: Movie) => {
|
||||
setSelectedMovie(movie);
|
||||
setError(null);
|
||||
};
|
||||
|
||||
|
||||
const handleSubmit = async () => {
|
||||
if (!session || !selectedMovie) {
|
||||
return;
|
||||
}
|
||||
|
||||
setError(null);
|
||||
|
||||
const res = await fetch("/api/movies", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
@@ -64,6 +69,9 @@ export default function SuggestPage() {
|
||||
|
||||
if (res.ok) {
|
||||
router.push("/");
|
||||
} else {
|
||||
const data = await res.json();
|
||||
setError(data.error || "Failed to submit movie suggestion");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -97,6 +105,7 @@ export default function SuggestPage() {
|
||||
{selectedMovie && (
|
||||
<div className="mt-4">
|
||||
<p>Selected: {selectedMovie.title}</p>
|
||||
{error && <p className="text-red-500 mt-2">{error}</p>}
|
||||
<Button onClick={handleSubmit} className="mt-2">
|
||||
Submit
|
||||
</Button>
|
||||
|
||||
Reference in New Issue
Block a user