128 lines
4.1 KiB
TypeScript
128 lines
4.1 KiB
TypeScript
import {
|
|
ListFormWizardDto,
|
|
WizardExportAnalysisDto,
|
|
WizardDeleteResultDto,
|
|
WizardFileInfoDto,
|
|
WizardImportAnalysisDto,
|
|
WizardImportApplyResultDto,
|
|
WizardImportCompleteResultDto,
|
|
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<WizardPermissionGroupDto[]>({
|
|
method: 'GET',
|
|
url: `/api/app/list-form-wizard/permission-groups`,
|
|
})
|
|
|
|
export const getWizardFiles = () =>
|
|
apiService.fetchData<WizardFileInfoDto[]>({
|
|
method: 'GET',
|
|
url: `/api/app/list-form-wizard/files`,
|
|
})
|
|
|
|
export const getWizardFile = (fileName: string) =>
|
|
apiService.fetchData<WizardSeedFileDto>({
|
|
method: 'GET',
|
|
url: `/api/app/list-form-wizard/file`,
|
|
params: { fileName },
|
|
})
|
|
|
|
export const deleteWizardFile = (fileName: string) =>
|
|
apiService.fetchData<WizardDeleteResultDto>({
|
|
method: 'DELETE',
|
|
url: `/api/app/list-form-wizard/file`,
|
|
params: { fileName },
|
|
})
|
|
|
|
/**
|
|
* Indirmeden once arsivin tam icerigini ve cozulemeyen bagimliliklarini getirir; export ile
|
|
* ayni toplamayi kullanir, dolayisiyla onizlemedeki liste indirilen zip ile birebir aynidir.
|
|
*/
|
|
export const getWizardExportAnalysis = (fileName: string) =>
|
|
apiService.fetchData<WizardExportAnalysisDto>({
|
|
method: 'GET',
|
|
url: `/api/app/list-form-wizard/export-analysis`,
|
|
params: { fileName },
|
|
})
|
|
|
|
/**
|
|
* Wizard dosyasini ve bagimlilik kapanisindaki tum seed dosyalarini (data/crud/sql, alt formlar)
|
|
* 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. Kapanistan once yazilan
|
|
* `data/*.json` dosyalari veritabanina uygulanir ve sonucu doner.
|
|
*/
|
|
export const completeWizardImport = (importId: string) =>
|
|
apiService.fetchData<WizardImportCompleteResultDto>({
|
|
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 },
|
|
})
|