--- import { Icon } from 'astro-icon/components' import { actions } from 'astro:actions' import { z } from 'astro:content' import BadgeSmall from '../../components/BadgeSmall.astro' import BadgeStandardFilter from '../../components/BadgeStandardFilter.astro' import Button from '../../components/Button.astro' import MyPicture from '../../components/MyPicture.astro' import TimeFormatted from '../../components/TimeFormatted.astro' import Tooltip from '../../components/Tooltip.astro' import { getServiceSuggestionStatusInfo, serviceSuggestionStatuses, serviceSuggestionStatusesZodEnumBySlug, serviceSuggestionStatusSlugToId, } from '../../constants/serviceSuggestionStatus' import { getServiceSuggestionTypeInfo, serviceSuggestionTypes, serviceSuggestionTypeSlugToId, serviceSuggestionTypesZodEnumBySlug, } from '../../constants/serviceSuggestionType' import BaseLayout from '../../layouts/BaseLayout.astro' import { cn } from '../../lib/cn' import { zodParseQueryParamsStoringErrors } from '../../lib/parseUrlFilters' import { prisma } from '../../lib/prisma' import { makeLoginUrl } from '../../lib/redirectUrls' const user = Astro.locals.user if (!user) { return Astro.redirect(makeLoginUrl(Astro.url, { message: 'Login to manage service suggestions' })) } const { data: filters } = zodParseQueryParamsStoringErrors( { serviceId: z.array(z.number().int().positive()), status: z.array( serviceSuggestionStatusesZodEnumBySlug.transform((slug) => serviceSuggestionStatusSlugToId(slug)) ), type: z.array( serviceSuggestionTypesZodEnumBySlug.transform((slug) => serviceSuggestionTypeSlugToId(slug)) ), }, Astro ) const serviceSuggestions = await Astro.locals.banners.try('Error fetching service suggestions', async () => prisma.serviceSuggestion.findMany({ select: { id: true, type: true, status: true, createdAt: true, service: { select: { id: true, name: true, slug: true, imageUrl: true, verificationStatus: true, }, }, }, where: { id: filters.serviceId.length > 0 ? { in: filters.serviceId } : undefined, status: filters.status.length > 0 ? { in: filters.status } : undefined, type: filters.type.length > 0 ? { in: filters.type } : undefined, userId: user.id, }, orderBy: { createdAt: 'desc', }, }) ) if (!serviceSuggestions) { return Astro.rewrite('/404') } const createResult = Astro.getActionResult(actions.serviceSuggestion.createService) const success = !!createResult && !createResult.error ---

Service suggestions

{ success && (
Service suggestion submitted successfully!
) }
Filter by:
{ serviceSuggestionTypes.map((type) => ( )) } { serviceSuggestionStatuses.map((status) => ( )) }
{ serviceSuggestions.length === 0 ? (

No suggestions yet.

) : (

Service

Type

Status

Created

Actions

{serviceSuggestions.map((suggestion) => { const typeInfo = getServiceSuggestionTypeInfo(suggestion.type) const statusInfo = getServiceSuggestionStatusInfo(suggestion.status) return ( <> {suggestion.service.name}
) }