import { ListFormWizardDto, WizardFileInfoDto, WizardImportAnalysisDto, WizardImportApplyResultDto, WizardPermissionGroupDto, WizardSeedFileDto, } from '@/proxy/admin/wizard/models' import apiService from './api.service' export const postListFormWizard = (input: ListFormWizardDto) => apiService.fetchData({ method: 'POST', url: `/api/app/list-form-wizard`, data: input, }) /** Izin gruplarini iki dilli gorunen adlariyla getirir. */ export const getWizardPermissionGroups = () => apiService.fetchData({ method: 'GET', url: `/api/app/list-form-wizard/permission-groups`, }) export const getWizardFiles = () => apiService.fetchData({ method: 'GET', url: `/api/app/list-form-wizard/files`, }) export const getWizardFile = (fileName: string) => apiService.fetchData({ method: 'GET', url: `/api/app/list-form-wizard/file`, params: { fileName }, }) export const deleteWizardFile = (fileName: string) => apiService.fetchData({ method: 'DELETE', url: `/api/app/list-form-wizard/file`, params: { fileName }, }) /** * 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({ 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({ 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({ 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 }, })