diff --git a/src/module/cekilisler/components/TabPiyangoKatilimciListesi.vue b/src/module/cekilisler/components/TabPiyangoKatilimciListesi.vue
index c2ec219..5e9760d 100644
--- a/src/module/cekilisler/components/TabPiyangoKatilimciListesi.vue
+++ b/src/module/cekilisler/components/TabPiyangoKatilimciListesi.vue
@@ -86,6 +86,10 @@
{{ job.fileName }}
{{ statusText(job.status) }}
{{ job.progress }}%
+
+ +{{ job.insertedCount ?? 0 }}
+ / {{ job.duplicateCount }} dpl
+
{{ formatDate(job.createdAt) }}
@@ -164,13 +168,16 @@
import { useDialogStore } from '@/components/global/dialogStore'
const dialogStore = useDialogStore()
+ const toastStore = useToastStore()
import { usePiyangoOnayStore } from '../stores/piyangoOnayStore'
const piyangoOnayStore = usePiyangoOnayStore()
import { usePiyangoOnayService } from '../service/piyangoOnayService'
const piyangoOnayService = usePiyangoOnayService()
- import { connectToHub, onProgress, onInsertProgress, onCompleted, onError } from '../service/signalrService'
+ import { onUnmounted } from 'vue'
+ import { connectToHub, onProgress, onInsertProgress, onCompleted, onError, removeUploadHandlers } from '../service/signalrService'
+ import { useToastStore } from '@/components/global/toastStore'
const uploadProgressValue = ref(0)
const uploadProgressPanel = ref(false)
@@ -299,6 +306,7 @@
uploadJobs.value = cekilisId !== null ? await piyangoKatilimciService.GetUploadJobs(cekilisId) : []
uploadJobsLoading.value = false
+ removeUploadHandlers()
// İşleniyor durumundaki job varsa SignalR ile abone ol (gerçek zamanlı progress almak için)
const processingJob = uploadJobs.value.find(
(j: Record) => j.status?.toLowerCase() === 'processing'
@@ -361,6 +369,7 @@
return
}
+ removeUploadHandlers()
uploadProgressValue.value = 0
uploadProgressPanel.value = true
@@ -389,10 +398,22 @@
`Katilimci/ExcelleYukle/${piyangoStore.selectedLottery}?connectionId=${connId}`,
{
data: formData,
- headers: { 'Content-Type': 'multipart/form-data' }
+ headers: { 'Content-Type': 'multipart/form-data' },
+ skipErrorForStatuses: [409]
}
)
+ if (response?._error && response.status === 409) {
+ uploadProgressPanel.value = false
+ const msg = response.data?.message || 'Bu çekiliş için zaten devam eden bir Excel yükleme işlemi var.'
+ toastStore.AddToast(msg, 'alert', 6000)
+ if (response.data?.existingJobId) {
+ refreshUploadJobsAndPollProcessing()
+ OpenUploadDetail(response.data.existingJobId)
+ }
+ return
+ }
+
if (response !== 'errorfalse' && response?.jobId) {
startPolling(response.jobId)
} else {
@@ -511,6 +532,11 @@
startPollingForExistingJob(processingJob.guid)
}
}
+
+ onUnmounted(() => {
+ stopPolling()
+ removeUploadHandlers()
+ })