Update project from local

This commit is contained in:
2026-07-06 09:36:50 +07:00
parent 0b1cd60738
commit d3c395e45f
2117 changed files with 5151241 additions and 1710497 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesClientDashboard struct {
CLientDashboardStore db.AppStore
}
func NewServicesClientDashboard(uStore db.AppStore) *ServicesClientDashboard {
return &ServicesClientDashboard{
CLientDashboardStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesClientDashboard struct {
CLientDashboardStore db.AppStore
}
func NewServicesClientDashboard(uStore db.AppStore) *ServicesClientDashboard {
return &ServicesClientDashboard{
CLientDashboardStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMCUPreregister struct {
MCUPreregisterStore db.AppStore
}
func NewServicesMCUPreregister(uStore db.AppStore) *ServicesMCUPreregister {
return &ServicesMCUPreregister{
MCUPreregisterStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMCUPreregister struct {
MCUPreregisterStore db.AppStore
}
func NewServicesMCUPreregister(uStore db.AppStore) *ServicesMCUPreregister {
return &ServicesMCUPreregister{
MCUPreregisterStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMCUSetup struct {
MCUSetupStore db.AppStore
}
func NewServicesMCUSetup(uStore db.AppStore) *ServicesMCUSetup {
return &ServicesMCUSetup{
MCUSetupStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMCUSetup struct {
MCUSetupStore db.AppStore
}
func NewServicesMCUSetup(uStore db.AppStore) *ServicesMCUSetup {
return &ServicesMCUSetup{
MCUSetupStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdBahan struct {
MdBahanStore db.AppStore
}
func NewServicesMdBahan(uStore db.AppStore) *ServicesMdBahan {
return &ServicesMdBahan{
MdBahanStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdBahan struct {
MdBahanStore db.AppStore
}
func NewServicesMdBahan(uStore db.AppStore) *ServicesMdBahan {
return &ServicesMdBahan{
MdBahanStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdCorp struct {
MdCorpStore db.AppStore
}
func NewServicesMdCorp(uStore db.AppStore) *ServicesMdCorp {
return &ServicesMdCorp{
MdCorpStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdCorp struct {
MdCorpStore db.AppStore
}
func NewServicesMdCorp(uStore db.AppStore) *ServicesMdCorp {
return &ServicesMdCorp{
MdCorpStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdDokter struct {
MdDokterStore db.AppStore
}
func NewServicesMdDokter(uStore db.AppStore) *ServicesMdDokter {
return &ServicesMdDokter{
MdDokterStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdDokter struct {
MdDokterStore db.AppStore
}
func NewServicesMdDokter(uStore db.AppStore) *ServicesMdDokter {
return &ServicesMdDokter{
MdDokterStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdHargaPanel struct {
MdHargaPanelStore db.AppStore
}
func NewServicesMdHargaPanel(uStore db.AppStore) *ServicesMdHargaPanel {
return &ServicesMdHargaPanel{
MdHargaPanelStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdHargaPanel struct {
MdHargaPanelStore db.AppStore
}
func NewServicesMdHargaPanel(uStore db.AppStore) *ServicesMdHargaPanel {
return &ServicesMdHargaPanel{
MdHargaPanelStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdHargaProfile struct {
MdHargaProfileStore db.AppStore
}
func NewServicesMdHargaProfile(uStore db.AppStore) *ServicesMdHargaProfile {
return &ServicesMdHargaProfile{
MdHargaProfileStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdHargaProfile struct {
MdHargaProfileStore db.AppStore
}
func NewServicesMdHargaProfile(uStore db.AppStore) *ServicesMdHargaProfile {
return &ServicesMdHargaProfile{
MdHargaProfileStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdHargaSingle struct {
MdHargaSingleStore db.AppStore
}
func NewServicesMdHargaSingle(uStore db.AppStore) *ServicesMdHargaSingle {
return &ServicesMdHargaSingle{
MdHargaSingleStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdHargaSingle struct {
MdHargaSingleStore db.AppStore
}
func NewServicesMdHargaSingle(uStore db.AppStore) *ServicesMdHargaSingle {
return &ServicesMdHargaSingle{
MdHargaSingleStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdPaket struct {
MdPaketStore db.AppStore
}
func NewServicesMdPaket(uStore db.AppStore) *ServicesMdPaket {
return &ServicesMdPaket{
MdPaketStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdPaket struct {
MdPaketStore db.AppStore
}
func NewServicesMdPaket(uStore db.AppStore) *ServicesMdPaket {
return &ServicesMdPaket{
MdPaketStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdPanel struct {
MdPanelStore db.AppStore
}
func NewServicesMdPanel(uStore db.AppStore) *ServicesMdPanel {
return &ServicesMdPanel{
MdPanelStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdPanel struct {
MdPanelStore db.AppStore
}
func NewServicesMdPanel(uStore db.AppStore) *ServicesMdPanel {
return &ServicesMdPanel{
MdPanelStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdPasien struct {
MdPasienStore db.AppStore
}
func NewServicesMdPasien(uStore db.AppStore) *ServicesMdPasien {
return &ServicesMdPasien{
MdPasienStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdPasien struct {
MdPasienStore db.AppStore
}
func NewServicesMdPasien(uStore db.AppStore) *ServicesMdPasien {
return &ServicesMdPasien{
MdPasienStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdProfile struct {
MdProfileStore db.AppStore
}
func NewServicesMdProfile(uStore db.AppStore) *ServicesMdProfile {
return &ServicesMdProfile{
MdProfileStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdProfile struct {
MdProfileStore db.AppStore
}
func NewServicesMdProfile(uStore db.AppStore) *ServicesMdProfile {
return &ServicesMdProfile{
MdProfileStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdResultNonLab struct {
MdResultNonLabStore db.AppStore
}
func NewServicesMdResultNonLab(uStore db.AppStore) *ServicesMdResultNonLab {
return &ServicesMdResultNonLab{
MdResultNonLabStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdResultNonLab struct {
MdResultNonLabStore db.AppStore
}
func NewServicesMdResultNonLab(uStore db.AppStore) *ServicesMdResultNonLab {
return &ServicesMdResultNonLab{
MdResultNonLabStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdSampleStation struct {
MdSampleStationStore db.AppStore
}
func NewServicesMdSampleStation(uStore db.AppStore) *ServicesMdSampleStation {
return &ServicesMdSampleStation{
MdSampleStationStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdSampleStation struct {
MdSampleStationStore db.AppStore
}
func NewServicesMdSampleStation(uStore db.AppStore) *ServicesMdSampleStation {
return &ServicesMdSampleStation{
MdSampleStationStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdSampleType struct {
MdSampleTypeStore db.AppStore
}
func NewServicesMdSampleType(uStore db.AppStore) *ServicesMdSampleType {
return &ServicesMdSampleType{
MdSampleTypeStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdSampleType struct {
MdSampleTypeStore db.AppStore
}
func NewServicesMdSampleType(uStore db.AppStore) *ServicesMdSampleType {
return &ServicesMdSampleType{
MdSampleTypeStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdTemplateFisik struct {
MdTemplateFisikStore db.AppStore
}
func NewServicesMdTemplateFisik(uStore db.AppStore) *ServicesMdTemplateFisik {
return &ServicesMdTemplateFisik{
MdTemplateFisikStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdTemplateFisik struct {
MdTemplateFisikStore db.AppStore
}
func NewServicesMdTemplateFisik(uStore db.AppStore) *ServicesMdTemplateFisik {
return &ServicesMdTemplateFisik{
MdTemplateFisikStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdTest struct {
MdTestStore db.AppStore
}
func NewServicesMdTest(uStore db.AppStore) *ServicesMdTest {
return &ServicesMdTest{
MdTestStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdTest struct {
MdTestStore db.AppStore
}
func NewServicesMdTest(uStore db.AppStore) *ServicesMdTest {
return &ServicesMdTest{
MdTestStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdUser struct {
MdUserStore db.AppStore
}
func NewServicesMdUser(uStore db.AppStore) *ServicesMdUser {
return &ServicesMdUser{
MdUserStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdUser struct {
MdUserStore db.AppStore
}
func NewServicesMdUser(uStore db.AppStore) *ServicesMdUser {
return &ServicesMdUser{
MdUserStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesMdUserGroup struct {
MdUserGroupStore db.AppStore
}
func NewServicesMdUserGroup(uStore db.AppStore) *ServicesMdUserGroup {
return &ServicesMdUserGroup{
MdUserGroupStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesMdUserGroup struct {
MdUserGroupStore db.AppStore
}
func NewServicesMdUserGroup(uStore db.AppStore) *ServicesMdUserGroup {
return &ServicesMdUserGroup{
MdUserGroupStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package client_services
import "cpone/db"
type ServicesTransaksiSampleStation struct {
TransaksiSampleStationStore db.AppStore
}
func NewServicesTransaksiSampleStation(uStore db.AppStore) *ServicesTransaksiSampleStation {
return &ServicesTransaksiSampleStation{
TransaksiSampleStationStore: uStore,
}
}
package client_services
import "cpone/db"
type ServicesTransaksiSampleStation struct {
TransaksiSampleStationStore db.AppStore
}
func NewServicesTransaksiSampleStation(uStore db.AppStore) *ServicesTransaksiSampleStation {
return &ServicesTransaksiSampleStation{
TransaksiSampleStationStore: uStore,
}
}

View File

@@ -1,15 +1,15 @@
package corporate_services
import "cpone/db"
type ServicesCompany struct {
CompanyStore db.AppStore
}
func NewServicesCompany(uStore db.AppStore) *ServicesCompany {
return &ServicesCompany{
CompanyStore: uStore,
}
}
package corporate_services
import "cpone/db"
type ServicesCompany struct {
CompanyStore db.AppStore
}
func NewServicesCompany(uStore db.AppStore) *ServicesCompany {
return &ServicesCompany{
CompanyStore: uStore,
}
}

View File

@@ -1,143 +1,143 @@
package corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"go.uber.org/zap"
)
type DashboardPicServices struct {
DashboardPicStore db.AppStore
}
func NewDashboardPicServices(uStore db.AppStore) *DashboardPicServices {
return &DashboardPicServices{
DashboardPicStore: uStore,
}
}
func (ea *DashboardPicServices) GetEmployeeAnalyticBreadcrumb(title string) (models.BreadCrumbV1, error) {
breadcrumb := models.BreadCrumbV1{
Title: title,
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/corp/dashboard_pic",
},
{
Item: "Employee Health Medical Analytic",
Url: "",
},
},
}
return breadcrumb, nil
}
func (ea *DashboardPicServices) DummyDataTest() ([]models.DashboardPic, error) {
employees := []models.DashboardPic{
{
Mgm_McuID: 1,
Mgm_McuLabel: "Employee 1",
Mgm_McuFlagRelasiBayarSendiri: "Yes",
Mgm_McuBisaTambahPemeriksaan: "No",
Mgm_McuCorporateID: 101,
Mgm_McuNumber: "EMP001",
Mgm_McuNumberNational: "NAT001",
Mgm_McuNote: "Lorem ipsum dolor sit amet.",
Mgm_McuStartDate: "2024-01-01",
Mgm_McuEndDate: "2024-12-31",
Mgm_McuIsActive: "Y",
},
{
Mgm_McuID: 2,
Mgm_McuLabel: "Employee 2",
Mgm_McuFlagRelasiBayarSendiri: "No",
Mgm_McuBisaTambahPemeriksaan: "Yes",
Mgm_McuCorporateID: 102,
Mgm_McuNumber: "EMP002",
Mgm_McuNumberNational: "NAT002",
Mgm_McuNote: "Lorem ipsum dolor sit amet consectetur.",
Mgm_McuStartDate: "2024-02-15",
Mgm_McuEndDate: "2024-11-30",
Mgm_McuIsActive: "Y",
},
}
return employees, nil
}
func (ea *DashboardPicServices) GetCorporateName(userID string) (string, error) {
var corpName string
q := `
SELECT
CorporateName
FROM mgm_mcuuser
JOIN mgm_mcu ON Mgm_McuID = Mgm_McuUserMgm_McuID
JOIN corporate ON CorporateID = Mgm_McuCorporateID
WHERE Mgm_McuUserID = ?
`
if err := dbx.Handlex.Get(&corpName, q, userID); err != nil {
return "PT. ABC", err
}
if corpName == "" {
corpName = "Perusahaan A"
}
return corpName, nil
}
func (ea *DashboardPicServices) ListingDashboardPic(email string, search string, startdate string, enddate string, currentpage int, rowperpage int) ([]models.DashboardPic, int, error) {
logger, _ := zap.NewProduction()
var ret []models.DashboardPic
var totalData int
if len(startdate) == 0 {
startdate = "1900-01-01"
}
if len(enddate) == 0 {
enddate = "9999-12-12"
}
prmLabel := "%" + search + "%"
offset := (currentpage - 1) * rowperpage
logger.Info("Params", zap.Any("email", email))
q := `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuFlagRelasiBayarSendiri,
Mgm_McuBisaTambahPemeriksaan,
Mgm_McuCorporateID,
Mgm_McuNumber,
Mgm_McuNumberNational,
Mgm_McuNote,
DATE_FORMAT(Mgm_McuStartDate, '%d-%m-%Y') AS Mgm_McuStartDate,
DATE_FORMAT(Mgm_McuEndDate, '%d-%m-%Y') AS Mgm_McuEndDate,
Mgm_McuIsActive
FROM mgm_mcu
JOIN mgm_mcuuser ON Mgm_McuUserMgm_McuID = Mgm_McuID
WHERE Mgm_McuUserEmail = ?
AND Mgm_McuIsActive = 'Y'
AND Mgm_McuLabel LIKE ?
AND Mgm_McuStartDate >= ?
AND Mgm_McuEndDate <= ?
ORDER BY Mgm_McuID ASC
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&ret, q, email, prmLabel, startdate, enddate, rowperpage, offset); err != nil {
return nil, 0, fmt.Errorf("error query get data: %v", err)
}
totalData = len(ret)
logger.Info("Response", zap.Any("data", ret), zap.Any("total data", totalData))
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
return ret, totalPage, nil
}
package corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"go.uber.org/zap"
)
type DashboardPicServices struct {
DashboardPicStore db.AppStore
}
func NewDashboardPicServices(uStore db.AppStore) *DashboardPicServices {
return &DashboardPicServices{
DashboardPicStore: uStore,
}
}
func (ea *DashboardPicServices) GetEmployeeAnalyticBreadcrumb(title string) (models.BreadCrumbV1, error) {
breadcrumb := models.BreadCrumbV1{
Title: title,
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/corp/dashboard_pic",
},
{
Item: "Employee Health Medical Analytic",
Url: "",
},
},
}
return breadcrumb, nil
}
func (ea *DashboardPicServices) DummyDataTest() ([]models.DashboardPic, error) {
employees := []models.DashboardPic{
{
Mgm_McuID: 1,
Mgm_McuLabel: "Employee 1",
Mgm_McuFlagRelasiBayarSendiri: "Yes",
Mgm_McuBisaTambahPemeriksaan: "No",
Mgm_McuCorporateID: 101,
Mgm_McuNumber: "EMP001",
Mgm_McuNumberNational: "NAT001",
Mgm_McuNote: "Lorem ipsum dolor sit amet.",
Mgm_McuStartDate: "2024-01-01",
Mgm_McuEndDate: "2024-12-31",
Mgm_McuIsActive: "Y",
},
{
Mgm_McuID: 2,
Mgm_McuLabel: "Employee 2",
Mgm_McuFlagRelasiBayarSendiri: "No",
Mgm_McuBisaTambahPemeriksaan: "Yes",
Mgm_McuCorporateID: 102,
Mgm_McuNumber: "EMP002",
Mgm_McuNumberNational: "NAT002",
Mgm_McuNote: "Lorem ipsum dolor sit amet consectetur.",
Mgm_McuStartDate: "2024-02-15",
Mgm_McuEndDate: "2024-11-30",
Mgm_McuIsActive: "Y",
},
}
return employees, nil
}
func (ea *DashboardPicServices) GetCorporateName(userID string) (string, error) {
var corpName string
q := `
SELECT
CorporateName
FROM mgm_mcuuser
JOIN mgm_mcu ON Mgm_McuID = Mgm_McuUserMgm_McuID
JOIN corporate ON CorporateID = Mgm_McuCorporateID
WHERE Mgm_McuUserID = ?
`
if err := dbx.Handlex.Get(&corpName, q, userID); err != nil {
return "PT. ABC", err
}
if corpName == "" {
corpName = "Perusahaan A"
}
return corpName, nil
}
func (ea *DashboardPicServices) ListingDashboardPic(email string, search string, startdate string, enddate string, currentpage int, rowperpage int) ([]models.DashboardPic, int, error) {
logger, _ := zap.NewProduction()
var ret []models.DashboardPic
var totalData int
if len(startdate) == 0 {
startdate = "1900-01-01"
}
if len(enddate) == 0 {
enddate = "9999-12-12"
}
prmLabel := "%" + search + "%"
offset := (currentpage - 1) * rowperpage
logger.Info("Params", zap.Any("email", email))
q := `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuFlagRelasiBayarSendiri,
Mgm_McuBisaTambahPemeriksaan,
Mgm_McuCorporateID,
Mgm_McuNumber,
Mgm_McuNumberNational,
Mgm_McuNote,
DATE_FORMAT(Mgm_McuStartDate, '%d-%m-%Y') AS Mgm_McuStartDate,
DATE_FORMAT(Mgm_McuEndDate, '%d-%m-%Y') AS Mgm_McuEndDate,
Mgm_McuIsActive
FROM mgm_mcu
JOIN mgm_mcuuser ON Mgm_McuUserMgm_McuID = Mgm_McuID
WHERE Mgm_McuUserEmail = ?
AND Mgm_McuIsActive = 'Y'
AND Mgm_McuLabel LIKE ?
AND Mgm_McuStartDate >= ?
AND Mgm_McuEndDate <= ?
ORDER BY Mgm_McuID ASC
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&ret, q, email, prmLabel, startdate, enddate, rowperpage, offset); err != nil {
return nil, 0, fmt.Errorf("error query get data: %v", err)
}
totalData = len(ret)
logger.Info("Response", zap.Any("data", ret), zap.Any("total data", totalData))
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
return ret, totalPage, nil
}

View File

@@ -1,111 +1,111 @@
package corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
)
type McuDetailServices struct {
McuDetailStore db.AppStore
}
func NewMcuDetailServices(uStore db.AppStore) *McuDetailServices {
return &McuDetailServices{
McuDetailStore: uStore,
}
}
func (mcud *McuDetailServices) GetBreadcrumb(id string) (models.BreadCrumbV1, error) {
var mcu models.DashboardPic
breadcrumb := models.BreadCrumbV1{
Title: "",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/corp/dashboard_pic",
},
{
Item: "Employee Health Medical Analytic",
Url: "/corp/dashboard_pic",
},
{
Item: "",
Url: "",
},
},
}
q := `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuFlagRelasiBayarSendiri,
Mgm_McuBisaTambahPemeriksaan,
Mgm_McuCorporateID,
Mgm_McuNumber,
Mgm_McuNumberNational,
Mgm_McuNote,
DATE_FORMAT(Mgm_McuStartDate, '%d-%m-%Y') AS Mgm_McuStartDate,
DATE_FORMAT(Mgm_McuEndDate, '%d-%m-%Y') AS Mgm_McuEndDate,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuID = ?
`
if err := dbx.Handlex.Get(&mcu, q, id); err != nil {
return breadcrumb, err
}
breadcrumb.Title = mcu.Mgm_McuLabel
breadcrumb.Item[2].Item = mcu.Mgm_McuLabel
return breadcrumb, nil
}
func (mcud *McuDetailServices) GetTabNameList(id string) ([]models.McuTabModels, error) {
var ret []models.McuTabModels
q := `
SELECT
Mcu_ImageGrafikGroupResult,
Mcu_ImageGrafikGroupMenu,
Mcu_ImageGrafikName,
Mcu_ImageGrafikJsonRender
FROM mgm_mcugrafik
JOIN mcu_image_grafik ON Mcu_ImageGrafikID = Mgm_McuGrafikMcu_ImageGrafikID
WHERE Mgm_McuGrafikMgm_McuID = ?
AND Mgm_McuGrafikIsActive = 'Y'
GROUP BY Mcu_ImageGrafikGroupMenu, Mcu_ImageGrafikGroupResult
ORDER BY Mcu_ImageGrafikID
`
if err := dbx.Handlex.Select(&ret, q, id); err != nil {
return ret, fmt.Errorf("error get data tab name: %v", err)
}
for i, d := range ret {
switch d.Mcu_ImageGrafikGroupMenu {
case "SUMMARY":
if d.Mcu_ImageGrafikGroupResult == "LAB" {
ret[i].TabID = "tabkelainanlab"
ret[i].TabName = "Kelainan Lab"
} else if d.Mcu_ImageGrafikGroupResult == "NONLAB" {
ret[i].TabID = "tabkelainannonlab"
ret[i].TabName = "Kelainan Non Lab"
} else {
ret[i].TabID = "tabkelainanfisik"
ret[i].TabName = "Kelainan Fisik"
}
case "GLOBAL":
ret[i].TabID = "tabkelainanglobal"
ret[i].TabName = "Kelainan Global"
case "PESERTA":
ret[i].TabID = "tabkepesertaan"
ret[i].TabName = "Peserta"
}
}
return ret, nil
}
package corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
)
type McuDetailServices struct {
McuDetailStore db.AppStore
}
func NewMcuDetailServices(uStore db.AppStore) *McuDetailServices {
return &McuDetailServices{
McuDetailStore: uStore,
}
}
func (mcud *McuDetailServices) GetBreadcrumb(id string) (models.BreadCrumbV1, error) {
var mcu models.DashboardPic
breadcrumb := models.BreadCrumbV1{
Title: "",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/corp/dashboard_pic",
},
{
Item: "Employee Health Medical Analytic",
Url: "/corp/dashboard_pic",
},
{
Item: "",
Url: "",
},
},
}
q := `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuFlagRelasiBayarSendiri,
Mgm_McuBisaTambahPemeriksaan,
Mgm_McuCorporateID,
Mgm_McuNumber,
Mgm_McuNumberNational,
Mgm_McuNote,
DATE_FORMAT(Mgm_McuStartDate, '%d-%m-%Y') AS Mgm_McuStartDate,
DATE_FORMAT(Mgm_McuEndDate, '%d-%m-%Y') AS Mgm_McuEndDate,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuID = ?
`
if err := dbx.Handlex.Get(&mcu, q, id); err != nil {
return breadcrumb, err
}
breadcrumb.Title = mcu.Mgm_McuLabel
breadcrumb.Item[2].Item = mcu.Mgm_McuLabel
return breadcrumb, nil
}
func (mcud *McuDetailServices) GetTabNameList(id string) ([]models.McuTabModels, error) {
var ret []models.McuTabModels
q := `
SELECT
Mcu_ImageGrafikGroupResult,
Mcu_ImageGrafikGroupMenu,
Mcu_ImageGrafikName,
Mcu_ImageGrafikJsonRender
FROM mgm_mcugrafik
JOIN mcu_image_grafik ON Mcu_ImageGrafikID = Mgm_McuGrafikMcu_ImageGrafikID
WHERE Mgm_McuGrafikMgm_McuID = ?
AND Mgm_McuGrafikIsActive = 'Y'
GROUP BY Mcu_ImageGrafikGroupMenu, Mcu_ImageGrafikGroupResult
ORDER BY Mcu_ImageGrafikID
`
if err := dbx.Handlex.Select(&ret, q, id); err != nil {
return ret, fmt.Errorf("error get data tab name: %v", err)
}
for i, d := range ret {
switch d.Mcu_ImageGrafikGroupMenu {
case "SUMMARY":
if d.Mcu_ImageGrafikGroupResult == "LAB" {
ret[i].TabID = "tabkelainanlab"
ret[i].TabName = "Kelainan Lab"
} else if d.Mcu_ImageGrafikGroupResult == "NONLAB" {
ret[i].TabID = "tabkelainannonlab"
ret[i].TabName = "Kelainan Non Lab"
} else {
ret[i].TabID = "tabkelainanfisik"
ret[i].TabName = "Kelainan Fisik"
}
case "GLOBAL":
ret[i].TabID = "tabkelainanglobal"
ret[i].TabName = "Kelainan Global"
case "PESERTA":
ret[i].TabID = "tabkepesertaan"
ret[i].TabName = "Peserta"
}
}
return ret, nil
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,349 +1,349 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"cpone/utils"
"fmt"
"math"
"strconv"
"go.uber.org/zap"
)
type TabKelainanGlobalServices struct {
TabKelainanGlobalServicesStore db.AppStore
}
func NewTabKelainanGlobalServices(store db.AppStore) *TabKelainanGlobalServices {
return &TabKelainanGlobalServices{
TabKelainanGlobalServicesStore: store,
}
}
func (tkg *TabKelainanGlobalServices) GetBarChartConf(title string, data models.BarDataset) (models.Barchart, error) {
isEmpty := ""
if len(data.Source) <= 1 {
isEmpty = "Data tidak ditemukan"
}
option := models.Barchart{}
option.Title = struct {
Text string "json:\"text\""
Left string `json:"left"`
}{
Text: title,
Left: "center",
}
option.Dataset = data
option.Grid.ContainLabel = true
option.XAxis.Name = "person"
option.YAxis.Type = "category"
option.VisualMap.Orient = "horizontal"
option.VisualMap.Left = "center"
option.VisualMap.Min = 0
option.VisualMap.Max = 10
option.VisualMap.Show = false
option.VisualMap.Dimension = 0
option.VisualMap.InRange.Color = []string{"#035bff", "#42aaf5", "#00eaf2"}
option.Series = []struct {
Label struct {
Position string "json:\"position\""
Show bool "json:\"show\""
Formatter string "json:\"formatter\""
} "json:\"label\""
Type string "json:\"type\""
Encode struct {
X string "json:\"x\""
Y string "json:\"y\""
} "json:\"encode\""
}{
{
Label: struct {
Position string "json:\"position\""
Show bool "json:\"show\""
Formatter string "json:\"formatter\""
}{
Position: "right",
Show: true,
Formatter: "{@[3]} %",
},
Type: "bar",
Encode: struct {
X string "json:\"x\""
Y string "json:\"y\""
}{
X: "amount",
Y: "product",
},
},
}
option.Tooltip = struct {
Trigger string "json:\"trigger\""
AxisPointer struct {
Type string "json:\"type\""
} "json:\"axisPointer\""
}{
Trigger: "axis",
AxisPointer: struct {
Type string "json:\"type\""
}{
Type: "shadow",
},
}
option.Graphic = struct {
Type string "json:\"type\""
Left string "json:\"left\""
Top string "json:\"top\""
Style struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
} "json:\"style\""
}{
Type: "text",
Left: "center",
Top: "middle",
Style: struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
}{
Text: isEmpty,
FontSize: "15",
FontWeight: "bold",
},
}
return option, nil
}
func (tkg *TabKelainanGlobalServices) GetKelainanGlobalMCU(mcuID string) (models.Barchart, error) {
logger, _ := zap.NewProduction()
var option models.Barchart
var data []models.KelainanGlobalMCUModel
q := `
SELECT
IFNULL(Nat_TestName ,Mcu_KelainanGroupName) AS Test,
COUNT(Mgm_HeaderT_OrderHeaderID) AS total
FROM mgm_header
JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y'
JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID
JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
LEFT JOIN nat_test ON Nat_TestCode = Mgm_HeaderNat_TestCode
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ?
AND Mgm_HeaderIsNormal = 'N'
GROUP BY Mcu_KelainanGroupID ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC
`
// Mgm_DetailMcu_KelainanID ->> versi php
// Mcu_KelainanGroupID ->> versi excel
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kelainan global mcu %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Kelainan MCU"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
max := 1
for _, d := range data {
if d.Total >= max {
max = d.Total
}
}
for i, d := range data {
percentage := float64(d.Total) / float64(max) * 100
roundedPercentage := math.Round(percentage*100) / 100
percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64)
chartData.Source = append(chartData.Source, []interface{}{
i, d.Total, d.Test, percentStr,
})
}
option, err := tkg.GetBarChartConf(title, chartData)
if err != nil {
return option, fmt.Errorf("error insert data to barchart %v", err)
}
return option, nil
}
func (tkg *TabKelainanGlobalServices) GetKelainanFisik(mcuID string) (models.Barchart, error) {
logger, _ := zap.NewProduction()
var option models.Barchart
var data []models.KelainanGlobalFisikModel
q := `
SELECT
Mcu_KelainanName,
COUNT(Mgm_HeaderT_OrderHeaderID) AS total
FROM mgm_header
JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID
AND Mgm_DetailIsActive = 'Y'
JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID
JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ?
AND Mgm_HeaderType = 'F'
AND Mgm_HeaderIsNormal = 'N'
GROUP BY Mcu_KelainanID
ORDER BY total DESC
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kelainan global fisik %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Kelainan Fisik"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
max := 1
for _, d := range data {
if d.Total >= max {
max = d.Total
}
}
for _, d := range data {
percentage := float64(d.Total) / float64(max) * 100
roundedPercentage := math.Round(percentage*100) / 100
percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64)
chartData.Source = append(chartData.Source, []interface{}{
d.Total, d.Total, d.Mcu_KelainanName, percentStr,
})
}
option, err := tkg.GetBarChartConf(title, chartData)
if err != nil {
return option, nil
}
return option, nil
}
func (tkg *TabKelainanGlobalServices) GetKelainanGlobalV2(mcuID string) (models.Barchart, error) {
var option models.Barchart
var data []models.KelainanGlobalModel
q := `
SELECT * FROM (
SELECT Mcu_KelainanID,
Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as Total
FROM t_kelainan_lab
JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID
where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
UNION
SELECT Mcu_KelainanID, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as Total
FROM t_kelainan_nonlab
JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID
join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND
T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID
where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
UNION
SELECT Mcu_KelainanID, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as Total
FROM t_kelainan_fisik
JOIN t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summaryfisik ON T_KelainanFiskMcu_FisikSummaryID = Mcu_SummaryFisikID AND
Mcu_SummaryFisikID NOT IN (63,67,68,69,70,71,72,73)
join mcu_kelainan on Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? AND
Mcu_KelainanClasification NOT IN ('who','kemenkes','JNC-VIII','ESC/ESH')
group by Mcu_KelainanID
) a
ORDER BY total DESC
LIMIT 10
`
if err := dbx.Handlex.Select(&data, q, mcuID, mcuID, mcuID); err != nil {
return option, fmt.Errorf("error get data kelainan global %v", err)
}
var jumlahPeserta models.TotalPesertaModel
q = `
SELECT
COUNT(distinct(T_OrderHeaderID)) as peserta,
COUNT( distinct(Mcu_PreregisterPatientsM_PatientID)) as total
FROM mcu_preregister_patients
LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderIsActive = 'Y'
WHERE
Mcu_PreregisterPatientsMgm_McuID = ? AND
Mcu_PreregisterPatientsIsActive = 'Y'
`
if err := dbx.Handlex.Get(&jumlahPeserta, q, mcuID); err != nil {
return option, fmt.Errorf("error get jumlah peserta %v", err)
}
title := "Kelainan Global (10 Terbesar)"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
for i, d := range data {
percentage := float64(d.Total) / float64(jumlahPeserta.Peserta) * 100
roundedPercentage := math.Round(percentage*100) / 100
percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64)
newText := utils.SplitStrings(d.Test, 2)
chartData.Source = append(chartData.Source, []interface{}{
i, d.Total, newText, percentStr,
})
}
option, err := tkg.GetBarChartConf(title, chartData)
if err != nil {
return option, fmt.Errorf("error insert data to barchart %v", err)
}
return option, nil
}
func (tkg *TabKelainanGlobalServices) GetChartRenderGlobal(mcuID string) ([]models.McuTabModels, error) {
var ret []models.McuTabModels
q := `
SELECT
Mcu_ImageGrafikGroupResult,
Mcu_ImageGrafikGroupMenu,
Mcu_ImageGrafikName,
Mcu_ImageGrafikJsonRender
FROM mgm_mcugrafik
JOIN mcu_image_grafik ON Mcu_ImageGrafikID = Mgm_McuGrafikMcu_ImageGrafikID
WHERE Mgm_McuGrafikMgm_McuID = ?
AND Mcu_ImageGrafikGroupMenu = "GLOBAL"
AND Mgm_McuGrafikIsActive = 'Y'
ORDER BY Mcu_ImageGrafikID
`
if err := dbx.Handlex.Select(&ret, q, mcuID); err != nil {
return ret, fmt.Errorf("error get data tab peserta: %v", err)
}
return ret, nil
}
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"cpone/utils"
"fmt"
"math"
"strconv"
"go.uber.org/zap"
)
type TabKelainanGlobalServices struct {
TabKelainanGlobalServicesStore db.AppStore
}
func NewTabKelainanGlobalServices(store db.AppStore) *TabKelainanGlobalServices {
return &TabKelainanGlobalServices{
TabKelainanGlobalServicesStore: store,
}
}
func (tkg *TabKelainanGlobalServices) GetBarChartConf(title string, data models.BarDataset) (models.Barchart, error) {
isEmpty := ""
if len(data.Source) <= 1 {
isEmpty = "Data tidak ditemukan"
}
option := models.Barchart{}
option.Title = struct {
Text string "json:\"text\""
Left string `json:"left"`
}{
Text: title,
Left: "center",
}
option.Dataset = data
option.Grid.ContainLabel = true
option.XAxis.Name = "person"
option.YAxis.Type = "category"
option.VisualMap.Orient = "horizontal"
option.VisualMap.Left = "center"
option.VisualMap.Min = 0
option.VisualMap.Max = 10
option.VisualMap.Show = false
option.VisualMap.Dimension = 0
option.VisualMap.InRange.Color = []string{"#035bff", "#42aaf5", "#00eaf2"}
option.Series = []struct {
Label struct {
Position string "json:\"position\""
Show bool "json:\"show\""
Formatter string "json:\"formatter\""
} "json:\"label\""
Type string "json:\"type\""
Encode struct {
X string "json:\"x\""
Y string "json:\"y\""
} "json:\"encode\""
}{
{
Label: struct {
Position string "json:\"position\""
Show bool "json:\"show\""
Formatter string "json:\"formatter\""
}{
Position: "right",
Show: true,
Formatter: "{@[3]} %",
},
Type: "bar",
Encode: struct {
X string "json:\"x\""
Y string "json:\"y\""
}{
X: "amount",
Y: "product",
},
},
}
option.Tooltip = struct {
Trigger string "json:\"trigger\""
AxisPointer struct {
Type string "json:\"type\""
} "json:\"axisPointer\""
}{
Trigger: "axis",
AxisPointer: struct {
Type string "json:\"type\""
}{
Type: "shadow",
},
}
option.Graphic = struct {
Type string "json:\"type\""
Left string "json:\"left\""
Top string "json:\"top\""
Style struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
} "json:\"style\""
}{
Type: "text",
Left: "center",
Top: "middle",
Style: struct {
Text string "json:\"text\""
FontSize string "json:\"fontSize\""
FontWeight string "json:\"fontWeight\""
}{
Text: isEmpty,
FontSize: "15",
FontWeight: "bold",
},
}
return option, nil
}
func (tkg *TabKelainanGlobalServices) GetKelainanGlobalMCU(mcuID string) (models.Barchart, error) {
logger, _ := zap.NewProduction()
var option models.Barchart
var data []models.KelainanGlobalMCUModel
q := `
SELECT
IFNULL(Nat_TestName ,Mcu_KelainanGroupName) AS Test,
COUNT(Mgm_HeaderT_OrderHeaderID) AS total
FROM mgm_header
JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y'
JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID
JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
LEFT JOIN nat_test ON Nat_TestCode = Mgm_HeaderNat_TestCode
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ?
AND Mgm_HeaderIsNormal = 'N'
GROUP BY Mcu_KelainanGroupID ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC
`
// Mgm_DetailMcu_KelainanID ->> versi php
// Mcu_KelainanGroupID ->> versi excel
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kelainan global mcu %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Kelainan MCU"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
max := 1
for _, d := range data {
if d.Total >= max {
max = d.Total
}
}
for i, d := range data {
percentage := float64(d.Total) / float64(max) * 100
roundedPercentage := math.Round(percentage*100) / 100
percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64)
chartData.Source = append(chartData.Source, []interface{}{
i, d.Total, d.Test, percentStr,
})
}
option, err := tkg.GetBarChartConf(title, chartData)
if err != nil {
return option, fmt.Errorf("error insert data to barchart %v", err)
}
return option, nil
}
func (tkg *TabKelainanGlobalServices) GetKelainanFisik(mcuID string) (models.Barchart, error) {
logger, _ := zap.NewProduction()
var option models.Barchart
var data []models.KelainanGlobalFisikModel
q := `
SELECT
Mcu_KelainanName,
COUNT(Mgm_HeaderT_OrderHeaderID) AS total
FROM mgm_header
JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID
AND Mgm_DetailIsActive = 'Y'
JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID
JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ?
AND Mgm_HeaderType = 'F'
AND Mgm_HeaderIsNormal = 'N'
GROUP BY Mcu_KelainanID
ORDER BY total DESC
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kelainan global fisik %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Kelainan Fisik"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
max := 1
for _, d := range data {
if d.Total >= max {
max = d.Total
}
}
for _, d := range data {
percentage := float64(d.Total) / float64(max) * 100
roundedPercentage := math.Round(percentage*100) / 100
percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64)
chartData.Source = append(chartData.Source, []interface{}{
d.Total, d.Total, d.Mcu_KelainanName, percentStr,
})
}
option, err := tkg.GetBarChartConf(title, chartData)
if err != nil {
return option, nil
}
return option, nil
}
func (tkg *TabKelainanGlobalServices) GetKelainanGlobalV2(mcuID string) (models.Barchart, error) {
var option models.Barchart
var data []models.KelainanGlobalModel
q := `
SELECT * FROM (
SELECT Mcu_KelainanID,
Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as Total
FROM t_kelainan_lab
JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID
where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
UNION
SELECT Mcu_KelainanID, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as Total
FROM t_kelainan_nonlab
JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID
join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND
T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID
where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
UNION
SELECT Mcu_KelainanID, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as Total
FROM t_kelainan_fisik
JOIN t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summaryfisik ON T_KelainanFiskMcu_FisikSummaryID = Mcu_SummaryFisikID AND
Mcu_SummaryFisikID NOT IN (63,67,68,69,70,71,72,73)
join mcu_kelainan on Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? AND
Mcu_KelainanClasification NOT IN ('who','kemenkes','JNC-VIII','ESC/ESH')
group by Mcu_KelainanID
) a
ORDER BY total DESC
LIMIT 10
`
if err := dbx.Handlex.Select(&data, q, mcuID, mcuID, mcuID); err != nil {
return option, fmt.Errorf("error get data kelainan global %v", err)
}
var jumlahPeserta models.TotalPesertaModel
q = `
SELECT
COUNT(distinct(T_OrderHeaderID)) as peserta,
COUNT( distinct(Mcu_PreregisterPatientsM_PatientID)) as total
FROM mcu_preregister_patients
LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderIsActive = 'Y'
WHERE
Mcu_PreregisterPatientsMgm_McuID = ? AND
Mcu_PreregisterPatientsIsActive = 'Y'
`
if err := dbx.Handlex.Get(&jumlahPeserta, q, mcuID); err != nil {
return option, fmt.Errorf("error get jumlah peserta %v", err)
}
title := "Kelainan Global (10 Terbesar)"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
for i, d := range data {
percentage := float64(d.Total) / float64(jumlahPeserta.Peserta) * 100
roundedPercentage := math.Round(percentage*100) / 100
percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64)
newText := utils.SplitStrings(d.Test, 2)
chartData.Source = append(chartData.Source, []interface{}{
i, d.Total, newText, percentStr,
})
}
option, err := tkg.GetBarChartConf(title, chartData)
if err != nil {
return option, fmt.Errorf("error insert data to barchart %v", err)
}
return option, nil
}
func (tkg *TabKelainanGlobalServices) GetChartRenderGlobal(mcuID string) ([]models.McuTabModels, error) {
var ret []models.McuTabModels
q := `
SELECT
Mcu_ImageGrafikGroupResult,
Mcu_ImageGrafikGroupMenu,
Mcu_ImageGrafikName,
Mcu_ImageGrafikJsonRender
FROM mgm_mcugrafik
JOIN mcu_image_grafik ON Mcu_ImageGrafikID = Mgm_McuGrafikMcu_ImageGrafikID
WHERE Mgm_McuGrafikMgm_McuID = ?
AND Mcu_ImageGrafikGroupMenu = "GLOBAL"
AND Mgm_McuGrafikIsActive = 'Y'
ORDER BY Mcu_ImageGrafikID
`
if err := dbx.Handlex.Select(&ret, q, mcuID); err != nil {
return ret, fmt.Errorf("error get data tab peserta: %v", err)
}
return ret, nil
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,267 +1,267 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"strconv"
"go.uber.org/zap"
)
type TabKepersertaanServices struct {
TabKepersertaanServiceStore db.AppStore
}
func NewTabKepersertaanService(store db.AppStore) *TabKepersertaanServices {
return &TabKepersertaanServices{
TabKepersertaanServiceStore: store,
}
}
func (tkp *TabKepersertaanServices) GetPieChartConf(title string, subtext string, data []models.SeriesData) (models.Piechart, error) {
option := models.Piechart{
Title: struct {
Text string `json:"text"`
SubText string `json:"subtext"`
Left string `json:"left"`
}{
Text: title,
SubText: subtext,
Left: "center",
},
Tooltip: struct {
Trigger string `json:"trigger"`
}{
Trigger: "item",
},
Legend: struct {
Top string `json:"top"`
Left string `json:"left"`
Orient string `json:"orient"`
Height int `json:"height"`
}{
Top: "bottom",
Left: "center",
Orient: "vertical",
Height: 75,
},
Series: []models.Series{
{
Label: struct {
Position string `json:"position"`
Formatter string `json:"formatter"`
}{
Position: "inner",
Formatter: "{d}%",
},
Name: "Access From",
Type: "pie",
Radius: []string{"20%", "50%"},
ItemStyle: struct {
BorderRadius int `json:"borderRadius"`
BorderColor string `json:"borderColor"`
BorderWidth int `json:"borderWidth"`
}{
BorderRadius: 10,
BorderColor: "#fff",
BorderWidth: 2,
},
Data: data,
Emphasis: struct {
ItemStyle struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
} `json:"itemStyle"`
}{
ItemStyle: struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
}{
ShadowBlur: 10,
ShadowOffsetX: 0,
ShadowColor: "rgba(0, 0, 0, 0.5)",
},
},
},
},
}
return option, nil
}
func (tkp *TabKepersertaanServices) GetTotalKepesertaanMCU(mcuID string) (models.Piechart, error) {
logger, _ := zap.NewProduction()
var option models.Piechart
var data models.TotalPesertaModel
q := `
SELECT
COUNT(distinct(T_OrderHeaderID)) as peserta,
COUNT( distinct(Mcu_PreregisterPatientsM_PatientID)) as total
FROM mcu_preregister_patients
LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderIsActive = 'Y'
WHERE
Mcu_PreregisterPatientsMgm_McuID = ? AND
Mcu_PreregisterPatientsIsActive = 'Y'
`
if err := dbx.Handlex.Get(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get total participant %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Peserta MCU"
subtext := "Total Peserta " + strconv.Itoa(data.Total)
chartData := []models.SeriesData{}
if data.Total == 0 {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
} else {
chartData = []models.SeriesData{
{
Value: data.Peserta,
Name: "Sudah MCU: " + strconv.Itoa(data.Peserta) + " peserta",
},
{
Value: data.Total - data.Peserta,
Name: "Belum MCU: " + strconv.Itoa(data.Total-data.Peserta) + " peserta",
},
}
}
option, err := tkp.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get piechart total peserta: %v", err)
}
return option, nil
}
func (tkp *TabKepersertaanServices) GetKepesertaanByGender(mcuID string) (models.Piechart, error) {
logger, _ := zap.NewProduction()
var option models.Piechart
var data []models.GenderPesertaModel
title := "Peserta MCU"
subtext := "Berdasarkan jenis kelamin"
chartData := []models.SeriesData{}
q := `
SELECT IF(M_PatientGender = 'male','Laki-laki','Perempuan') as M_PatientGender,
COUNT(T_OrderHeaderID) as Jumlah
FROM t_orderheader
LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
WHERE T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y'
GROUP BY M_PatientGender
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get total gender %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Jumlah,
Name: d.M_PatientGender + ": " + strconv.Itoa(d.Jumlah) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkp.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get piechart total gender: %v", err)
}
return option, nil
}
func (tkp *TabKepersertaanServices) GetKepesertaanByUmur(mcuID string) (models.Piechart, error) {
logger, _ := zap.NewProduction()
var option models.Piechart
var data []models.UmurPesertaModel
title := "Peserta MCU"
subtext := "Berdasarkan umur"
chartData := []models.SeriesData{}
q := `
SELECT
CASE
WHEN LEFT(T_OrderHeaderM_PatientAge,2) < '30' THEN "1. < 30 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '30' AND left(T_OrderHeaderM_PatientAge,2) < '40' THEN "2. 30 -< 40 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '40' AND left(T_OrderHeaderM_PatientAge,2) < '50' THEN "3. 40 - < 50 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '50' THEN "4. > 50 tahun" ELSE ""
END AS umur,
COUNT(T_OrderHeaderID) as total
FROM t_orderheader
LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
WHERE t_orderheaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y'
GROUP BY
CASE
WHEN LEFT(T_OrderHeaderM_PatientAge,2) < '30' THEN "1. < 30 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '30' AND left(T_OrderHeaderM_PatientAge,2) < '40' THEN "2. 30 -< 40 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '40' AND left(T_OrderHeaderM_PatientAge,2) < '50' THEN "3. 40 - < 50 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '50' THEN "4. > 50 tahun" ELSE ""
END
ORDER BY umur
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data jumlah umur: %v", err)
}
defer logger.Sync()
logger.Info("response data", zap.Any("data", data))
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Total,
Name: d.Umur + ": " + strconv.Itoa(d.Total) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkp.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get piechart jumlah umur: %v", err)
}
return option, nil
}
func (tkp *TabKepersertaanServices) GetChartRenderPeserta(mcuID string) ([]models.McuTabModels, error) {
var ret []models.McuTabModels
q := `
SELECT
Mcu_ImageGrafikGroupResult,
Mcu_ImageGrafikGroupMenu,
Mcu_ImageGrafikName,
Mcu_ImageGrafikJsonRender
FROM mgm_mcugrafik
JOIN mcu_image_grafik ON Mcu_ImageGrafikID = Mgm_McuGrafikMcu_ImageGrafikID
WHERE Mgm_McuGrafikMgm_McuID = ?
AND Mcu_ImageGrafikGroupMenu = "PESERTA"
AND Mgm_McuGrafikIsActive = 'Y'
ORDER BY Mcu_ImageGrafikID
`
if err := dbx.Handlex.Select(&ret, q, mcuID); err != nil {
return ret, fmt.Errorf("error get data tab peserta: %v", err)
}
return ret, nil
}
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"strconv"
"go.uber.org/zap"
)
type TabKepersertaanServices struct {
TabKepersertaanServiceStore db.AppStore
}
func NewTabKepersertaanService(store db.AppStore) *TabKepersertaanServices {
return &TabKepersertaanServices{
TabKepersertaanServiceStore: store,
}
}
func (tkp *TabKepersertaanServices) GetPieChartConf(title string, subtext string, data []models.SeriesData) (models.Piechart, error) {
option := models.Piechart{
Title: struct {
Text string `json:"text"`
SubText string `json:"subtext"`
Left string `json:"left"`
}{
Text: title,
SubText: subtext,
Left: "center",
},
Tooltip: struct {
Trigger string `json:"trigger"`
}{
Trigger: "item",
},
Legend: struct {
Top string `json:"top"`
Left string `json:"left"`
Orient string `json:"orient"`
Height int `json:"height"`
}{
Top: "bottom",
Left: "center",
Orient: "vertical",
Height: 75,
},
Series: []models.Series{
{
Label: struct {
Position string `json:"position"`
Formatter string `json:"formatter"`
}{
Position: "inner",
Formatter: "{d}%",
},
Name: "Access From",
Type: "pie",
Radius: []string{"20%", "50%"},
ItemStyle: struct {
BorderRadius int `json:"borderRadius"`
BorderColor string `json:"borderColor"`
BorderWidth int `json:"borderWidth"`
}{
BorderRadius: 10,
BorderColor: "#fff",
BorderWidth: 2,
},
Data: data,
Emphasis: struct {
ItemStyle struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
} `json:"itemStyle"`
}{
ItemStyle: struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
}{
ShadowBlur: 10,
ShadowOffsetX: 0,
ShadowColor: "rgba(0, 0, 0, 0.5)",
},
},
},
},
}
return option, nil
}
func (tkp *TabKepersertaanServices) GetTotalKepesertaanMCU(mcuID string) (models.Piechart, error) {
logger, _ := zap.NewProduction()
var option models.Piechart
var data models.TotalPesertaModel
q := `
SELECT
COUNT(distinct(T_OrderHeaderID)) as peserta,
COUNT( distinct(Mcu_PreregisterPatientsM_PatientID)) as total
FROM mcu_preregister_patients
LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderIsActive = 'Y'
WHERE
Mcu_PreregisterPatientsMgm_McuID = ? AND
Mcu_PreregisterPatientsIsActive = 'Y'
`
if err := dbx.Handlex.Get(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get total participant %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Peserta MCU"
subtext := "Total Peserta " + strconv.Itoa(data.Total)
chartData := []models.SeriesData{}
if data.Total == 0 {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
} else {
chartData = []models.SeriesData{
{
Value: data.Peserta,
Name: "Sudah MCU: " + strconv.Itoa(data.Peserta) + " peserta",
},
{
Value: data.Total - data.Peserta,
Name: "Belum MCU: " + strconv.Itoa(data.Total-data.Peserta) + " peserta",
},
}
}
option, err := tkp.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get piechart total peserta: %v", err)
}
return option, nil
}
func (tkp *TabKepersertaanServices) GetKepesertaanByGender(mcuID string) (models.Piechart, error) {
logger, _ := zap.NewProduction()
var option models.Piechart
var data []models.GenderPesertaModel
title := "Peserta MCU"
subtext := "Berdasarkan jenis kelamin"
chartData := []models.SeriesData{}
q := `
SELECT IF(M_PatientGender = 'male','Laki-laki','Perempuan') as M_PatientGender,
COUNT(T_OrderHeaderID) as Jumlah
FROM t_orderheader
LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
WHERE T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y'
GROUP BY M_PatientGender
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get total gender %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Jumlah,
Name: d.M_PatientGender + ": " + strconv.Itoa(d.Jumlah) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkp.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get piechart total gender: %v", err)
}
return option, nil
}
func (tkp *TabKepersertaanServices) GetKepesertaanByUmur(mcuID string) (models.Piechart, error) {
logger, _ := zap.NewProduction()
var option models.Piechart
var data []models.UmurPesertaModel
title := "Peserta MCU"
subtext := "Berdasarkan umur"
chartData := []models.SeriesData{}
q := `
SELECT
CASE
WHEN LEFT(T_OrderHeaderM_PatientAge,2) < '30' THEN "1. < 30 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '30' AND left(T_OrderHeaderM_PatientAge,2) < '40' THEN "2. 30 -< 40 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '40' AND left(T_OrderHeaderM_PatientAge,2) < '50' THEN "3. 40 - < 50 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '50' THEN "4. > 50 tahun" ELSE ""
END AS umur,
COUNT(T_OrderHeaderID) as total
FROM t_orderheader
LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
WHERE t_orderheaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y'
GROUP BY
CASE
WHEN LEFT(T_OrderHeaderM_PatientAge,2) < '30' THEN "1. < 30 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '30' AND left(T_OrderHeaderM_PatientAge,2) < '40' THEN "2. 30 -< 40 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '40' AND left(T_OrderHeaderM_PatientAge,2) < '50' THEN "3. 40 - < 50 tahun"
WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '50' THEN "4. > 50 tahun" ELSE ""
END
ORDER BY umur
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data jumlah umur: %v", err)
}
defer logger.Sync()
logger.Info("response data", zap.Any("data", data))
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Total,
Name: d.Umur + ": " + strconv.Itoa(d.Total) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkp.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get piechart jumlah umur: %v", err)
}
return option, nil
}
func (tkp *TabKepersertaanServices) GetChartRenderPeserta(mcuID string) ([]models.McuTabModels, error) {
var ret []models.McuTabModels
q := `
SELECT
Mcu_ImageGrafikGroupResult,
Mcu_ImageGrafikGroupMenu,
Mcu_ImageGrafikName,
Mcu_ImageGrafikJsonRender
FROM mgm_mcugrafik
JOIN mcu_image_grafik ON Mcu_ImageGrafikID = Mgm_McuGrafikMcu_ImageGrafikID
WHERE Mgm_McuGrafikMgm_McuID = ?
AND Mcu_ImageGrafikGroupMenu = "PESERTA"
AND Mgm_McuGrafikIsActive = 'Y'
ORDER BY Mcu_ImageGrafikID
`
if err := dbx.Handlex.Select(&ret, q, mcuID); err != nil {
return ret, fmt.Errorf("error get data tab peserta: %v", err)
}
return ret, nil
}

View File

@@ -1,307 +1,307 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"go.uber.org/zap"
)
type TabKesimpulanServices struct {
TabKesimpulanStore db.AppStore
}
func NewTabKesimpulanServices(uStore db.AppStore) *TabKesimpulanServices {
return &TabKesimpulanServices{
TabKesimpulanStore: uStore,
}
}
func (tks *TabKesimpulanServices) GetListKesimpulanLab(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listLab []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'L'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalLab string
if len(dataTot) > 0 {
totalLab = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalLab),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'L'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listLab, query, totalLab, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data lab",
zap.Any("id", id),
zap.Any("list data", listLab),
)
return listLab, fmt.Errorf("QUERY_FAILED")
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cekkkk", listLab),
)
return listLab, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listNonLab []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'NL'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalLab string
if len(dataTot) > 0 {
totalLab = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalLab),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'NL'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listNonLab, query, totalLab, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data NON lab",
zap.Any("id", id),
zap.Any("list data", listNonLab),
)
return listNonLab, fmt.Errorf("QUERY_FAILED")
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cekkkk", listNonLab),
)
return listNonLab, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanFisik(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listFisik []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'F'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalFisik string
if len(dataTot) > 0 {
totalFisik = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalFisik),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'F'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listFisik, query, totalFisik, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data fisik",
zap.Any("id", id),
zap.Any("list data", listFisik),
)
return listFisik, fmt.Errorf("QUERY_FAILED")
}
return listFisik, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanLabV2(id string) ([]models.ModelKesimpulanLab, error) {
var data []models.ModelKesimpulanLab
q := `
SELECT Mcu_KelainanID as nomor,
Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_lab
JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID
where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 3
`
if err := dbx.Handlex.Select(&data, q, id); err != nil {
return data, fmt.Errorf("error get data top 3 kelainan lab %v", err)
}
return data, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanNonLabV2(id string) ([]models.ModelKesimpulanLab, error) {
var data []models.ModelKesimpulanLab
q := `
SELECT Mcu_KelainanID as nomor, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_nonlab
JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID
join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND
T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID
where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 3
`
if err := dbx.Handlex.Select(&data, q, id); err != nil {
return data, fmt.Errorf("error get data top 3 kelainan non lab %v", err)
}
return data, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanFisikV2(id string) ([]models.ModelKesimpulanLab, error) {
var data []models.ModelKesimpulanLab
q := `
SELECT Mcu_KelainanID as nomor, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_fisik
JOIN t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summaryfisik ON T_KelainanFiskMcu_FisikSummaryID = Mcu_SummaryFisikID AND
Mcu_SummaryFisikID NOT IN (63,67,68,69,70,71,72,73)
join mcu_kelainan on Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? AND
Mcu_KelainanClasification NOT IN ('who','kemenkes','JNC-VIII','ESC/ESH')
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 3
`
if err := dbx.Handlex.Select(&data, q, id); err != nil {
return data, fmt.Errorf("error get data top 3 kelainan fisik %v", err)
}
return data, nil
}
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"go.uber.org/zap"
)
type TabKesimpulanServices struct {
TabKesimpulanStore db.AppStore
}
func NewTabKesimpulanServices(uStore db.AppStore) *TabKesimpulanServices {
return &TabKesimpulanServices{
TabKesimpulanStore: uStore,
}
}
func (tks *TabKesimpulanServices) GetListKesimpulanLab(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listLab []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'L'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalLab string
if len(dataTot) > 0 {
totalLab = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalLab),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'L'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listLab, query, totalLab, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data lab",
zap.Any("id", id),
zap.Any("list data", listLab),
)
return listLab, fmt.Errorf("QUERY_FAILED")
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cekkkk", listLab),
)
return listLab, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listNonLab []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'NL'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalLab string
if len(dataTot) > 0 {
totalLab = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalLab),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'NL'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listNonLab, query, totalLab, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data NON lab",
zap.Any("id", id),
zap.Any("list data", listNonLab),
)
return listNonLab, fmt.Errorf("QUERY_FAILED")
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cekkkk", listNonLab),
)
return listNonLab, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanFisik(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listFisik []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'F'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalFisik string
if len(dataTot) > 0 {
totalFisik = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalFisik),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'F'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listFisik, query, totalFisik, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data fisik",
zap.Any("id", id),
zap.Any("list data", listFisik),
)
return listFisik, fmt.Errorf("QUERY_FAILED")
}
return listFisik, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanLabV2(id string) ([]models.ModelKesimpulanLab, error) {
var data []models.ModelKesimpulanLab
q := `
SELECT Mcu_KelainanID as nomor,
Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_lab
JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID
where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 3
`
if err := dbx.Handlex.Select(&data, q, id); err != nil {
return data, fmt.Errorf("error get data top 3 kelainan lab %v", err)
}
return data, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanNonLabV2(id string) ([]models.ModelKesimpulanLab, error) {
var data []models.ModelKesimpulanLab
q := `
SELECT Mcu_KelainanID as nomor, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_nonlab
JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID
join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND
T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID
where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 3
`
if err := dbx.Handlex.Select(&data, q, id); err != nil {
return data, fmt.Errorf("error get data top 3 kelainan non lab %v", err)
}
return data, nil
}
func (tks *TabKesimpulanServices) GetListKesimpulanFisikV2(id string) ([]models.ModelKesimpulanLab, error) {
var data []models.ModelKesimpulanLab
q := `
SELECT Mcu_KelainanID as nomor, Mcu_KelainanName as Test,
count(distinct T_OrderHeaderID) as total
FROM t_kelainan_fisik
JOIN t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID
JOIN mcu_summaryfisik ON T_KelainanFiskMcu_FisikSummaryID = Mcu_SummaryFisikID AND
Mcu_SummaryFisikID NOT IN (63,67,68,69,70,71,72,73)
join mcu_kelainan on Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? AND
Mcu_KelainanClasification NOT IN ('who','kemenkes','JNC-VIII','ESC/ESH')
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 3
`
if err := dbx.Handlex.Select(&data, q, id); err != nil {
return data, fmt.Errorf("error get data top 3 kelainan fisik %v", err)
}
return data, nil
}

View File

@@ -1,198 +1,198 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"go.uber.org/zap"
)
type TabKeuanganServices struct {
TabKeuanganStore db.AppStore
}
func NewTabKeuanganServices(uStore db.AppStore) *TabKeuanganServices {
return &TabKeuanganServices{
TabKeuanganStore: uStore,
}
}
func (tks *TabKeuanganServices) GetTotalOrderKeuangan(mcuID string) (int, error) {
logger, _ := zap.NewProduction()
var mcu models.DashboardPic
ret := 0
var data []models.TotalOrderHeader
q := `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuCorporateID,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuID = ?
`
if err := dbx.Handlex.Get(&mcu, q, mcuID); err != nil {
defer logger.Sync()
logger.Info("error get corportate id", zap.Any("mcuID", mcuID))
return ret, fmt.Errorf("error get corporate id: %v", err)
}
q = `
SELECT
T_OrderHeaderID,
T_OrderHeaderCorporateID,
T_OrderHeaderTotal,
T_OrderHeaderCreated
FROM t_orderheader
WHERE T_OrderHeaderIsActive = 'Y'
AND T_OrderHeaderCorporateID = ?
`
if err := dbx.Handlex.Select(&data, q, mcu.Mgm_McuCorporateID); err != nil {
defer logger.Sync()
logger.Info("error get orderheader data by corp id", zap.Any("corpID", mcu.Mgm_McuCorporateID))
return ret, fmt.Errorf("error get orderheader data by corp id: %v", err)
}
for _, d := range data {
ret = ret + int(d.T_OrderHeaderTotal)
}
return ret, nil
}
func (tks *TabKeuanganServices) GetTotalCardData(mcuID string) (models.TotalBillCard, error) {
logger, _ := zap.NewProduction()
var ret models.TotalBillCard
var mcu models.DashboardPic
var uang []models.KeuanganModel
q := `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuCorporateID,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuID = ?
`
if err := dbx.Handlex.Get(&mcu, q, mcuID); err != nil {
defer logger.Sync()
logger.Info("error get corportate id", zap.Any("mcuID", mcuID))
return ret, fmt.Errorf("error get corporate id: %v", err)
}
q = `
SELECT
fb.F_BillID,
fb.F_BillNo,
fb.F_BillCorporateID,
DATE_FORMAT(fb.F_BillDueDate, '%e %M %Y') AS F_BillDueDate,
fb.F_BillTotal,
fb.F_BillUnpaid,
DATE_FORMAT(fb.F_BillCreated, '%e %M %Y') AS F_BillCreated
FROM f_bill fb
WHERE fb.F_BillIsActive = 'Y'
AND fb.F_BillCorporateID = ?
`
if err := dbx.Handlex.Select(&uang, q, mcu.Mgm_McuCorporateID); err != nil {
defer logger.Sync()
logger.Error("Error Get List Bill Data", zap.Any("corpID", mcu.Mgm_McuCorporateID))
return ret, fmt.Errorf("error query database: %v", err)
}
for _, bill := range uang {
ret.TotalTagihan = ret.TotalTagihan + bill.F_BillTotal
ret.TotalHutang = ret.TotalHutang + bill.F_BillUnpaid
}
ret.TotalPelunasan = ret.TotalTagihan - ret.TotalHutang
return ret, nil
}
func (tks *TabKeuanganServices) GetListingDataKeuangan(mcuID string, currentpage int, rowperpage int) ([]models.KeuanganModel, int, error) {
logger, _ := zap.NewProduction()
var ret []models.KeuanganModel
var totalData int
var mcu models.DashboardPic
q := `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuCorporateID,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuID = ?
`
if err := dbx.Handlex.Get(&mcu, q, mcuID); err != nil {
defer logger.Sync()
logger.Info("error get corportate id", zap.Any("mcuID", mcuID))
return ret, 0, fmt.Errorf("error get corporate id: %v", err)
}
offset := (currentpage - 1) * rowperpage
querytotal := `
SELECT COUNT(*)
FROM f_bill
WHERE F_BillIsActive = 'Y' AND F_BillCorporateID = ?
`
if err := dbx.Handlex.Get(&totalData, querytotal, mcu.Mgm_McuCorporateID); err != nil {
return nil, 0, fmt.Errorf("error query get total data: %v", err)
}
q = `
SELECT
fb.F_BillID,
fb.F_BillNo,
fb.F_BillCorporateID,
DATE_FORMAT(fb.F_BillDueDate, '%e %M %Y') AS F_BillDueDate,
fb.F_BillTotal,
fb.F_BillUnpaid,
DATE_FORMAT(fb.F_BillCreated, '%e %M %Y') AS F_BillCreated
FROM f_bill fb
WHERE fb.F_BillIsActive = 'Y'
AND fb.F_BillCorporateID = ?
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&ret, q, mcu.Mgm_McuCorporateID, rowperpage, offset); err != nil {
defer logger.Sync()
logger.Error("Error Get List Bill Data", zap.Any("corpID", mcu.Mgm_McuCorporateID))
return ret, 0, fmt.Errorf("error query database: %v", err)
}
for idx, data := range ret {
var paym []models.BillPaymentModel
q := `
SELECT
F_BillPaymentID,
F_BillPaymentF_BillID,
DATE_FORMAT(F_BillPaymentDate, '%e %M %Y') AS F_BillPaymentDate,
F_BillPaymentNumber,
F_BillPaymentAmount
FROM f_bill_payment
WHERE F_BillPaymentIsActive = 'Y'
AND F_BillPaymentF_BillID = ?
`
if err := dbx.Handlex.Select(&paym, q, data.F_BillID); err != nil {
defer logger.Sync()
logger.Error("Error Get List Payment Data", zap.Any("billID", data.F_BillID))
return ret, 0, fmt.Errorf("error query database: %v", err)
}
ret[idx].BillPayment = append(ret[idx].BillPayment, paym...)
ret[idx].TotalBillPayment = data.F_BillTotal - data.F_BillUnpaid
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
return ret, totalPage, nil
}
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"go.uber.org/zap"
)
type TabKeuanganServices struct {
TabKeuanganStore db.AppStore
}
func NewTabKeuanganServices(uStore db.AppStore) *TabKeuanganServices {
return &TabKeuanganServices{
TabKeuanganStore: uStore,
}
}
func (tks *TabKeuanganServices) GetTotalOrderKeuangan(mcuID string) (int, error) {
logger, _ := zap.NewProduction()
var mcu models.DashboardPic
ret := 0
var data []models.TotalOrderHeader
q := `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuCorporateID,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuID = ?
`
if err := dbx.Handlex.Get(&mcu, q, mcuID); err != nil {
defer logger.Sync()
logger.Info("error get corportate id", zap.Any("mcuID", mcuID))
return ret, fmt.Errorf("error get corporate id: %v", err)
}
q = `
SELECT
T_OrderHeaderID,
T_OrderHeaderCorporateID,
T_OrderHeaderTotal,
T_OrderHeaderCreated
FROM t_orderheader
WHERE T_OrderHeaderIsActive = 'Y'
AND T_OrderHeaderCorporateID = ?
`
if err := dbx.Handlex.Select(&data, q, mcu.Mgm_McuCorporateID); err != nil {
defer logger.Sync()
logger.Info("error get orderheader data by corp id", zap.Any("corpID", mcu.Mgm_McuCorporateID))
return ret, fmt.Errorf("error get orderheader data by corp id: %v", err)
}
for _, d := range data {
ret = ret + int(d.T_OrderHeaderTotal)
}
return ret, nil
}
func (tks *TabKeuanganServices) GetTotalCardData(mcuID string) (models.TotalBillCard, error) {
logger, _ := zap.NewProduction()
var ret models.TotalBillCard
var mcu models.DashboardPic
var uang []models.KeuanganModel
q := `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuCorporateID,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuID = ?
`
if err := dbx.Handlex.Get(&mcu, q, mcuID); err != nil {
defer logger.Sync()
logger.Info("error get corportate id", zap.Any("mcuID", mcuID))
return ret, fmt.Errorf("error get corporate id: %v", err)
}
q = `
SELECT
fb.F_BillID,
fb.F_BillNo,
fb.F_BillCorporateID,
DATE_FORMAT(fb.F_BillDueDate, '%e %M %Y') AS F_BillDueDate,
fb.F_BillTotal,
fb.F_BillUnpaid,
DATE_FORMAT(fb.F_BillCreated, '%e %M %Y') AS F_BillCreated
FROM f_bill fb
WHERE fb.F_BillIsActive = 'Y'
AND fb.F_BillCorporateID = ?
`
if err := dbx.Handlex.Select(&uang, q, mcu.Mgm_McuCorporateID); err != nil {
defer logger.Sync()
logger.Error("Error Get List Bill Data", zap.Any("corpID", mcu.Mgm_McuCorporateID))
return ret, fmt.Errorf("error query database: %v", err)
}
for _, bill := range uang {
ret.TotalTagihan = ret.TotalTagihan + bill.F_BillTotal
ret.TotalHutang = ret.TotalHutang + bill.F_BillUnpaid
}
ret.TotalPelunasan = ret.TotalTagihan - ret.TotalHutang
return ret, nil
}
func (tks *TabKeuanganServices) GetListingDataKeuangan(mcuID string, currentpage int, rowperpage int) ([]models.KeuanganModel, int, error) {
logger, _ := zap.NewProduction()
var ret []models.KeuanganModel
var totalData int
var mcu models.DashboardPic
q := `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuCorporateID,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuID = ?
`
if err := dbx.Handlex.Get(&mcu, q, mcuID); err != nil {
defer logger.Sync()
logger.Info("error get corportate id", zap.Any("mcuID", mcuID))
return ret, 0, fmt.Errorf("error get corporate id: %v", err)
}
offset := (currentpage - 1) * rowperpage
querytotal := `
SELECT COUNT(*)
FROM f_bill
WHERE F_BillIsActive = 'Y' AND F_BillCorporateID = ?
`
if err := dbx.Handlex.Get(&totalData, querytotal, mcu.Mgm_McuCorporateID); err != nil {
return nil, 0, fmt.Errorf("error query get total data: %v", err)
}
q = `
SELECT
fb.F_BillID,
fb.F_BillNo,
fb.F_BillCorporateID,
DATE_FORMAT(fb.F_BillDueDate, '%e %M %Y') AS F_BillDueDate,
fb.F_BillTotal,
fb.F_BillUnpaid,
DATE_FORMAT(fb.F_BillCreated, '%e %M %Y') AS F_BillCreated
FROM f_bill fb
WHERE fb.F_BillIsActive = 'Y'
AND fb.F_BillCorporateID = ?
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&ret, q, mcu.Mgm_McuCorporateID, rowperpage, offset); err != nil {
defer logger.Sync()
logger.Error("Error Get List Bill Data", zap.Any("corpID", mcu.Mgm_McuCorporateID))
return ret, 0, fmt.Errorf("error query database: %v", err)
}
for idx, data := range ret {
var paym []models.BillPaymentModel
q := `
SELECT
F_BillPaymentID,
F_BillPaymentF_BillID,
DATE_FORMAT(F_BillPaymentDate, '%e %M %Y') AS F_BillPaymentDate,
F_BillPaymentNumber,
F_BillPaymentAmount
FROM f_bill_payment
WHERE F_BillPaymentIsActive = 'Y'
AND F_BillPaymentF_BillID = ?
`
if err := dbx.Handlex.Select(&paym, q, data.F_BillID); err != nil {
defer logger.Sync()
logger.Error("Error Get List Payment Data", zap.Any("billID", data.F_BillID))
return ret, 0, fmt.Errorf("error query database: %v", err)
}
ret[idx].BillPayment = append(ret[idx].BillPayment, paym...)
ret[idx].TotalBillPayment = data.F_BillTotal - data.F_BillUnpaid
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
return ret, totalPage, nil
}

View File

@@ -1,372 +1,372 @@
package corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"encoding/json"
"fmt"
"math"
"strconv"
"go.uber.org/zap"
)
type PatientServices struct {
PatientStore db.AppStore
}
func NewPatientServices(uStore db.AppStore) *PatientServices {
return &PatientServices{
PatientStore: uStore,
}
}
func (sp *PatientServices) GetPatientData(email string) (string, error) {
var ret string
prmEmail := "%" + email + "%"
q := `
SELECT
M_PatientName
FROM m_patient
WHERE M_PatientEmail LIKE ?
AND M_PatientIsActive = 'Y'
`
if err := dbx.Handlex.Get(&ret, q, prmEmail); err != nil {
return ret, err
}
return ret, nil
}
func (sp *PatientServices) GetDashboardPatientBreadcrumb(title string) (models.BreadCrumbV1, error) {
breadcrumb := models.BreadCrumbV1{
Title: title,
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/corp/dashboard_pat",
},
{
Item: "PT. ABC",
Url: "",
},
{
Item: title,
Url: "",
},
},
}
return breadcrumb, nil
}
func (sp *PatientServices) GetListtingData(email string, currentpage int, rowperpage int) ([]models.DashboardPatient, int, error) {
logger, _ := zap.NewProduction()
var ret []models.DashboardPatient
var totalData int
prmEmail := "%" + email + "%"
offset := (currentpage - 1) * rowperpage
q := `
SELECT COUNT(*)
FROM m_patient mp
JOIN t_orderheader toh ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID AND toh.T_OrderHeaderIsActive = 'Y'
WHERE mp.M_PatientEmail LIKE ?
AND mp.M_PatientIsActive = 'Y'
`
if err := dbx.Handlex.Get(&totalData, q, prmEmail); err != nil {
return nil, 0, fmt.Errorf("error query get total data: %v", err)
}
q = `
SELECT
toh.T_OrderHeaderID,
toh.T_OrderHeaderDate,
toh.T_OrderHeaderLabNumber,
toh.T_OrderHeaderM_PatientID,
toh.T_OrderHeaderCorporateID,
toh.T_OrderHeaderMgm_McuID,
toh.T_OrderHeaderIsActive
FROM m_patient mp
JOIN t_orderheader toh ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID AND toh.T_OrderHeaderIsActive = 'Y'
WHERE mp.M_PatientEmail LIKE ?
AND mp.M_PatientIsActive = 'Y'
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&ret, q, prmEmail, rowperpage, offset); err != nil {
return nil, 0, fmt.Errorf("error query get list data: %v", err)
}
logger.Info("response", zap.Any("data", ret))
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
return ret, totalPage, nil
}
func (sp *PatientServices) GetListReportPesertaV3(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) {
var returnTab []models.TabViewReportMcu
var GroupResultOrder []models.GroupResultOrderModel
var SoResultData []models.SoResultEntryReportModel
q := `
SELECT
gr.Group_ResultID,
gr.Group_ResultName,
gr.Group_ResultResumeMcu,
gr.Group_ResultUrl,
gr.Group_ResultIsOrderHeader,
gro.Group_ResultOrderOrder,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail todtl
JOIN t_test tt ON todtl.T_OrderDetailT_TestID = tt.T_TestID
AND tt.T_TestIsActive = 'Y'
JOIN group_resultdetail grd ON tt.T_TestID = grd.Group_ResultDetailT_TestID
AND grd.Group_ResultDetailIsActive = 'Y'
JOIN group_result gr ON grd.Group_ResultDetailGroup_ResultID = gr.Group_ResultID
AND gr.Group_ResultIsActive = 'Y'
JOIN group_resultorder gro ON gro.Group_ResultOrderGroup_ResultID = gr.Group_ResultID
AND Group_ResultOrderIsActive = 'Y'
WHERE todtl.T_OrderDetailT_OrderHeaderID = ?
AND todtl.T_OrderDetailIsActive = 'Y'
GROUP BY gr.Group_ResultID
ORDER BY gro.Group_ResultOrderOrder
`
if err := dbx.Handlex.Select(&GroupResultOrder, q, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get group result order: %v", err)
}
q = `
SELECT
sre.So_ResultEntryID,
sre.So_ResultEntryT_OrderHeaderID,
sre.So_ResultEntryT_OrderDetailID,
sre.So_ResultEntryNonlab_TemplateID,
sre.So_ResultEntryNonlab_TemplateName
FROM t_orderdetail tdet
JOIN t_test tt ON tdet.T_OrderDetailT_TestID = tt.T_TestID
AND tt.T_TestIsActive = 'Y'
JOIN so_resultentry sre ON sre.So_ResultEntryT_OrderDetailID = tdet.T_OrderDetailID
AND sre.So_ResultEntryIsActive = 'Y'
WHERE tdet.T_OrderDetailT_OrderHeaderID = ?
AND tdet.T_OrderDetailIsActive = 'Y'
`
if err := dbx.Handlex.Select(&SoResultData, q, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get so result data non lab: %v", err)
}
mapSoResultData := map[string]int{}
for _, so := range SoResultData {
switch so.So_ResultEntryNonlab_TemplateName {
case "ECG":
mapSoResultData["Elektromedik"] = so.So_ResultEntryID
case "Thorax PA":
mapSoResultData["Rontgen"] = so.So_ResultEntryID
case "Fisik Umum", "Fisik Umum K3":
mapSoResultData["FISIK"] = so.So_ResultEntryID
default:
mapSoResultData[so.So_ResultEntryNonlab_TemplateName] = so.So_ResultEntryID
}
}
for _, group := range GroupResultOrder {
var urlMap map[string]string
if err := json.Unmarshal([]byte(group.Group_ResultUrl), &urlMap); err != nil {
return returnTab, fmt.Errorf("error parsing json: %v", err)
}
switch group.Group_ResultResumeMcu {
case "FISIK":
soResultID := strconv.Itoa(mapSoResultData["FISIK"])
if soResultID != "0" {
for key, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: key,
Link: value + "&username=" + staffname + "&PID=" + soResultID + "&tm=" + group.Datetime,
})
}
}
case "NONLAB":
soResultID := strconv.Itoa(mapSoResultData[group.Group_ResultName])
if soResultID != "0" {
for _, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: group.Group_ResultName,
Link: value + "&username=" + staffname + "&PID=" + soResultID + "&tm=" + group.Datetime,
})
}
}
case "LAB":
for _, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: group.Group_ResultName,
Link: value + "&username=" + staffname + "&PID=" + orderheaderID + "&tm=" + group.Datetime,
})
}
default:
for _, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: group.Group_ResultName,
Link: value + "&username=" + staffname + "&PID=" + orderheaderID + "&tm=" + group.Datetime,
})
}
}
}
return returnTab, nil
}
func (sp *PatientServices) GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) {
var returnTab []models.TabViewReportMcu
var profile_patient models.PatientMCU
lab_rpt := ""
sql := `
SELECT
toh.T_OrderHeaderID,
toh.T_OrderHeaderLabNumber,
mp.M_PatientID,
mp.M_PatientName,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderheader toh
JOIN m_patient mp ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID
AND mp.M_PatientIsActive = 'Y'
WHERE toh.T_OrderHeaderID = ? AND toh.T_OrderHeaderIsActive = 'Y'
`
if err := dbx.Handlex.Get(&profile_patient, sql, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get group result order: %v", err)
}
if profile_patient.T_OrderHeaderLabNumber != "" {
lab_rpt = "/birt/frameset?__report=report/one/lab/rpt_test_portal.rptdesign&__format=pdf&PID=" + profile_patient.T_OrderHeaderID + "&tm=" + profile_patient.Datetime + "&username=" + staffname
}
var so_data_rpt []models.SoRptData
fisik := ""
rontgen := ""
ekg := ""
audiometri := ""
spirometri := ""
treadmill := ""
papsmear := ""
sql_rpt := `
SELECT DISTINCT group_resultName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'N'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
UNION
SELECT DISTINCT group_resultName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_SamplingSoT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'Y'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
UNION
SELECT DISTINCT T_TestName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestName NOT IN ('Visus Mata','Buta Warna','Pemeriksaan Lapang Pandang')
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_SamplingSoT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'Y' AND Group_ResultFlagNonLab = 'Y'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
`
if err := dbx.Handlex.Select(&so_data_rpt, sql_rpt, orderheaderID, orderheaderID, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get data so_id: %v", err)
}
for _, d := range so_data_rpt {
switch d.Rpt_name {
case "Pemeriksaan Fisik":
fisik = "/birt/frameset?__report=report/one/mcu/mcu_fisik_history_v2_portal.rptdesign&__format=pdf&PType=fisik&PLang=1&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
// fisik = "/birt/run?__report=report/one/mcu/mcu_fisik_history_v2_portal.rptdesign&__format=pdf&PType=fisik&PLang=1&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Rontgen":
rontgen = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_xray_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Audiometri":
audiometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_audiometri_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Spirometri":
spirometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_spirometri_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "ECG":
ekg = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_ecg_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Treadmill":
treadmill = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_treadmill_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Papsmear":
papsmear = "/birt/frameset?__report=report/one/lab/rpt_test_papsmear_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
}
}
var ResumeData models.ResumeMCU
kesimpulan := ""
// cover := ""
sql_resume := `
SELECT
Mcu_ResumeID,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM mcu_resume
WHERE Mcu_ResumeT_OrderHeaderID = ?
AND Mcu_ResumeIsActive = 'Y' AND Mcu_ResumeStatus = 'VAL'
`
if err := dbx.Handlex.Get(&ResumeData, sql_resume, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get data resume id: %v", err)
}
if ResumeData.Mcu_ResumeID != "" {
// cover = "/birt/frameset?__report=report/one/mcu/rpt_mcu_resume_cover_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime
kesimpulan = "/birt/frameset?__report=report/one/mcu/rpt_mcu_saran_kesimpulan_v2_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime
}
if fisik != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Fisik", Link: fisik})
}
if rontgen != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Rontgen", Link: rontgen})
}
if ekg != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Elektromedik", Link: ekg})
}
if audiometri != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Audiometri", Link: audiometri})
}
if spirometri != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Spirometri", Link: spirometri})
}
if treadmill != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Treadmill", Link: treadmill})
}
if kesimpulan != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Kesimpulan", Link: kesimpulan})
}
if lab_rpt != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Lab", Link: lab_rpt})
}
if papsmear != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Papsmear", Link: papsmear})
}
return returnTab, nil
}
package corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"encoding/json"
"fmt"
"math"
"strconv"
"go.uber.org/zap"
)
type PatientServices struct {
PatientStore db.AppStore
}
func NewPatientServices(uStore db.AppStore) *PatientServices {
return &PatientServices{
PatientStore: uStore,
}
}
func (sp *PatientServices) GetPatientData(email string) (string, error) {
var ret string
prmEmail := "%" + email + "%"
q := `
SELECT
M_PatientName
FROM m_patient
WHERE M_PatientEmail LIKE ?
AND M_PatientIsActive = 'Y'
`
if err := dbx.Handlex.Get(&ret, q, prmEmail); err != nil {
return ret, err
}
return ret, nil
}
func (sp *PatientServices) GetDashboardPatientBreadcrumb(title string) (models.BreadCrumbV1, error) {
breadcrumb := models.BreadCrumbV1{
Title: title,
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/corp/dashboard_pat",
},
{
Item: "PT. ABC",
Url: "",
},
{
Item: title,
Url: "",
},
},
}
return breadcrumb, nil
}
func (sp *PatientServices) GetListtingData(email string, currentpage int, rowperpage int) ([]models.DashboardPatient, int, error) {
logger, _ := zap.NewProduction()
var ret []models.DashboardPatient
var totalData int
prmEmail := "%" + email + "%"
offset := (currentpage - 1) * rowperpage
q := `
SELECT COUNT(*)
FROM m_patient mp
JOIN t_orderheader toh ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID AND toh.T_OrderHeaderIsActive = 'Y'
WHERE mp.M_PatientEmail LIKE ?
AND mp.M_PatientIsActive = 'Y'
`
if err := dbx.Handlex.Get(&totalData, q, prmEmail); err != nil {
return nil, 0, fmt.Errorf("error query get total data: %v", err)
}
q = `
SELECT
toh.T_OrderHeaderID,
toh.T_OrderHeaderDate,
toh.T_OrderHeaderLabNumber,
toh.T_OrderHeaderM_PatientID,
toh.T_OrderHeaderCorporateID,
toh.T_OrderHeaderMgm_McuID,
toh.T_OrderHeaderIsActive
FROM m_patient mp
JOIN t_orderheader toh ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID AND toh.T_OrderHeaderIsActive = 'Y'
WHERE mp.M_PatientEmail LIKE ?
AND mp.M_PatientIsActive = 'Y'
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&ret, q, prmEmail, rowperpage, offset); err != nil {
return nil, 0, fmt.Errorf("error query get list data: %v", err)
}
logger.Info("response", zap.Any("data", ret))
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
return ret, totalPage, nil
}
func (sp *PatientServices) GetListReportPesertaV3(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) {
var returnTab []models.TabViewReportMcu
var GroupResultOrder []models.GroupResultOrderModel
var SoResultData []models.SoResultEntryReportModel
q := `
SELECT
gr.Group_ResultID,
gr.Group_ResultName,
gr.Group_ResultResumeMcu,
gr.Group_ResultUrl,
gr.Group_ResultIsOrderHeader,
gro.Group_ResultOrderOrder,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail todtl
JOIN t_test tt ON todtl.T_OrderDetailT_TestID = tt.T_TestID
AND tt.T_TestIsActive = 'Y'
JOIN group_resultdetail grd ON tt.T_TestID = grd.Group_ResultDetailT_TestID
AND grd.Group_ResultDetailIsActive = 'Y'
JOIN group_result gr ON grd.Group_ResultDetailGroup_ResultID = gr.Group_ResultID
AND gr.Group_ResultIsActive = 'Y'
JOIN group_resultorder gro ON gro.Group_ResultOrderGroup_ResultID = gr.Group_ResultID
AND Group_ResultOrderIsActive = 'Y'
WHERE todtl.T_OrderDetailT_OrderHeaderID = ?
AND todtl.T_OrderDetailIsActive = 'Y'
GROUP BY gr.Group_ResultID
ORDER BY gro.Group_ResultOrderOrder
`
if err := dbx.Handlex.Select(&GroupResultOrder, q, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get group result order: %v", err)
}
q = `
SELECT
sre.So_ResultEntryID,
sre.So_ResultEntryT_OrderHeaderID,
sre.So_ResultEntryT_OrderDetailID,
sre.So_ResultEntryNonlab_TemplateID,
sre.So_ResultEntryNonlab_TemplateName
FROM t_orderdetail tdet
JOIN t_test tt ON tdet.T_OrderDetailT_TestID = tt.T_TestID
AND tt.T_TestIsActive = 'Y'
JOIN so_resultentry sre ON sre.So_ResultEntryT_OrderDetailID = tdet.T_OrderDetailID
AND sre.So_ResultEntryIsActive = 'Y'
WHERE tdet.T_OrderDetailT_OrderHeaderID = ?
AND tdet.T_OrderDetailIsActive = 'Y'
`
if err := dbx.Handlex.Select(&SoResultData, q, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get so result data non lab: %v", err)
}
mapSoResultData := map[string]int{}
for _, so := range SoResultData {
switch so.So_ResultEntryNonlab_TemplateName {
case "ECG":
mapSoResultData["Elektromedik"] = so.So_ResultEntryID
case "Thorax PA":
mapSoResultData["Rontgen"] = so.So_ResultEntryID
case "Fisik Umum", "Fisik Umum K3":
mapSoResultData["FISIK"] = so.So_ResultEntryID
default:
mapSoResultData[so.So_ResultEntryNonlab_TemplateName] = so.So_ResultEntryID
}
}
for _, group := range GroupResultOrder {
var urlMap map[string]string
if err := json.Unmarshal([]byte(group.Group_ResultUrl), &urlMap); err != nil {
return returnTab, fmt.Errorf("error parsing json: %v", err)
}
switch group.Group_ResultResumeMcu {
case "FISIK":
soResultID := strconv.Itoa(mapSoResultData["FISIK"])
if soResultID != "0" {
for key, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: key,
Link: value + "&username=" + staffname + "&PID=" + soResultID + "&tm=" + group.Datetime,
})
}
}
case "NONLAB":
soResultID := strconv.Itoa(mapSoResultData[group.Group_ResultName])
if soResultID != "0" {
for _, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: group.Group_ResultName,
Link: value + "&username=" + staffname + "&PID=" + soResultID + "&tm=" + group.Datetime,
})
}
}
case "LAB":
for _, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: group.Group_ResultName,
Link: value + "&username=" + staffname + "&PID=" + orderheaderID + "&tm=" + group.Datetime,
})
}
default:
for _, value := range urlMap {
returnTab = append(returnTab, models.TabViewReportMcu{
Name: group.Group_ResultName,
Link: value + "&username=" + staffname + "&PID=" + orderheaderID + "&tm=" + group.Datetime,
})
}
}
}
return returnTab, nil
}
func (sp *PatientServices) GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) {
var returnTab []models.TabViewReportMcu
var profile_patient models.PatientMCU
lab_rpt := ""
sql := `
SELECT
toh.T_OrderHeaderID,
toh.T_OrderHeaderLabNumber,
mp.M_PatientID,
mp.M_PatientName,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderheader toh
JOIN m_patient mp ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID
AND mp.M_PatientIsActive = 'Y'
WHERE toh.T_OrderHeaderID = ? AND toh.T_OrderHeaderIsActive = 'Y'
`
if err := dbx.Handlex.Get(&profile_patient, sql, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get group result order: %v", err)
}
if profile_patient.T_OrderHeaderLabNumber != "" {
lab_rpt = "/birt/frameset?__report=report/one/lab/rpt_test_portal.rptdesign&__format=pdf&PID=" + profile_patient.T_OrderHeaderID + "&tm=" + profile_patient.Datetime + "&username=" + staffname
}
var so_data_rpt []models.SoRptData
fisik := ""
rontgen := ""
ekg := ""
audiometri := ""
spirometri := ""
treadmill := ""
papsmear := ""
sql_rpt := `
SELECT DISTINCT group_resultName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'N'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
UNION
SELECT DISTINCT group_resultName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_SamplingSoT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'Y'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
UNION
SELECT DISTINCT T_TestName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestName NOT IN ('Visus Mata','Buta Warna','Pemeriksaan Lapang Pandang')
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_SamplingSoT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'Y' AND Group_ResultFlagNonLab = 'Y'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
`
if err := dbx.Handlex.Select(&so_data_rpt, sql_rpt, orderheaderID, orderheaderID, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get data so_id: %v", err)
}
for _, d := range so_data_rpt {
switch d.Rpt_name {
case "Pemeriksaan Fisik":
fisik = "/birt/frameset?__report=report/one/mcu/mcu_fisik_history_v2_portal.rptdesign&__format=pdf&PType=fisik&PLang=1&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
// fisik = "/birt/run?__report=report/one/mcu/mcu_fisik_history_v2_portal.rptdesign&__format=pdf&PType=fisik&PLang=1&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Rontgen":
rontgen = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_xray_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Audiometri":
audiometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_audiometri_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Spirometri":
spirometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_spirometri_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "ECG":
ekg = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_ecg_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Treadmill":
treadmill = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_treadmill_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "Papsmear":
papsmear = "/birt/frameset?__report=report/one/lab/rpt_test_papsmear_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
}
}
var ResumeData models.ResumeMCU
kesimpulan := ""
// cover := ""
sql_resume := `
SELECT
Mcu_ResumeID,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM mcu_resume
WHERE Mcu_ResumeT_OrderHeaderID = ?
AND Mcu_ResumeIsActive = 'Y' AND Mcu_ResumeStatus = 'VAL'
`
if err := dbx.Handlex.Get(&ResumeData, sql_resume, orderheaderID); err != nil {
return returnTab, fmt.Errorf("error get data resume id: %v", err)
}
if ResumeData.Mcu_ResumeID != "" {
// cover = "/birt/frameset?__report=report/one/mcu/rpt_mcu_resume_cover_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime
kesimpulan = "/birt/frameset?__report=report/one/mcu/rpt_mcu_saran_kesimpulan_v2_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime
}
if fisik != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Fisik", Link: fisik})
}
if rontgen != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Rontgen", Link: rontgen})
}
if ekg != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Elektromedik", Link: ekg})
}
if audiometri != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Audiometri", Link: audiometri})
}
if spirometri != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Spirometri", Link: spirometri})
}
if treadmill != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Treadmill", Link: treadmill})
}
if kesimpulan != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Kesimpulan", Link: kesimpulan})
}
if lab_rpt != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Lab", Link: lab_rpt})
}
if papsmear != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Papsmear", Link: papsmear})
}
return returnTab, nil
}

View File

@@ -1,206 +1,206 @@
package dev_services
import (
"cpone/db"
"cpone/utils"
"fmt"
"strconv"
)
func NewServicesAutoComplete(uStore db.AppStore) *ServicesAutoComplete {
return &ServicesAutoComplete{
AutoCompleteStore: uStore,
}
}
type ServicesAutoComplete struct {
AutoCompleteStore db.AppStore
}
// example autocomplete
func (su *ServicesAutoComplete) GetAutoComplete(param string, pageOfParam string, limitOfStr string) (string, string, string, []AutoComplete, error) {
// fmt.Println("ini param : ", param)
dummyAutoComplete := []AutoComplete{
{
Name: "Google",
},
{
Name: "Google 1",
},
{
Name: "Google 2",
},
{
Name: "Google 3",
},
{
Name: "Google 4",
},
{
Name: "Google 5",
},
{
Name: "Google 6",
},
{
Name: "Gojek",
},
{
Name: "Mozilla Firefox",
},
{
Name: "Apple",
},
{
Name: "Microsoft",
},
{
Name: "Facebook",
},
{
Name: "Amazon",
},
{
Name: "Twitter",
},
{
Name: "Instagram",
},
{
Name: "Snapchat",
},
{
Name: "LinkedIn",
},
{
Name: "Netflix",
},
{
Name: "YouTube",
},
{
Name: "Reddit",
},
{
Name: "WhatsApp",
},
{
Name: "Pinterest",
},
{
Name: "TikTok",
},
{
Name: "Spotify",
},
{
Name: "Zoom",
},
}
var textFound string
var results []AutoComplete
// var currentRes []AutoComplete
// var oldResults []AutoComplete
// var limit int = 3
var count int = 0
var foundCount int = 0
var totalData int = 0
var startIndex int = 0
var endIndex int = 3
if len(dummyAutoComplete) > 0 {
totalData = len(dummyAutoComplete)
}
// pageOf, err := strconv.Atoi(pageOfParam)
// if err != nil {
// return "", "", "", nil, err
// }
limit, err := strconv.Atoi(limitOfStr)
if err != nil {
return "", "", "", nil, err
}
// find data search
if pageOfParam == "1" {
count = 0
// for _, item := range dummyAutoComplete {
// if utils.Contains(item.Name, param) {
// results = append(results, item)
// count++
// if count == limit {
// break
// }
// }
// }
for _, item := range dummyAutoComplete {
if utils.Contains(item.Name, param) {
// Check if the item is already in results
found := false
for _, res := range results {
if res.Name == item.Name {
found = true
break
}
}
// If not found, append it
if !found {
results = append(results, item)
count++
if count == limit {
break
}
}
}
}
} else {
// ketika klik load more
// count = 0
for _, item := range dummyAutoComplete {
if utils.Contains(item.Name, param) {
results = append(results, item)
count++
if count == limit {
break
}
}
}
startIndex = 0
endIndex = limit
if startIndex >= len(dummyAutoComplete) {
return "", "max", "", nil, nil
}
if endIndex > len(dummyAutoComplete) {
endIndex = len(dummyAutoComplete)
}
for _, item := range dummyAutoComplete[startIndex:endIndex] {
found := false
for _, res := range results {
if res.Name == item.Name {
found = true
break
}
}
// If not found, append it
if !found {
results = append(results, item)
}
}
}
foundCount = len(results)
totalCount := len(dummyAutoComplete)
textFound = fmt.Sprintf("Ditemukan %d dari %d", foundCount, totalCount)
return strconv.Itoa(totalData), strconv.Itoa(foundCount), textFound, results, nil
}
package dev_services
import (
"cpone/db"
"cpone/utils"
"fmt"
"strconv"
)
func NewServicesAutoComplete(uStore db.AppStore) *ServicesAutoComplete {
return &ServicesAutoComplete{
AutoCompleteStore: uStore,
}
}
type ServicesAutoComplete struct {
AutoCompleteStore db.AppStore
}
// example autocomplete
func (su *ServicesAutoComplete) GetAutoComplete(param string, pageOfParam string, limitOfStr string) (string, string, string, []AutoComplete, error) {
// fmt.Println("ini param : ", param)
dummyAutoComplete := []AutoComplete{
{
Name: "Google",
},
{
Name: "Google 1",
},
{
Name: "Google 2",
},
{
Name: "Google 3",
},
{
Name: "Google 4",
},
{
Name: "Google 5",
},
{
Name: "Google 6",
},
{
Name: "Gojek",
},
{
Name: "Mozilla Firefox",
},
{
Name: "Apple",
},
{
Name: "Microsoft",
},
{
Name: "Facebook",
},
{
Name: "Amazon",
},
{
Name: "Twitter",
},
{
Name: "Instagram",
},
{
Name: "Snapchat",
},
{
Name: "LinkedIn",
},
{
Name: "Netflix",
},
{
Name: "YouTube",
},
{
Name: "Reddit",
},
{
Name: "WhatsApp",
},
{
Name: "Pinterest",
},
{
Name: "TikTok",
},
{
Name: "Spotify",
},
{
Name: "Zoom",
},
}
var textFound string
var results []AutoComplete
// var currentRes []AutoComplete
// var oldResults []AutoComplete
// var limit int = 3
var count int = 0
var foundCount int = 0
var totalData int = 0
var startIndex int = 0
var endIndex int = 3
if len(dummyAutoComplete) > 0 {
totalData = len(dummyAutoComplete)
}
// pageOf, err := strconv.Atoi(pageOfParam)
// if err != nil {
// return "", "", "", nil, err
// }
limit, err := strconv.Atoi(limitOfStr)
if err != nil {
return "", "", "", nil, err
}
// find data search
if pageOfParam == "1" {
count = 0
// for _, item := range dummyAutoComplete {
// if utils.Contains(item.Name, param) {
// results = append(results, item)
// count++
// if count == limit {
// break
// }
// }
// }
for _, item := range dummyAutoComplete {
if utils.Contains(item.Name, param) {
// Check if the item is already in results
found := false
for _, res := range results {
if res.Name == item.Name {
found = true
break
}
}
// If not found, append it
if !found {
results = append(results, item)
count++
if count == limit {
break
}
}
}
}
} else {
// ketika klik load more
// count = 0
for _, item := range dummyAutoComplete {
if utils.Contains(item.Name, param) {
results = append(results, item)
count++
if count == limit {
break
}
}
}
startIndex = 0
endIndex = limit
if startIndex >= len(dummyAutoComplete) {
return "", "max", "", nil, nil
}
if endIndex > len(dummyAutoComplete) {
endIndex = len(dummyAutoComplete)
}
for _, item := range dummyAutoComplete[startIndex:endIndex] {
found := false
for _, res := range results {
if res.Name == item.Name {
found = true
break
}
}
// If not found, append it
if !found {
results = append(results, item)
}
}
}
foundCount = len(results)
totalCount := len(dummyAutoComplete)
textFound = fmt.Sprintf("Ditemukan %d dari %d", foundCount, totalCount)
return strconv.Itoa(totalData), strconv.Itoa(foundCount), textFound, results, nil
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,37 +1,37 @@
package dev_services
import (
"cpone/db"
"cpone/models"
)
type DetailMcuServices struct {
DetailMcuStore db.AppStore
}
func NewDetailMcuServices(uStore db.AppStore) *DetailMcuServices {
return &DetailMcuServices{
DetailMcuStore: uStore,
}
}
func (dmcu *DetailMcuServices) GetBreadcrumb(title string) (models.BreadCrumbV1, error) {
breadcrumb := models.BreadCrumbV1{
Title: title,
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Employee Health Medical Analytic",
Url: "/dev/employeeanalytic/",
},
{
Item: title,
Url: "",
},
},
}
return breadcrumb, nil
}
package dev_services
import (
"cpone/db"
"cpone/models"
)
type DetailMcuServices struct {
DetailMcuStore db.AppStore
}
func NewDetailMcuServices(uStore db.AppStore) *DetailMcuServices {
return &DetailMcuServices{
DetailMcuStore: uStore,
}
}
func (dmcu *DetailMcuServices) GetBreadcrumb(title string) (models.BreadCrumbV1, error) {
breadcrumb := models.BreadCrumbV1{
Title: title,
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Employee Health Medical Analytic",
Url: "/dev/employeeanalytic/",
},
{
Item: title,
Url: "",
},
},
}
return breadcrumb, nil
}

View File

@@ -1,71 +1,71 @@
package dev_services
import (
"time"
"cpone/db"
)
func NewServicesEmployee(u Employee, uStore db.AppStore) *ServicesEmployee {
return &ServicesEmployee{
Employee: u,
EmployeeStore: uStore,
}
}
type Employee struct {
ID int `json:"id"`
Employeename string `json:"Employeename"`
Email string `json:"email"`
CreatedAt time.Time `json:"created_at,omitempty"`
}
type EmployeeService struct {
EmployeeID int `json:"EmployeeID"`
EmployeeTitle string `json:"EmployeeTitle"`
EmployeeDescription string `json:"EmployeeDescription"`
EmployeeStartDate string `json:"EmployeeStartDate"`
EmployeeEndDate string `json:"EmployeeEndDate"`
}
type ServicesEmployee struct {
Employee Employee
EmployeeStore db.AppStore
}
func (se *ServicesEmployee) GetEmployeeService() ([]EmployeeService, error) {
data := []EmployeeService{
{
EmployeeID: 1,
EmployeeTitle: "MCU Calon Karyawan",
EmployeeDescription: "Tanggal Pelaksanaan",
EmployeeStartDate: "01/04/2024",
EmployeeEndDate: "06/04/2024",
},
{
EmployeeID: 2,
EmployeeTitle: "MCU Karyawan",
EmployeeDescription: "Tanggal Pelaksanaan",
EmployeeStartDate: "01/04/2024",
EmployeeEndDate: "06/04/2024",
},
{
EmployeeID: 1,
EmployeeTitle: "MCU Eselon 1",
EmployeeDescription: "Tanggal Pelaksanaan",
EmployeeStartDate: "01/04/2024",
EmployeeEndDate: "06/04/2024",
},
{
EmployeeID: 1,
EmployeeTitle: "MCU Eselon 2",
EmployeeDescription: "Tanggal Pelaksanaan",
EmployeeStartDate: "01/04/2024",
EmployeeEndDate: "06/04/2024",
},
}
return data, nil
}
package dev_services
import (
"time"
"cpone/db"
)
func NewServicesEmployee(u Employee, uStore db.AppStore) *ServicesEmployee {
return &ServicesEmployee{
Employee: u,
EmployeeStore: uStore,
}
}
type Employee struct {
ID int `json:"id"`
Employeename string `json:"Employeename"`
Email string `json:"email"`
CreatedAt time.Time `json:"created_at,omitempty"`
}
type EmployeeService struct {
EmployeeID int `json:"EmployeeID"`
EmployeeTitle string `json:"EmployeeTitle"`
EmployeeDescription string `json:"EmployeeDescription"`
EmployeeStartDate string `json:"EmployeeStartDate"`
EmployeeEndDate string `json:"EmployeeEndDate"`
}
type ServicesEmployee struct {
Employee Employee
EmployeeStore db.AppStore
}
func (se *ServicesEmployee) GetEmployeeService() ([]EmployeeService, error) {
data := []EmployeeService{
{
EmployeeID: 1,
EmployeeTitle: "MCU Calon Karyawan",
EmployeeDescription: "Tanggal Pelaksanaan",
EmployeeStartDate: "01/04/2024",
EmployeeEndDate: "06/04/2024",
},
{
EmployeeID: 2,
EmployeeTitle: "MCU Karyawan",
EmployeeDescription: "Tanggal Pelaksanaan",
EmployeeStartDate: "01/04/2024",
EmployeeEndDate: "06/04/2024",
},
{
EmployeeID: 1,
EmployeeTitle: "MCU Eselon 1",
EmployeeDescription: "Tanggal Pelaksanaan",
EmployeeStartDate: "01/04/2024",
EmployeeEndDate: "06/04/2024",
},
{
EmployeeID: 1,
EmployeeTitle: "MCU Eselon 2",
EmployeeDescription: "Tanggal Pelaksanaan",
EmployeeStartDate: "01/04/2024",
EmployeeEndDate: "06/04/2024",
},
}
return data, nil
}

View File

@@ -1,128 +1,128 @@
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"go.uber.org/zap"
)
type EmployeeAnalyticServices struct {
EmployeeAnalyticStore db.AppStore
}
func NewEmployeeAnalyticServices(uStore db.AppStore) *EmployeeAnalyticServices {
return &EmployeeAnalyticServices{
EmployeeAnalyticStore: uStore,
}
}
func (ea *EmployeeAnalyticServices) GetEmployeeAnalyticBreadcrumb(title string) (models.BreadCrumbV1, error) {
breadcrumb := models.BreadCrumbV1{
Title: title,
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Employee Health Medical Analytic",
Url: "",
},
},
}
return breadcrumb, nil
}
func (ea *EmployeeAnalyticServices) DummyDataTest() ([]models.DashboardPic, error) {
employees := []models.DashboardPic{
{
Mgm_McuID: 1,
Mgm_McuLabel: "Employee 1",
Mgm_McuFlagRelasiBayarSendiri: "Yes",
Mgm_McuBisaTambahPemeriksaan: "No",
Mgm_McuCorporateID: 101,
Mgm_McuNumber: "EMP001",
Mgm_McuNumberNational: "NAT001",
Mgm_McuNote: "Lorem ipsum dolor sit amet.",
Mgm_McuStartDate: "2024-01-01",
Mgm_McuEndDate: "2024-12-31",
Mgm_McuIsActive: "Y",
},
{
Mgm_McuID: 2,
Mgm_McuLabel: "Employee 2",
Mgm_McuFlagRelasiBayarSendiri: "No",
Mgm_McuBisaTambahPemeriksaan: "Yes",
Mgm_McuCorporateID: 102,
Mgm_McuNumber: "EMP002",
Mgm_McuNumberNational: "NAT002",
Mgm_McuNote: "Lorem ipsum dolor sit amet consectetur.",
Mgm_McuStartDate: "2024-02-15",
Mgm_McuEndDate: "2024-11-30",
Mgm_McuIsActive: "Y",
},
}
return employees, nil
}
func (ea *EmployeeAnalyticServices) ListingEmployeeAnalytic(search string, startdate string, enddate string, currentpage int, rowperpage int) ([]models.DashboardPic, int, error) {
logger, _ := zap.NewProduction()
var ret []models.DashboardPic
var totalData int
if len(startdate) == 0 {
startdate = "1900-01-01"
}
if len(enddate) == 0 {
enddate = "9999-12-12"
}
prmLabel := "%" + search + "%"
offset := (currentpage - 1) * rowperpage
q := `
SELECT COUNT(*)
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuLabel LIKE ?
AND Mgm_McuStartDate >= ?
AND Mgm_McuEndDate <= ?
`
if err := dbx.Handlex.Get(&totalData, q, prmLabel, startdate, enddate); err != nil {
return nil, 0, fmt.Errorf("error query get total data: %v", err)
}
q = `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuFlagRelasiBayarSendiri,
Mgm_McuBisaTambahPemeriksaan,
Mgm_McuCorporateID,
Mgm_McuNumber,
Mgm_McuNumberNational,
Mgm_McuNote,
DATE_FORMAT(Mgm_McuStartDate, '%d-%m-%Y') AS Mgm_McuStartDate,
DATE_FORMAT(Mgm_McuEndDate, '%d-%m-%Y') AS Mgm_McuEndDate,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuLabel LIKE ?
AND Mgm_McuStartDate >= ?
AND Mgm_McuEndDate <= ?
ORDER BY Mgm_McuID ASC
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&ret, q, prmLabel, startdate, enddate, rowperpage, offset); err != nil {
return nil, 0, fmt.Errorf("error query get data: %v", err)
}
logger.Info("Resp", zap.Any("Respsone", ret))
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
return ret, totalPage, nil
}
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"go.uber.org/zap"
)
type EmployeeAnalyticServices struct {
EmployeeAnalyticStore db.AppStore
}
func NewEmployeeAnalyticServices(uStore db.AppStore) *EmployeeAnalyticServices {
return &EmployeeAnalyticServices{
EmployeeAnalyticStore: uStore,
}
}
func (ea *EmployeeAnalyticServices) GetEmployeeAnalyticBreadcrumb(title string) (models.BreadCrumbV1, error) {
breadcrumb := models.BreadCrumbV1{
Title: title,
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Employee Health Medical Analytic",
Url: "",
},
},
}
return breadcrumb, nil
}
func (ea *EmployeeAnalyticServices) DummyDataTest() ([]models.DashboardPic, error) {
employees := []models.DashboardPic{
{
Mgm_McuID: 1,
Mgm_McuLabel: "Employee 1",
Mgm_McuFlagRelasiBayarSendiri: "Yes",
Mgm_McuBisaTambahPemeriksaan: "No",
Mgm_McuCorporateID: 101,
Mgm_McuNumber: "EMP001",
Mgm_McuNumberNational: "NAT001",
Mgm_McuNote: "Lorem ipsum dolor sit amet.",
Mgm_McuStartDate: "2024-01-01",
Mgm_McuEndDate: "2024-12-31",
Mgm_McuIsActive: "Y",
},
{
Mgm_McuID: 2,
Mgm_McuLabel: "Employee 2",
Mgm_McuFlagRelasiBayarSendiri: "No",
Mgm_McuBisaTambahPemeriksaan: "Yes",
Mgm_McuCorporateID: 102,
Mgm_McuNumber: "EMP002",
Mgm_McuNumberNational: "NAT002",
Mgm_McuNote: "Lorem ipsum dolor sit amet consectetur.",
Mgm_McuStartDate: "2024-02-15",
Mgm_McuEndDate: "2024-11-30",
Mgm_McuIsActive: "Y",
},
}
return employees, nil
}
func (ea *EmployeeAnalyticServices) ListingEmployeeAnalytic(search string, startdate string, enddate string, currentpage int, rowperpage int) ([]models.DashboardPic, int, error) {
logger, _ := zap.NewProduction()
var ret []models.DashboardPic
var totalData int
if len(startdate) == 0 {
startdate = "1900-01-01"
}
if len(enddate) == 0 {
enddate = "9999-12-12"
}
prmLabel := "%" + search + "%"
offset := (currentpage - 1) * rowperpage
q := `
SELECT COUNT(*)
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuLabel LIKE ?
AND Mgm_McuStartDate >= ?
AND Mgm_McuEndDate <= ?
`
if err := dbx.Handlex.Get(&totalData, q, prmLabel, startdate, enddate); err != nil {
return nil, 0, fmt.Errorf("error query get total data: %v", err)
}
q = `
SELECT
Mgm_McuID,
Mgm_McuLabel,
Mgm_McuFlagRelasiBayarSendiri,
Mgm_McuBisaTambahPemeriksaan,
Mgm_McuCorporateID,
Mgm_McuNumber,
Mgm_McuNumberNational,
Mgm_McuNote,
DATE_FORMAT(Mgm_McuStartDate, '%d-%m-%Y') AS Mgm_McuStartDate,
DATE_FORMAT(Mgm_McuEndDate, '%d-%m-%Y') AS Mgm_McuEndDate,
Mgm_McuIsActive
FROM mgm_mcu
WHERE Mgm_McuIsActive = 'Y'
AND Mgm_McuLabel LIKE ?
AND Mgm_McuStartDate >= ?
AND Mgm_McuEndDate <= ?
ORDER BY Mgm_McuID ASC
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&ret, q, prmLabel, startdate, enddate, rowperpage, offset); err != nil {
return nil, 0, fmt.Errorf("error query get data: %v", err)
}
logger.Info("Resp", zap.Any("Respsone", ret))
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
return ret, totalPage, nil
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,232 +1,232 @@
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"go.uber.org/zap"
)
func NewServicesKesimpulan(uStore db.AppStore) *KesimpulanServices {
return &KesimpulanServices{
KesimpulanStore: uStore,
}
}
type KesimpulanServices struct {
KesimpulanStore db.AppStore
}
func (k *KesimpulanServices) GetListKesimpulanLab(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listLab []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'L'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalLab string
if len(dataTot) > 0 {
totalLab = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalLab),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'L'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listLab, query, totalLab, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data lab",
zap.Any("id", id),
zap.Any("list data", listLab),
)
return listLab, fmt.Errorf("QUERY_FAILED")
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cekkkk", listLab),
)
return listLab, nil
}
func (k *KesimpulanServices) GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listNonLab []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'NL'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalLab string
if len(dataTot) > 0 {
totalLab = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalLab),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'NL'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listNonLab, query, totalLab, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data NON lab",
zap.Any("id", id),
zap.Any("list data", listNonLab),
)
return listNonLab, fmt.Errorf("QUERY_FAILED")
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cekkkk", listNonLab),
)
return listNonLab, nil
}
func (k *KesimpulanServices) GetListKesimpulanFisik(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listFisik []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'F'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalFisik string
if len(dataTot) > 0 {
totalFisik = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalFisik),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'F'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listFisik, query, totalFisik, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data fisik",
zap.Any("id", id),
zap.Any("list data", listFisik),
)
return listFisik, fmt.Errorf("QUERY_FAILED")
}
return listFisik, nil
}
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"go.uber.org/zap"
)
func NewServicesKesimpulan(uStore db.AppStore) *KesimpulanServices {
return &KesimpulanServices{
KesimpulanStore: uStore,
}
}
type KesimpulanServices struct {
KesimpulanStore db.AppStore
}
func (k *KesimpulanServices) GetListKesimpulanLab(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listLab []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'L'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalLab string
if len(dataTot) > 0 {
totalLab = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalLab),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'L'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listLab, query, totalLab, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data lab",
zap.Any("id", id),
zap.Any("list data", listLab),
)
return listLab, fmt.Errorf("QUERY_FAILED")
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cekkkk", listLab),
)
return listLab, nil
}
func (k *KesimpulanServices) GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listNonLab []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'NL'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalLab string
if len(dataTot) > 0 {
totalLab = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalLab),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'NL'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listNonLab, query, totalLab, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data NON lab",
zap.Any("id", id),
zap.Any("list data", listNonLab),
)
return listNonLab, fmt.Errorf("QUERY_FAILED")
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cekkkk", listNonLab),
)
return listNonLab, nil
}
func (k *KesimpulanServices) GetListKesimpulanFisik(id string) ([]models.ModelKesimpulanLab, error) {
logger, _ := zap.NewProduction()
var listFisik []models.ModelKesimpulanLab
var dataTot []models.ModelKesimpulanLab
qryTot := `select '' as nomor,
'' as Test, sum(total) as total
from(
select count(*) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'F'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
err := dbx.Handlex.Select(&dataTot, qryTot, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get total",
zap.Any("id", id),
zap.Any("total data", dataTot),
)
// return dataTot, fmt.Errorf("QUERY_FAILED")
}
// Extracting the Total value
var totalFisik string
if len(dataTot) > 0 {
totalFisik = dataTot[0].Total
}
logger.Info("data",
zap.Any("id", id),
zap.Any("cek total", totalFisik),
)
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
FROM mgm_header
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'F'
and Mgm_HeaderIsNormal = 'N'
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
LIMIT 3`
err = dbx.Handlex.Select(&listFisik, query, totalFisik, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data fisik",
zap.Any("id", id),
zap.Any("list data", listFisik),
)
return listFisik, fmt.Errorf("QUERY_FAILED")
}
return listFisik, nil
}

View File

@@ -1,287 +1,287 @@
package dev_services
import (
"time"
"cpone/db"
)
func NewServicesLandingPage(uStore db.AppStore) *ServicesLandingPage {
return &ServicesLandingPage{
LandingPageStore: uStore,
}
}
type LandingPage struct {
ID int `json:"id"`
LandingPagename string `json:"LandingPagename"`
Email string `json:"email"`
CreatedAt time.Time `json:"created_at,omitempty"`
}
type ClientService struct {
ClientServiceID int `json:"ClientServiceID"`
ClientServiceName string `json:"ClientServiceName"`
ClientServiceDescription string `json:"ClientServiceDescription"`
ClientServiceIcon string `json:"ClientServiceIcon"`
ClientServiceLink string `json:"ClientServiceLink"`
}
type AdvantageClient struct {
AdvantageClientID int `json:"AdvantageClientID"`
AdvantageClientName string `json:"AdvantageClientName"`
AdvantageClientDesc string `json:"AdvantageClientDesc"`
}
type Promotion struct {
PromotionID int `json:"PromotionID"`
PromotionAsset string `json:"PromotionAsset"`
PromotionLink string `json:"PromotionLink"`
}
type FooterSubNav struct {
FootSubNavID int `json:"FootSubNavID"`
FootSubNavTitle string `json:"FootSubNavTitle"`
FootSubNavLink string `json:"FootSubNavLink"`
}
type FooterNav struct {
FooterNavID int `json:"FooterNavID"`
FooterNavTitle string `json:"FooterNavTitle"`
FooteSubNav []FooterSubNav `json:"FooterSubNav,omitempty"`
}
type ServicesLandingPage struct {
LandingPage LandingPage
LandingPageStore db.AppStore
}
func (su *ServicesLandingPage) GetAllLandingPages() ([]LandingPage, error) {
query := `SELECT id, LandingPagename, email, created_at FROM LandingPages ORDER BY created_at DESC`
rows, err := su.LandingPageStore.Db.Query(query)
if err != nil {
return []LandingPage{}, err
}
// We close the resource
defer rows.Close()
LandingPages := []LandingPage{}
for rows.Next() {
rows.Scan(
&su.LandingPage.ID,
&su.LandingPage.LandingPagename,
&su.LandingPage.Email,
&su.LandingPage.CreatedAt,
)
LandingPages = append(LandingPages, su.LandingPage)
}
return LandingPages, nil
}
func (su *ServicesLandingPage) GetLandingPageById(id int) (LandingPage, error) {
query := `SELECT id, LandingPagename, email, created_at FROM LandingPages
WHERE id = ?`
stmt, err := su.LandingPageStore.Db.Prepare(query)
if err != nil {
return LandingPage{}, err
}
defer stmt.Close()
su.LandingPage.ID = id
err = stmt.QueryRow(
su.LandingPage.ID,
).Scan(
&su.LandingPage.ID,
&su.LandingPage.LandingPagename,
&su.LandingPage.Email,
&su.LandingPage.CreatedAt,
)
if err != nil {
return LandingPage{}, err
}
return su.LandingPage, nil
}
func (su *ServicesLandingPage) GetClientService() ([]ClientService, error) {
data := []ClientService{
{
ClientServiceID: 1,
ClientServiceName: "In House Clinic",
ClientServiceDescription: "Maintaining health in the workplace by carrying out promotional, preventive, curative and rehabilitative programs.",
ClientServiceIcon: "uil:clinic-medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 2,
ClientServiceName: "Laboratorium Test",
ClientServiceDescription: "Maintaining health in the workplace by carrying out promotional, preventive, curative and rehabilitative programs.",
ClientServiceIcon: "healthicons:clinical-a-outline",
ClientServiceLink: "/",
},
{
ClientServiceID: 3,
ClientServiceName: "Medical Check Up",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 4,
ClientServiceName: "Medical Check Up 2",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 5,
ClientServiceName: "Medical Check Up 3",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
}
return data, nil
}
func (su *ServicesLandingPage) GetClientAdvantage() ([]AdvantageClient, error) {
data := []AdvantageClient{
{
AdvantageClientID: 1,
AdvantageClientName: "ISO Certificate",
AdvantageClientDesc: "Westerindo Clinical Laboratory has obtained ISO 15189:2009 (ISO 15189:2007) Accreditation from the National Accreditation Committee (KAN) and the Health Laboratory Accreditation Commission (KALK).",
},
{
AdvantageClientID: 2,
AdvantageClientName: "Modern Technology",
AdvantageClientDesc: "Laboratory Information System (LIS) is an information system in which laboratory equipment and diagnostic support have been integrated automatically so that examination results can be immediately filled in in employee data. This eliminates the possibility of human error.",
},
{
AdvantageClientID: 3,
AdvantageClientName: "Good Quality Facilities",
AdvantageClientDesc: "The laboratory and medical support equipment used at the Westerindo Clinical Laboratory is international scale for precise, fast and accurate results. Lab and medical equipment certificates are periodically renewed according to standards.",
},
{
AdvantageClientID: 4,
AdvantageClientName: "Professional Service",
AdvantageClientDesc: "Westerindo Clinical Laboratory is committed to providing professional and excellent service. Therefore, all staff and doctors at the Westerindo Clinical Laboratory have competency certification according to their field.",
},
{
AdvantageClientID: 5,
AdvantageClientName: "Experienced",
AdvantageClientDesc: "Westerindo Clinical Laboratory is very experienced in carrying out Medical Check Ups both onsite and insite, in all corners of Indonesia. Serving various kinds of companies, from oil and gas companies, automotive, manufacturing, offices, and others.",
},
}
return data, nil
}
func (su *ServicesLandingPage) GetPromotionList() ([]Promotion, error) {
data := []Promotion{
{
PromotionID: 1,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_1.png",
PromotionLink: "",
},
{
PromotionID: 2,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_2.png",
PromotionLink: "",
},
{
PromotionID: 3,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_3.png",
PromotionLink: "",
},
{
PromotionID: 4,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_2.png",
PromotionLink: "",
},
{
PromotionID: 5,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_3.png",
PromotionLink: "",
},
}
return data, nil
}
func (su *ServicesLandingPage) GetFooterNavList() ([]FooterNav, error) {
data := []FooterNav{
{
FooterNavID: 1,
FooterNavTitle: "Dashboard",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Dashboard #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Dashboard #2",
FootSubNavLink: "/",
},
},
},
{
FooterNavID: 2,
FooterNavTitle: "Benefit",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Benefit #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Benefit #2",
FootSubNavLink: "/",
},
},
},
{
FooterNavID: 3,
FooterNavTitle: "Finance & Claims",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Finance & Claims #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Finance & Claims #2",
FootSubNavLink: "/",
},
},
},
{
FooterNavID: 4,
FooterNavTitle: "Memberships",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Memberships #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Memberships #2",
FootSubNavLink: "/",
},
},
},
}
return data, nil
}
package dev_services
import (
"time"
"cpone/db"
)
func NewServicesLandingPage(uStore db.AppStore) *ServicesLandingPage {
return &ServicesLandingPage{
LandingPageStore: uStore,
}
}
type LandingPage struct {
ID int `json:"id"`
LandingPagename string `json:"LandingPagename"`
Email string `json:"email"`
CreatedAt time.Time `json:"created_at,omitempty"`
}
type ClientService struct {
ClientServiceID int `json:"ClientServiceID"`
ClientServiceName string `json:"ClientServiceName"`
ClientServiceDescription string `json:"ClientServiceDescription"`
ClientServiceIcon string `json:"ClientServiceIcon"`
ClientServiceLink string `json:"ClientServiceLink"`
}
type AdvantageClient struct {
AdvantageClientID int `json:"AdvantageClientID"`
AdvantageClientName string `json:"AdvantageClientName"`
AdvantageClientDesc string `json:"AdvantageClientDesc"`
}
type Promotion struct {
PromotionID int `json:"PromotionID"`
PromotionAsset string `json:"PromotionAsset"`
PromotionLink string `json:"PromotionLink"`
}
type FooterSubNav struct {
FootSubNavID int `json:"FootSubNavID"`
FootSubNavTitle string `json:"FootSubNavTitle"`
FootSubNavLink string `json:"FootSubNavLink"`
}
type FooterNav struct {
FooterNavID int `json:"FooterNavID"`
FooterNavTitle string `json:"FooterNavTitle"`
FooteSubNav []FooterSubNav `json:"FooterSubNav,omitempty"`
}
type ServicesLandingPage struct {
LandingPage LandingPage
LandingPageStore db.AppStore
}
func (su *ServicesLandingPage) GetAllLandingPages() ([]LandingPage, error) {
query := `SELECT id, LandingPagename, email, created_at FROM LandingPages ORDER BY created_at DESC`
rows, err := su.LandingPageStore.Db.Query(query)
if err != nil {
return []LandingPage{}, err
}
// We close the resource
defer rows.Close()
LandingPages := []LandingPage{}
for rows.Next() {
rows.Scan(
&su.LandingPage.ID,
&su.LandingPage.LandingPagename,
&su.LandingPage.Email,
&su.LandingPage.CreatedAt,
)
LandingPages = append(LandingPages, su.LandingPage)
}
return LandingPages, nil
}
func (su *ServicesLandingPage) GetLandingPageById(id int) (LandingPage, error) {
query := `SELECT id, LandingPagename, email, created_at FROM LandingPages
WHERE id = ?`
stmt, err := su.LandingPageStore.Db.Prepare(query)
if err != nil {
return LandingPage{}, err
}
defer stmt.Close()
su.LandingPage.ID = id
err = stmt.QueryRow(
su.LandingPage.ID,
).Scan(
&su.LandingPage.ID,
&su.LandingPage.LandingPagename,
&su.LandingPage.Email,
&su.LandingPage.CreatedAt,
)
if err != nil {
return LandingPage{}, err
}
return su.LandingPage, nil
}
func (su *ServicesLandingPage) GetClientService() ([]ClientService, error) {
data := []ClientService{
{
ClientServiceID: 1,
ClientServiceName: "In House Clinic",
ClientServiceDescription: "Maintaining health in the workplace by carrying out promotional, preventive, curative and rehabilitative programs.",
ClientServiceIcon: "uil:clinic-medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 2,
ClientServiceName: "Laboratorium Test",
ClientServiceDescription: "Maintaining health in the workplace by carrying out promotional, preventive, curative and rehabilitative programs.",
ClientServiceIcon: "healthicons:clinical-a-outline",
ClientServiceLink: "/",
},
{
ClientServiceID: 3,
ClientServiceName: "Medical Check Up",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 4,
ClientServiceName: "Medical Check Up 2",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 5,
ClientServiceName: "Medical Check Up 3",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
}
return data, nil
}
func (su *ServicesLandingPage) GetClientAdvantage() ([]AdvantageClient, error) {
data := []AdvantageClient{
{
AdvantageClientID: 1,
AdvantageClientName: "ISO Certificate",
AdvantageClientDesc: "Westerindo Clinical Laboratory has obtained ISO 15189:2009 (ISO 15189:2007) Accreditation from the National Accreditation Committee (KAN) and the Health Laboratory Accreditation Commission (KALK).",
},
{
AdvantageClientID: 2,
AdvantageClientName: "Modern Technology",
AdvantageClientDesc: "Laboratory Information System (LIS) is an information system in which laboratory equipment and diagnostic support have been integrated automatically so that examination results can be immediately filled in in employee data. This eliminates the possibility of human error.",
},
{
AdvantageClientID: 3,
AdvantageClientName: "Good Quality Facilities",
AdvantageClientDesc: "The laboratory and medical support equipment used at the Westerindo Clinical Laboratory is international scale for precise, fast and accurate results. Lab and medical equipment certificates are periodically renewed according to standards.",
},
{
AdvantageClientID: 4,
AdvantageClientName: "Professional Service",
AdvantageClientDesc: "Westerindo Clinical Laboratory is committed to providing professional and excellent service. Therefore, all staff and doctors at the Westerindo Clinical Laboratory have competency certification according to their field.",
},
{
AdvantageClientID: 5,
AdvantageClientName: "Experienced",
AdvantageClientDesc: "Westerindo Clinical Laboratory is very experienced in carrying out Medical Check Ups both onsite and insite, in all corners of Indonesia. Serving various kinds of companies, from oil and gas companies, automotive, manufacturing, offices, and others.",
},
}
return data, nil
}
func (su *ServicesLandingPage) GetPromotionList() ([]Promotion, error) {
data := []Promotion{
{
PromotionID: 1,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_1.png",
PromotionLink: "",
},
{
PromotionID: 2,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_2.png",
PromotionLink: "",
},
{
PromotionID: 3,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_3.png",
PromotionLink: "",
},
{
PromotionID: 4,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_2.png",
PromotionLink: "",
},
{
PromotionID: 5,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_3.png",
PromotionLink: "",
},
}
return data, nil
}
func (su *ServicesLandingPage) GetFooterNavList() ([]FooterNav, error) {
data := []FooterNav{
{
FooterNavID: 1,
FooterNavTitle: "Dashboard",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Dashboard #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Dashboard #2",
FootSubNavLink: "/",
},
},
},
{
FooterNavID: 2,
FooterNavTitle: "Benefit",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Benefit #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Benefit #2",
FootSubNavLink: "/",
},
},
},
{
FooterNavID: 3,
FooterNavTitle: "Finance & Claims",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Finance & Claims #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Finance & Claims #2",
FootSubNavLink: "/",
},
},
},
{
FooterNavID: 4,
FooterNavTitle: "Memberships",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Memberships #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Memberships #2",
FootSubNavLink: "/",
},
},
},
}
return data, nil
}

View File

@@ -1,59 +1,59 @@
package dev_services
import (
"time"
"cpone/db"
)
func NewServicesLogin(u Login, uStore db.AppStore) *ServicesLogin {
return &ServicesLogin{
Login: u,
LoginStore: uStore,
}
}
type Login struct {
ID int `json:"id"`
Loginname string `json:"Loginname"`
Email string `json:"Email"`
Password string `json:"Password"`
CreatedAt time.Time `json:"created_at,omitempty"`
}
type ServicesLogin struct {
Login Login
LoginStore db.AppStore
}
func (su *ServicesLogin) GetLogin(Email string, Password string) (Login, error) {
query := `SELECT id, Loginname, Email, Password, created_at FROM Login
WHERE Email = ? AND Password = ?`
stmt, err := su.LoginStore.Db.Prepare(query)
if err != nil {
return Login{}, err
}
defer stmt.Close()
su.Login.Email = Email
su.Login.Password = Password
err = stmt.QueryRow(
su.Login.Email,
su.Login.Password,
).Scan(
&su.Login.ID,
&su.Login.Loginname,
&su.Login.Email,
&su.Login.Password,
&su.Login.CreatedAt,
)
if err != nil {
return Login{}, err
}
return su.Login, nil
}
package dev_services
import (
"time"
"cpone/db"
)
func NewServicesLogin(u Login, uStore db.AppStore) *ServicesLogin {
return &ServicesLogin{
Login: u,
LoginStore: uStore,
}
}
type Login struct {
ID int `json:"id"`
Loginname string `json:"Loginname"`
Email string `json:"Email"`
Password string `json:"Password"`
CreatedAt time.Time `json:"created_at,omitempty"`
}
type ServicesLogin struct {
Login Login
LoginStore db.AppStore
}
func (su *ServicesLogin) GetLogin(Email string, Password string) (Login, error) {
query := `SELECT id, Loginname, Email, Password, created_at FROM Login
WHERE Email = ? AND Password = ?`
stmt, err := su.LoginStore.Db.Prepare(query)
if err != nil {
return Login{}, err
}
defer stmt.Close()
su.Login.Email = Email
su.Login.Password = Password
err = stmt.QueryRow(
su.Login.Email,
su.Login.Password,
).Scan(
&su.Login.ID,
&su.Login.Loginname,
&su.Login.Email,
&su.Login.Password,
&su.Login.CreatedAt,
)
if err != nil {
return Login{}, err
}
return su.Login, nil
}

View File

@@ -1,349 +1,349 @@
package dev_services
import (
"fmt"
"math"
"strconv"
"strings"
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"go.uber.org/zap"
)
func NewServicesMasterMenuUserGroup(uStore db.AppStore) *ServicesMasterMenuUserGroup {
return &ServicesMasterMenuUserGroup{
MasterMenuUserGroupStore: uStore,
}
}
// MasterMenu struct
type Breadcrumb struct {
IDBreadcrumb string `json:"id_breadcrumb"`
Name string `json:"name"`
Url string `json:"url"`
}
type ChildrenMenu struct {
ChildrenParentID string `json:"children_parent_id"`
ChildrenMenuID string `json:"children_menu_id"`
ChildrenMenuName string `json:"children_menu_name"`
ChildrenMenuURL string `json:"children_menu_url"`
// Breadcrumb []Breadcrumb `json:"breadcrumb"`
}
type MasterMenu struct {
ID string `json:"id"`
ParentMenuID string `json:"parent_menu_id"`
ParentMenuName string `json:"parent_menu_name"`
ParentUrl string `json:"parent_url"`
ParentIcon string `json:"parent_icon"`
Children []ChildrenMenu `json:"children"`
}
type ServicesMasterMenuUserGroup struct {
MasterMenuUserGroupStore db.AppStore
}
type AutoComplete struct {
Name string `json:"name"`
}
func (ug *ServicesMasterMenuUserGroup) GetUserGroup() ([]models.UserGroup, error) {
data := []models.UserGroup{
{UserGroupID: 1, UserGroupKode: "A", UserGroupName: "UG1"},
{UserGroupID: 2, UserGroupKode: "B", UserGroupName: "UG2"},
{UserGroupID: 3, UserGroupKode: "C", UserGroupName: "UG3"},
}
return data, nil
}
func (ug *ServicesMasterMenuUserGroup) GetUserGroupByID(id string) (models.UserGroup, error) {
listdata := []models.UserGroup{
{UserGroupID: 1, UserGroupKode: "A", UserGroupName: "UG1"},
{UserGroupID: 2, UserGroupKode: "B", UserGroupName: "UG2"},
{UserGroupID: 3, UserGroupKode: "C", UserGroupName: "UG3"},
}
var data models.UserGroup
idData, err := strconv.Atoi(id)
if err != nil {
return data, fmt.Errorf("pack %v: %w", "Error", err)
}
for _, v := range listdata {
if v.UserGroupID == idData {
data = v
}
}
// time.Sleep(5 * time.Second)
return data, nil
}
// try
func (su *ServicesMasterMenuUserGroup) GetListMasterUserGroup() ([]models.UserGroupV1, error) {
var userGroupList []models.UserGroupV1
query := `
SELECT
ROW_NUMBER() OVER () AS nomor,
M_UserGroupID,
M_UserGroupCode,
M_UserGroupName,
M_UserGroupCreated,
M_UserGroupLastUpdated,
M_UserGroupIsActive
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
order by M_UserGroupID ASC
`
if err := dbx.Handlex.Select(&userGroupList, query); err != nil {
return nil, fmt.Errorf("error querying database: %v", err)
}
return userGroupList, nil
}
func (su *ServicesMasterMenuUserGroup) GetListBreadCrumb(title string) (models.BreadCrumbV1, error) {
var ret models.BreadCrumbV1
dummyBreadcrumb := []models.BreadCrumbV1{
{
Title: "Master User Group",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "User Group",
Url: "",
},
},
},
{
Title: "Master User",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "User",
Url: "",
},
},
},
}
for _, breadcrumb := range dummyBreadcrumb {
// if utils.Contains(breadcrumb.Title, title) {
// ret = breadcrumb
// return ret, nil
// }
if breadcrumb.Title == title {
ret = breadcrumb
return ret, nil
}
}
return ret, nil
}
func (ug *ServicesMasterMenuUserGroup) GetUserGroupByIDV1(id string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
err := dbx.Handlex.Get(&data, `SELECT * FROM m_usergroup
WHERE M_UserGroupID = ?`, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data ug by id vs",
zap.String("ID", id),
zap.Error(err),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (ug *ServicesMasterMenuUserGroup) AddUserGroup(code string, name string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
var datacek []models.UserGroupV1
qryCek := `SELECT M_UserGroupCode FROM m_usergroup WHERE M_UserGroupCode = ? AND M_UserGroupIsActive = 'Y'`
err := dbx.Handlex.Select(&datacek, qryCek, code)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return data, fmt.Errorf("QUERY_FAILED")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return data, fmt.Errorf("code sudah dipakai")
}
qry := `INSERT INTO m_usergroup
(M_UserGroupCode,
M_UserGroupName)
VALUES (?,?);`
// time.Sleep(5 * time.Second)
rst := dbx.Handlex.MustExec(qry, code, name)
insertedID, err := rst.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("Error Insert usergroup",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
s := strconv.Itoa(int(insertedID))
data, err = ug.GetUserGroupByIDV1(s)
if err != nil {
defer logger.Sync()
logger.Error("Error get usergroup by id",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (ug *ServicesMasterMenuUserGroup) EditUserGroup(id string, code string, name string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
var datacek []models.UserGroupV1
qryCek := `SELECT M_UserGroupCode FROM m_usergroup WHERE M_UserGroupCode = ? AND M_UserGroupIsActive = 'Y' AND M_UserGroupID <> ?`
err := dbx.Handlex.Select(&datacek, qryCek, code, id)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return data, fmt.Errorf("QUERY_FAILED")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return data, fmt.Errorf("code sudah dipakai")
}
qry := `UPDATE m_usergroup
SET M_UserGroupCode = ?,
M_UserGroupName= ?
WHERE M_UserGroupID = ?;`
// time.Sleep(5 * time.Second)
rst := dbx.Handlex.MustExec(qry, code, name, id)
_, err = rst.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error Update usergroup",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
data, err = ug.GetUserGroupByIDV1(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get usergroup by id",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (ug *ServicesMasterMenuUserGroup) DeleteUserGroup(id string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
qry := `UPDATE m_usergroup
SET M_UserGroupIsActive = 'N'
WHERE M_UserGroupID = ?;`
// time.Sleep(5 * time.Second)
rst := dbx.Handlex.MustExec(qry, id)
_, err := rst.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error delete usergroup",
zap.String("id", id),
)
return data, fmt.Errorf("QUERY_FAILED")
}
data, err = ug.GetUserGroupByIDV1(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get usergroup by id",
zap.String("id", id),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (su *ServicesMasterMenuUserGroup) GetListMasterUserGroupV2(search string, currentPage int, rowPerPage int) ([]models.UserGroupV1, int, error) {
var userGroupList []models.UserGroupV1
var totalData int
offset := (currentPage - 1) * rowPerPage
prm := "%" + strings.TrimSpace(search) + "%"
querytotal := `
SELECT COUNT(*)
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
AND (M_UserGroupCode LIKE ? OR M_UserGroupName LIKE ?)
`
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
query := `
SELECT
ROW_NUMBER() OVER () AS nomor,
M_UserGroupID,
M_UserGroupCode,
M_UserGroupName,
M_UserGroupCreated,
M_UserGroupLastUpdated,
M_UserGroupIsActive
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
AND (M_UserGroupCode LIKE ? OR M_UserGroupName LIKE ?)
order by M_UserGroupID ASC
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&userGroupList, query, prm, prm, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
return userGroupList, totalPage, nil
}
package dev_services
import (
"fmt"
"math"
"strconv"
"strings"
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"go.uber.org/zap"
)
func NewServicesMasterMenuUserGroup(uStore db.AppStore) *ServicesMasterMenuUserGroup {
return &ServicesMasterMenuUserGroup{
MasterMenuUserGroupStore: uStore,
}
}
// MasterMenu struct
type Breadcrumb struct {
IDBreadcrumb string `json:"id_breadcrumb"`
Name string `json:"name"`
Url string `json:"url"`
}
type ChildrenMenu struct {
ChildrenParentID string `json:"children_parent_id"`
ChildrenMenuID string `json:"children_menu_id"`
ChildrenMenuName string `json:"children_menu_name"`
ChildrenMenuURL string `json:"children_menu_url"`
// Breadcrumb []Breadcrumb `json:"breadcrumb"`
}
type MasterMenu struct {
ID string `json:"id"`
ParentMenuID string `json:"parent_menu_id"`
ParentMenuName string `json:"parent_menu_name"`
ParentUrl string `json:"parent_url"`
ParentIcon string `json:"parent_icon"`
Children []ChildrenMenu `json:"children"`
}
type ServicesMasterMenuUserGroup struct {
MasterMenuUserGroupStore db.AppStore
}
type AutoComplete struct {
Name string `json:"name"`
}
func (ug *ServicesMasterMenuUserGroup) GetUserGroup() ([]models.UserGroup, error) {
data := []models.UserGroup{
{UserGroupID: 1, UserGroupKode: "A", UserGroupName: "UG1"},
{UserGroupID: 2, UserGroupKode: "B", UserGroupName: "UG2"},
{UserGroupID: 3, UserGroupKode: "C", UserGroupName: "UG3"},
}
return data, nil
}
func (ug *ServicesMasterMenuUserGroup) GetUserGroupByID(id string) (models.UserGroup, error) {
listdata := []models.UserGroup{
{UserGroupID: 1, UserGroupKode: "A", UserGroupName: "UG1"},
{UserGroupID: 2, UserGroupKode: "B", UserGroupName: "UG2"},
{UserGroupID: 3, UserGroupKode: "C", UserGroupName: "UG3"},
}
var data models.UserGroup
idData, err := strconv.Atoi(id)
if err != nil {
return data, fmt.Errorf("pack %v: %w", "Error", err)
}
for _, v := range listdata {
if v.UserGroupID == idData {
data = v
}
}
// time.Sleep(5 * time.Second)
return data, nil
}
// try
func (su *ServicesMasterMenuUserGroup) GetListMasterUserGroup() ([]models.UserGroupV1, error) {
var userGroupList []models.UserGroupV1
query := `
SELECT
ROW_NUMBER() OVER () AS nomor,
M_UserGroupID,
M_UserGroupCode,
M_UserGroupName,
M_UserGroupCreated,
M_UserGroupLastUpdated,
M_UserGroupIsActive
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
order by M_UserGroupID ASC
`
if err := dbx.Handlex.Select(&userGroupList, query); err != nil {
return nil, fmt.Errorf("error querying database: %v", err)
}
return userGroupList, nil
}
func (su *ServicesMasterMenuUserGroup) GetListBreadCrumb(title string) (models.BreadCrumbV1, error) {
var ret models.BreadCrumbV1
dummyBreadcrumb := []models.BreadCrumbV1{
{
Title: "Master User Group",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "User Group",
Url: "",
},
},
},
{
Title: "Master User",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "User",
Url: "",
},
},
},
}
for _, breadcrumb := range dummyBreadcrumb {
// if utils.Contains(breadcrumb.Title, title) {
// ret = breadcrumb
// return ret, nil
// }
if breadcrumb.Title == title {
ret = breadcrumb
return ret, nil
}
}
return ret, nil
}
func (ug *ServicesMasterMenuUserGroup) GetUserGroupByIDV1(id string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
err := dbx.Handlex.Get(&data, `SELECT * FROM m_usergroup
WHERE M_UserGroupID = ?`, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data ug by id vs",
zap.String("ID", id),
zap.Error(err),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (ug *ServicesMasterMenuUserGroup) AddUserGroup(code string, name string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
var datacek []models.UserGroupV1
qryCek := `SELECT M_UserGroupCode FROM m_usergroup WHERE M_UserGroupCode = ? AND M_UserGroupIsActive = 'Y'`
err := dbx.Handlex.Select(&datacek, qryCek, code)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return data, fmt.Errorf("QUERY_FAILED")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return data, fmt.Errorf("code sudah dipakai")
}
qry := `INSERT INTO m_usergroup
(M_UserGroupCode,
M_UserGroupName)
VALUES (?,?);`
// time.Sleep(5 * time.Second)
rst := dbx.Handlex.MustExec(qry, code, name)
insertedID, err := rst.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("Error Insert usergroup",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
s := strconv.Itoa(int(insertedID))
data, err = ug.GetUserGroupByIDV1(s)
if err != nil {
defer logger.Sync()
logger.Error("Error get usergroup by id",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (ug *ServicesMasterMenuUserGroup) EditUserGroup(id string, code string, name string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
var datacek []models.UserGroupV1
qryCek := `SELECT M_UserGroupCode FROM m_usergroup WHERE M_UserGroupCode = ? AND M_UserGroupIsActive = 'Y' AND M_UserGroupID <> ?`
err := dbx.Handlex.Select(&datacek, qryCek, code, id)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return data, fmt.Errorf("QUERY_FAILED")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return data, fmt.Errorf("code sudah dipakai")
}
qry := `UPDATE m_usergroup
SET M_UserGroupCode = ?,
M_UserGroupName= ?
WHERE M_UserGroupID = ?;`
// time.Sleep(5 * time.Second)
rst := dbx.Handlex.MustExec(qry, code, name, id)
_, err = rst.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error Update usergroup",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
data, err = ug.GetUserGroupByIDV1(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get usergroup by id",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (ug *ServicesMasterMenuUserGroup) DeleteUserGroup(id string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
qry := `UPDATE m_usergroup
SET M_UserGroupIsActive = 'N'
WHERE M_UserGroupID = ?;`
// time.Sleep(5 * time.Second)
rst := dbx.Handlex.MustExec(qry, id)
_, err := rst.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error delete usergroup",
zap.String("id", id),
)
return data, fmt.Errorf("QUERY_FAILED")
}
data, err = ug.GetUserGroupByIDV1(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get usergroup by id",
zap.String("id", id),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (su *ServicesMasterMenuUserGroup) GetListMasterUserGroupV2(search string, currentPage int, rowPerPage int) ([]models.UserGroupV1, int, error) {
var userGroupList []models.UserGroupV1
var totalData int
offset := (currentPage - 1) * rowPerPage
prm := "%" + strings.TrimSpace(search) + "%"
querytotal := `
SELECT COUNT(*)
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
AND (M_UserGroupCode LIKE ? OR M_UserGroupName LIKE ?)
`
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
query := `
SELECT
ROW_NUMBER() OVER () AS nomor,
M_UserGroupID,
M_UserGroupCode,
M_UserGroupName,
M_UserGroupCreated,
M_UserGroupLastUpdated,
M_UserGroupIsActive
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
AND (M_UserGroupCode LIKE ? OR M_UserGroupName LIKE ?)
order by M_UserGroupID ASC
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&userGroupList, query, prm, prm, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
return userGroupList, totalPage, nil
}

View File

@@ -1,74 +1,74 @@
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"go.uber.org/zap"
)
type McuDaftarPesertaServices struct {
McuDaftarPesertaStore db.AppStore
}
func NewMcuDaftarPesertaServices(uStore db.AppStore) *McuDaftarPesertaServices {
return &McuDaftarPesertaServices{
McuDaftarPesertaStore: uStore,
}
}
func (mdp *McuDaftarPesertaServices) GetListMcuDaftarPeserta(id string, currentPage int, rowPerPage int) ([]models.ModelMcuDaftarPeserta, int, error) {
logger, _ := zap.NewProduction()
var listDaftarPeserta []models.ModelMcuDaftarPeserta
var totalData int
offset := (currentPage - 1) * rowPerPage
querytotal := `SELECT COUNT(*)
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
AND M_PatientIsActive = 'Y'
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ?`
if err := dbx.Handlex.Get(&totalData, querytotal, id); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
query := `SELECT T_OrderHeaderID,
T_OrderHeaderDate,
T_OrderHeaderLabNumber,
T_OrderHeaderM_PatientAge,
M_PatientID,
M_PatientNoReg,
M_PatientName,
M_PatientGender,
CASE
WHEN M_PatientGender = 'male' THEN 'Laki - Laki'
WHEN M_PatientGender = 'female' THEN 'Perempuan'
ELSE ' '
END AS jenisKelamin,
M_PatientDOB,
FLOOR(DATEDIFF(CURDATE(), M_PatientDOB)/ 365.25) AS age
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
AND M_PatientIsActive = 'Y'
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ?
ORDER BY M_PatientName ASC
LIMIT ? OFFSET ?`
if err := dbx.Handlex.Select(&listDaftarPeserta, query, id, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
defer logger.Sync()
logger.Info("GET DATA PESERTA",
zap.Any("id", id),
zap.Any("total data", totalData),
zap.Any("peserta", listDaftarPeserta),
)
return listDaftarPeserta, totalPage, nil
}
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"go.uber.org/zap"
)
type McuDaftarPesertaServices struct {
McuDaftarPesertaStore db.AppStore
}
func NewMcuDaftarPesertaServices(uStore db.AppStore) *McuDaftarPesertaServices {
return &McuDaftarPesertaServices{
McuDaftarPesertaStore: uStore,
}
}
func (mdp *McuDaftarPesertaServices) GetListMcuDaftarPeserta(id string, currentPage int, rowPerPage int) ([]models.ModelMcuDaftarPeserta, int, error) {
logger, _ := zap.NewProduction()
var listDaftarPeserta []models.ModelMcuDaftarPeserta
var totalData int
offset := (currentPage - 1) * rowPerPage
querytotal := `SELECT COUNT(*)
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
AND M_PatientIsActive = 'Y'
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ?`
if err := dbx.Handlex.Get(&totalData, querytotal, id); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
query := `SELECT T_OrderHeaderID,
T_OrderHeaderDate,
T_OrderHeaderLabNumber,
T_OrderHeaderM_PatientAge,
M_PatientID,
M_PatientNoReg,
M_PatientName,
M_PatientGender,
CASE
WHEN M_PatientGender = 'male' THEN 'Laki - Laki'
WHEN M_PatientGender = 'female' THEN 'Perempuan'
ELSE ' '
END AS jenisKelamin,
M_PatientDOB,
FLOOR(DATEDIFF(CURDATE(), M_PatientDOB)/ 365.25) AS age
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
AND M_PatientIsActive = 'Y'
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ?
ORDER BY M_PatientName ASC
LIMIT ? OFFSET ?`
if err := dbx.Handlex.Select(&listDaftarPeserta, query, id, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
defer logger.Sync()
logger.Info("GET DATA PESERTA",
zap.Any("id", id),
zap.Any("total data", totalData),
zap.Any("peserta", listDaftarPeserta),
)
return listDaftarPeserta, totalPage, nil
}

View File

@@ -1,251 +1,251 @@
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strings"
"go.uber.org/zap"
)
func NewMdBahanServices(uStore db.AppStore) *MdBahanServices {
return &MdBahanServices{
MdBahanStore: uStore,
}
}
type MdBahanServices struct {
MdBahanStore db.AppStore
}
func (su *MdBahanServices) GetListMdBahan(
search string,
stationID string,
currentPage int,
rowPerPage int) ([]models.Bahan, int, error) {
var bahanList []models.Bahan
var totalData int
offset := (currentPage - 1) * rowPerPage
prm := "%" + strings.TrimSpace(search) + "%"
filterStation := ""
if stationID != "0" {
filterStation = "AND T_BahanT_SampleStationID = " + stationID
}
querytotal := `
SELECT COUNT(*) FROM
t_bahan
JOIN
t_samplestation
ON T_BahanT_SampleStationID = T_SampleStationID
AND T_BahanIsActive = 'Y'
AND T_SampleStationIsActive = 'Y'
WHERE (T_BahanName LIKE ? OR T_BahanCode LIKE ? )
` + filterStation
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
query := `
SELECT t_bahan.*,
T_SampleStationName,
T_SampleStationID FROM
t_bahan
JOIN
t_samplestation
ON T_BahanT_SampleStationID = T_SampleStationID
AND T_BahanIsActive = 'Y'
AND T_SampleStationIsActive = 'Y'
WHERE (T_BahanName LIKE ? OR T_BahanCode LIKE ? )
` + filterStation + `
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&bahanList, query, prm, prm, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
return bahanList, totalPage, nil
}
func (su *MdBahanServices) GetMdBahanBreadCrumb(title string) (models.BreadCrumbV1, error) {
ret := models.BreadCrumbV1{
Title: "Master Bahan",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "Bahan",
Url: "",
},
},
}
return ret, nil
}
func (su *MdBahanServices) GetListSampleStation(isFilter bool) ([]models.TmpSampleStation, error) {
var stationList []models.TmpSampleStation
query := `
SELECT
T_SampleStationID,
T_SampleStationName
FROM
t_samplestation
WHERE T_SampleStationIsActive = 'Y'
`
if err := dbx.Handlex.Select(&stationList, query); err != nil {
return nil, fmt.Errorf("error querying database: %v", err)
}
if isFilter {
stationList = append(
[]models.TmpSampleStation{{T_SampleStationID: 0, T_SampleStationName: "Semua"}}, stationList...)
}
return stationList, nil
}
func (su *MdBahanServices) AddMdBahan(code string, name string, stationid string) (bool, error) {
logger, _ := zap.NewProduction()
var datacek []models.Bahan
qryCek := `SELECT T_BahanCode FROM t_bahan WHERE T_BahanCode = ? AND T_BahanIsActive = 'Y'`
err := dbx.Handlex.Select(&datacek, qryCek, code)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return false, fmt.Errorf("query cek failed")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return false, fmt.Errorf("code sudah dipakai")
}
query := `
INSERT INTO t_bahan(
T_BahanT_SampleStationID,
T_BahanCode,
T_BahanName,
T_BahanCreated,
T_BahanCreatedUserID)
VALUES(?,?,?, NOW(), 1)
`
rst := dbx.Handlex.MustExec(query, stationid, code, name)
_, err = rst.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("Error Insert t bahan",
zap.Any("code", err),
)
return false, fmt.Errorf("insert data failed")
}
return true, nil
}
func (ug *MdBahanServices) GetMdBahanByID(id string) (models.Bahan, error) {
logger, _ := zap.NewProduction()
var data models.Bahan
err := dbx.Handlex.Get(&data,
`SELECT t_bahan.*,
T_SampleStationID,
T_SampleStationName
FROM t_bahan
JOIN
t_samplestation
ON T_BahanT_SampleStationID = T_SampleStationID
AND T_BahanIsActive = 'Y'
AND T_SampleStationIsActive = 'Y'
WHERE T_BahanID = ? `, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data bahan by id vs",
zap.String("ID", id),
zap.Error(err),
)
return data, fmt.Errorf("get bahan failed")
}
return data, nil
}
func (su *MdBahanServices) EditMdBahan(id string, code string, name string, stationid string) (bool, error) {
logger, _ := zap.NewProduction()
var datacek []models.Bahan
qryCek := `SELECT T_BahanCode FROM t_bahan WHERE T_BahanCode = ? AND T_BahanIsActive = 'Y' AND T_BahanID <> ?`
err := dbx.Handlex.Select(&datacek, qryCek, code, id)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return false, fmt.Errorf("query cek failed")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return false, fmt.Errorf("code sudah dipakai")
}
query := `
UPDATE t_bahan SET
T_BahanCode = ?,
T_BahanName = ?,
T_BahanT_SampleStationID = ?
WHERE T_BahanID = ?
`
rst := dbx.Handlex.MustExec(query, code, name, stationid, id)
_, err = rst.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("Error edit t bahan",
zap.Any("code", err),
)
return false, fmt.Errorf("edit data failed")
}
return true, nil
}
func (su *MdBahanServices) DeleteMdBahan(id string) (bool, error) {
logger, _ := zap.NewProduction()
query := `
UPDATE t_bahan
SET T_BahanIsActive = 'N',
T_BahanDeleted = NOW(),
T_BahanDeletedUserID = '1'
WHERE T_BahanID = ?
`
rst := dbx.Handlex.MustExec(query, id)
_, err := rst.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("Error edit t bahan",
zap.Any("code", err),
)
return false, fmt.Errorf("edit data failed")
}
return true, nil
}
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strings"
"go.uber.org/zap"
)
func NewMdBahanServices(uStore db.AppStore) *MdBahanServices {
return &MdBahanServices{
MdBahanStore: uStore,
}
}
type MdBahanServices struct {
MdBahanStore db.AppStore
}
func (su *MdBahanServices) GetListMdBahan(
search string,
stationID string,
currentPage int,
rowPerPage int) ([]models.Bahan, int, error) {
var bahanList []models.Bahan
var totalData int
offset := (currentPage - 1) * rowPerPage
prm := "%" + strings.TrimSpace(search) + "%"
filterStation := ""
if stationID != "0" {
filterStation = "AND T_BahanT_SampleStationID = " + stationID
}
querytotal := `
SELECT COUNT(*) FROM
t_bahan
JOIN
t_samplestation
ON T_BahanT_SampleStationID = T_SampleStationID
AND T_BahanIsActive = 'Y'
AND T_SampleStationIsActive = 'Y'
WHERE (T_BahanName LIKE ? OR T_BahanCode LIKE ? )
` + filterStation
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
query := `
SELECT t_bahan.*,
T_SampleStationName,
T_SampleStationID FROM
t_bahan
JOIN
t_samplestation
ON T_BahanT_SampleStationID = T_SampleStationID
AND T_BahanIsActive = 'Y'
AND T_SampleStationIsActive = 'Y'
WHERE (T_BahanName LIKE ? OR T_BahanCode LIKE ? )
` + filterStation + `
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&bahanList, query, prm, prm, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
return bahanList, totalPage, nil
}
func (su *MdBahanServices) GetMdBahanBreadCrumb(title string) (models.BreadCrumbV1, error) {
ret := models.BreadCrumbV1{
Title: "Master Bahan",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "Bahan",
Url: "",
},
},
}
return ret, nil
}
func (su *MdBahanServices) GetListSampleStation(isFilter bool) ([]models.TmpSampleStation, error) {
var stationList []models.TmpSampleStation
query := `
SELECT
T_SampleStationID,
T_SampleStationName
FROM
t_samplestation
WHERE T_SampleStationIsActive = 'Y'
`
if err := dbx.Handlex.Select(&stationList, query); err != nil {
return nil, fmt.Errorf("error querying database: %v", err)
}
if isFilter {
stationList = append(
[]models.TmpSampleStation{{T_SampleStationID: 0, T_SampleStationName: "Semua"}}, stationList...)
}
return stationList, nil
}
func (su *MdBahanServices) AddMdBahan(code string, name string, stationid string) (bool, error) {
logger, _ := zap.NewProduction()
var datacek []models.Bahan
qryCek := `SELECT T_BahanCode FROM t_bahan WHERE T_BahanCode = ? AND T_BahanIsActive = 'Y'`
err := dbx.Handlex.Select(&datacek, qryCek, code)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return false, fmt.Errorf("query cek failed")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return false, fmt.Errorf("code sudah dipakai")
}
query := `
INSERT INTO t_bahan(
T_BahanT_SampleStationID,
T_BahanCode,
T_BahanName,
T_BahanCreated,
T_BahanCreatedUserID)
VALUES(?,?,?, NOW(), 1)
`
rst := dbx.Handlex.MustExec(query, stationid, code, name)
_, err = rst.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("Error Insert t bahan",
zap.Any("code", err),
)
return false, fmt.Errorf("insert data failed")
}
return true, nil
}
func (ug *MdBahanServices) GetMdBahanByID(id string) (models.Bahan, error) {
logger, _ := zap.NewProduction()
var data models.Bahan
err := dbx.Handlex.Get(&data,
`SELECT t_bahan.*,
T_SampleStationID,
T_SampleStationName
FROM t_bahan
JOIN
t_samplestation
ON T_BahanT_SampleStationID = T_SampleStationID
AND T_BahanIsActive = 'Y'
AND T_SampleStationIsActive = 'Y'
WHERE T_BahanID = ? `, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data bahan by id vs",
zap.String("ID", id),
zap.Error(err),
)
return data, fmt.Errorf("get bahan failed")
}
return data, nil
}
func (su *MdBahanServices) EditMdBahan(id string, code string, name string, stationid string) (bool, error) {
logger, _ := zap.NewProduction()
var datacek []models.Bahan
qryCek := `SELECT T_BahanCode FROM t_bahan WHERE T_BahanCode = ? AND T_BahanIsActive = 'Y' AND T_BahanID <> ?`
err := dbx.Handlex.Select(&datacek, qryCek, code, id)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return false, fmt.Errorf("query cek failed")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return false, fmt.Errorf("code sudah dipakai")
}
query := `
UPDATE t_bahan SET
T_BahanCode = ?,
T_BahanName = ?,
T_BahanT_SampleStationID = ?
WHERE T_BahanID = ?
`
rst := dbx.Handlex.MustExec(query, code, name, stationid, id)
_, err = rst.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("Error edit t bahan",
zap.Any("code", err),
)
return false, fmt.Errorf("edit data failed")
}
return true, nil
}
func (su *MdBahanServices) DeleteMdBahan(id string) (bool, error) {
logger, _ := zap.NewProduction()
query := `
UPDATE t_bahan
SET T_BahanIsActive = 'N',
T_BahanDeleted = NOW(),
T_BahanDeletedUserID = '1'
WHERE T_BahanID = ?
`
rst := dbx.Handlex.MustExec(query, id)
_, err := rst.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("Error edit t bahan",
zap.Any("code", err),
)
return false, fmt.Errorf("edit data failed")
}
return true, nil
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,262 +1,262 @@
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strconv"
"strings"
"go.uber.org/zap"
)
func NewMdNatUnitServices(uStore db.AppStore) *MdNatUnitServices {
return &MdNatUnitServices{
MdNatUnitStore: uStore,
}
}
type MdNatUnitServices struct {
MdNatUnitStore db.AppStore
}
func (nu *MdNatUnitServices) GetListMdNatUnit(search string, currentPage int, rowPerPage int) ([]models.NatUnit, int, error) {
var natUnitList []models.NatUnit
var totalData int
offset := (currentPage - 1) * rowPerPage
prm := "%" + strings.TrimSpace(search) + "%"
querytotal := `SELECT COUNT(*)
FROM nat_unit
WHERE Nat_UnitIsActive = 'Y'
AND (Nat_UnitCode LIKE ? OR Nat_UnitName LIKE ?)`
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
query := `SELECT ROW_NUMBER() OVER (ORDER BY Nat_UnitID DESC) AS nomor,
Nat_UnitID,
Nat_UnitCode,
Nat_UnitName,
Nat_UnitCreated,
Nat_UnitLastUpdated,
Nat_UnitIsActive
FROM nat_unit
WHERE Nat_UnitIsActive = 'Y'
AND (Nat_UnitCode LIKE ? OR Nat_UnitName LIKE ?)
ORDER BY Nat_UnitID DESC
LIMIT ? OFFSET ?`
if err := dbx.Handlex.Select(&natUnitList, query, prm, prm, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
return natUnitList, totalPage, nil
}
func (nu *MdNatUnitServices) GetMdNatUnitBreadCrumb(title string) (models.BreadCrumbV1, error) {
var ret models.BreadCrumbV1
dummyBreadcrumb := []models.BreadCrumbV1{
{
Title: "Master Unit",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "Unit",
Url: "",
},
},
},
{
Title: "Master User",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "User",
Url: "",
},
},
},
}
for _, breadcrumb := range dummyBreadcrumb {
if breadcrumb.Title == title {
ret = breadcrumb
return ret, nil
}
}
return ret, nil
}
func (nu *MdNatUnitServices) GetMdNatUnitByID(id string) (models.NatUnit, error) {
logger, _ := zap.NewProduction()
var data models.NatUnit
err := dbx.Handlex.Get(&data, `SELECT * FROM nat_unit
WHERE Nat_UnitID = ?`, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data unit by id",
zap.String("ID", id),
zap.Error(err),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (nu *MdNatUnitServices) AddMdNatUnit(code string, name string) (models.NatUnit, error) {
logger, _ := zap.NewProduction()
var data models.NatUnit
var datacek []models.NatUnit
qryCek := `SELECT Nat_UnitCode FROM nat_unit
WHERE Nat_UnitCode = ? AND Nat_UnitIsActive = 'Y'`
err := dbx.Handlex.Select(&datacek, qryCek, code)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return data, fmt.Errorf("QUERY_FAILED")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return data, fmt.Errorf("code sudah dipakai")
}
qry := `INSERT INTO nat_unit
(Nat_UnitCode,
Nat_UnitName) VALUES(?,?)`
rst := dbx.Handlex.MustExec(qry, code, name)
insertedID, err := rst.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("Error Insert natunit",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
s := strconv.Itoa(int(insertedID))
data, err = nu.GetMdNatUnitByID(s)
if err != nil {
defer logger.Sync()
logger.Error("Error get natunit by id",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (nu *MdNatUnitServices) EditMdNatUnit(id string, code string, name string) (models.NatUnit, error) {
logger, _ := zap.NewProduction()
var data models.NatUnit
var datacek []models.NatUnit
qryCek := `SELECT Nat_UnitCode FROM nat_unit
WHERE Nat_UnitCode = ? AND Nat_UnitIsActive = 'Y' AND Nat_UnitID <> ?`
err := dbx.Handlex.Select(&datacek, qryCek, code, id)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return data, fmt.Errorf("QUERY_FAILED")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return data, fmt.Errorf("code sudah dipakai")
}
qry := `UPDATE nat_unit
SET Nat_UnitCode = ?,
Nat_UnitName = ?,
Nat_UnitLastUpdated = NOW()
WHERE Nat_UnitID = ?`
rst := dbx.Handlex.MustExec(qry, code, name, id)
_, err = rst.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error Update natunit",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
data, err = nu.GetMdNatUnitByID(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get natunit by id",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (nu *MdNatUnitServices) DeleteMdNatUnit(id string) (models.NatUnit, error) {
logger, _ := zap.NewProduction()
var data models.NatUnit
qry := `UPDATE nat_unit
SET Nat_UnitLastUpdated = NOW(),
Nat_UnitIsActive = 'N'
WHERE Nat_UnitID = ?`
rst := dbx.Handlex.MustExec(qry, id)
_, err := rst.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error delete nat unit",
zap.String("id", id),
)
return data, fmt.Errorf("QUERY_FAILED")
}
data, err = nu.GetMdNatUnitByID(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get nat unit by id",
zap.String("id", id),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strconv"
"strings"
"go.uber.org/zap"
)
func NewMdNatUnitServices(uStore db.AppStore) *MdNatUnitServices {
return &MdNatUnitServices{
MdNatUnitStore: uStore,
}
}
type MdNatUnitServices struct {
MdNatUnitStore db.AppStore
}
func (nu *MdNatUnitServices) GetListMdNatUnit(search string, currentPage int, rowPerPage int) ([]models.NatUnit, int, error) {
var natUnitList []models.NatUnit
var totalData int
offset := (currentPage - 1) * rowPerPage
prm := "%" + strings.TrimSpace(search) + "%"
querytotal := `SELECT COUNT(*)
FROM nat_unit
WHERE Nat_UnitIsActive = 'Y'
AND (Nat_UnitCode LIKE ? OR Nat_UnitName LIKE ?)`
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
query := `SELECT ROW_NUMBER() OVER (ORDER BY Nat_UnitID DESC) AS nomor,
Nat_UnitID,
Nat_UnitCode,
Nat_UnitName,
Nat_UnitCreated,
Nat_UnitLastUpdated,
Nat_UnitIsActive
FROM nat_unit
WHERE Nat_UnitIsActive = 'Y'
AND (Nat_UnitCode LIKE ? OR Nat_UnitName LIKE ?)
ORDER BY Nat_UnitID DESC
LIMIT ? OFFSET ?`
if err := dbx.Handlex.Select(&natUnitList, query, prm, prm, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
return natUnitList, totalPage, nil
}
func (nu *MdNatUnitServices) GetMdNatUnitBreadCrumb(title string) (models.BreadCrumbV1, error) {
var ret models.BreadCrumbV1
dummyBreadcrumb := []models.BreadCrumbV1{
{
Title: "Master Unit",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "Unit",
Url: "",
},
},
},
{
Title: "Master User",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "User",
Url: "",
},
},
},
}
for _, breadcrumb := range dummyBreadcrumb {
if breadcrumb.Title == title {
ret = breadcrumb
return ret, nil
}
}
return ret, nil
}
func (nu *MdNatUnitServices) GetMdNatUnitByID(id string) (models.NatUnit, error) {
logger, _ := zap.NewProduction()
var data models.NatUnit
err := dbx.Handlex.Get(&data, `SELECT * FROM nat_unit
WHERE Nat_UnitID = ?`, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data unit by id",
zap.String("ID", id),
zap.Error(err),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (nu *MdNatUnitServices) AddMdNatUnit(code string, name string) (models.NatUnit, error) {
logger, _ := zap.NewProduction()
var data models.NatUnit
var datacek []models.NatUnit
qryCek := `SELECT Nat_UnitCode FROM nat_unit
WHERE Nat_UnitCode = ? AND Nat_UnitIsActive = 'Y'`
err := dbx.Handlex.Select(&datacek, qryCek, code)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return data, fmt.Errorf("QUERY_FAILED")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return data, fmt.Errorf("code sudah dipakai")
}
qry := `INSERT INTO nat_unit
(Nat_UnitCode,
Nat_UnitName) VALUES(?,?)`
rst := dbx.Handlex.MustExec(qry, code, name)
insertedID, err := rst.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("Error Insert natunit",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
s := strconv.Itoa(int(insertedID))
data, err = nu.GetMdNatUnitByID(s)
if err != nil {
defer logger.Sync()
logger.Error("Error get natunit by id",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (nu *MdNatUnitServices) EditMdNatUnit(id string, code string, name string) (models.NatUnit, error) {
logger, _ := zap.NewProduction()
var data models.NatUnit
var datacek []models.NatUnit
qryCek := `SELECT Nat_UnitCode FROM nat_unit
WHERE Nat_UnitCode = ? AND Nat_UnitIsActive = 'Y' AND Nat_UnitID <> ?`
err := dbx.Handlex.Select(&datacek, qryCek, code, id)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return data, fmt.Errorf("QUERY_FAILED")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return data, fmt.Errorf("code sudah dipakai")
}
qry := `UPDATE nat_unit
SET Nat_UnitCode = ?,
Nat_UnitName = ?,
Nat_UnitLastUpdated = NOW()
WHERE Nat_UnitID = ?`
rst := dbx.Handlex.MustExec(qry, code, name, id)
_, err = rst.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error Update natunit",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
data, err = nu.GetMdNatUnitByID(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get natunit by id",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (nu *MdNatUnitServices) DeleteMdNatUnit(id string) (models.NatUnit, error) {
logger, _ := zap.NewProduction()
var data models.NatUnit
qry := `UPDATE nat_unit
SET Nat_UnitLastUpdated = NOW(),
Nat_UnitIsActive = 'N'
WHERE Nat_UnitID = ?`
rst := dbx.Handlex.MustExec(qry, id)
_, err := rst.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error delete nat unit",
zap.String("id", id),
)
return data, fmt.Errorf("QUERY_FAILED")
}
data, err = nu.GetMdNatUnitByID(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get nat unit by id",
zap.String("id", id),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}

View File

@@ -1,277 +1,277 @@
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strconv"
"strings"
"go.uber.org/zap"
)
func NewMDSampleStationServices(uStore db.AppStore) *MDSampleStationServices {
return &MDSampleStationServices{
MDSampleStationStore: uStore,
}
}
type MDSampleStationServices struct {
MDSampleStationStore db.AppStore
}
func (ss *MDSampleStationServices) GetMDSampleStationBreadcrumb() (models.BreadCrumbV1, error) {
var ret models.BreadCrumbV1
Breadcrumb := models.BreadCrumbV1{
Title: "Master Sample Station",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "Sample Stasion",
Url: "",
},
},
}
ret = Breadcrumb
return ret, nil
}
func (ss *MDSampleStationServices) GetListSampleStation(search string, currentPage int, rowPerPage int) ([]models.MDSampleStation, int, error) {
var sampleStationList []models.MDSampleStation
var totalData int
offset := (currentPage - 1) * rowPerPage
prm := "%" + strings.TrimSpace(search) + "%"
querytotal := `
SELECT COUNT(*)
FROM t_samplestation
WHERE T_SampleStationIsActive = 'Y' AND (T_SampleStationCode LIKE ? OR T_SampleStationName LIKE ?)
`
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
return nil, 0, fmt.Errorf("error query get total data: %v", err)
}
query := `
SELECT
T_SampleStationID,
T_SampleStationCode,
T_SampleStationName,
T_SampleStationNat_GroupID,
T_SampleStationIsNonLab,
T_SampleStationIsActive
FROM t_samplestation
WHERE T_SampleStationIsActive = 'Y'
AND (T_SampleStationCode LIKE ? OR T_SampleStationName LIKE ?)
ORDER BY T_SampleStationID ASC
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&sampleStationList, query, prm, prm, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error query database: %v", err)
}
for i := range sampleStationList {
if len(sampleStationList[i].T_SampleStationIsNonLab) == 0 {
sampleStationList[i].T_SampleStationIsNonLab = "LAB"
}
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
return sampleStationList, totalPage, nil
}
func (ss *MDSampleStationServices) GetMDSampleStationByID(id string) (models.MDSampleStation, error) {
logger, _ := zap.NewProduction()
var ret models.MDSampleStation
q := `
SELECT
T_SampleStationID,
T_SampleStationCode,
T_SampleStationName,
T_SampleStationNat_GroupID,
T_SampleStationIsNonLab,
T_SampleStationIsActive
FROM t_samplestation
WHERE T_SampleStationID = ?`
err := dbx.Handlex.Get(&ret, q, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data by ID", zap.String("ID", id), zap.Error(err))
return ret, fmt.Errorf("query get data by id failed")
}
if len(ret.T_SampleStationIsNonLab) == 0 {
ret.T_SampleStationIsNonLab = "LAB"
}
return ret, nil
}
func (ss *MDSampleStationServices) GetListGroupSampleStation() ([]models.MDSampleStationGroup, error) {
data := []models.MDSampleStationGroup{
{
ID: 1,
Group: "RADIODIAGNOSTIC",
},
{
ID: 2,
Group: "ELEKTROMEDIS",
},
{
ID: 3,
Group: "LAB",
},
{
ID: 4,
Group: "OTHERS",
},
}
return data, nil
}
func (ss *MDSampleStationServices) AddMDSampleStation(code string, name string, group string) (models.MDSampleStation, error) {
logger, _ := zap.NewProduction()
var data models.MDSampleStation
if strings.ToUpper(group) == "LAB" {
group = " "
}
// cek existing code & name
var count int
var prmCode = "%" + code + "%"
var prmName = "%" + name + "%"
q := `
SELECT COUNT(*)
FROM t_samplestation
WHERE (T_SampleStationCode LIKE ? OR T_SampleStationName LIKE ?)
AND T_SampleStationIsActive = 'Y'
`
err := dbx.Handlex.Get(&count, q, prmCode, prmName)
if err != nil {
defer logger.Sync()
logger.Error("cek duplicate", zap.Any("code", prmCode), zap.Any("name", prmName))
return data, fmt.Errorf("query failed to cek duplicate")
}
if count > 0 {
defer logger.Sync()
logger.Error("duplicate data", zap.Any("code", code), zap.Any("name", name))
return data, fmt.Errorf("duplicate code or name")
}
q = `
INSERT INTO t_samplestation (
T_SampleStationCode,
T_SampleStationName,
T_SampleStationIsNonLab,
T_SampleStationCreated,
T_SampleStationCreatedUserID
) VALUES (?,?,?,NOW(),1);
`
rst := dbx.Handlex.MustExec(q, code, name, group)
insertedID, err := rst.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("error insert data", zap.Any("code", code), zap.Any("name", name), zap.Any("group", group))
return data, fmt.Errorf("query failed insert data")
}
s := strconv.Itoa(int(insertedID))
return ss.GetMDSampleStationByID(s)
}
func (ss *MDSampleStationServices) EditMDSampleStation(id string, code string, name string, group string) (models.MDSampleStation, error) {
logger, _ := zap.NewProduction()
var ret models.MDSampleStation
if strings.ToUpper(group) == "LAB" {
group = " "
}
// cek existeing code & name
var count int
var prmCode = "%" + code + "%"
var prmName = "%" + name + "%"
q := `
SELECT COUNT(*)
FROM t_samplestation
WHERE (T_SampleStationCode LIKE ? OR T_SampleStationName LIKE ?)
AND T_SampleStationIsActive = 'Y'
AND T_SampleStationID <> ?
`
err := dbx.Handlex.Get(&count, q, prmCode, prmName, id)
if err != nil {
defer logger.Sync()
logger.Error("cek duplicate", zap.Any("code", code), zap.Any("name", name))
return ret, fmt.Errorf("query failed to cek duplicate")
}
if count > 0 {
defer logger.Sync()
logger.Error("duplicate data", zap.Any("code", code), zap.Any("name", name))
return ret, fmt.Errorf("duplicate code or name")
}
// update data
q = `
UPDATE t_samplestation SET
T_SampleStationCode = ?,
T_SampleStationName = ?,
T_SampleStationIsNonLab = ?,
T_SampleStationLastUpdated = NOW(),
T_SampleStationLastUpdatedUserID = 1
WHERE T_SampleStationID = ?;
`
updt := dbx.Handlex.MustExec(q, code, name, group, id)
_, err = updt.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("error update data", zap.Any("code", code), zap.Any("name", name), zap.Any("group", group))
return ret, fmt.Errorf("query failed to update data")
}
return ss.GetMDSampleStationByID(id)
}
func (ss *MDSampleStationServices) DeleteMDSampleStation(id string) (models.MDSampleStation, error) {
logger, _ := zap.NewProduction()
var ret models.MDSampleStation
q := `
UPDATE t_samplestation
SET
T_SampleStationIsActive = 'N',
T_SampleStationDeleted = NOW(),
T_SampleStationDeletedUserID = '1'
WHERE T_SampleStationID = ?;
`
dlt := dbx.Handlex.MustExec(q, id)
_, err := dlt.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error delete sample station", zap.String("id", id))
return ret, fmt.Errorf("query failed")
}
ret, err = ss.GetMDSampleStationByID(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get sample station id", zap.String("id", id))
return ret, fmt.Errorf("query failed")
}
return ret, nil
}
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strconv"
"strings"
"go.uber.org/zap"
)
func NewMDSampleStationServices(uStore db.AppStore) *MDSampleStationServices {
return &MDSampleStationServices{
MDSampleStationStore: uStore,
}
}
type MDSampleStationServices struct {
MDSampleStationStore db.AppStore
}
func (ss *MDSampleStationServices) GetMDSampleStationBreadcrumb() (models.BreadCrumbV1, error) {
var ret models.BreadCrumbV1
Breadcrumb := models.BreadCrumbV1{
Title: "Master Sample Station",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "Sample Stasion",
Url: "",
},
},
}
ret = Breadcrumb
return ret, nil
}
func (ss *MDSampleStationServices) GetListSampleStation(search string, currentPage int, rowPerPage int) ([]models.MDSampleStation, int, error) {
var sampleStationList []models.MDSampleStation
var totalData int
offset := (currentPage - 1) * rowPerPage
prm := "%" + strings.TrimSpace(search) + "%"
querytotal := `
SELECT COUNT(*)
FROM t_samplestation
WHERE T_SampleStationIsActive = 'Y' AND (T_SampleStationCode LIKE ? OR T_SampleStationName LIKE ?)
`
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
return nil, 0, fmt.Errorf("error query get total data: %v", err)
}
query := `
SELECT
T_SampleStationID,
T_SampleStationCode,
T_SampleStationName,
T_SampleStationNat_GroupID,
T_SampleStationIsNonLab,
T_SampleStationIsActive
FROM t_samplestation
WHERE T_SampleStationIsActive = 'Y'
AND (T_SampleStationCode LIKE ? OR T_SampleStationName LIKE ?)
ORDER BY T_SampleStationID ASC
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&sampleStationList, query, prm, prm, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error query database: %v", err)
}
for i := range sampleStationList {
if len(sampleStationList[i].T_SampleStationIsNonLab) == 0 {
sampleStationList[i].T_SampleStationIsNonLab = "LAB"
}
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
return sampleStationList, totalPage, nil
}
func (ss *MDSampleStationServices) GetMDSampleStationByID(id string) (models.MDSampleStation, error) {
logger, _ := zap.NewProduction()
var ret models.MDSampleStation
q := `
SELECT
T_SampleStationID,
T_SampleStationCode,
T_SampleStationName,
T_SampleStationNat_GroupID,
T_SampleStationIsNonLab,
T_SampleStationIsActive
FROM t_samplestation
WHERE T_SampleStationID = ?`
err := dbx.Handlex.Get(&ret, q, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data by ID", zap.String("ID", id), zap.Error(err))
return ret, fmt.Errorf("query get data by id failed")
}
if len(ret.T_SampleStationIsNonLab) == 0 {
ret.T_SampleStationIsNonLab = "LAB"
}
return ret, nil
}
func (ss *MDSampleStationServices) GetListGroupSampleStation() ([]models.MDSampleStationGroup, error) {
data := []models.MDSampleStationGroup{
{
ID: 1,
Group: "RADIODIAGNOSTIC",
},
{
ID: 2,
Group: "ELEKTROMEDIS",
},
{
ID: 3,
Group: "LAB",
},
{
ID: 4,
Group: "OTHERS",
},
}
return data, nil
}
func (ss *MDSampleStationServices) AddMDSampleStation(code string, name string, group string) (models.MDSampleStation, error) {
logger, _ := zap.NewProduction()
var data models.MDSampleStation
if strings.ToUpper(group) == "LAB" {
group = " "
}
// cek existing code & name
var count int
var prmCode = "%" + code + "%"
var prmName = "%" + name + "%"
q := `
SELECT COUNT(*)
FROM t_samplestation
WHERE (T_SampleStationCode LIKE ? OR T_SampleStationName LIKE ?)
AND T_SampleStationIsActive = 'Y'
`
err := dbx.Handlex.Get(&count, q, prmCode, prmName)
if err != nil {
defer logger.Sync()
logger.Error("cek duplicate", zap.Any("code", prmCode), zap.Any("name", prmName))
return data, fmt.Errorf("query failed to cek duplicate")
}
if count > 0 {
defer logger.Sync()
logger.Error("duplicate data", zap.Any("code", code), zap.Any("name", name))
return data, fmt.Errorf("duplicate code or name")
}
q = `
INSERT INTO t_samplestation (
T_SampleStationCode,
T_SampleStationName,
T_SampleStationIsNonLab,
T_SampleStationCreated,
T_SampleStationCreatedUserID
) VALUES (?,?,?,NOW(),1);
`
rst := dbx.Handlex.MustExec(q, code, name, group)
insertedID, err := rst.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("error insert data", zap.Any("code", code), zap.Any("name", name), zap.Any("group", group))
return data, fmt.Errorf("query failed insert data")
}
s := strconv.Itoa(int(insertedID))
return ss.GetMDSampleStationByID(s)
}
func (ss *MDSampleStationServices) EditMDSampleStation(id string, code string, name string, group string) (models.MDSampleStation, error) {
logger, _ := zap.NewProduction()
var ret models.MDSampleStation
if strings.ToUpper(group) == "LAB" {
group = " "
}
// cek existeing code & name
var count int
var prmCode = "%" + code + "%"
var prmName = "%" + name + "%"
q := `
SELECT COUNT(*)
FROM t_samplestation
WHERE (T_SampleStationCode LIKE ? OR T_SampleStationName LIKE ?)
AND T_SampleStationIsActive = 'Y'
AND T_SampleStationID <> ?
`
err := dbx.Handlex.Get(&count, q, prmCode, prmName, id)
if err != nil {
defer logger.Sync()
logger.Error("cek duplicate", zap.Any("code", code), zap.Any("name", name))
return ret, fmt.Errorf("query failed to cek duplicate")
}
if count > 0 {
defer logger.Sync()
logger.Error("duplicate data", zap.Any("code", code), zap.Any("name", name))
return ret, fmt.Errorf("duplicate code or name")
}
// update data
q = `
UPDATE t_samplestation SET
T_SampleStationCode = ?,
T_SampleStationName = ?,
T_SampleStationIsNonLab = ?,
T_SampleStationLastUpdated = NOW(),
T_SampleStationLastUpdatedUserID = 1
WHERE T_SampleStationID = ?;
`
updt := dbx.Handlex.MustExec(q, code, name, group, id)
_, err = updt.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("error update data", zap.Any("code", code), zap.Any("name", name), zap.Any("group", group))
return ret, fmt.Errorf("query failed to update data")
}
return ss.GetMDSampleStationByID(id)
}
func (ss *MDSampleStationServices) DeleteMDSampleStation(id string) (models.MDSampleStation, error) {
logger, _ := zap.NewProduction()
var ret models.MDSampleStation
q := `
UPDATE t_samplestation
SET
T_SampleStationIsActive = 'N',
T_SampleStationDeleted = NOW(),
T_SampleStationDeletedUserID = '1'
WHERE T_SampleStationID = ?;
`
dlt := dbx.Handlex.MustExec(q, id)
_, err := dlt.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error delete sample station", zap.String("id", id))
return ret, fmt.Errorf("query failed")
}
ret, err = ss.GetMDSampleStationByID(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get sample station id", zap.String("id", id))
return ret, fmt.Errorf("query failed")
}
return ret, nil
}

View File

@@ -1,261 +1,261 @@
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strconv"
"strings"
"go.uber.org/zap"
)
func NewMdUserGroupServices(uStore db.AppStore) *MdUserGroupServices {
return &MdUserGroupServices{
MdUserGroupStore: uStore,
}
}
type MdUserGroupServices struct {
MdUserGroupStore db.AppStore
}
func (su *MdUserGroupServices) GetListMdUserGroup(search string, currentPage int, rowPerPage int) ([]models.UserGroupV1, int, error) {
var userGroupList []models.UserGroupV1
var totalData int
offset := (currentPage - 1) * rowPerPage
prm := "%" + strings.TrimSpace(search) + "%"
querytotal := `
SELECT COUNT(*)
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
AND (M_UserGroupCode LIKE ? OR M_UserGroupName LIKE ?)
`
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
query := `
SELECT
ROW_NUMBER() OVER () AS nomor,
M_UserGroupID,
M_UserGroupCode,
M_UserGroupName,
M_UserGroupCreated,
M_UserGroupLastUpdated,
M_UserGroupIsActive
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
AND (M_UserGroupCode LIKE ? OR M_UserGroupName LIKE ?)
order by M_UserGroupID ASC
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&userGroupList, query, prm, prm, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
return userGroupList, totalPage, nil
}
func (ug *MdUserGroupServices) GetMdUserGroupByID(id string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
err := dbx.Handlex.Get(&data, `SELECT * FROM m_usergroup
WHERE M_UserGroupID = ?`, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data ug by id vs",
zap.String("ID", id),
zap.Error(err),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (ug *MdUserGroupServices) AddMdUserGroup(code string, name string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
var datacek []models.UserGroupV1
qryCek := `SELECT M_UserGroupCode FROM m_usergroup WHERE M_UserGroupCode = ? AND M_UserGroupIsActive = 'Y'`
err := dbx.Handlex.Select(&datacek, qryCek, code)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return data, fmt.Errorf("QUERY_FAILED")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return data, fmt.Errorf("code sudah dipakai")
}
qry := `INSERT INTO m_usergroup
(M_UserGroupCode,
M_UserGroupName)
VALUES (?,?);`
// time.Sleep(5 * time.Second)
rst := dbx.Handlex.MustExec(qry, code, name)
insertedID, err := rst.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("Error Insert usergroup",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
s := strconv.Itoa(int(insertedID))
data, err = ug.GetMdUserGroupByID(s)
if err != nil {
defer logger.Sync()
logger.Error("Error get usergroup by id",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (ug *MdUserGroupServices) EditMdUsergroup(id string, code string, name string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
var datacek []models.UserGroupV1
qryCek := `SELECT M_UserGroupCode FROM m_usergroup WHERE M_UserGroupCode = ? AND M_UserGroupIsActive = 'Y' AND M_UserGroupID <> ?`
err := dbx.Handlex.Select(&datacek, qryCek, code, id)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return data, fmt.Errorf("QUERY_FAILED")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return data, fmt.Errorf("code sudah dipakai")
}
qry := `UPDATE m_usergroup
SET M_UserGroupCode = ?,
M_UserGroupName= ?
WHERE M_UserGroupID = ?;`
// time.Sleep(5 * time.Second)
rst := dbx.Handlex.MustExec(qry, code, name, id)
_, err = rst.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error Update usergroup",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
data, err = ug.GetMdUserGroupByID(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get usergroup by id",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (ug *MdUserGroupServices) DeleteMdUserGroup(id string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
qry := `UPDATE m_usergroup
SET M_UserGroupIsActive = 'N',
M_UserGroupDeleted = NOW(),
M_UserGroupDeletedUserID = '1'
WHERE M_UserGroupID = ?;`
// time.Sleep(5 * time.Second)
rst := dbx.Handlex.MustExec(qry, id)
_, err := rst.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error delete usergroup",
zap.String("id", id),
)
return data, fmt.Errorf("QUERY_FAILED")
}
data, err = ug.GetMdUserGroupByID(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get usergroup by id",
zap.String("id", id),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (su *MdUserGroupServices) GetMdUserGroupBreadCrumb(title string) (models.BreadCrumbV1, error) {
var ret models.BreadCrumbV1
dummyBreadcrumb := []models.BreadCrumbV1{
{
Title: "Master User Group",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "User Group",
Url: "",
},
},
},
{
Title: "Master User",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "User",
Url: "",
},
},
},
}
for _, breadcrumb := range dummyBreadcrumb {
if breadcrumb.Title == title {
ret = breadcrumb
return ret, nil
}
}
return ret, nil
}
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strconv"
"strings"
"go.uber.org/zap"
)
func NewMdUserGroupServices(uStore db.AppStore) *MdUserGroupServices {
return &MdUserGroupServices{
MdUserGroupStore: uStore,
}
}
type MdUserGroupServices struct {
MdUserGroupStore db.AppStore
}
func (su *MdUserGroupServices) GetListMdUserGroup(search string, currentPage int, rowPerPage int) ([]models.UserGroupV1, int, error) {
var userGroupList []models.UserGroupV1
var totalData int
offset := (currentPage - 1) * rowPerPage
prm := "%" + strings.TrimSpace(search) + "%"
querytotal := `
SELECT COUNT(*)
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
AND (M_UserGroupCode LIKE ? OR M_UserGroupName LIKE ?)
`
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
query := `
SELECT
ROW_NUMBER() OVER () AS nomor,
M_UserGroupID,
M_UserGroupCode,
M_UserGroupName,
M_UserGroupCreated,
M_UserGroupLastUpdated,
M_UserGroupIsActive
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
AND (M_UserGroupCode LIKE ? OR M_UserGroupName LIKE ?)
order by M_UserGroupID ASC
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&userGroupList, query, prm, prm, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
return userGroupList, totalPage, nil
}
func (ug *MdUserGroupServices) GetMdUserGroupByID(id string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
err := dbx.Handlex.Get(&data, `SELECT * FROM m_usergroup
WHERE M_UserGroupID = ?`, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data ug by id vs",
zap.String("ID", id),
zap.Error(err),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (ug *MdUserGroupServices) AddMdUserGroup(code string, name string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
var datacek []models.UserGroupV1
qryCek := `SELECT M_UserGroupCode FROM m_usergroup WHERE M_UserGroupCode = ? AND M_UserGroupIsActive = 'Y'`
err := dbx.Handlex.Select(&datacek, qryCek, code)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return data, fmt.Errorf("QUERY_FAILED")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return data, fmt.Errorf("code sudah dipakai")
}
qry := `INSERT INTO m_usergroup
(M_UserGroupCode,
M_UserGroupName)
VALUES (?,?);`
// time.Sleep(5 * time.Second)
rst := dbx.Handlex.MustExec(qry, code, name)
insertedID, err := rst.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("Error Insert usergroup",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
s := strconv.Itoa(int(insertedID))
data, err = ug.GetMdUserGroupByID(s)
if err != nil {
defer logger.Sync()
logger.Error("Error get usergroup by id",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (ug *MdUserGroupServices) EditMdUsergroup(id string, code string, name string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
var datacek []models.UserGroupV1
qryCek := `SELECT M_UserGroupCode FROM m_usergroup WHERE M_UserGroupCode = ? AND M_UserGroupIsActive = 'Y' AND M_UserGroupID <> ?`
err := dbx.Handlex.Select(&datacek, qryCek, code, id)
if err != nil {
defer logger.Sync()
logger.Error("Error cek data by code",
zap.String("code", code),
zap.Any("datacek", datacek),
)
return data, fmt.Errorf("QUERY_FAILED")
}
if len(datacek) > 0 {
defer logger.Sync()
logger.Error("Code already taken by another data",
zap.String("code", code),
)
return data, fmt.Errorf("code sudah dipakai")
}
qry := `UPDATE m_usergroup
SET M_UserGroupCode = ?,
M_UserGroupName= ?
WHERE M_UserGroupID = ?;`
// time.Sleep(5 * time.Second)
rst := dbx.Handlex.MustExec(qry, code, name, id)
_, err = rst.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error Update usergroup",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
data, err = ug.GetMdUserGroupByID(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get usergroup by id",
zap.String("code", code),
zap.String("name", name),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (ug *MdUserGroupServices) DeleteMdUserGroup(id string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
var data models.UserGroupV1
qry := `UPDATE m_usergroup
SET M_UserGroupIsActive = 'N',
M_UserGroupDeleted = NOW(),
M_UserGroupDeletedUserID = '1'
WHERE M_UserGroupID = ?;`
// time.Sleep(5 * time.Second)
rst := dbx.Handlex.MustExec(qry, id)
_, err := rst.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error delete usergroup",
zap.String("id", id),
)
return data, fmt.Errorf("QUERY_FAILED")
}
data, err = ug.GetMdUserGroupByID(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get usergroup by id",
zap.String("id", id),
)
return data, fmt.Errorf("QUERY_FAILED")
}
return data, nil
}
func (su *MdUserGroupServices) GetMdUserGroupBreadCrumb(title string) (models.BreadCrumbV1, error) {
var ret models.BreadCrumbV1
dummyBreadcrumb := []models.BreadCrumbV1{
{
Title: "Master User Group",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "User Group",
Url: "",
},
},
},
{
Title: "Master User",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "User",
Url: "",
},
},
},
}
for _, breadcrumb := range dummyBreadcrumb {
if breadcrumb.Title == title {
ret = breadcrumb
return ret, nil
}
}
return ret, nil
}

View File

@@ -1,97 +1,97 @@
package dev_services
import (
"time"
"cpone/db"
"cpone/models"
)
func NewServicesUser(u User, uStore db.AppStore) *ServicesUser {
return &ServicesUser{
User: u,
AppStore: uStore,
}
}
type User struct {
ID int `json:"id"`
Username string `json:"username"`
Email string `json:"email"`
CreatedAt time.Time `json:"created_at,omitempty"`
}
type ServicesUser struct {
User User
AppStore db.AppStore
}
func (su *ServicesUser) GetAllUsers() ([]User, error) {
query := `SELECT id, username, email, created_at FROM users ORDER BY created_at DESC`
rows, err := su.AppStore.Db.Query(query)
if err != nil {
return []User{}, err
}
// We close the resource
defer rows.Close()
users := []User{}
for rows.Next() {
rows.Scan(
&su.User.ID,
&su.User.Username,
&su.User.Email,
&su.User.CreatedAt,
)
users = append(users, su.User)
}
return users, nil
}
func (su *ServicesUser) GetUserById(id int) (User, error) {
query := `SELECT id, username, email, created_at FROM users
WHERE id = ?`
stmt, err := su.AppStore.Db.Prepare(query)
if err != nil {
return User{}, err
}
defer stmt.Close()
su.User.ID = id
err = stmt.QueryRow(
su.User.ID,
).Scan(
&su.User.ID,
&su.User.Username,
&su.User.Email,
&su.User.CreatedAt,
)
if err != nil {
return User{}, err
}
return su.User, nil
}
func ConverDateTime(tz string, dt time.Time) string {
loc, _ := time.LoadLocation(tz)
return dt.In(loc).Format(time.RFC822Z)
}
func GetUser() (models.User, error) {
a := models.User{
UserID: 1,
Username: "andy",
UserFullName: "Alfianto Andy P",
UserPosition: "Software Developer",
}
return a, nil
}
package dev_services
import (
"time"
"cpone/db"
"cpone/models"
)
func NewServicesUser(u User, uStore db.AppStore) *ServicesUser {
return &ServicesUser{
User: u,
AppStore: uStore,
}
}
type User struct {
ID int `json:"id"`
Username string `json:"username"`
Email string `json:"email"`
CreatedAt time.Time `json:"created_at,omitempty"`
}
type ServicesUser struct {
User User
AppStore db.AppStore
}
func (su *ServicesUser) GetAllUsers() ([]User, error) {
query := `SELECT id, username, email, created_at FROM users ORDER BY created_at DESC`
rows, err := su.AppStore.Db.Query(query)
if err != nil {
return []User{}, err
}
// We close the resource
defer rows.Close()
users := []User{}
for rows.Next() {
rows.Scan(
&su.User.ID,
&su.User.Username,
&su.User.Email,
&su.User.CreatedAt,
)
users = append(users, su.User)
}
return users, nil
}
func (su *ServicesUser) GetUserById(id int) (User, error) {
query := `SELECT id, username, email, created_at FROM users
WHERE id = ?`
stmt, err := su.AppStore.Db.Prepare(query)
if err != nil {
return User{}, err
}
defer stmt.Close()
su.User.ID = id
err = stmt.QueryRow(
su.User.ID,
).Scan(
&su.User.ID,
&su.User.Username,
&su.User.Email,
&su.User.CreatedAt,
)
if err != nil {
return User{}, err
}
return su.User, nil
}
func ConverDateTime(tz string, dt time.Time) string {
loc, _ := time.LoadLocation(tz)
return dt.In(loc).Format(time.RFC822Z)
}
func GetUser() (models.User, error) {
a := models.User{
UserID: 1,
Username: "andy",
UserFullName: "Alfianto Andy P",
UserPosition: "Software Developer",
}
return a, nil
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,112 +1,112 @@
package public_services
import (
"cpone/db"
"cpone/models"
"go.uber.org/zap"
)
func NewServicesKartuKontrol(uStore db.AppStore) *ServicesKartuKontrol {
return &ServicesKartuKontrol{
KartuKontrolStore: uStore,
}
}
type ServicesKartuKontrol struct {
KartuKontrolStore db.AppStore
}
func (su *ServicesKartuKontrol) GetkartuKontrolById(nomorRegistrasi string) ([]models.KartuKontrolModel, error) {
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("QUERY SEARCH GET KARTU KONTROL",
zap.String("query search", ""),
)
dataPasien := []models.DataPasien{
{
NomorRegistrasi: "00234",
NomorLab: "LA90002",
NamaPasien: "Hendra Setiawan",
TanggalLahir: "2000-01-01",
Umur: "24 tahun",
JenisKelamin: "Laki-laki",
NamaDivisi: "Development",
NamaCompany: "PT. Sadhana Abiyasa Sampoerna",
},
}
dataPemeriksaanList := []models.DataPemeriksaanList{
{NamaPemeriksaanList: "Hematologi Lengkap"},
{NamaPemeriksaanList: "Urine Lengkap"},
{NamaPemeriksaanList: "ACG"},
{NamaPemeriksaanList: "Treadmill"},
{NamaPemeriksaanList: "Pemeriksaan Fisik"},
{NamaPemeriksaanList: "Hematologi Lengkap"},
{NamaPemeriksaanList: "Urine Lengkap"},
{NamaPemeriksaanList: "ACG"},
{NamaPemeriksaanList: "Treadmill"},
{NamaPemeriksaanList: "Pemeriksaan Fisik"},
{NamaPemeriksaanList: "Hematologi Lengkap"},
{NamaPemeriksaanList: "Urine Lengkap"},
{NamaPemeriksaanList: "ACG"},
{NamaPemeriksaanList: "Treadmill"},
{NamaPemeriksaanList: "Pemeriksaan Fisik"},
{NamaPemeriksaanList: "Hematologi Lengkap"},
{NamaPemeriksaanList: "Urine Lengkap"},
{NamaPemeriksaanList: "ACG"},
{NamaPemeriksaanList: "Treadmill"},
{NamaPemeriksaanList: "Pemeriksaan Fisik"},
}
dataPemeriksaanPengambilanSample := []models.DataPemeriksaanPengambilanSample{
{
NamaPemeriksaanPengambilanSample: "Laboratorium",
SampleTypeListData: []models.SampleTypeList{
{
SampleTypeName: "Darah",
SampleTypeDateTime: "15-05-2024 10:00",
SampleTypeStatus: "Sudah",
},
{
SampleTypeName: "Urine",
SampleTypeDateTime: "15-05-2024 10:00",
SampleTypeStatus: "Sudah",
},
},
},
{
NamaPemeriksaanPengambilanSample: "Rontgen",
SampleTypeListData: []models.SampleTypeList{
{
SampleTypeName: "Thorax AP (PCR)",
SampleTypeDateTime: "",
SampleTypeStatus: "Sudah",
},
},
},
{
NamaPemeriksaanPengambilanSample: "Elektromedis",
SampleTypeListData: []models.SampleTypeList{
{
SampleTypeName: "ECG",
SampleTypeStatus: "Belum",
SampleTypeDateTime: "",
},
},
},
}
kartuKontrol := []models.KartuKontrolModel{
{
KartuKontrolDataPasienList: dataPasien,
KartuKontrolDataPemeriksaanList: dataPemeriksaanList,
KartuKontrolDataPemeriksaanPengambilanSample: dataPemeriksaanPengambilanSample,
},
}
return kartuKontrol, nil
}
package public_services
import (
"cpone/db"
"cpone/models"
"go.uber.org/zap"
)
func NewServicesKartuKontrol(uStore db.AppStore) *ServicesKartuKontrol {
return &ServicesKartuKontrol{
KartuKontrolStore: uStore,
}
}
type ServicesKartuKontrol struct {
KartuKontrolStore db.AppStore
}
func (su *ServicesKartuKontrol) GetkartuKontrolById(nomorRegistrasi string) ([]models.KartuKontrolModel, error) {
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("QUERY SEARCH GET KARTU KONTROL",
zap.String("query search", ""),
)
dataPasien := []models.DataPasien{
{
NomorRegistrasi: "00234",
NomorLab: "LA90002",
NamaPasien: "Hendra Setiawan",
TanggalLahir: "2000-01-01",
Umur: "24 tahun",
JenisKelamin: "Laki-laki",
NamaDivisi: "Development",
NamaCompany: "PT. Sadhana Abiyasa Sampoerna",
},
}
dataPemeriksaanList := []models.DataPemeriksaanList{
{NamaPemeriksaanList: "Hematologi Lengkap"},
{NamaPemeriksaanList: "Urine Lengkap"},
{NamaPemeriksaanList: "ACG"},
{NamaPemeriksaanList: "Treadmill"},
{NamaPemeriksaanList: "Pemeriksaan Fisik"},
{NamaPemeriksaanList: "Hematologi Lengkap"},
{NamaPemeriksaanList: "Urine Lengkap"},
{NamaPemeriksaanList: "ACG"},
{NamaPemeriksaanList: "Treadmill"},
{NamaPemeriksaanList: "Pemeriksaan Fisik"},
{NamaPemeriksaanList: "Hematologi Lengkap"},
{NamaPemeriksaanList: "Urine Lengkap"},
{NamaPemeriksaanList: "ACG"},
{NamaPemeriksaanList: "Treadmill"},
{NamaPemeriksaanList: "Pemeriksaan Fisik"},
{NamaPemeriksaanList: "Hematologi Lengkap"},
{NamaPemeriksaanList: "Urine Lengkap"},
{NamaPemeriksaanList: "ACG"},
{NamaPemeriksaanList: "Treadmill"},
{NamaPemeriksaanList: "Pemeriksaan Fisik"},
}
dataPemeriksaanPengambilanSample := []models.DataPemeriksaanPengambilanSample{
{
NamaPemeriksaanPengambilanSample: "Laboratorium",
SampleTypeListData: []models.SampleTypeList{
{
SampleTypeName: "Darah",
SampleTypeDateTime: "15-05-2024 10:00",
SampleTypeStatus: "Sudah",
},
{
SampleTypeName: "Urine",
SampleTypeDateTime: "15-05-2024 10:00",
SampleTypeStatus: "Sudah",
},
},
},
{
NamaPemeriksaanPengambilanSample: "Rontgen",
SampleTypeListData: []models.SampleTypeList{
{
SampleTypeName: "Thorax AP (PCR)",
SampleTypeDateTime: "",
SampleTypeStatus: "Sudah",
},
},
},
{
NamaPemeriksaanPengambilanSample: "Elektromedis",
SampleTypeListData: []models.SampleTypeList{
{
SampleTypeName: "ECG",
SampleTypeStatus: "Belum",
SampleTypeDateTime: "",
},
},
},
}
kartuKontrol := []models.KartuKontrolModel{
{
KartuKontrolDataPasienList: dataPasien,
KartuKontrolDataPemeriksaanList: dataPemeriksaanList,
KartuKontrolDataPemeriksaanPengambilanSample: dataPemeriksaanPengambilanSample,
},
}
return kartuKontrol, nil
}

View File

@@ -1,287 +1,287 @@
package public_services
import (
"time"
"cpone/db"
)
func NewServicesLandingPage(u LandingPage, uStore db.AppStore) *ServicesLandingPage {
return &ServicesLandingPage{
LandingPage: u,
LandingPageStore: uStore,
}
}
type LandingPage struct {
ID int `json:"id"`
LandingPagename string `json:"LandingPagename"`
Email string `json:"email"`
CreatedAt time.Time `json:"created_at,omitempty"`
}
type ClientService struct {
ClientServiceID int `json:"ClientServiceID"`
ClientServiceName string `json:"ClientServiceName"`
ClientServiceDescription string `json:"ClientServiceDescription"`
ClientServiceIcon string `json:"ClientServiceIcon"`
ClientServiceLink string `json:"ClientServiceLink"`
}
type AdvantageClient struct {
AdvantageClientID int `json:"AdvantageClientID"`
AdvantageClientName string `json:"AdvantageClientName"`
AdvantageClientDesc string `json:"AdvantageClientDesc"`
}
type Promotion struct {
PromotionID int `json:"PromotionID"`
PromotionAsset string `json:"PromotionAsset"`
PromotionLink string `json:"PromotionLink"`
}
type FooterSubNav struct {
FootSubNavID int `json:"FootSubNavID"`
FootSubNavTitle string `json:"FootSubNavTitle"`
FootSubNavLink string `json:"FootSubNavLink"`
}
type FooterNav struct {
FooterNavID int `json:"FooterNavID"`
FooterNavTitle string `json:"FooterNavTitle"`
FooteSubNav []FooterSubNav `json:"FooterSubNav,omitempty"`
}
type ServicesLandingPage struct {
LandingPage LandingPage
LandingPageStore db.AppStore
}
func (su *ServicesLandingPage) GetAllLandingPages() ([]LandingPage, error) {
query := `SELECT id, LandingPagename, email, created_at FROM LandingPages ORDER BY created_at DESC`
rows, err := su.LandingPageStore.Db.Query(query)
if err != nil {
return []LandingPage{}, err
}
// We close the resource
defer rows.Close()
LandingPages := []LandingPage{}
for rows.Next() {
rows.Scan(
&su.LandingPage.ID,
&su.LandingPage.LandingPagename,
&su.LandingPage.Email,
&su.LandingPage.CreatedAt,
)
LandingPages = append(LandingPages, su.LandingPage)
}
return LandingPages, nil
}
func (su *ServicesLandingPage) GetLandingPageById(id int) (LandingPage, error) {
query := `SELECT id, LandingPagename, email, created_at FROM LandingPages
WHERE id = ?`
stmt, err := su.LandingPageStore.Db.Prepare(query)
if err != nil {
return LandingPage{}, err
}
defer stmt.Close()
su.LandingPage.ID = id
err = stmt.QueryRow(
su.LandingPage.ID,
).Scan(
&su.LandingPage.ID,
&su.LandingPage.LandingPagename,
&su.LandingPage.Email,
&su.LandingPage.CreatedAt,
)
if err != nil {
return LandingPage{}, err
}
return su.LandingPage, nil
}
func (su *ServicesLandingPage) GetClientService() ([]ClientService, error) {
data := []ClientService{
{
ClientServiceID: 1,
ClientServiceName: "In House Clinic",
ClientServiceDescription: "Maintaining health in the workplace by carrying out promotional, preventive, curative and rehabilitative programs.",
ClientServiceIcon: "uil:clinic-medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 2,
ClientServiceName: "Laboratorium Test",
ClientServiceDescription: "Maintaining health in the workplace by carrying out promotional, preventive, curative and rehabilitative programs.",
ClientServiceIcon: "healthicons:clinical-a-outline",
ClientServiceLink: "/",
},
{
ClientServiceID: 3,
ClientServiceName: "Medical Check Up",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 4,
ClientServiceName: "Medical Check Up 2",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 5,
ClientServiceName: "Medical Check Up 3",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
}
return data, nil
}
func (su *ServicesLandingPage) GetClientAdvantage() ([]AdvantageClient, error) {
data := []AdvantageClient{
{
AdvantageClientID: 1,
AdvantageClientName: "ISO Certificate",
AdvantageClientDesc: "Westerindo Clinical Laboratory has obtained ISO 15189:2009 (ISO 15189:2007) Accreditation from the National Accreditation Committee (KAN) and the Health Laboratory Accreditation Commission (KALK).",
},
{
AdvantageClientID: 2,
AdvantageClientName: "Modern Technology",
AdvantageClientDesc: "Laboratory Information System (LIS) is an information system in which laboratory equipment and diagnostic support have been integrated automatically so that examination results can be immediately filled in in employee data. This eliminates the possibility of human error.",
},
{
AdvantageClientID: 3,
AdvantageClientName: "Good Quality Facilities",
AdvantageClientDesc: "The laboratory and medical support equipment used at the Westerindo Clinical Laboratory is international scale for precise, fast and accurate results. Lab and medical equipment certificates are periodically renewed according to standards.",
},
{
AdvantageClientID: 4,
AdvantageClientName: "Professional Service",
AdvantageClientDesc: "Westerindo Clinical Laboratory is committed to providing professional and excellent service. Therefore, all staff and doctors at the Westerindo Clinical Laboratory have competency certification according to their field.",
},
{
AdvantageClientID: 5,
AdvantageClientName: "Experienced",
AdvantageClientDesc: "Westerindo Clinical Laboratory is very experienced in carrying out Medical Check Ups both onsite and insite, in all corners of Indonesia. Serving various kinds of companies, from oil and gas companies, automotive, manufacturing, offices, and others.",
},
}
return data, nil
}
func (su *ServicesLandingPage) GetPromotionList() ([]Promotion, error) {
data := []Promotion{
{
PromotionID: 1,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_1.png",
PromotionLink: "",
},
{
PromotionID: 2,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_2.png",
PromotionLink: "",
},
{
PromotionID: 3,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_3.png",
PromotionLink: "",
},
{
PromotionID: 4,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_2.png",
PromotionLink: "",
},
{
PromotionID: 5,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_3.png",
PromotionLink: "",
},
}
return data, nil
}
func (su *ServicesLandingPage) GetFooterNavList() ([]FooterNav, error) {
data := []FooterNav{
{
FooterNavID: 1,
FooterNavTitle: "Dashboard",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Dashboard #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Dashboard #2",
FootSubNavLink: "/",
},
},
},
{
FooterNavID: 2,
FooterNavTitle: "Benefit",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Benefit #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Benefit #2",
FootSubNavLink: "/",
},
},
},
{
FooterNavID: 3,
FooterNavTitle: "Finance & Claims",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Finance & Claims #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Finance & Claims #2",
FootSubNavLink: "/",
},
},
},
{
FooterNavID: 4,
FooterNavTitle: "Memberships",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Memberships #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Memberships #2",
FootSubNavLink: "/",
},
},
},
}
return data, nil
}
package public_services
import (
"time"
"cpone/db"
)
func NewServicesLandingPage(u LandingPage, uStore db.AppStore) *ServicesLandingPage {
return &ServicesLandingPage{
LandingPage: u,
LandingPageStore: uStore,
}
}
type LandingPage struct {
ID int `json:"id"`
LandingPagename string `json:"LandingPagename"`
Email string `json:"email"`
CreatedAt time.Time `json:"created_at,omitempty"`
}
type ClientService struct {
ClientServiceID int `json:"ClientServiceID"`
ClientServiceName string `json:"ClientServiceName"`
ClientServiceDescription string `json:"ClientServiceDescription"`
ClientServiceIcon string `json:"ClientServiceIcon"`
ClientServiceLink string `json:"ClientServiceLink"`
}
type AdvantageClient struct {
AdvantageClientID int `json:"AdvantageClientID"`
AdvantageClientName string `json:"AdvantageClientName"`
AdvantageClientDesc string `json:"AdvantageClientDesc"`
}
type Promotion struct {
PromotionID int `json:"PromotionID"`
PromotionAsset string `json:"PromotionAsset"`
PromotionLink string `json:"PromotionLink"`
}
type FooterSubNav struct {
FootSubNavID int `json:"FootSubNavID"`
FootSubNavTitle string `json:"FootSubNavTitle"`
FootSubNavLink string `json:"FootSubNavLink"`
}
type FooterNav struct {
FooterNavID int `json:"FooterNavID"`
FooterNavTitle string `json:"FooterNavTitle"`
FooteSubNav []FooterSubNav `json:"FooterSubNav,omitempty"`
}
type ServicesLandingPage struct {
LandingPage LandingPage
LandingPageStore db.AppStore
}
func (su *ServicesLandingPage) GetAllLandingPages() ([]LandingPage, error) {
query := `SELECT id, LandingPagename, email, created_at FROM LandingPages ORDER BY created_at DESC`
rows, err := su.LandingPageStore.Db.Query(query)
if err != nil {
return []LandingPage{}, err
}
// We close the resource
defer rows.Close()
LandingPages := []LandingPage{}
for rows.Next() {
rows.Scan(
&su.LandingPage.ID,
&su.LandingPage.LandingPagename,
&su.LandingPage.Email,
&su.LandingPage.CreatedAt,
)
LandingPages = append(LandingPages, su.LandingPage)
}
return LandingPages, nil
}
func (su *ServicesLandingPage) GetLandingPageById(id int) (LandingPage, error) {
query := `SELECT id, LandingPagename, email, created_at FROM LandingPages
WHERE id = ?`
stmt, err := su.LandingPageStore.Db.Prepare(query)
if err != nil {
return LandingPage{}, err
}
defer stmt.Close()
su.LandingPage.ID = id
err = stmt.QueryRow(
su.LandingPage.ID,
).Scan(
&su.LandingPage.ID,
&su.LandingPage.LandingPagename,
&su.LandingPage.Email,
&su.LandingPage.CreatedAt,
)
if err != nil {
return LandingPage{}, err
}
return su.LandingPage, nil
}
func (su *ServicesLandingPage) GetClientService() ([]ClientService, error) {
data := []ClientService{
{
ClientServiceID: 1,
ClientServiceName: "In House Clinic",
ClientServiceDescription: "Maintaining health in the workplace by carrying out promotional, preventive, curative and rehabilitative programs.",
ClientServiceIcon: "uil:clinic-medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 2,
ClientServiceName: "Laboratorium Test",
ClientServiceDescription: "Maintaining health in the workplace by carrying out promotional, preventive, curative and rehabilitative programs.",
ClientServiceIcon: "healthicons:clinical-a-outline",
ClientServiceLink: "/",
},
{
ClientServiceID: 3,
ClientServiceName: "Medical Check Up",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 4,
ClientServiceName: "Medical Check Up 2",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 5,
ClientServiceName: "Medical Check Up 3",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
}
return data, nil
}
func (su *ServicesLandingPage) GetClientAdvantage() ([]AdvantageClient, error) {
data := []AdvantageClient{
{
AdvantageClientID: 1,
AdvantageClientName: "ISO Certificate",
AdvantageClientDesc: "Westerindo Clinical Laboratory has obtained ISO 15189:2009 (ISO 15189:2007) Accreditation from the National Accreditation Committee (KAN) and the Health Laboratory Accreditation Commission (KALK).",
},
{
AdvantageClientID: 2,
AdvantageClientName: "Modern Technology",
AdvantageClientDesc: "Laboratory Information System (LIS) is an information system in which laboratory equipment and diagnostic support have been integrated automatically so that examination results can be immediately filled in in employee data. This eliminates the possibility of human error.",
},
{
AdvantageClientID: 3,
AdvantageClientName: "Good Quality Facilities",
AdvantageClientDesc: "The laboratory and medical support equipment used at the Westerindo Clinical Laboratory is international scale for precise, fast and accurate results. Lab and medical equipment certificates are periodically renewed according to standards.",
},
{
AdvantageClientID: 4,
AdvantageClientName: "Professional Service",
AdvantageClientDesc: "Westerindo Clinical Laboratory is committed to providing professional and excellent service. Therefore, all staff and doctors at the Westerindo Clinical Laboratory have competency certification according to their field.",
},
{
AdvantageClientID: 5,
AdvantageClientName: "Experienced",
AdvantageClientDesc: "Westerindo Clinical Laboratory is very experienced in carrying out Medical Check Ups both onsite and insite, in all corners of Indonesia. Serving various kinds of companies, from oil and gas companies, automotive, manufacturing, offices, and others.",
},
}
return data, nil
}
func (su *ServicesLandingPage) GetPromotionList() ([]Promotion, error) {
data := []Promotion{
{
PromotionID: 1,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_1.png",
PromotionLink: "",
},
{
PromotionID: 2,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_2.png",
PromotionLink: "",
},
{
PromotionID: 3,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_3.png",
PromotionLink: "",
},
{
PromotionID: 4,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_2.png",
PromotionLink: "",
},
{
PromotionID: 5,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_3.png",
PromotionLink: "",
},
}
return data, nil
}
func (su *ServicesLandingPage) GetFooterNavList() ([]FooterNav, error) {
data := []FooterNav{
{
FooterNavID: 1,
FooterNavTitle: "Dashboard",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Dashboard #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Dashboard #2",
FootSubNavLink: "/",
},
},
},
{
FooterNavID: 2,
FooterNavTitle: "Benefit",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Benefit #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Benefit #2",
FootSubNavLink: "/",
},
},
},
{
FooterNavID: 3,
FooterNavTitle: "Finance & Claims",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Finance & Claims #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Finance & Claims #2",
FootSubNavLink: "/",
},
},
},
{
FooterNavID: 4,
FooterNavTitle: "Memberships",
FooteSubNav: []FooterSubNav{
{
FootSubNavID: 1,
FootSubNavTitle: "Memberships #1",
FootSubNavLink: "/",
},
{
FootSubNavID: 2,
FootSubNavTitle: "Memberships #2",
FootSubNavLink: "/",
},
},
},
}
return data, nil
}

View File

@@ -1,120 +1,120 @@
package public_services
import (
"cpone/db"
"cpone/models"
"go.uber.org/zap"
)
func NewServicesSurveyMcu(uStore db.AppStore) *SurveyMcuService {
return &SurveyMcuService{
SurveyMcuStore: uStore,
}
}
type SurveyMcuService struct {
SurveyMcuStore db.AppStore
}
func (su *SurveyMcuService) GetSurveyMcuByNoreg(nomorRegistrasi string) ([]models.SurveyMcu, error) {
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("QUERY SEARCH GET SURVEY MCU BY NOMOR REGISTRASI",
zap.String("query search", ""),
)
// radio button
dataItemSurveyMcu := []models.ItemSurveyMcu{
{
IDItemSurvey: "1",
Nomor: "1",
Pertanyaan: "Bagaimana Penilaian Sikap & Keramahan Petugas?",
ErrorMessage: "",
NameRadioButton: "radio-1",
},
{
IDItemSurvey: "2",
Nomor: "2",
Pertanyaan: "Bagaimana Penilaian Penampilan Petugas?",
ErrorMessage: "",
NameRadioButton: "radio-2",
},
{
IDItemSurvey: "3",
Nomor: "3",
Pertanyaan: "Bagaimana Penilaian Ketrampilan Petugas?",
ErrorMessage: "",
NameRadioButton: "radio-3",
},
{
IDItemSurvey: "4",
Nomor: "4",
Pertanyaan: "Bagaimana Penilaian Pemberian Informasi Petugas?",
ErrorMessage: "",
NameRadioButton: "radio-4",
},
{
IDItemSurvey: "5",
Nomor: "5",
Pertanyaan: "Bagaimana Penilaian Kelengkapan Alat?",
ErrorMessage: "",
NameRadioButton: "radio-5",
},
{
IDItemSurvey: "6",
Nomor: "6",
Pertanyaan: "Bagaimana Penilaian Kelayakan Alat?",
ErrorMessage: "",
NameRadioButton: "radio-6",
},
{
IDItemSurvey: "7",
Nomor: "7",
Pertanyaan: "Bagaimana Penilaian Kebersihan Ruangan?",
ErrorMessage: "",
NameRadioButton: "radio-7",
},
{
IDItemSurvey: "8",
Nomor: "8",
Pertanyaan: "Bagaimana Penilaian Kebersihan Ruangan?",
ErrorMessage: "",
NameRadioButton: "radio-8",
},
{
IDItemSurvey: "9",
Nomor: "9",
Pertanyaan: "Bagaimana Penilaian Alur Pelayanan?",
ErrorMessage: "",
NameRadioButton: "radio-9",
},
{
IDItemSurvey: "10",
Nomor: "10",
Pertanyaan: "Bagaimana Penilaian Ketepatan Waktu?",
ErrorMessage: "",
NameRadioButton: "radio-10",
},
}
// saran
dataItemSurveyMcuSaran := []models.ItemSurveyMcuSaran{
{
IDItemSurveyMcuSaran: "11",
NameSurveyMcuSaran: "saranmcu-11",
ErrorMessageSurveyMcuSaran: "",
},
}
surveymcu := []models.SurveyMcu{
{
DataListItemSurveyMcu: dataItemSurveyMcu,
DataListItemSurveyMcuSaran: dataItemSurveyMcuSaran,
},
}
return surveymcu, nil
}
package public_services
import (
"cpone/db"
"cpone/models"
"go.uber.org/zap"
)
func NewServicesSurveyMcu(uStore db.AppStore) *SurveyMcuService {
return &SurveyMcuService{
SurveyMcuStore: uStore,
}
}
type SurveyMcuService struct {
SurveyMcuStore db.AppStore
}
func (su *SurveyMcuService) GetSurveyMcuByNoreg(nomorRegistrasi string) ([]models.SurveyMcu, error) {
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("QUERY SEARCH GET SURVEY MCU BY NOMOR REGISTRASI",
zap.String("query search", ""),
)
// radio button
dataItemSurveyMcu := []models.ItemSurveyMcu{
{
IDItemSurvey: "1",
Nomor: "1",
Pertanyaan: "Bagaimana Penilaian Sikap & Keramahan Petugas?",
ErrorMessage: "",
NameRadioButton: "radio-1",
},
{
IDItemSurvey: "2",
Nomor: "2",
Pertanyaan: "Bagaimana Penilaian Penampilan Petugas?",
ErrorMessage: "",
NameRadioButton: "radio-2",
},
{
IDItemSurvey: "3",
Nomor: "3",
Pertanyaan: "Bagaimana Penilaian Ketrampilan Petugas?",
ErrorMessage: "",
NameRadioButton: "radio-3",
},
{
IDItemSurvey: "4",
Nomor: "4",
Pertanyaan: "Bagaimana Penilaian Pemberian Informasi Petugas?",
ErrorMessage: "",
NameRadioButton: "radio-4",
},
{
IDItemSurvey: "5",
Nomor: "5",
Pertanyaan: "Bagaimana Penilaian Kelengkapan Alat?",
ErrorMessage: "",
NameRadioButton: "radio-5",
},
{
IDItemSurvey: "6",
Nomor: "6",
Pertanyaan: "Bagaimana Penilaian Kelayakan Alat?",
ErrorMessage: "",
NameRadioButton: "radio-6",
},
{
IDItemSurvey: "7",
Nomor: "7",
Pertanyaan: "Bagaimana Penilaian Kebersihan Ruangan?",
ErrorMessage: "",
NameRadioButton: "radio-7",
},
{
IDItemSurvey: "8",
Nomor: "8",
Pertanyaan: "Bagaimana Penilaian Kebersihan Ruangan?",
ErrorMessage: "",
NameRadioButton: "radio-8",
},
{
IDItemSurvey: "9",
Nomor: "9",
Pertanyaan: "Bagaimana Penilaian Alur Pelayanan?",
ErrorMessage: "",
NameRadioButton: "radio-9",
},
{
IDItemSurvey: "10",
Nomor: "10",
Pertanyaan: "Bagaimana Penilaian Ketepatan Waktu?",
ErrorMessage: "",
NameRadioButton: "radio-10",
},
}
// saran
dataItemSurveyMcuSaran := []models.ItemSurveyMcuSaran{
{
IDItemSurveyMcuSaran: "11",
NameSurveyMcuSaran: "saranmcu-11",
ErrorMessageSurveyMcuSaran: "",
},
}
surveymcu := []models.SurveyMcu{
{
DataListItemSurveyMcu: dataItemSurveyMcu,
DataListItemSurveyMcuSaran: dataItemSurveyMcuSaran,
},
}
return surveymcu, nil
}