Release 2025-05-25-ELtG
This commit is contained in:
@@ -27,46 +27,54 @@ import { eventTypes, getEventTypeInfo } from '../../../../constants/eventTypes'
|
||||
import { kycLevels } from '../../../../constants/kycLevels'
|
||||
import { serviceVisibilities } from '../../../../constants/serviceVisibility'
|
||||
import { verificationStatuses } from '../../../../constants/verificationStatus'
|
||||
import { getVerificationStepStatusInfo } from '../../../../constants/verificationStepStatus'
|
||||
import {
|
||||
getVerificationStepStatusInfo,
|
||||
verificationStepStatuses,
|
||||
} from '../../../../constants/verificationStepStatus'
|
||||
import BaseLayout from '../../../../layouts/BaseLayout.astro'
|
||||
import { pluralize } from '../../../../lib/pluralize'
|
||||
import { prisma } from '../../../../lib/prisma'
|
||||
|
||||
const { slug } = Astro.params
|
||||
|
||||
const serviceResult = Astro.getActionResult(actions.admin.service.update)
|
||||
const eventCreateResult = Astro.getActionResult(actions.admin.event.create)
|
||||
const eventToggleResult = Astro.getActionResult(actions.admin.event.toggle)
|
||||
const eventDeleteResult = Astro.getActionResult(actions.admin.event.delete)
|
||||
const eventUpdateResult = Astro.getActionResult(actions.admin.event.update)
|
||||
const verificationStepCreateResult = Astro.getActionResult(actions.admin.verificationStep.create)
|
||||
const verificationStepUpdateResult = Astro.getActionResult(actions.admin.verificationStep.update)
|
||||
const verificationStepDeleteResult = Astro.getActionResult(actions.admin.verificationStep.delete)
|
||||
if (!slug) return Astro.rewrite('/404')
|
||||
|
||||
const serviceResult = Astro.getActionResult(actions.admin.service.update)
|
||||
Astro.locals.banners.addIfSuccess(serviceResult, 'Service updated successfully')
|
||||
Astro.locals.banners.addIfSuccess(eventCreateResult, 'Event created successfully')
|
||||
Astro.locals.banners.addIfSuccess(eventToggleResult, 'Event visibility updated successfully')
|
||||
Astro.locals.banners.addIfSuccess(eventDeleteResult, 'Event deleted successfully')
|
||||
Astro.locals.banners.addIfSuccess(eventUpdateResult, 'Event updated successfully')
|
||||
Astro.locals.banners.addIfSuccess(verificationStepCreateResult, 'Verification step added successfully')
|
||||
Astro.locals.banners.addIfSuccess(verificationStepUpdateResult, 'Verification step updated successfully')
|
||||
Astro.locals.banners.addIfSuccess(verificationStepDeleteResult, 'Verification step deleted successfully')
|
||||
const serviceInputErrors = isInputError(serviceResult?.error) ? serviceResult.error.fields : {}
|
||||
|
||||
if (serviceResult && !serviceResult.error && slug !== serviceResult.data.service.slug) {
|
||||
return Astro.redirect(`/admin/services/${serviceResult.data.service.slug}/edit`)
|
||||
}
|
||||
|
||||
const serviceInputErrors = isInputError(serviceResult?.error) ? serviceResult.error.fields : {}
|
||||
const eventCreateResult = Astro.getActionResult(actions.admin.event.create)
|
||||
Astro.locals.banners.addIfSuccess(eventCreateResult, 'Event created successfully')
|
||||
const eventInputErrors = isInputError(eventCreateResult?.error) ? eventCreateResult.error.fields : {}
|
||||
|
||||
const eventUpdateResult = Astro.getActionResult(actions.admin.event.update)
|
||||
Astro.locals.banners.addIfSuccess(eventUpdateResult, 'Event updated successfully')
|
||||
const eventUpdateInputErrors = isInputError(eventUpdateResult?.error) ? eventUpdateResult.error.fields : {}
|
||||
|
||||
const eventToggleResult = Astro.getActionResult(actions.admin.event.toggle)
|
||||
Astro.locals.banners.addIfSuccess(eventToggleResult, 'Event visibility updated successfully')
|
||||
|
||||
const eventDeleteResult = Astro.getActionResult(actions.admin.event.delete)
|
||||
Astro.locals.banners.addIfSuccess(eventDeleteResult, 'Event deleted successfully')
|
||||
|
||||
const verificationStepCreateResult = Astro.getActionResult(actions.admin.verificationStep.create)
|
||||
Astro.locals.banners.addIfSuccess(verificationStepCreateResult, 'Verification step added successfully')
|
||||
const verificationStepInputErrors = isInputError(verificationStepCreateResult?.error)
|
||||
? verificationStepCreateResult.error.fields
|
||||
: {}
|
||||
|
||||
const verificationStepUpdateResult = Astro.getActionResult(actions.admin.verificationStep.update)
|
||||
Astro.locals.banners.addIfSuccess(verificationStepUpdateResult, 'Verification step updated successfully')
|
||||
const verificationStepUpdateInputErrors = isInputError(verificationStepUpdateResult?.error)
|
||||
? verificationStepUpdateResult.error.fields
|
||||
: {}
|
||||
|
||||
if (!slug) return Astro.rewrite('/404')
|
||||
const verificationStepDeleteResult = Astro.getActionResult(actions.admin.verificationStep.delete)
|
||||
Astro.locals.banners.addIfSuccess(verificationStepDeleteResult, 'Verification step deleted successfully')
|
||||
|
||||
const [service, categories, attributes] = await Astro.locals.banners.tryMany([
|
||||
[
|
||||
@@ -715,7 +723,7 @@ if (!service) return Astro.rewrite('/404')
|
||||
<InputSelect
|
||||
label="Status"
|
||||
name="status"
|
||||
options={verificationStatuses.map((status) => ({
|
||||
options={verificationStepStatuses.map((status) => ({
|
||||
label: status.label,
|
||||
value: status.value,
|
||||
}))}
|
||||
@@ -763,7 +771,7 @@ if (!service) return Astro.rewrite('/404')
|
||||
<InputSelect
|
||||
label="Status"
|
||||
name="status"
|
||||
options={verificationStatuses.map((status) => ({
|
||||
options={verificationStepStatuses.map((status) => ({
|
||||
label: status.label,
|
||||
value: status.value,
|
||||
}))}
|
||||
|
||||
@@ -3,8 +3,10 @@ import { ServiceVisibility, VerificationStatus, type Prisma } from '@prisma/clie
|
||||
import { z } from 'astro/zod'
|
||||
import { Icon } from 'astro-icon/components'
|
||||
|
||||
import Button from '../../../components/Button.astro'
|
||||
import MyPicture from '../../../components/MyPicture.astro'
|
||||
import SortArrowIcon from '../../../components/SortArrowIcon.astro'
|
||||
import Tooltip from '../../../components/Tooltip.astro'
|
||||
import { getKycLevelInfo } from '../../../constants/kycLevels'
|
||||
import { getVerificationStatusInfo } from '../../../constants/verificationStatus'
|
||||
import BaseLayout from '../../../layouts/BaseLayout.astro'
|
||||
@@ -171,13 +173,15 @@ const truncate = (text: string, length: number) => {
|
||||
<h1 class="font-title text-2xl font-bold text-white">Service Management</h1>
|
||||
<div class="mt-2 flex items-center gap-4 sm:mt-0">
|
||||
<span class="text-sm text-zinc-400">{totalServicesCount} services</span>
|
||||
<a
|
||||
<Button
|
||||
as="a"
|
||||
href="/admin/services/new"
|
||||
class="inline-flex items-center gap-2 rounded-md bg-green-600 px-4 py-2 text-sm font-medium text-white hover:bg-green-700 focus:ring-2 focus:ring-green-500 focus:ring-offset-2 focus:outline-none"
|
||||
>
|
||||
<Icon name="ri:add-line" class="size-4" />
|
||||
<span>New Service</span>
|
||||
</a>
|
||||
color="success"
|
||||
variant="solid"
|
||||
size="md"
|
||||
icon="ri:add-line"
|
||||
label="New Service"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -250,12 +254,17 @@ const truncate = (text: string, length: number) => {
|
||||
))
|
||||
}
|
||||
</select>
|
||||
<button
|
||||
<Button
|
||||
as="button"
|
||||
type="submit"
|
||||
class="ml-2 inline-flex items-center rounded-md bg-blue-600 px-4 py-2 text-sm font-medium text-white hover:bg-blue-700 focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 focus:ring-offset-zinc-900 focus:outline-none"
|
||||
>
|
||||
<Icon name="ri:search-2-line" class="h-4 w-4" />
|
||||
</button>
|
||||
color="info"
|
||||
variant="solid"
|
||||
size="md"
|
||||
iconOnly
|
||||
icon="ri:search-2-line"
|
||||
label="Search"
|
||||
class="ml-2"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -437,20 +446,30 @@ const truncate = (text: string, length: number) => {
|
||||
<td class="px-4 py-3 text-center text-xs text-zinc-400">{service.formattedDate}</td>
|
||||
<td class="px-4 py-3 text-right">
|
||||
<div class="flex justify-end space-x-2">
|
||||
<a
|
||||
href={`/service/${service.slug}`}
|
||||
target="_blank"
|
||||
class="inline-flex items-center rounded-md border border-zinc-600 bg-zinc-800 px-2 py-1 text-xs text-zinc-300 transition-colors hover:bg-zinc-700"
|
||||
title="View on site"
|
||||
>
|
||||
<Icon name="ri:external-link-line" class="size-3.5" />
|
||||
</a>
|
||||
<a
|
||||
href={`/admin/services/${service.slug}/edit`}
|
||||
class="inline-flex items-center rounded-md border border-blue-500/50 bg-blue-500/20 px-2 py-1 text-xs text-blue-400 transition-colors hover:bg-blue-500/30"
|
||||
>
|
||||
Edit
|
||||
</a>
|
||||
<Tooltip text="View">
|
||||
<Button
|
||||
as="a"
|
||||
href={`/service/${service.slug}`}
|
||||
color="success"
|
||||
variant="faded"
|
||||
size="sm"
|
||||
iconOnly
|
||||
icon="ri:global-line"
|
||||
label="View"
|
||||
/>
|
||||
</Tooltip>
|
||||
<Tooltip text="Edit">
|
||||
<Button
|
||||
as="a"
|
||||
href={`/admin/services/${service.slug}/edit`}
|
||||
color="info"
|
||||
variant="faded"
|
||||
size="sm"
|
||||
iconOnly
|
||||
icon="ri:edit-line"
|
||||
label="Edit"
|
||||
/>
|
||||
</Tooltip>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
Reference in New Issue
Block a user