Files
api-antrian-operasi/internal/domain/antrian_operasi/handler.go
T
2026-01-30 14:51:43 +07:00

85 lines
2.1 KiB
Go

package antrianoperasi
import (
"log"
dokter "antrian-operasi/internal/domain/reference/dokter"
kategori "antrian-operasi/internal/domain/reference/kategori"
spesialis "antrian-operasi/internal/domain/reference/spesialis"
"antrian-operasi/internal/shared"
"github.com/gin-gonic/gin"
)
type AntrianOperasiHandler struct {
repo IAntrianOperasiRepository
repoKategori kategori.IKategoriRepository
repoSpesialis spesialis.ISpesialisRepository
repoDokter dokter.IDokterRepository
}
func NewAntrianOperasiHandler(
repo IAntrianOperasiRepository,
repoKategori kategori.IKategoriRepository,
repoSpesialis spesialis.ISpesialisRepository,
repoDokter dokter.IDokterRepository) AntrianOperasiHandler {
return AntrianOperasiHandler{
repo, repoKategori, repoSpesialis, repoDokter,
}
}
func (h AntrianOperasiHandler) CreateAntrianOperasi(c *gin.Context) {
var req CreatePasienOperasiRequest
// Binding format JSON
if err := c.ShouldBindJSON(&req); err != nil {
log.Printf("error bind json : %s", err)
c.JSON(500, shared.BaseErrorResponse{
Success: false,
Code: 500,
Message: "error bind json",
})
return
}
// Request data master validation
isValid, errValidation := req.DataValidation(c, h)
if isValid == false {
log.Printf("validation error : %s", errValidation)
c.JSON(500, shared.BaseErrorResponse{
Success: false,
Code: 500,
Message: "validation error",
Errors: errValidation,
})
return
}
// Start insert database
res, err := h.repo.CreateAntrianOperasi(c, req)
if err != nil {
log.Printf("insert error : %s", err)
c.JSON(500, shared.BaseErrorResponse{
Success: false,
Code: 500,
Message: "insert error",
})
return
}
c.JSON(201, shared.ToBaseResponse(res, true, 201, "success insert antrian operasi"))
}
func (h AntrianOperasiHandler) GetListAntrianOperasi(c *gin.Context) {
res, err := h.repo.SearchableListAntrianOperasi(c)
if err != nil {
c.JSON(500, shared.BaseErrorResponse{
Success: false,
Code: 500,
Message: err.Error(),
})
return
}
c.JSON(200, shared.ToBaseResponse(res, true, 200, "success get list antrian operasi"))
}