diff --git a/src/module/bimbingan_log/internal/repository/bimbingan_log.go b/src/module/bimbingan_log/internal/repository/bimbingan_log.go index 89b303ae2df7cc0b8d83f91ea1ba174f3684a515..ed8808add2f49a475ff9850a438eb677938b4e30 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).Find(&bimbinganLogs) + result := repo.DBRead.Where("id_mahasiswa = ?", idMahasiswa).Order("date DESC").Find(&bimbinganLogs) if result.Error != nil { return nil, err } diff --git a/src/module/bimbingan_log/internal/usecase/bimbingan_log.go b/src/module/bimbingan_log/internal/usecase/bimbingan_log.go index 4247edba465a1cb9314b6160f725c33c383f50df..b1fd76c72bba1320c951173fb51480b89ae154ec 100644 --- a/src/module/bimbingan_log/internal/usecase/bimbingan_log.go +++ b/src/module/bimbingan_log/internal/usecase/bimbingan_log.go @@ -13,7 +13,7 @@ type BimbinganLogUsecase interface { GetBimbinganLog(param utils.LimitOffset, idMahasiswa string) ([]entity.BimbinganLogBerkas, error) UpdateBimbinganLogStatus(id string, status bool) error GetInfoTopikMahasiswa(idMahasiswa string) (entity.InfoTopikMahasiswa, error) - GetBimbinganLogStatusByStudentId(param utils.LimitOffset, idMahasiswa string)(entity.BimbinganLogStatus,error) + GetBimbinganLogStatusByStudentId(param utils.LimitOffset, idMahasiswa string) (entity.BimbinganLogStatus, error) } type BimbinganLogUc struct { @@ -58,14 +58,14 @@ func (uc *BimbinganLogUc) GetInfoTopikMahasiswa(idMahasiswa string) (entity.Info return uc.bimbinganLogRepo.GetInfoTopikMahasiswa(idMahasiswa) } -func (uc *BimbinganLogUc) GetBimbinganLogStatusByStudentId(param utils.LimitOffset, nim string)(entity.BimbinganLogStatus, error){ +func (uc *BimbinganLogUc) GetBimbinganLogStatusByStudentId(param utils.LimitOffset, nim string) (entity.BimbinganLogStatus, error) { logs := []entity.BimbinganLogBerkas{} var offset int const limit = 100 - for{ - logBimbinganStatus, err := uc.bimbinganLogRepo.GetBimbinganLogByStudentId(limit,offset,nim) + for { + logBimbinganStatus, err := uc.bimbinganLogRepo.GetBimbinganLogByStudentId(limit, offset, nim) if err != nil { // Handle error @@ -80,41 +80,34 @@ func (uc *BimbinganLogUc) GetBimbinganLogStatusByStudentId(param utils.LimitOffs offset += limit } - bimbinganLogStatus := entity.BimbinganLogStatus{ - Status: true, + Status: true, LogBimbingan: logs, } - var newestLog entity.BimbinganLogBerkas - - for _, log := range logs { - newestLogDate, err := time.Parse(time.RFC3339,newestLog.Date) - date, err := time.Parse(time.RFC3339, log.Date) - if err != nil { - return bimbinganLogStatus, err - } - if log.Status && (newestLog.Date == "" || date.Before(newestLogDate)) { - newestLog = log - } + if len(logs) == 0 { + bimbinganLogStatus.Status = false + return bimbinganLogStatus, nil } - now := time.Now() - newestLogDate, err := time.Parse(time.RFC3339,newestLog.Date) + newestLog := logs[0] + + now := time.Now() + newestLogDate, err := time.Parse(time.RFC3339, newestLog.Date) discrepancy := int(math.Abs(float64(now.Month() - newestLogDate.Month()))) - if(discrepancy <= 1){ + if discrepancy <= 1 { bimbinganLogStatus.Status = true - }else if(discrepancy > 1 && discrepancy <3){ + } else if discrepancy > 1 && discrepancy < 3 { bimbinganLogStatus.Status = false - }else if(discrepancy >= 3){ + } else if discrepancy >= 3 { bimbinganLogStatus.Status = false } if err != nil { return bimbinganLogStatus, err - } - + } + return bimbinganLogStatus, nil }