sozsoft-platform/ui/src/services/wizard.service.ts

103 lines
3.1 KiB
TypeScript
Raw Normal View History

import {
ListFormWizardDto,
WizardFileInfoDto,
WizardImportAnalysisDto,
WizardImportApplyResultDto,
WizardSeedFileDto,
} from '@/proxy/admin/wizard/models'
2026-05-02 17:08:06 +00:00
import apiService from './api.service'
export const postListFormWizard = (input: ListFormWizardDto) =>
apiService.fetchData({
method: 'POST',
url: `/api/app/list-form-wizard`,
data: input,
})
export const getWizardFiles = () =>
apiService.fetchData<WizardFileInfoDto[]>({
method: 'GET',
url: `/api/app/list-form-wizard/files`,
})
2026-05-03 09:52:22 +00:00
export const getWizardFile = (fileName: string) =>
apiService.fetchData<WizardSeedFileDto>({
method: 'GET',
url: `/api/app/list-form-wizard/file`,
params: { fileName },
})
2026-05-02 17:08:06 +00:00
export const deleteWizardFile = (fileName: string) =>
apiService.fetchData({
method: 'DELETE',
url: `/api/app/list-form-wizard/file`,
params: { fileName },
2026-08-18 10:33:50 +00:00
})
/**
* Wizard dosyasini ve bagli seed dosyalarini (custom/crud/sql) tek bir zip olarak indirir.
* Zip icindeki klasor duzeni seed kapsam klasoru ile aynidir; baska bir ortamda dogrudan acilabilir.
*/
export const exportWizardFile = (fileName: string) =>
apiService.fetchData<Blob>({
method: 'GET',
url: `/api/app/list-form-wizard/export`,
params: { fileName },
responseType: 'blob',
})
/** Blob'u tarayicida indirme olarak tetikler. */
export const downloadBlob = (blob: Blob, fileName: string) => {
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.download = fileName
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
window.URL.revokeObjectURL(url)
}
/**
* Zip'i sunucudaki gecici bir oturuma acar ve her dosyayi hedefteki karsiligiyla karsilastirir.
* Hicbir hedef dosyaya dokunmaz; donen `importId` uygulama adimlarinda kullanilir.
*/
export const analyzeWizardImport = (file: File) => {
const formData = new FormData()
formData.append('file', file)
formData.append('FileName', file.name)
formData.append('ContentType', file.type || 'application/zip')
formData.append('ContentLength', file.size.toString())
return apiService.fetchData<WizardImportAnalysisDto>({
method: 'POST',
url: `/api/app/list-form-wizard/analyze-import`,
data: formData as any,
})
}
/** Tek bir dosyayi hedefe yazar. `content` verilmezse zip'ten gelen icerik oldugu gibi yazilir. */
export const applyWizardImport = (importId: string, path: string, content?: string) =>
apiService.fetchData<WizardImportApplyResultDto>({
method: 'POST',
url: `/api/app/list-form-wizard/apply-import`,
data: { importId, path, content: content ?? null },
})
/** Import oturumunu kapatir; staging ve yedek klasorleri silinir. */
export const completeWizardImport = (importId: string) =>
apiService.fetchData({
method: 'POST',
url: `/api/app/list-form-wizard/complete-import`,
params: { importId },
})
/** O ana kadar yazilmis dosyalari geri alir ve oturumu kapatir. */
export const rollbackWizardImport = (importId: string) =>
apiService.fetchData({
method: 'POST',
url: `/api/app/list-form-wizard/rollback-import`,
params: { importId },
})