--- import { Icon } from 'astro-icon/components' import { actions, isInputError } from 'astro:actions' import BadgeSmall from '../../../components/BadgeSmall.astro' import Button from '../../../components/Button.astro' import Chat from '../../../components/Chat.astro' import InputSelect from '../../../components/InputSelect.astro' import ServiceCard from '../../../components/ServiceCard.astro' import UserBadge from '../../../components/UserBadge.astro' import { getServiceSuggestionStatusInfo, serviceSuggestionStatuses, } from '../../../constants/serviceSuggestionStatus' import { getServiceSuggestionTypeInfo } from '../../../constants/serviceSuggestionType' import BaseLayout from '../../../layouts/BaseLayout.astro' import { parseIntWithFallback } from '../../../lib/numbers' import { prisma } from '../../../lib/prisma' import { makeLoginUrl } from '../../../lib/redirectUrls' import { formatDateShort } from '../../../lib/timeAgo' const user = Astro.locals.user if (!user?.admin) { return Astro.redirect(makeLoginUrl(Astro.url, { message: 'Admin access required' })) } const serviceSuggestionUpdateResult = Astro.getActionResult(actions.admin.serviceSuggestions.update) Astro.locals.banners.addIfSuccess(serviceSuggestionUpdateResult, 'Service suggestion updated successfully') const serviceSuggestionUpdateInputErrors = isInputError(serviceSuggestionUpdateResult?.error) ? serviceSuggestionUpdateResult.error.fields : {} const { id: serviceSuggestionIdRaw } = Astro.params const serviceSuggestionId = parseIntWithFallback(serviceSuggestionIdRaw) if (!serviceSuggestionId) { return Astro.rewrite('/404') } const serviceSuggestion = await Astro.locals.banners.try('Error fetching service suggestion', async () => prisma.serviceSuggestion.findUnique({ where: { id: serviceSuggestionId, }, select: { id: true, status: true, notes: true, createdAt: true, type: true, user: { select: { id: true, name: true, displayName: true, picture: true, }, }, service: { select: { id: true, name: true, slug: true, description: true, overallScore: true, kycLevel: true, imageUrl: true, verificationStatus: true, acceptedCurrencies: true, serviceVisibility: true, categories: { select: { name: true, icon: true, }, }, }, }, messages: { select: { id: true, content: true, createdAt: true, user: { select: { id: true, displayName: true, name: true, picture: true, }, }, }, orderBy: { createdAt: 'desc', }, }, }, }) ) if (!serviceSuggestion) { return Astro.rewrite('/404') } const statusInfo = getServiceSuggestionStatusInfo(serviceSuggestion.status) const typeInfo = getServiceSuggestionTypeInfo(serviceSuggestion.type) ---

Service suggestion

Status:
Type:
Author:
Submitted: { formatDateShort(serviceSuggestion.createdAt, { prefix: false, hourPrecision: true, caseType: 'sentence', }) }
Service: Open
Notes for moderators: { serviceSuggestion.notes ? (
) : (
Empty
) }
({ label: status.label, value: status.value, }))} selectedValue={serviceSuggestion.status} class="flex-1" error={serviceSuggestionUpdateInputErrors.status} />