diff --git a/src/module/dashboard_dosbing/internal/repository/dashboard_dosbing.go b/src/module/dashboard_dosbing/internal/repository/dashboard_dosbing.go index b779e8b7f18939fc8c6d682942ad67ec04a43b02..a035311b8959b854cdfe03c0fc8c90eb51afef0e 100644 --- a/src/module/dashboard_dosbing/internal/repository/dashboard_dosbing.go +++ b/src/module/dashboard_dosbing/internal/repository/dashboard_dosbing.go @@ -58,3 +58,36 @@ func (repo *DashboardDosbingRepo) GetMahasiswaByDosenId(idDosen string, offset, return mahasiswaBimbingan, nil } + +func (repo *DashboardDosbingRepo) GetAmountMahasiswaByDosenId(idDosen string) (output []entity.JumlahMahasiswa, err error) { + var jumlahMahasiswa entity.JumlahMahasiswa + + var dosen models.Dosen + var mahasiswa []models.Mahasiswa + + result := repo.DBRead.Where("id_dosen = ?", idDosen).First(&dosen) + if result.Error != nil { + return nil, errors.New("dosen tidak ditemukan") + } + + // Mahasiswa IF + result = repo.DBRead.Where("id_dosen = ? AND NIM LIKE ?", dosen.IdDosen, "135%").Find(&mahasiswa) + if result.Error != nil { + jumlahMahasiswa.MahasiswaIF = 0 + } + jumlahMahasiswa.MahasiswaIF = int(result.RowsAffected) + + // Mahasiswa STI + result = repo.DBRead.Where("id_dosen = ? AND NIM LIKE ?", dosen.IdDosen, "182%").Find(&mahasiswa) + if result.Error != nil { + jumlahMahasiswa.MahasiswaSTI = 0 + } + jumlahMahasiswa.MahasiswaSTI = int(result.RowsAffected) + + return []entity.JumlahMahasiswa{jumlahMahasiswa}, nil + +} + +func (repo *DashboardDosbingRepo) GetAmountStatusBimbinganMahasiswaByDosenId(idDosen string) (output []entity.StatusBimbinganMahasiswa, err error) { + return nil, errors.New("Not implemented") +} diff --git a/src/module/dashboard_dosbing/internal/usecase/dashboard_dosbing.go b/src/module/dashboard_dosbing/internal/usecase/dashboard_dosbing.go index 69b982e6dd8dc3e3ae34efafb3e89d8683388443..40296971c81582b8ffc2edb6368ab20a84b04a57 100644 --- a/src/module/dashboard_dosbing/internal/usecase/dashboard_dosbing.go +++ b/src/module/dashboard_dosbing/internal/usecase/dashboard_dosbing.go @@ -4,6 +4,8 @@ import "gitlab.informatika.org/k-01-11/graduit-be/src/module/dashboard_dosbing/e type DashboardDosbingUseCase interface { GetMahasiswaByDosenId(idDosen string, offset, size int) (output []entity.MahasiswaBimbingan, err error) + GetAmountMahasiswaByDosenId(idDosen string) (output []entity.JumlahMahasiswa, err error) + GetAmountStatusBimbinganMahasiswaByDosenId(idDosen string) (output []entity.StatusBimbinganMahasiswa, err error) } type DashboardDosbingUc struct { @@ -25,3 +27,23 @@ func (uc *DashboardDosbingUc) GetMahasiswaByDosenId(idDosen string, offset, size return listMahasiswa, nil } + +func (uc *DashboardDosbingUc) GetAmountMahasiswaByDosenId(idDosen string) (output []entity.JumlahMahasiswa, err error) { + listMahasiswa, err := uc.dashboardDosbingRepo.GetAmountMahasiswaByDosenId(idDosen) + + if err != nil { + return listMahasiswa, err + } + + return listMahasiswa, nil +} + +func (uc *DashboardDosbingUc) GetAmountStatusBimbinganMahasiswaByDosenId(idDosen string) (output []entity.StatusBimbinganMahasiswa, err error) { + listMahasiswa, err := uc.dashboardDosbingRepo.GetAmountStatusBimbinganMahasiswaByDosenId(idDosen) + + if err != nil { + return listMahasiswa, err + } + + return listMahasiswa, nil +} diff --git a/src/module/dashboard_dosbing/internal/usecase/repository.go b/src/module/dashboard_dosbing/internal/usecase/repository.go index 055ef9d9c31a75ba15f038ae2de99c424c1acddd..0d7f821934403bc375cc92a598c3b0a4a8f1af03 100644 --- a/src/module/dashboard_dosbing/internal/usecase/repository.go +++ b/src/module/dashboard_dosbing/internal/usecase/repository.go @@ -4,4 +4,6 @@ import "gitlab.informatika.org/k-01-11/graduit-be/src/module/dashboard_dosbing/e type DashboardDosbingRepository interface { GetMahasiswaByDosenId(idDosen string, offset, size int) (output []entity.MahasiswaBimbingan, err error) + GetAmountMahasiswaByDosenId(idDosen string) (output []entity.JumlahMahasiswa, err error) + GetAmountStatusBimbinganMahasiswaByDosenId(idDosen string) (output []entity.StatusBimbinganMahasiswa, err error) } diff --git a/src/module/dashboard_dosbing/transport/admin_handler.go b/src/module/dashboard_dosbing/transport/admin_handler.go index c03ba9f6b24edca68ea42c409e3fdbac247e09c1..0786eedfd05918765c07ed3935e088128a458a8d 100644 --- a/src/module/dashboard_dosbing/transport/admin_handler.go +++ b/src/module/dashboard_dosbing/transport/admin_handler.go @@ -26,6 +26,8 @@ func NewAdminDashboardDosbingHandler(cfg config.DashboardDosbingTransportConfig) func (t *AdminDashboardDosbingHandler) MountAdmin(group *echo.Group) { group.GET("/dashboard-dosbing", t.GetMahasiswaByDosenId) + group.GET("/dashboard-dosbing/jurusan", t.GetAmountMahasiswaByDosenId) + group.GET("/dashboard-dosbing/bimbingan", t.GetAmountStatusBimbinganMahasiswaByDosenId) } func (t *AdminDashboardDosbingHandler) GetMahasiswaByDosenId(c echo.Context) error { @@ -57,3 +59,35 @@ func (t *AdminDashboardDosbingHandler) GetMahasiswaByDosenId(c echo.Context) err return c.JSON(http.StatusOK, utils.ResponseDetailOutput(true, http.StatusOK, "List mahasiswa successfully retreived", listMahasiswa)) } + +func (t *AdminDashboardDosbingHandler) GetAmountMahasiswaByDosenId(c echo.Context) error { + idDosen := c.QueryParam("id_dosen") + + if idDosen == "" { + return c.JSON(http.StatusInternalServerError, utils.ResponseDetailOutput(false, http.StatusInternalServerError, "insert id_dosen", nil)) + } + + listMahasiswa, err := t.dashboardDosbingUseCase.GetAmountMahasiswaByDosenId(idDosen) + 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, "List mahasiswa successfully retreived", listMahasiswa[0])) + +} + +func (t *AdminDashboardDosbingHandler) GetAmountStatusBimbinganMahasiswaByDosenId(c echo.Context) error { + idDosen := c.QueryParam("id_dosen") + + if idDosen == "" { + return c.JSON(http.StatusInternalServerError, utils.ResponseDetailOutput(false, http.StatusInternalServerError, "insert id_dosen", nil)) + } + + listMahasiswa, err := t.dashboardDosbingUseCase.GetAmountStatusBimbinganMahasiswaByDosenId(idDosen) + 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, "List mahasiswa successfully retreived", listMahasiswa[0])) + +}