66 lines
1.4 KiB
TypeScript
66 lines
1.4 KiB
TypeScript
'use server';
|
|
|
|
import { StoreProductVariant } from '@medusajs/types';
|
|
|
|
import {
|
|
bookAppointment,
|
|
createInitialReservation,
|
|
} from '~/lib/services/connected-online.service';
|
|
import { handleAddToCart } from '~/lib/services/medusaCart.service';
|
|
|
|
import { updateLineItem } from '../../../../../packages/features/medusa-storefront/src/lib/data';
|
|
|
|
export async function bookTimeAction(
|
|
serviceId: number,
|
|
clinicId: number,
|
|
appointmentUserId: number,
|
|
syncUserId: number,
|
|
startTime: Date,
|
|
comments?: string,
|
|
) {
|
|
return bookAppointment(
|
|
serviceId,
|
|
clinicId,
|
|
appointmentUserId,
|
|
syncUserId,
|
|
startTime,
|
|
comments,
|
|
);
|
|
}
|
|
|
|
export async function createInitialReservationAction(
|
|
selectedVariant: Pick<StoreProductVariant, 'id'>,
|
|
countryCode: string,
|
|
serviceId: number,
|
|
clinicId: number,
|
|
appointmentUserId: number,
|
|
syncUserId: number,
|
|
startTime: Date,
|
|
locationId: number | null,
|
|
comments?: string,
|
|
) {
|
|
const { addedItem } = await handleAddToCart({
|
|
selectedVariant,
|
|
countryCode,
|
|
});
|
|
|
|
if (addedItem) {
|
|
const reservation = await createInitialReservation(
|
|
serviceId,
|
|
clinicId,
|
|
appointmentUserId,
|
|
syncUserId,
|
|
startTime,
|
|
addedItem.id,
|
|
locationId,
|
|
comments,
|
|
);
|
|
|
|
await updateLineItem({
|
|
lineId: addedItem.id,
|
|
quantity: addedItem.quantity,
|
|
metadata: { connectedOnlineReservationId: reservation.id },
|
|
});
|
|
}
|
|
}
|