overwrite hadiah

This commit is contained in:
Saufi
2026-06-26 18:43:09 +08:00
parent 4075717506
commit 1c8d2ef8ff
3 changed files with 52 additions and 1 deletions

View File

@@ -20,6 +20,10 @@ class PrizeImportService
$failed = 0;
$errors = [];
// Jejak susunan_cabutan yang telah dikosongkan (overwrite) dalam import ini,
// supaya item yang baru dimasukkan tidak dipadam semula oleh baris seterusnya.
$cleared = [];
foreach ($rows as $i => $row) {
$line = $i + 2;
@@ -35,6 +39,21 @@ class PrizeImportService
$kodHadiah = trim($row['kod_hadiah'] ?? '');
$batch = $kodHadiah !== '' ? $kodHadiah : 'B' . str_pad((string) ($i + 1), 4, '0', STR_PAD_LEFT);
// Overwrite data lama jika susunan_cabutan adalah nombor yang sama.
if ($drawOrder > 0 && ! isset($cleared[$drawOrder])) {
$existing = Prize::where('draw_order', $drawOrder)->get();
if ($existing->contains(fn (Prize $p) => $p->status === Prize::STATUS_DISAHKAN)) {
$failed++;
$errors[] = "Baris {$line}: susunan_cabutan {$drawOrder} sudah ada pemenang disahkan, tidak boleh ditulis ganti.";
continue;
}
$duplicate += $existing->count();
Prize::where('draw_order', $drawOrder)->delete();
$cleared[$drawOrder] = true;
}
try {
foreach ($this->expand($nama, $kuantiti) as $index => $itemName) {
Prize::create([