This commit is contained in:
michael committed 2026-09-15 11:49:47 +00:00
1 parent 235c19e51b
commit 227644cfeb
8 files changed
+1041 -309

No files matched your search

+11 -10
View File
@@ -375,7 +375,7 @@ function wait(milliseconds: number) {
return new Promise((resolve) => window.setTimeout(resolve, milliseconds));
}
async function waitForZammadSyncJob(jobId: string) {
export async function waitForZammadSyncJob(jobId: string) {
const startedAt = Date.now();
const timeoutMs = 10 * 60 * 1000;
@@ -398,12 +398,13 @@ async function waitForZammadSyncJob(jobId: string) {
}
}
async function runZammadSyncJob(url: string, body: Record<string, unknown>) {
async function runZammadSyncJob(url: string, body: Record<string, unknown>, onJobStarted?: (job: ZammadSyncJob) => void) {
const { job } = await request<{ job: ZammadSyncJob }>(url, {
method: "POST",
timeoutMs: 20_000,
body: JSON.stringify(body)
});
onJobStarted?.(job);
const result = await waitForZammadSyncJob(job.id);
return { jobId: job.id, result };
@@ -428,30 +429,30 @@ export async function importOwnZammadConsultingTickets(options: { dryRun?: boole
return result;
}
export function previewExistingZammadTickets(fields: ZammadSyncExistingFields) {
export function previewExistingZammadTickets(fields: ZammadSyncExistingFields, onJobStarted?: (job: ZammadSyncJob) => void) {
return runZammadSyncJob("/api/zammad-sync/jobs/existing", {
fields,
dryRun: true
});
}, onJobStarted);
}
export function applyExistingZammadTicketsFromPreview(previewJobId: string, fields: ZammadSyncExistingFields, ticketNumbers: string[]) {
export function applyExistingZammadTicketsFromPreview(previewJobId: string, fields: ZammadSyncExistingFields, ticketNumbers: string[], onJobStarted?: (job: ZammadSyncJob) => void) {
return runZammadSyncJob(`/api/zammad-sync/jobs/${encodeURIComponent(previewJobId)}/apply-existing`, {
fields,
ticketNumbers
});
}, onJobStarted);
}
export function previewOwnZammadConsultingTickets() {
export function previewOwnZammadConsultingTickets(onJobStarted?: (job: ZammadSyncJob) => void) {
return runZammadSyncJob("/api/zammad-sync/jobs/consulting-import", {
dryRun: true
});
}, onJobStarted);
}
export function applyOwnZammadConsultingTicketsFromPreview(previewJobId: string, ticketNumbers: string[]) {
export function applyOwnZammadConsultingTicketsFromPreview(previewJobId: string, ticketNumbers: string[], onJobStarted?: (job: ZammadSyncJob) => void) {
return runZammadSyncJob(`/api/zammad-sync/jobs/${encodeURIComponent(previewJobId)}/apply-consulting-import`, {
ticketNumbers
});
}, onJobStarted);
}
export function getRecurringBillings() {