diff --git a/src/module/bimbingan_log/internal/repository/bimbingan_log.go b/src/module/bimbingan_log/internal/repository/bimbingan_log.go index 9942e1f46f691731ee98ab238f66c14b90fd16a0..89b303ae2df7cc0b8d83f91ea1ba174f3684a515 100644 --- a/src/module/bimbingan_log/internal/repository/bimbingan_log.go +++ b/src/module/bimbingan_log/internal/repository/bimbingan_log.go @@ -51,7 +51,7 @@ func (repo *BimbinganLogRepo) GetBimbinganLogByStudentId(limit int, offset int, var bimbinganLogs []entity.BimbinganLog var bimbinganLogsBerkas []entity.BimbinganLogBerkas - result := repo.DBRead.Where("id_mahasiswa = ?", idMahasiswa).Limit(limit).Offset(offset).Find(&bimbinganLogs) + result := repo.DBRead.Where("id_mahasiswa = ?", idMahasiswa).Find(&bimbinganLogs) if result.Error != nil { return nil, err } diff --git a/src/module/pendaftaran_sidsem/entity/pendaftaran_sidsem.go b/src/module/pendaftaran_sidsem/entity/pendaftaran_sidsem.go index 9479228272e8874af25c0bcdc6f371554f8321ef..7908c733ee2dcb8c6079a9a1ee465d018c20dfee 100644 --- a/src/module/pendaftaran_sidsem/entity/pendaftaran_sidsem.go +++ b/src/module/pendaftaran_sidsem/entity/pendaftaran_sidsem.go @@ -140,8 +140,8 @@ type EditDitolakRequest struct { Ditolak bool `json:"ditolak"` } -type DetailReq struct { - IdMahasiswa string `json:"id_mahasiswa"` +type UpdateRuanganReq struct { + NamaRuangan string `json:"nama_ruangan"` IdSidSem string `json:"id_sidsem"` } @@ -219,3 +219,8 @@ type JadwalStatus struct { WaktuMulai string `json:"waktu_mulai"` Ditolak string `json:"ditolak"` } + +type Ruangan struct { + ID string `json:"id"` + Nama string `json:"nama"` +} diff --git a/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go b/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go index ca3854fce268913662cd8cd87b5e31ad065cf8e9..df056393c1b2431a38f7f184fa814720b195c43d 100644 --- a/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go +++ b/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go @@ -611,3 +611,31 @@ func (repo *PendaftaranSidSemRepo) GetIdMahasiswaFromIdSidSem(idSidsem string) ( return idMahasiswa, nil } + +func (repo *PendaftaranSidSemRepo) AddRuanganIfNotExist(namaRuangan string) (string, error) { + var ruangan entity.Ruangan + err := repo.DBRead.Table("ruangan").Where("nama = ?", namaRuangan).First(&ruangan).Error + if err != nil { + if err == gorm.ErrRecordNotFound { + ruangan = entity.Ruangan{ + ID: uuid.New().String(), + Nama: namaRuangan, + } + if err := repo.DBWrite.Table("ruangan").Create(&ruangan).Error; err != nil { + return "", err + } + return ruangan.ID, nil + } + return "", err + } + return ruangan.ID, nil +} + +func (repo *PendaftaranSidSemRepo) UpdateRuanganSidSem(idSidsem string, idRuangan string) error { + if err := repo.DBRead.Table("pendaftaran_sidsem"). + Where("id = ?", idSidsem). + Update("ruangan_id", idRuangan).Error; err != nil { + return err + } + return nil +} diff --git a/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go b/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go index c3a24ceeec9e632294a0519d903fba6ee12c6eff..1d26bd0f2ac7dc75b1b25d607792a272dde28bf5 100644 --- a/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go +++ b/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go @@ -25,6 +25,7 @@ type PendaftaranSidSemUsecase interface { IsRegisteredSidsem(idMahasiswa string, tipe string) (bool, error) GetSidSemDetailByMahasiswaId(idMahasiswa string, tipe string) (entity.DetailSidSemByMahasiswa, error) GetSidSemDetailTA(IdSidSem string) (entity.DetailSidSemTA, error) + UpdateRuanganSidSem(namaRuangan string, idPendaftaranSidSem string) error } type PendaftaranSidSemUc struct { @@ -258,3 +259,17 @@ func (uc *PendaftaranSidSemUc) GetSidSemDetailTA(idSidsem string) (entity.Detail return detailSidsemTA, nil } + +func (uc *PendaftaranSidSemUc) UpdateRuanganSidSem(namaRuangan string, idPendaftaranSidSem string) error { + idRuangan, err := uc.pendaftaransidsemrepo.AddRuanganIfNotExist(namaRuangan) + if err != nil { + return err + } + + err = uc.pendaftaransidsemrepo.UpdateRuanganSidSem(idPendaftaranSidSem, idRuangan) + if err != nil { + return err + } + + return nil +} diff --git a/src/module/pendaftaran_sidsem/internal/usecase/repository.go b/src/module/pendaftaran_sidsem/internal/usecase/repository.go index d39f75e84b22e243277aee640ccfad91c1a88811..8c07f09b824794837c86fa643a4d8fd876fad83a 100644 --- a/src/module/pendaftaran_sidsem/internal/usecase/repository.go +++ b/src/module/pendaftaran_sidsem/internal/usecase/repository.go @@ -29,4 +29,6 @@ type PendaftaranSidSemRepository interface { GetSidSemBerkas(idSidsem string) ([]entity.BerkasSidSem, error) GetRuanganName(idSidsem string) (string, error) GetIdMahasiswaFromIdSidSem(idSidsem string) (string, error) + AddRuanganIfNotExist(namaRuangan string) (string, error) + UpdateRuanganSidSem(idSidsem string, idRuangan string) error } diff --git a/src/module/pendaftaran_sidsem/transport/timta_handler.go b/src/module/pendaftaran_sidsem/transport/timta_handler.go index 7fbe0f93c39be600980d9fd26da9d69483cb0f5b..46c0dfd23ad24f5b0b950be958ee3aec5deb2fbf 100644 --- a/src/module/pendaftaran_sidsem/transport/timta_handler.go +++ b/src/module/pendaftaran_sidsem/transport/timta_handler.go @@ -30,6 +30,7 @@ func (t *TIMTAPendaftaranSidSemHandler) MountTIMTA(group *echo.Group) { group.GET("/pendaftaran-sidsem", t.GetPendaftaran) group.GET("/detail-sidsem", t.GetSidSemDetail) group.PATCH("/pendaftaran-ditolak", t.EditDitolak) + group.PATCH("/update-ruangan-sidsem", t.UpdateRuanganSidSem) } @@ -73,5 +74,18 @@ func (t *TIMTAPendaftaranSidSemHandler) GetSidSemDetail(c echo.Context) error { return c.JSON(http.StatusBadRequest, utils.ResponseDetailOutput(false, http.StatusBadRequest, err.Error(), nil)) } - return c.JSON(http.StatusOK, utils.ResponseDetailOutput(true, http.StatusOK, "Pendaftaran successfully edited", jadwal)) + return c.JSON(http.StatusOK, utils.ResponseDetailOutput(true, http.StatusOK, "Sidsem Detail successfully retrieved", jadwal)) +} + +func (t *TIMTAPendaftaranSidSemHandler) UpdateRuanganSidSem(c echo.Context) error { + request := new(entity.UpdateRuanganReq) + if err := c.Bind(&request); err != nil { + return c.JSON(http.StatusBadRequest, utils.ResponseDetailOutput(false, http.StatusBadRequest, err.Error(), nil)) + } + err := t.pendaftaransidsemUsecase.UpdateRuanganSidSem(request.NamaRuangan, request.IdSidSem) + if err != nil { + return c.JSON(http.StatusBadRequest, utils.ResponseDetailOutput(false, http.StatusBadRequest, err.Error(), nil)) + } + + return c.JSON(http.StatusOK, utils.ResponseDetailOutput(true, http.StatusOK, "Ruangan successfully updated", nil)) }