diff --git a/src/module/pendaftaran_sidsem/entity/pendaftaran_sidsem.go b/src/module/pendaftaran_sidsem/entity/pendaftaran_sidsem.go
index c462c42fce01bc1ae5fe88754a6899c82bc696f4..68843831d59da3562f7d0401fe9cef7cb6f4004b 100644
--- a/src/module/pendaftaran_sidsem/entity/pendaftaran_sidsem.go
+++ b/src/module/pendaftaran_sidsem/entity/pendaftaran_sidsem.go
@@ -55,15 +55,14 @@ type PendaftaranSidSemRequest struct {
 	Link         string
 }
 
-
 type RekapPendaftaranRequest struct {
-	ID           string	`json:"id"`
-	Nim          string	`json:"nim"`
-	IdMahasiswa  string	`json:"id_mahasiswa"`
-	Nama         string	`json:"nama_mahasiswa"`
-	Dosbing		 string	`json:"nama_dosbing"`
-	Tipe         string	`json:"tipe"`
-	Ditolak 	 bool	`json:"status"`
+	ID          string `json:"id"`
+	Nim         string `json:"nim"`
+	IdMahasiswa string `json:"id_mahasiswa"`
+	Nama        string `json:"nama_mahasiswa"`
+	Dosbing     string `json:"nama_dosbing"`
+	Tipe        string `json:"tipe"`
+	Ditolak     bool   `json:"status"`
 }
 type SeminarPendaftaranSidSemRequest struct {
 	ID              string
@@ -137,8 +136,8 @@ type EditLulusRequest struct {
 }
 
 type EditDitolakRequest struct {
-	Id      string 	`json:"id"`
-	Ditolak bool	`json:"ditolak"`
+	Id      string `json:"id"`
+	Ditolak bool   `json:"ditolak"`
 }
 
 type Placeholders struct {
@@ -159,3 +158,33 @@ type NameTopik struct {
 type DosbingName struct {
 	Nama string
 }
+
+type InfoTopikMahasiswa struct {
+	IDMahasiswa  string `json:"id_mahasiswa"`
+	Nama         string `json:"nama"`
+	Email        string `json:"email"`
+	JalurPilihan string `json:"jalur_pilihan"`
+	Judul        string `json:"judul"`
+	Deskripsi    string `json:"deskripsi"`
+}
+
+type RemainingDetailSidSem struct {
+	Tipe       string    `json:"tipe"`
+	WaktuMulai time.Time `json:"waktu_mulai"`
+	RuanganID  string    `json:"ruangan_id"`
+	Ditolak    bool      `json:"ditolak"`
+}
+
+type DetailSidSemByMahasiswa struct {
+	IDMahasiswa  string    `json:"id_mahasiswa"`
+	Nama         string    `json:"nama"`
+	Email        string    `json:"email"`
+	JalurPilihan string    `json:"jalur_pilihan"`
+	Judul        string    `json:"judul"`
+	Deskripsi    string    `json:"deskripsi"`
+	DosbingName  string    `json:"dosbing_name"`
+	Tipe         string    `json:"tipe"`
+	WaktuMulai   time.Time `json:"waktu_mulai"`
+	NamaRuangan  string    `json:"nama_ruangan"`
+	Ditolak      bool      `json:"ditolak"`
+}
diff --git a/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go b/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go
index 0ae457eb6a8ea6991a6160a8160aae0e4fafe828..35c5b98f20ae99f09d0b940a2e1a5372bc4e9d01 100644
--- a/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go
+++ b/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go
@@ -501,3 +501,51 @@ func (repo *PendaftaranSidSemRepo) GetPendaftaranTaIdByMahasiswa(idMahasiswa str
 
 	return pendaftaranTaID, nil
 }
+
+func (repo *PendaftaranSidSemRepo) IsRegisteredSidsem(idMahasiswa string, tipe string) (string, error) {
+	var pendaftaranSidSemId string
+
+	query := `SELECT ps.id FROM pendaftaran_sidsem ps JOIN pendaftaran_ta pt ON ps.pendaftaran_ta_id = pt.id JOIN pengguna p ON pt.id_mahasiswa = p.id WHERE p.id = ? AND ps.tipe = ?`
+
+	if err := repo.DBRead.Raw(query, idMahasiswa, tipe).Scan(&pendaftaranSidSemId).Error; err != nil {
+		return "", err
+	}
+
+	return pendaftaranSidSemId, nil
+}
+
+func (repo *PendaftaranSidSemRepo) GetInfoTopikMahasiswa(idMahasiswa string) (entity.InfoTopikMahasiswa, error) {
+	var infoTopik entity.InfoTopikMahasiswa
+
+	query := `SELECT pt.id_mahasiswa, pg.nama, pg.email, pt.jalur_pilihan , pt.waktu_pengiriman,
+                     t.judul, t.deskripsi
+              FROM pendaftaran_ta pt
+              JOIN pengguna pg ON pt.id_mahasiswa = pg.id
+              JOIN topik t ON pt.id_topik = t.id
+              WHERE pt.id_mahasiswa = ?`
+
+	if err := repo.DBRead.Raw(query, idMahasiswa).Scan(&infoTopik).Error; err != nil {
+		return entity.InfoTopikMahasiswa{}, err
+	}
+
+	return infoTopik, nil
+}
+
+func (repo *PendaftaranSidSemRepo) GetRemainingDetailSidSem(idPendaftaranSidSem string) (entity.RemainingDetailSidSem, error) {
+	var remDet entity.RemainingDetailSidSem
+
+	result := repo.DBRead.Table("pendaftaran_sidsem ps").
+		Select("ps.tipe, ps.waktu_mulai, ps.ruangan_id, ps.ditolak").
+		Where("ps.id = ?", idPendaftaranSidSem).
+		First(&remDet)
+
+	if result.Error == gorm.ErrRecordNotFound {
+		return entity.RemainingDetailSidSem{}, nil
+	}
+
+	if result.Error != nil {
+		return entity.RemainingDetailSidSem{}, result.Error
+	}
+
+	return remDet, nil
+}
diff --git a/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go b/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go
index 7920e8ad1fa6829fa6c313e1b853c4a61f353b40..dd3d6144cb47cd759cd8289318b98a1a3a9898d3 100644
--- a/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go
+++ b/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go
@@ -1,6 +1,8 @@
 package usecase
 
 import (
+	"time"
+
 	"github.com/google/uuid"
 	"gitlab.informatika.org/k-01-11/graduit-be/src/models"
 	"gitlab.informatika.org/k-01-11/graduit-be/src/module/pendaftaran_sidsem/entity"
@@ -20,6 +22,8 @@ type PendaftaranSidSemUsecase interface {
 	EditDitolak(input entity.EditDitolakRequest) (entity.PendaftaranSidSem, error)
 	GetPlaceholders(idMahasiswa string) (entity.Placeholders, error)
 	GetPendaftaran(offset, size int) (output []entity.RekapPendaftaranRequest, err error)
+	IsRegisteredSidsem(idMahasiswa string, tipe string) (bool, error)
+	GetSidSemDetailByMahasiswaId(idMahasiswa string, tipe string) (entity.DetailSidSemByMahasiswa, error)
 }
 
 type PendaftaranSidSemUc struct {
@@ -33,6 +37,7 @@ func NewPendaftaranSidSemUseCase(pendaftaransidsemrepo PendaftaranSidSemReposito
 }
 
 func (uc *PendaftaranSidSemUc) AddPendaftaran(pendaftaranSidSemBerkas entity.PendaftaranSidSemBerkasReq) (output entity.PendaftaranSidSemBerkas, err error) {
+	var nullTime time.Time
 	pendaftaranTAID, err := uc.pendaftaransidsemrepo.GetPendaftaranTaIdByMahasiswa(pendaftaranSidSemBerkas.IDMahasiswa)
 	if err != nil {
 		return entity.PendaftaranSidSemBerkas{}, err
@@ -47,6 +52,8 @@ func (uc *PendaftaranSidSemUc) AddPendaftaran(pendaftaranSidSemBerkas entity.Pen
 		JudulProposal:   pendaftaranSidSemBerkas.JudulProposal,
 		Deskripsi:       pendaftaranSidSemBerkas.Deskripsi,
 		RuanganID:       nil,
+		WaktuMulai:      nullTime,
+		WaktuSelesai:    nullTime,
 	}
 	newPendaftaran, err := uc.pendaftaransidsemrepo.NewPendaftaranSidSem(pendaftaranSidSem, berkas)
 
@@ -102,6 +109,19 @@ func (uc *PendaftaranSidSemUc) EditDitolak(input entity.EditDitolakRequest) (ent
 	return uc.pendaftaransidsemrepo.EditDitolak(input)
 }
 
+func (uc *PendaftaranSidSemUc) IsRegisteredSidsem(idMahasiswa string, tipe string) (bool, error) {
+	result, err := uc.pendaftaransidsemrepo.IsRegisteredSidsem(idMahasiswa, tipe)
+	if err != nil {
+		return false, err
+	}
+
+	if result != "" {
+		return true, err
+	}
+
+	return false, err
+}
+
 func (uc *PendaftaranSidSemUc) GetPlaceholders(idMahasiswa string) (entity.Placeholders, error) {
 	nameTopik, err := uc.pendaftaransidsemrepo.GetNameUntilTopikPlaceholders(idMahasiswa)
 	if err != nil {
@@ -123,3 +143,50 @@ func (uc *PendaftaranSidSemUc) GetPlaceholders(idMahasiswa string) (entity.Place
 
 	return placeholders, nil
 }
+
+func (uc *PendaftaranSidSemUc) GetSidSemDetailByMahasiswaId(idMahasiswa string, tipe string) (entity.DetailSidSemByMahasiswa, error) {
+	var namaRuangan string
+
+	infoTopik, err := uc.pendaftaransidsemrepo.GetInfoTopikMahasiswa(idMahasiswa)
+	if err != nil {
+		return entity.DetailSidSemByMahasiswa{}, err
+	}
+
+	pendaftaranSidSemId, err := uc.pendaftaransidsemrepo.IsRegisteredSidsem(idMahasiswa, tipe)
+	if err != nil {
+		return entity.DetailSidSemByMahasiswa{}, err
+	}
+
+	dosbingName, err := uc.pendaftaransidsemrepo.GetDosbingNamePlaceholder(idMahasiswa)
+	if err != nil {
+		return entity.DetailSidSemByMahasiswa{}, err
+	}
+
+	remDet, err := uc.pendaftaransidsemrepo.GetRemainingDetailSidSem(pendaftaranSidSemId)
+	if err != nil {
+		return entity.DetailSidSemByMahasiswa{}, err
+	}
+
+	if remDet.RuanganID != "" {
+		// Get ruangan name
+	} else {
+		namaRuangan = "Belum Ada"
+	}
+
+	detailSidSemByMahasiswa := entity.DetailSidSemByMahasiswa{
+		IDMahasiswa:  infoTopik.IDMahasiswa,
+		Nama:         infoTopik.Nama,
+		Email:        infoTopik.Email,
+		JalurPilihan: infoTopik.JalurPilihan,
+		Judul:        infoTopik.Judul,
+		Deskripsi:    infoTopik.Deskripsi,
+		DosbingName:  dosbingName.Nama,
+		Tipe:         remDet.Tipe,
+		WaktuMulai:   remDet.WaktuMulai,
+		NamaRuangan:  namaRuangan,
+		Ditolak:      remDet.Ditolak,
+	}
+
+	return detailSidSemByMahasiswa, nil
+
+}
diff --git a/src/module/pendaftaran_sidsem/internal/usecase/repository.go b/src/module/pendaftaran_sidsem/internal/usecase/repository.go
index e5092ec3007d93d90b5cbf0537a580421649fac0..788731c385fa87f79f681e17eddfc8dd27311cb7 100644
--- a/src/module/pendaftaran_sidsem/internal/usecase/repository.go
+++ b/src/module/pendaftaran_sidsem/internal/usecase/repository.go
@@ -21,4 +21,7 @@ type PendaftaranSidSemRepository interface {
 	GetDosbingNamePlaceholder(idMahasiswa string) (entity.DosbingName, error)
 	GetPendaftaranTaIdByMahasiswa(idMahasiswa string) (string, error)
 	GetPendaftaran(offset, size int) (output []entity.RekapPendaftaranRequest, err error)
+	IsRegisteredSidsem(idMahasiswa string, tipe string) (string, error)
+	GetInfoTopikMahasiswa(idMahasiswa string) (entity.InfoTopikMahasiswa, error)
+	GetRemainingDetailSidSem(idMahasiswa string) (entity.RemainingDetailSidSem, error)
 }
diff --git a/src/module/pendaftaran_sidsem/transport/mahasiswa_handler.go b/src/module/pendaftaran_sidsem/transport/mahasiswa_handler.go
index 13bf2db8c7a4f75c8ae570bc8629ed1ecb72817c..1f5bdd39b37d8a17037dda235c3b287d16fa53aa 100644
--- a/src/module/pendaftaran_sidsem/transport/mahasiswa_handler.go
+++ b/src/module/pendaftaran_sidsem/transport/mahasiswa_handler.go
@@ -28,6 +28,8 @@ func NewMahasiswaPendaftaranSidSemHandler(cfg config.PendaftaranSidSemTransportC
 func (t *MahasiswaPendaftaranSidSemHandler) MountMahasiswa(group *echo.Group) {
 	group.GET("/get-placeholders", t.GetPlaceholders)
 	group.POST("/pendaftaran-sidsem", t.AddPendaftaran)
+	group.GET("/is-registered-sidsem", t.IsRegisteredSidsem)
+	group.GET("/get-sidsem-detail", t.GetSidSemDetailByMahasiswaId)
 }
 
 func (t *MahasiswaPendaftaranSidSemHandler) AddPendaftaran(c echo.Context) error {
@@ -53,3 +55,33 @@ func (t *MahasiswaPendaftaranSidSemHandler) GetPlaceholders(c echo.Context) erro
 
 	return c.JSON(http.StatusOK, utils.ResponseDetailOutput(true, http.StatusCreated, "Placeholders retrieved successfully", placeholders))
 }
+
+func (t *MahasiswaPendaftaranSidSemHandler) IsRegisteredSidsem(c echo.Context) error {
+	tipe := c.QueryParam("tipe")
+	payload, ok := c.Get("authPayload").(utils.Payload)
+	if !ok {
+		return c.JSON(http.StatusInternalServerError, utils.ResponseDetailOutput(false, http.StatusInternalServerError, "Error parsing id", nil))
+	}
+
+	result, err := t.pendaftaranSidSemUsecase.IsRegisteredSidsem(payload.ID, tipe)
+	if err != nil {
+		return c.JSON(http.StatusInternalServerError, utils.ResponseDetailOutput(false, http.StatusInternalServerError, err.Error(), nil))
+	}
+
+	return c.JSON(http.StatusOK, utils.ResponseDetailOutput(true, http.StatusCreated, "Is Registered retrieved successfully", result))
+}
+
+func (t *MahasiswaPendaftaranSidSemHandler) GetSidSemDetailByMahasiswaId(c echo.Context) error {
+	tipe := c.QueryParam("tipe")
+	payload, ok := c.Get("authPayload").(utils.Payload)
+	if !ok {
+		return c.JSON(http.StatusInternalServerError, utils.ResponseDetailOutput(false, http.StatusInternalServerError, "Error parsing id", nil))
+	}
+
+	result, err := t.pendaftaranSidSemUsecase.GetSidSemDetailByMahasiswaId(payload.ID, tipe)
+	if err != nil {
+		return c.JSON(http.StatusInternalServerError, utils.ResponseDetailOutput(false, http.StatusInternalServerError, err.Error(), nil))
+	}
+
+	return c.JSON(http.StatusOK, utils.ResponseDetailOutput(true, http.StatusCreated, "Sidsem Detail retrieved successfully", result))
+}