Files
api-bpjs-surkon/ginHandlers/handlers.go
2024-09-17 08:40:20 +07:00

133 lines
3.4 KiB
Go

package ginHandlers
import (
"encoding/json"
"net/http"
"tes-rssa/database"
"tes-rssa/models"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
// GetAllUser returs list of all users from the database
// @Summary return list of all
// @Description returs list of all users from the database
// @Tags Users
// @Success 200 {object} models.User
// @Router /api/v1/user [get]
func GetAllUser(c *gin.Context) {
var users []models.User
result := database.DB.Debug().Raw(`SELECT * FROM "user"`).Find(&users)
if result.Error != nil {
if result.Error == gorm.ErrRecordNotFound {
c.JSON(http.StatusNotFound, result.Error)
} else {
c.JSON(http.StatusInternalServerError, result.Error)
}
return
}
c.JSON(http.StatusOK, users)
}
func GetUserId(c *gin.Context) {
id := c.Request.URL.Query()
var user models.User
query := `select * from "user" where id = ?`
result := database.DB.Debug().Raw(query, id).Find(&user)
if result.Error != nil {
if result.Error == gorm.ErrRecordNotFound {
c.JSON(http.StatusNotFound, result.Error)
} else {
c.JSON(http.StatusInternalServerError, result.Error)
}
return
}
c.JSON(http.StatusOK, user)
}
func CreateUser(c *gin.Context) {
var u models.InsertUser
err := json.NewDecoder(c.Request.Body).Decode(&u)
if err != nil {
c.JSON(http.StatusBadRequest, "Invalid request payload")
return
}
insertData := &models.InsertUser{
Nama: u.Nama,
Umur: u.Umur,
Alamat: u.Alamat,
Agama: u.Agama,
JenisKelamin: u.JenisKelamin,
}
queryInsert := `INSERT INTO "user" (nama, umur, alamat, agama, jenis_kelamin) VALUES (?, ?, ?, ?, ?)`
result := database.DB.Debug().Exec(queryInsert, insertData.Nama, insertData.Umur, insertData.Alamat, insertData.Agama, insertData.JenisKelamin)
if result.Error != nil {
c.JSON(http.StatusInternalServerError, result.Error)
return
}
res := &models.Response{
ResponseCode: "00",
ResponseMessage: "Berhasil Insert Data",
}
c.JSON(http.StatusOK, res)
}
func UpdateUser(c *gin.Context) {
id := c.Request.URL.Query()
var u models.UpdateUser
err := json.NewDecoder(c.Request.Body).Decode(&u)
if err != nil {
c.JSON(http.StatusBadRequest, "Invalid request payload")
return
}
update := &models.UpdateUser{
Nama: u.Nama,
Umur: u.Umur,
Alamat: u.Alamat,
Agama: u.Agama,
JenisKelamin: u.JenisKelamin,
}
res := &models.Response{
ResponseCode: "00",
ResponseMessage: "Berhasil Update Data",
}
result := database.DB.Debug().Exec(`UPDATE "user" SET nama = ?, umur = ?, alamat = ?, agama = ?, jenis_kelamin = ? WHERE ID = ?`, update.Nama, update.Umur, update.Alamat, update.Agama, update.JenisKelamin, id)
if result.RowsAffected == 0 {
res = &models.Response{
ResponseCode: "99",
ResponseMessage: "Gagal update data",
}
} else if result.Error != nil {
c.JSON(http.StatusInternalServerError, result.Error)
return
}
c.JSON(http.StatusOK, res)
}
func DeleteUser(c *gin.Context) {
id := c.Request.URL.Query()
res := &models.Response{
ResponseCode: "00",
ResponseMessage: "Berhasil Delete Data",
}
result := database.DB.Debug().Exec(`DELETE from "user" where id = ?`, id)
if result.RowsAffected == 0 {
res = &models.Response{
ResponseCode: "99",
ResponseMessage: "Gagal delete data",
}
} else if result.Error != nil {
c.JSON(http.StatusInternalServerError, result.Error)
return
}
c.JSON(http.StatusOK, res)
}