overwrite hadiah
This commit is contained in:
@@ -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([
|
||||
|
||||
Reference in New Issue
Block a user