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")) }