From 1dad72d2f303cb26b5e412795afd97d5f687fa3b Mon Sep 17 00:00:00 2001
From: arieljovananda88 <jovanandaa@gmail.com>
Date: Mon, 27 May 2024 10:15:33 +0700
Subject: [PATCH] fix: able to remove all dosuji

---
 .../internal/repository/pendaftaran_sidsem.go       |  7 +++++++
 .../internal/usecase/pendaftaran_sidsem.go          | 13 ++++++++++---
 .../internal/usecase/repository.go                  |  1 +
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go b/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go
index e6497a2..57ff22b 100644
--- a/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go
+++ b/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go
@@ -666,6 +666,13 @@ func (repo *PendaftaranSidSemRepo) DeleteDosujiSidsem(dosUjis []entity.Dosuji, i
 	return nil
 }
 
+func (repo *PendaftaranSidSemRepo) DeleteAllDosujiSidsem(idSidsem string) error {
+	if err := repo.DBWrite.Table("penguji_sidsem").Where("sidsem_id = ? ", idSidsem).Delete(&entity.PengujiSidsem{}).Error; err != nil {
+		return err
+	}
+	return nil
+}
+
 func (repo *PendaftaranSidSemRepo) UpdateDosujiSidsem(dosUjis []entity.PengujiSidsem, idSidsem string) error {
 	if err := repo.DBWrite.Table("penguji_sidsem").Create(&dosUjis).Error; err != nil {
 		return err
diff --git a/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go b/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go
index f540e58..cfe2a6e 100644
--- a/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go
+++ b/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go
@@ -302,9 +302,16 @@ func (uc *PendaftaranSidSemUc) GetDosuji(idPendaftaranSidSem string) ([]entity.D
 }
 
 func (uc *PendaftaranSidSemUc) UpdateDosujiSidsem(dosUjis []entity.Dosuji, idPendaftaranSidSem string) error {
-	err := uc.pendaftaransidsemrepo.DeleteDosujiSidsem(dosUjis, idPendaftaranSidSem)
-	if err != nil {
-		return err
+	if len(dosUjis) == 0 {
+		err := uc.pendaftaransidsemrepo.DeleteAllDosujiSidsem(idPendaftaranSidSem)
+		if err != nil {
+			return err
+		}
+	} else {
+		err := uc.pendaftaransidsemrepo.DeleteDosujiSidsem(dosUjis, idPendaftaranSidSem)
+		if err != nil {
+			return err
+		}
 	}
 
 	assignedDosUjis, err := uc.pendaftaransidsemrepo.GetDosujiByIdSidSem(idPendaftaranSidSem)
diff --git a/src/module/pendaftaran_sidsem/internal/usecase/repository.go b/src/module/pendaftaran_sidsem/internal/usecase/repository.go
index c4caf27..3020235 100644
--- a/src/module/pendaftaran_sidsem/internal/usecase/repository.go
+++ b/src/module/pendaftaran_sidsem/internal/usecase/repository.go
@@ -34,6 +34,7 @@ type PendaftaranSidSemRepository interface {
 	UpdateJadwalSidsem(waktuMulai string, waktuAkhir string, idSidsem string) error
 	GetDosuji(idSidsem string) ([]entity.Dosuji, error)
 	DeleteDosujiSidsem(dosUjis []entity.Dosuji, idSidsem string) error
+	DeleteAllDosujiSidsem(idSidsem string) error
 	GetDosujiByIdSidSem(idSidsem string) ([]entity.PengujiSidsem, error)
 	UpdateDosujiSidsem(dosUjis []entity.PengujiSidsem, idSidsem string) error
 }
-- 
GitLab