add log api and offset limit

This commit is contained in:
2024-10-23 12:03:30 +07:00
parent ab5303e55f
commit 2adf083e9f
6 changed files with 324 additions and 31 deletions

No files matched your search

+34
View File
@@ -0,0 +1,34 @@
package logapi
import (
"bridging-rssa/config"
logapi "bridging-rssa/models/log_api"
"log"
)
func InsertLogAPI(reqInsert *logapi.DataLogAPI) error {
query := `insert into "data_log_api" (
"id", "date_created", "User_agent", "IP", "Parameter", "Header", "Method", "URL", "Request", "Respon", "Respon_code", "Respontime_start", "Respontime_end", "Comment"
) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
err := config.SatuDataDB.Debug().Exec(query,
reqInsert.ID,
reqInsert.DateCreated,
reqInsert.UserAgent,
reqInsert.IP,
reqInsert.Parameter,
reqInsert.Header,
reqInsert.Method,
reqInsert.Url,
reqInsert.Request,
reqInsert.Respon,
reqInsert.ResponCode,
reqInsert.ResponTimeStart,
reqInsert.ResponTimeEnd,
reqInsert.Comment,
).Error
if err != nil {
log.Println(err)
return err
}
return nil
}
@@ -78,7 +78,7 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error {
return nil
}
func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) {
func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKontrol, error) {
var dataSurKon []*suratkontrol.GetDataSuratKontrol
err := config.SatuDataDB.Debug().Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
dsk."Nomor_surat_kontrol",
@@ -113,17 +113,14 @@ func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) {
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1'`).Scan(&dataSurKon).Error
where dsk."Status_surat_kontrol" = '1' offset ? limit ?`, offset, limit).Scan(&dataSurKon).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
errMsg := errors.New("DPJP anda belum ada subspesialis")
log.Println(errMsg)
return nil, errMsg
}
log.Println(err)
return nil, err
}
log.Println("Data Surat Kontrol : ", dataSurKon)
return dataSurKon, nil
}
@@ -169,10 +166,7 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro
log.Println(errMsg)
return nil, errMsg
}
log.Println(err)
return nil, err
}
log.Println("Data Surat Kontrol : ", dataSurKon)
return dataSurKon, nil
}
@@ -184,6 +178,7 @@ func UpdateDataSuratKontrol(reqUpdate *suratkontrol.DataSuratKontrol) error {
}
return nil
}
func GetIDXDaftarBySurKon(idSurKon string) (string, error) {
var idxDaftar string
err := config.SatuDataDB.Debug().Raw(`select dkp."IDXDAFTAR"
@@ -250,6 +245,5 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i
log.Println(err)
return nil, err
}
log.Println("Data Surat Kontrol : ", dataSurKon)
return dataSurKon, nil
}
+263 -20
View File
@@ -2,10 +2,14 @@ package suratkontrol
import (
cfg "bridging-rssa/config"
log_api "bridging-rssa/database/satu_data/log_api"
suratkontrol "bridging-rssa/database/satu_data/surat_kontrol"
"bridging-rssa/docs/utils"
sk "bridging-rssa/models/bpjs/surat_kontrol"
"bridging-rssa/models/config"
logapi "bridging-rssa/models/log_api"
"encoding/json"
"fmt"
"log"
"net/http"
"os"
@@ -29,11 +33,24 @@ func InsertSuratKontrol(c *gin.Context) {
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
log.Println("Request: ", req)
reqJson, err := json.Marshal(req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
log.Println("Request: ", reqJson)
conf := config.ConfigBpjs{}
@@ -48,6 +65,11 @@ func InsertSuratKontrol(c *gin.Context) {
}
log.Println("Headers : ", headers)
var headerStringBuilder strings.Builder
for key, value := range headers {
headerStringBuilder.WriteString(fmt.Sprintf("%s: %s; ", key, value))
}
headerString := strings.TrimSuffix(headerStringBuilder.String(), "; ")
tipeSurKon := "1"
kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar)
@@ -79,7 +101,10 @@ func InsertSuratKontrol(c *gin.Context) {
err = suratkontrol.InsertDataSuratKontrol(reqInsert)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
c.JSON(http.StatusOK, nil)
@@ -95,13 +120,60 @@ func InsertSuratKontrol(c *gin.Context) {
User: req.User,
},
}
logTimeStart := time.Now().Format("2006-01-02 15:04:05")
res, err := PostData(url, header, headers, reqSuratKontrol)
if err != nil {
responJson, err := json.Marshal(res)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
reqInsertLog := &logapi.DataLogAPI{
ID: uuid,
DateCreated: logTimeEnd,
UserAgent: req.User,
IP: c.ClientIP(),
Parameter: "",
Header: headerString,
Method: "POST",
Url: url,
Request: reqJson,
Respon: responJson,
ResponCode: res.MetaData.Code,
ResponTimeStart: logTimeStart,
ResponTimeEnd: logTimeEnd,
Comment: res.MetaData.Message,
}
err = log_api.InsertLogAPI(reqInsertLog)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
log.Println(err)
c.JSON(http.StatusInternalServerError, res.MetaData)
return
}
responJson, err := json.Marshal(res)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
reqInsert := &sk.DataSuratKontrol{
ID: uuid,
DateCreated: timeNow,
@@ -119,7 +191,10 @@ func InsertSuratKontrol(c *gin.Context) {
err = suratkontrol.InsertDataSuratKontrol(reqInsert)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
@@ -132,7 +207,37 @@ func InsertSuratKontrol(c *gin.Context) {
err = suratkontrol.UpdateKunjunganPasien(req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
reqInsertLog := &logapi.DataLogAPI{
ID: uuid,
DateCreated: logTimeEnd,
UserAgent: req.User,
IP: c.ClientIP(),
Parameter: "",
Header: headerString,
Method: "POST",
Url: url,
Request: reqJson,
Respon: responJson,
ResponCode: res.MetaData.Code,
ResponTimeStart: logTimeStart,
ResponTimeEnd: logTimeEnd,
Comment: res.MetaData.Message,
}
err = log_api.InsertLogAPI(reqInsertLog)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
@@ -167,7 +272,10 @@ func UpdateSuratKontrol(c *gin.Context) {
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
@@ -211,18 +319,37 @@ func UpdateSuratKontrol(c *gin.Context) {
err = suratkontrol.UpdateDataSuratKontrol(reqUpdate)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
err = suratkontrol.InsertDataSuratKontrol(reqInsert)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
c.JSON(http.StatusOK, nil)
return
}
reqJson, err := json.Marshal(req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
log.Println("Request: ", reqJson)
conf := config.ConfigBpjs{}
header := cfg.SetHeader(conf)
@@ -236,6 +363,12 @@ func UpdateSuratKontrol(c *gin.Context) {
}
log.Println("Headers : ", headers)
var headerStringBuilder strings.Builder
for key, value := range headers {
headerStringBuilder.WriteString(fmt.Sprintf("%s: %s; ", key, value))
}
headerString := strings.TrimSuffix(headerStringBuilder.String(), "; ")
reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{
Request: &sk.ReqUpdateRencanaKontrol{
NoSuratKontrol: req.NoSuratKontrol,
@@ -246,17 +379,66 @@ func UpdateSuratKontrol(c *gin.Context) {
User: req.User,
},
}
logTimeStart := time.Now().Format("2006-01-02 15:04:05")
res, err := ResponseUpdateSuratKontrol(url, header, headers, reqSuratKontrol)
if err != nil {
responJson, err := json.Marshal(res)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
if res.MetaData.Code == "504" {
log.Println(err)
c.JSON(http.StatusGatewayTimeout, res.MetaData)
return
}
reqInsertLog := &logapi.DataLogAPI{
ID: uuid,
DateCreated: logTimeEnd,
UserAgent: req.User,
IP: c.ClientIP(),
Parameter: "",
Header: headerString,
Method: "PUT",
Url: url,
Request: reqJson,
Respon: responJson,
ResponCode: res.MetaData.Code,
ResponTimeStart: logTimeStart,
ResponTimeEnd: logTimeEnd,
Comment: res.MetaData.Message,
}
err = log_api.InsertLogAPI(reqInsertLog)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
log.Println(err)
c.JSON(http.StatusInternalServerError, res.MetaData)
return
}
responJson, err := json.Marshal(res)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
reqUpdate := &sk.DataSuratKontrol{
DateUpdated: timeNow,
ID: req.IDSurKon,
@@ -266,7 +448,10 @@ func UpdateSuratKontrol(c *gin.Context) {
err = suratkontrol.UpdateDataSuratKontrol(reqUpdate)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
@@ -291,7 +476,36 @@ func UpdateSuratKontrol(c *gin.Context) {
err = suratkontrol.InsertDataSuratKontrol(reqInsert)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
reqInsertLog := &logapi.DataLogAPI{
ID: uuid,
DateCreated: logTimeEnd,
UserAgent: req.User,
IP: c.ClientIP(),
Parameter: "",
Header: headerString,
Method: "PUT",
Url: url,
Request: reqJson,
Respon: responJson,
ResponCode: res.MetaData.Code,
ResponTimeStart: logTimeStart,
ResponTimeEnd: logTimeEnd,
Comment: res.MetaData.Message,
}
err = log_api.InsertLogAPI(reqInsertLog)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
@@ -309,7 +523,10 @@ func DeleteSuratKontrol(c *gin.Context) {
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
@@ -328,7 +545,10 @@ func DeleteSuratKontrol(c *gin.Context) {
err = suratkontrol.UpdateDataSuratKontrol(reqUpdate)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
res := &sk.MetadataString{
@@ -377,7 +597,10 @@ func DeleteSuratKontrol(c *gin.Context) {
err = suratkontrol.UpdateDataSuratKontrol(reqUpdate)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
c.JSON(http.StatusOK, res)
@@ -444,7 +667,9 @@ func GetSuratKontrolBySEP(c *gin.Context) {
}
func GetDataSurKon(c *gin.Context) {
data, err := suratkontrol.GetDataSuratKontrol()
offset := c.Param("offset")
limit := c.Param("limit")
data, err := suratkontrol.GetDataSuratKontrol(offset, limit)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
@@ -493,7 +718,10 @@ func GetDataSurKonByID(c *gin.Context) {
data, err := suratkontrol.GetDataSuratKontrolByID(id)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
@@ -576,7 +804,10 @@ func CariPasienTPP(c *gin.Context) {
err := c.ShouldBindJSON(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
@@ -591,7 +822,10 @@ func CariPasienTPP(c *gin.Context) {
data, err = suratkontrol.SearchDataSurKon(req, query, args)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
} else if req.NoSEP != "" {
@@ -600,7 +834,10 @@ func CariPasienTPP(c *gin.Context) {
data, err = suratkontrol.SearchDataSurKon(req, query, args)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
} else if req.PoliKlinik != "" {
@@ -609,7 +846,10 @@ func CariPasienTPP(c *gin.Context) {
data, err = suratkontrol.SearchDataSurKon(req, query, args)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
} else {
@@ -617,7 +857,10 @@ func CariPasienTPP(c *gin.Context) {
data, err = suratkontrol.SearchDataSurKon(req, query, args)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
}
+1 -1
View File
@@ -51,7 +51,7 @@ func main() {
suratKontrol := v1.Group("/suratkontrol")
{
suratKontrol.GET("/", suratkontrol.GetDataSurKon)
suratKontrol.GET("/offset/:offset/limit/:limit", suratkontrol.GetDataSurKon)
suratKontrol.GET("/idxdaftar/:idxdaftar", suratkontrol.GetDataSurKonByID)
suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol)
suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP)
+3 -1
View File
@@ -278,4 +278,6 @@ type RequestCariPasien struct {
PoliKlinik string `json:"poliklinik"`
TanggalAwal string `json:"tanggal_awal"`
TanggalAkhir string `json:"tanggal_akhir"`
}
Offset string `json:"offset"`
Limit string `json:"limit"`
}
+20
View File
@@ -0,0 +1,20 @@
package logapi
import "encoding/json"
type DataLogAPI struct {
ID string `gorm:"column:id" json:"ID"`
DateCreated string `gorm:"column:date_created" json:"date_created"`
UserAgent string `gorm:"column:User_agent" json:"User_agent"`
IP string `gorm:"column:IP" json:"IP"`
Parameter string `gorm:"column:Parameter" json:"Parameter"`
Header string `gorm:"column:Header" json:"Header"`
Method string `gorm:"column:Method" json:"Method"`
Url string `gorm:"column:URL" json:"URL"`
Request json.RawMessage `gorm:"column:Request" json:"Request"`
Respon json.RawMessage `gorm:"column:Respon" json:"Respon"`
ResponCode string `gorm:"column:Respon_code" json:"Respon_code"`
ResponTimeStart string `gorm:"column:Respontime_start" json:"Respontime_start"`
ResponTimeEnd string `gorm:"column:Respontime_end" json:"Respontime_end"`
Comment string `gorm:"column:Comment" json:"Comment"`
}