add insert data nonlab template
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
dbx "cpone/package/database"
|
||||
"fmt"
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"go.uber.org/zap"
|
||||
@@ -133,3 +134,225 @@ func (nlt *MDNonlabTemplateServices) DeleteDataNonlabTemplate(id string) (models
|
||||
|
||||
return nlt.GetMDNonlabTemplateByID(id)
|
||||
}
|
||||
|
||||
func (nlt *MDNonlabTemplateServices) AddNonlabTemplate(nama string, fisik string) (models.MDNonlabTemplate, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var ret models.MDNonlabTemplate
|
||||
|
||||
var count int
|
||||
var prmName = "%" + nama + "%"
|
||||
q := `
|
||||
SELECT COUNT(*)
|
||||
FROM nonlab_template
|
||||
WHERE NonlabTemplateName LIKE ?
|
||||
AND NonlabTemplateIsActive = 'Y'
|
||||
`
|
||||
err := dbx.Handlex.Get(&count, q, prmName)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("cek duplicate", zap.Any("nama", prmName))
|
||||
return ret, fmt.Errorf("query failed to cek duplicate: %v", err)
|
||||
}
|
||||
if count > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("duplicate data", zap.Any("nama", nama))
|
||||
return ret, fmt.Errorf("duplicate nama")
|
||||
}
|
||||
|
||||
q = `
|
||||
INSERT INTO nonlab_template (
|
||||
NonlabTemplateName,
|
||||
NonlabTemplateFlagFisik,
|
||||
NonlabTemplateCreated,
|
||||
NonlabTemplateCreatedUserID
|
||||
) VALUES (?,?,NOW(),1);
|
||||
`
|
||||
rsp := dbx.Handlex.MustExec(q, nama, fisik)
|
||||
insertedID, err := rsp.LastInsertId()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("error insert data", zap.Any("nama", nama))
|
||||
return ret, fmt.Errorf("failed insert data: %v", err)
|
||||
}
|
||||
|
||||
s := strconv.Itoa(int(insertedID))
|
||||
return nlt.GetMDNonlabTemplateByID(s)
|
||||
}
|
||||
|
||||
func (nlt *MDNonlabTemplateServices) UpdateNonlabTemplate(id string, nama string, fisik string) (models.MDNonlabTemplate, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var ret models.MDNonlabTemplate
|
||||
|
||||
var count int
|
||||
var prmNama = "%" + nama + "%"
|
||||
q := `
|
||||
SELECT COUNT(*)
|
||||
FROM nonlab_template
|
||||
WHERE NonlabTemplateName LIKE ?
|
||||
AND NonlabTemplateIsActive = 'Y'
|
||||
AND NonlabTemplateID <> ?
|
||||
`
|
||||
err := dbx.Handlex.Get(&count, q, prmNama, id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("cek duplicate", zap.Any("nama", prmNama))
|
||||
return ret, fmt.Errorf("query failed to cek duplicate: %v", err)
|
||||
}
|
||||
if count > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("duplicate data", zap.Any("nama", nama))
|
||||
return ret, fmt.Errorf("duplicate nama")
|
||||
}
|
||||
|
||||
q = `
|
||||
UPDATE nonlab_template SET
|
||||
NonlabTemplateName = ?,
|
||||
NonlabTemplateFlagFisik = ?,
|
||||
NonlabTemplateLastUpdated = NOW(),
|
||||
NonlabTemplateLastUpdatedUserID = 1
|
||||
WHERE NonlabTemplateID = ?;
|
||||
`
|
||||
respUpdt := dbx.Handlex.MustExec(q, nama, fisik, id)
|
||||
_, err = respUpdt.RowsAffected()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("error update data", zap.Any("name", nama))
|
||||
return ret, fmt.Errorf("query failed to update data")
|
||||
}
|
||||
|
||||
return nlt.GetMDNonlabTemplateByID(id)
|
||||
}
|
||||
|
||||
func (nlt *MDNonlabTemplateServices) GetIDNonlabTemplate(name string) (int, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var ret int
|
||||
|
||||
prmName := "%" + name + "%"
|
||||
q := `
|
||||
SELECT
|
||||
NonlabTemplateID
|
||||
FROM nonlab_template
|
||||
WHERE NonlabTemplateName LIKE ?
|
||||
AND NonlabTemplateIsActive = 'Y'
|
||||
`
|
||||
err := dbx.Handlex.Get(&ret, q, prmName)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get data non lab template by id vs",
|
||||
zap.String("name", prmName),
|
||||
zap.Error(err),
|
||||
)
|
||||
return ret, fmt.Errorf("QUERY FAILED GET DATA BY NAME")
|
||||
}
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (nlt *MDNonlabTemplateServices) GetDetailByIDNonlabTemplate(id string) (models.NonlabTemplateDetail, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var ret models.NonlabTemplateDetail
|
||||
|
||||
q := `
|
||||
SELECT
|
||||
NonlabTemplateDetailID,
|
||||
NonlabTemplateDetailNonlabTemplateID,
|
||||
NonlabTemplateDetailCode,
|
||||
NonlabTemplateDetailName,
|
||||
NonlabTemplateDetaiNat_UnitID,
|
||||
NonlabTemplateDetailFlagActive,
|
||||
NonlabTemplateDetaiM_LangID,
|
||||
NonlabTemplateDetailIsActive
|
||||
FROM nonlab_template_detail
|
||||
WHERE NonlabTemplateDetailNonlabTemplateID = ?
|
||||
AND NonlabTemplateDetailIsActive = 'Y'
|
||||
`
|
||||
err := dbx.Handlex.Get(&ret, q, id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get data detail nonlab template", zap.Any("ID", id))
|
||||
return ret, fmt.Errorf("query failed, error get data by id : %v", err)
|
||||
}
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (nlt *MDNonlabTemplateServices) ListDetailByIDNonlabTemplate(id string) ([]models.NonlabTemplateDetail, error) {
|
||||
var ret []models.NonlabTemplateDetail
|
||||
var totalData int
|
||||
|
||||
query := `
|
||||
SELECT COUNT(*)
|
||||
FROM nonlab_template_detail
|
||||
WHERE NonlabTemplateDetailNonlabTemplateID = ?
|
||||
AND NonlabTemplateDetailIsActive = 'Y'
|
||||
`
|
||||
if err := dbx.Handlex.Get(&totalData, query, id); err != nil {
|
||||
return ret, fmt.Errorf("error querying databases: %v", err)
|
||||
}
|
||||
|
||||
query = `
|
||||
SELECT
|
||||
NonlabTemplateDetailID,
|
||||
NonlabTemplateDetailNonlabTemplateID,
|
||||
NonlabTemplateDetailCode,
|
||||
NonlabTemplateDetailName,
|
||||
NonlabTemplateDetaiNat_UnitID,
|
||||
NonlabTemplateDetailFlagActive,
|
||||
NonlabTemplateDetaiM_LangID,
|
||||
NonlabTemplateDetailIsActive
|
||||
FROM nonlab_template_detail
|
||||
WHERE NonlabTemplateDetailNonlabTemplateID = ?
|
||||
AND NonlabTemplateDetailIsActive = 'Y'
|
||||
`
|
||||
if err := dbx.Handlex.Select(&ret, query, id); err != nil {
|
||||
return ret, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (nlt *MDNonlabTemplateServices) AddDetailNonlabTemplate(idnonlab string, kode string, name string, flagActive string) (models.NonlabTemplateDetail, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var ret models.NonlabTemplateDetail
|
||||
|
||||
var count int
|
||||
prmKode := "%" + kode + "%"
|
||||
prmName := "%" + name + "%"
|
||||
q := `
|
||||
SELECT COUNT(*)
|
||||
FROM nonlab_template_detail
|
||||
WHERE (NonlabTemplateDetailCode LIKE ? OR NonlabTemplateDetailName LIKE ?)
|
||||
AND NonlabTemplateDetailNonlabTemplateID = ?
|
||||
AND NonlabTemplateDetailIsActive = 'Y'
|
||||
`
|
||||
err := dbx.Handlex.Get(&count, q, prmKode, prmName, idnonlab)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("cek duplicate", zap.Any("kode", prmKode), zap.Any("nama", prmName))
|
||||
return ret, fmt.Errorf("query failed to cek duplicate: %v", err)
|
||||
}
|
||||
if count > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("data duplicate", zap.Any("kode", prmKode), zap.Any("nama", prmName))
|
||||
return ret, fmt.Errorf("terdapat data duplikat")
|
||||
}
|
||||
|
||||
q = `
|
||||
INSERT INTO nonlab_template_detail (
|
||||
NonlabTemplateDetailNonlabTemplateID,
|
||||
NonlabTemplateDetailCode,
|
||||
NonlabTemplateDetailName,
|
||||
NonlabTemplateDetailFlagActive,
|
||||
NonlabTemplateDetailCreated
|
||||
) VALUES(?,?,?,?,NOW())
|
||||
`
|
||||
rsp := dbx.Handlex.MustExec(q, idnonlab, kode, name, flagActive)
|
||||
insertedID, err := rsp.LastInsertId()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("error insert data", zap.Any("kode", prmKode), zap.Any("nama", prmName))
|
||||
return ret, fmt.Errorf("query failed to insert data: %v", err)
|
||||
}
|
||||
|
||||
s := strconv.Itoa(int(insertedID))
|
||||
|
||||
return nlt.GetDetailByIDNonlabTemplate(s)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user