--- import { Icon } from 'astro-icon/components' import { actions } from 'astro:actions' import { z } from 'astro:content' 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, } from '../../constants/serviceSuggestionStatus' import { getServiceSuggestionTypeInfo } from '../../constants/serviceSuggestionType' import BaseLayout from '../../layouts/BaseLayout.astro' import { zodEnumFromConstant } from '../../lib/arrays' 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()).default([]), status: z.array(zodEnumFromConstant(serviceSuggestionStatuses, 'value')).default([]), }, 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, 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!
) } { 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}
) }