Compare commits

..

6 Commits

Author SHA1 Message Date
7f32ac1c1c add delete & pilih detail + bug target item row di modal 2024-06-07 08:23:31 +07:00
709fcb316d add insert data nonlab template 2024-06-05 15:14:59 +07:00
897bdc176c bug target id missing 2024-06-04 17:44:43 +07:00
466aa0d9cf add delete func + dialog 2024-06-04 15:16:57 +07:00
c9a6b21aae modal templ 2024-06-04 14:25:19 +07:00
70d0ce5383 add listing, pagination, filter 2024-06-04 13:43:49 +07:00
166 changed files with 4321 additions and 30496 deletions

1
.gitignore vendored
View File

@@ -4,4 +4,3 @@ config.yaml
restapi.rest
cpone.db
coba.Http
.vscode/

3
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"liveServer.settings.port": 5501
}

View File

@@ -56,12 +56,4 @@ $ templ generate --watch
### Happy coding 😀!!
# LINK ODOO DAN TUTORIAL INIT
http://odoo.sismedika.com/web#id=6282&cids=1&menu_id=225&action=342&active_id=3&model=project.task&view_type=form
## BUILD WEB LINUX
Run di Bash command line
```
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o ./bin/main ./cmd/main.go
```
http://odoo.sismedika.com/web#id=6282&cids=1&menu_id=225&action=342&active_id=3&model=project.task&view_type=form

View File

@@ -54,17 +54,17 @@ var KTLogin = function () {
validation.validate().then(function (status) {
if (status == 'Valid') {
// swal.fire({
// text: "All is cool! Now you submit this form",
// icon: "success",
// buttonsStyling: false,
// confirmButtonText: "Ok, got it!",
// customClass: {
// confirmButton: "btn font-weight-bold btn-light-primary"
// }
// }).then(function () {
// KTUtil.scrollTop();
// });
swal.fire({
text: "All is cool! Now you submit this form",
icon: "success",
buttonsStyling: false,
confirmButtonText: "Ok, got it!",
customClass: {
confirmButton: "btn font-weight-bold btn-light-primary"
}
}).then(function () {
KTUtil.scrollTop();
});
} else {
swal.fire({
text: "Sorry, looks like there are some errors detected, please try again.",

File diff suppressed because it is too large Load Diff

View File

@@ -1,784 +0,0 @@
<!DOCTYPE html>
<!--
Template Name: Metronic - Bootstrap 4 HTML, React, Angular 9 & VueJS Admin Dashboard Theme
Author: KeenThemes
Website: http://www.keenthemes.com/
Contact: support@keenthemes.com
Follow: www.twitter.com/keenthemes
Dribbble: www.dribbble.com/keenthemes
Like: www.facebook.com/keenthemes
Purchase: https://1.envato.market/EA4JP
Renew Support: https://1.envato.market/EA4JP
License: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.
-->
<html lang="en">
<!--begin::Head-->
<head>
<base href="../" />
<meta charset="utf-8" />
<title>KESIMPULAN & SARAN</title>
<meta name="description" content="Login page example" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<!--begin::Fonts-->
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700"
/>
<!--end::Fonts-->
<!--begin::Page Custom Styles(used by this page)-->
<link
href="assets/css/pages/login/login-1.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Page Custom Styles-->
<!--begin::Global Theme Styles(used by all pages)-->
<link
href="assets/plugins/global/plugins.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/plugins/custom/prismjs/prismjs.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
<!--end::Global Theme Styles-->
<!--begin::Layout Themes(used by all pages)-->
<link
href="assets/css/themes/layout/header/base/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/header/menu/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/brand/dark.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/aside/dark.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Layout Themes-->
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Public Sans:300,400,500,600,700"
/>
<link rel="shortcut icon" href="assets/media/logos/favicon.ico" />
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Roboto"
/>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200"
/>
<link href="https://fonts.cdnfonts.com/css/open-sans" rel="stylesheet" />
<style>
#canvas {
/* overflow-x: scroll; */
margin: 40px 10vw 40px 10vw;
}
#title {
font-weight: 600;
}
.breadcrumb {
background-color: white;
padding: 0px 0px !important;
padding-left: 0 !important;
}
.breadcrumb-item a {
color: #3f4254;
font-family: Poppins;
font-size: 13px;
font-style: normal;
font-weight: 500;
line-height: 21px;
}
.breadcrumb-item.active {
color: #b5b5c3;
font-family: Poppins;
font-size: 13px;
font-style: normal;
font-weight: 500;
line-height: 21px;
}
.nav-tabs {
border-bottom: 0px solid #000000 !important;
}
.nav-link {
color: #637381;
font-family: Public Sans;
font-size: 14px;
font-style: normal;
font-weight: 600;
line-height: 22px;
text-align: center;
}
.nav-link.active {
color: #212b36 !important; /* Warna teks untuk tab yang aktif */
border-bottom: 2px solid #0c518c !important; /* Garis bawah untuk tab yang aktif */
font-family: Public Sans;
font-size: 14px;
font-style: normal;
font-weight: 600;
line-height: 22px;
text-align: center;
}
th {
color: #637381;
font-family: Roboto;
font-weight: 700 !important;
font-size: 14px !important;
padding-bottom: 5px !important;
padding-left: 1px !important;
border-bottom: 1pt dashed #e4e6ef !important;
}
tr {
border-bottom: 1pt dashed #e4e6ef !important;
font-family: Roboto;
}
td {
color: #0e1e28;
font-family: Roboto;
font-style: normal;
font-weight: 500 !important;
font-size: 16px !important;
line-height: 30px; /* 187.5% */
letter-spacing: -0.32px;
padding-left: 1px !important;
padding-top: 16px !important;
padding-bottom: 16px !important;
}
thead {
border-bottom: 1pt dashed #e4e6ef !important;
}
.kesimpulan-desc {
color: #0e1e28;
font-family: Roboto;
font-size: 12px;
font-style: normal;
font-weight: 500;
line-height: normal;
letter-spacing: -0.24px;
}
.label-text {
background-color: grey;
color: black;
padding: 5px 20px 5px 20px !important;
border-radius: 6px;
font-family: Poppins !important;
font-size: 11px !important;
font-style: normal !important;
font-weight: 500 !important;
line-height: normal !important;
}
.label-text.fit {
background: #c9f7f5;
color: #1bc5bd;
padding: 5px 20px 5px 20px !important;
border-radius: 6px;
font-family: Poppins !important;
font-size: 11px !important;
font-style: normal !important;
font-weight: 500 !important;
line-height: normal !important;
}
.label-text.unfit {
background: #fff4de;
color: #ffa800;
padding: 5px 20px 5px 20px !important;
border-radius: 6px;
font-family: Poppins !important;
font-size: 11px !important;
font-style: normal !important;
font-weight: 500 !important;
line-height: normal !important;
}
.iconify-btn {
color: #637381 !important;
width: 23px !important;
height: 23px !important;
margin-right: 1em;
}
.iconify-btn-blue {
color: #0c518c !important;
width: 23px !important;
height: 23px !important;
margin-right: 1em;
}
.modal-header {
border-bottom: none !important;
}
.modal-title {
font-family: "Public Sans" !important;
font-size: 18px !important;
font-style: normal !important;
font-weight: 700 !important;
line-height: 28px !important;
}
.modal-dialog {
border-radius: 8px;
}
.btn-print {
border-radius: 6px !important;
background-color: #f5f8fa !important;
font-family: Roboto;
font-size: 14px;
margin-bottom: 12px;
font-style: normal;
font-weight: 500;
line-height: normal;
display: flex;
width: 100%;
justify-content: space-between;
align-items: center;
}
.modal-xl {
border-radius: 6px !important;
max-width: 90vw !important;
max-height: 95vh !important;
width: 90vw !important;
height: 95vh !important;
}
.header-print {
background-color: #d9d9d9;
}
.modal-print-title {
color: #000;
font-family: "Open Sans";
font-size: 28px;
font-style: normal;
font-weight: 700;
line-height: normal;
}
.close-print {
color: red !important;
width: 30px !important;
height: 30px !important;
}
.form-label {
font-family: Poppins !important;
font-size: 14px !important;
font-style: normal !important;
font-weight: 600 !important;
line-height: 24px !important; /* 171.429% */
}
.form-input {
font-family: Poppins !important;
font-size: 16px !important;
font-style: normal !important;
font-weight: 400 !important;
line-height: 24px !important;
}
.btn-text {
font-family: "Public Sans";
font-size: 14px;
font-style: normal;
font-weight: 700;
line-height: 24px;
}
.dot-text {
position: relative;
padding-left: 1.5em; /* Menambahkan padding untuk memberi ruang pada titik */
}
.dot-text::before {
content: "•"; /* Menambahkan titik di depan teks */
position: absolute;
left: 1em; /* Atur posisi titik */
top: 0;
transform: translateX(-100%);
}
.information-title {
color: #0e1e28;
font-family: Poppins;
font-size: 20px;
font-style: normal;
font-weight: 600;
line-height: normal;
}
</style>
</head>
<!--end::Head-->
<!--begin::Body-->
<body
id="kt_body"
class="header-fixed bg-white header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading"
>
<!--begin::Main-->
<div class="d-flex flex-column flex-root bg-white" id="canvas">
<div>
<!-- breadcrumb & icon tanya START -->
<div class="row">
<div class="col-11">
<h1 class="title" style="margin-bottom: 0">
PT. Sadhana Abiyasa Sampoerna
</h1>
<nav aria-label="breadcrumb">
<ol class="breadcrumb" style="margin-bottom: 0">
<li class="breadcrumb-item"><a href="#">Dashboard</a></li>
<li class="breadcrumb-item">
<a href="#">Employee Health Medical Analytic</a>
</li>
<li class="breadcrumb-item">
<a href="#">PT. Sadhana Abiyasa Sampoerna</a>
</li>
<li class="breadcrumb-item active" aria-current="page">
Mcu Karyawan
</li>
</ol>
</nav>
</div>
<div class="col-1 align-content-center">
<!-- align-content-center -->
<div class="d-flex justify-content-end">
<a href="#">
<i class="fas fa-info-circle text-primary"></i>
</a>
</div>
</div>
</div>
<!-- breadcrumb & icon tanya END -->
</div>
<div class="mt-10">
<ul class="nav nav-tabs nav-tabs-line">
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_1"
>Peserta</a
>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_2"
>Kelainan global</a
>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_3"
>Kelainan Lab</a
>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_4"
>kelainan Non Lab</a
>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_5"
>kelainan Fisik</a
>
</li>
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#kt_tab_pane_6"
>Kesimpulan & Saran</a
>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_7"
>Daftar Peserta</a
>
</li>
</ul>
</div>
<div class="d-flex justify-content-center pt-10 pb-10">
<h2 class="title" style="margin-bottom: 0">Kesimpulan</h2>
</div>
<!-- Kelainan pemeriksaan lab -->
<div class="card card-custom gutter-b" style="border-radius: 20px">
<div style="padding-top: 12px">
<h3 class="card-label dot-text text-black">
3 Kelainan Pemeriksaan Lab terbesar :
</h3>
</div>
<div class="card-body">
<div>
<table class="table table-hover table-borderless">
<thead>
<tr>
<th scope="col" width="5%">NO</th>
<th scope="col" width="70%">PEMERIKSAAN</th>
<th scope="col" width="25%">PRESENTASE</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Hipercholesterolemia</td>
<td>44.5</td>
</tr>
<tr>
<td>2</td>
<td>Hiperuricemia</td>
<td>22.7</td>
</tr>
<tr>
<td>3</td>
<td>Peningkatan SGPT</td>
<td>15.8</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- End Kelainan pemeriksaan lab -->
<!-- Kelainan pemeriksaan non lab -->
<div class="card card-custom gutter-b" style="border-radius: 20px">
<div style="padding-top: 12px">
<h3 class="card-label dot-text text-black">
3 Kelainan Pemeriksaan Non Lab terbesar :
</h3>
</div>
<div class="card-body">
<div>
<table class="table table-hover table-borderless">
<thead>
<tr>
<th scope="col" width="5%">NO</th>
<th scope="col" width="70%">PEMERIKSAAN</th>
<th scope="col" width="25%">PRESENTASE</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Retriksi Ringan</td>
<td>22.0</td>
</tr>
<tr>
<td>2</td>
<td>Gangguan Konduksi Ringan</td>
<td>15.0</td>
</tr>
<tr>
<td>3</td>
<td>Obstruksi Sedang</td>
<td>13.0</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- End Kelainan pemeriksaan non lab -->
<!-- Kelainan pemeriksaan Fisik -->
<div class="card card-custom gutter-b" style="border-radius: 20px">
<div style="padding-top: 12px">
<h3 class="card-label dot-text text-black">
3 Kelainan Pemeriksaan Fisik terbesar :
</h3>
</div>
<div class="card-body">
<div>
<table class="table table-hover table-borderless">
<thead>
<tr>
<th scope="col" width="5%">NO</th>
<th scope="col" width="70%">PEMERIKSAAN</th>
<th scope="col" width="25%">PRESENTASE</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Obesitas Stage 1</td>
<td>41.7</td>
</tr>
<tr>
<td>2</td>
<td>Pre Hipertensi</td>
<td>39.0</td>
</tr>
<tr>
<td>3</td>
<td>Kelainan Refraksi</td>
<td>35.2</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- End Kelainan pemeriksaan Fisik -->
<!-- Saran -->
<div class="d-flex justify-content-center pt-10 pb-10">
<h2 class="information-title title" style="margin-bottom: 0">Saran</h2>
</div>
<div class="mb-5">
<h3 class="information-title mb-3">Tujuan MCU</h3>
<div>
<div class="dot-text">Olah raga teratur</div>
<div class="dot-text">Penurunan berat badan</div>
</div>
</div>
<div class="mb-5">
<h3 class="information-title mb-3">Kelainan Refraksi</h3>
<div>
<div class="mb-5">
<div>1. Kelainan refraksi dengan kacamata</div>
<div class="dot-text">
Konsul dokter Scpesialis Mata untuk pemakaian kacamata/ lensa
kontak
</div>
</div>
<div>2. Kelainan refraksi tanpa kacamata</div>
<div class="dot-text">Pemakaian kacamata/ lensa kontak</div>
</div>
</div>
<div class="mb-5">
<h3 class="information-title mb-3">Tekanan Darah</h3>
<div>
<div class="mb-5">
<div>1. Pre Hipertensi</div>
<div class="dot-text">Olah raga teratur</div>
<div class="dot-text">Cukup istirahat</div>
<div class="dot-text">Pemeriksaan tekanan darah secara teratur</div>
</div>
<div class="mb-5">
<div>2. Hipertensi stage 1 dan 2</div>
<div class="dot-text">Olah raga teratur</div>
<div class="dot-text">Cukup istirahat</div>
<div class="dot-text">Batasi konsumsi garam</div>
<div class="dot-text">Pemeriksaan tekanan darah secara teratur</div>
<div class="dot-text">
Pengobatan/ minum obat secara teratur (bila ybs sudah minum obat,
hipertensi tetapi  kadang-kadang atau tidak rutin)
</div>
</div>
</div>
</div>
<div class="mb-5">
<h3 class="information-title mb-3">
Peningkatan Profil lemak dan Hiperglikemia
</h3>
<div>
<div class="dot-text">Diet rendah lemak, karbohidrat dan gula,</div>
<div class="dot-text">Olahraga secara teraturs</div>
<div class="dot-text">
Program promosi kesehatan terutama untuk mencegah terjadinya dampak
serius peningkatan lemak darah
</div>
</div>
</div>
<div class="mb-5">
<h3 class="information-title mb-3">Hiperuricemia</h3>
<div>
<div class="dot-text" s>
Mengurangi asupan makanan/sayuran yang mengandung purin (melinjo,
kangkung, jeroan, emping, dll)
</div>
</div>
</div>
<!-- End Saran -->
</div>
<!--end::Main-->
<script>
var HOST_URL =
"https://preview.keenthemes.com/metronic/theme/html/tools/preview";
</script>
<!--begin::Global Config(global config for global JS scripts)-->
<script>
var KTAppSettings = {
breakpoints: {
sm: 576,
md: 768,
lg: 992,
xl: 1200,
xxl: 1400,
},
colors: {
theme: {
base: {
white: "#ffffff",
primary: "#3699FF",
secondary: "#E5EAEE",
success: "#1BC5BD",
info: "#8950FC",
warning: "#FFA800",
danger: "#F64E60",
light: "#E4E6EF",
dark: "#181C32",
},
light: {
white: "#ffffff",
primary: "#E1F0FF",
secondary: "#EBEDF3",
success: "#C9F7F5",
info: "#EEE5FF",
warning: "#FFF4DE",
danger: "#FFE2E5",
light: "#F3F6F9",
dark: "#D6D6E0",
},
inverse: {
white: "#ffffff",
primary: "#ffffff",
secondary: "#3F4254",
success: "#ffffff",
info: "#ffffff",
warning: "#ffffff",
danger: "#ffffff",
light: "#464E5F",
dark: "#ffffff",
},
},
gray: {
"gray-100": "#F3F6F9",
"gray-200": "#EBEDF3",
"gray-300": "#E4E6EF",
"gray-400": "#D1D3E0",
"gray-500": "#B5B5C3",
"gray-600": "#7E8299",
"gray-700": "#5E6278",
"gray-800": "#3F4254",
"gray-900": "#181C32",
},
},
"font-family": "Poppins",
};
</script>
<!--end::Global Config-->
<!--begin::Global Theme Bundle(used by all pages)-->
<script src="assets/plugins/global/plugins.bundle.js"></script>
<script src="assets/plugins/custom/prismjs/prismjs.bundle.js"></script>
<script src="assets/js/scripts.bundle.js"></script>
<!--end::Global Theme Bundle-->
<!--begin::Page Vendors(used by this page)-->
<script src="assets/plugins/custom/fullcalendar/fullcalendar.bundle.js"></script>
<!--end::Page Vendors-->
<!--begin::Page Scripts(used by this page)-->
<script src="assets/js/pages/widgets.js"></script>
<!--end::Page Scripts-->
<!-- echartjs.min.js -->
<script src="assets/js/echarts-js/echart.min.js"></script>
<!-- SCRIPT -->
<script
src="https://cdnjs.cloudflare.com/ajax/libs/iconify/2.0.0/iconify.min.js"
integrity="sha512-lYMiwcB608+RcqJmP93CMe7b4i9G9QK1RbixsNu4PzMRJMsqr/bUrkXUuFzCNsRUo3IXNUr5hz98lINURv5CNA=="
crossorigin="anonymous"
referrerpolicy="no-referrer"
></script>
<script type="text/javascript">
$.fn.redraw = function () {
$(this).each(function () {
var redraw = this.offsetHeight;
});
};
function ShowModal(name, nolab) {
console.log(name + nolab);
$("#modal-list-print-title").text(name + "-" + nolab);
$(".modal-list-print").modal("show");
}
function ShowModalPrint(data, title) {
console.log(data);
let a =
"https://devone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_fo_001.rptdesign&__format=pdf&username=ADMIN&PID=132061?t=1713408676799";
let b =
"https://devone.aplikasi.web.id/birt/run?__report=report/one/external/rpt_mt_pramita_001.rptdesign&__format=pdf&username=adminsas%20&PID=77&tm=1713317444625";
$(".modal-print-title").text(title);
let tag =
'<object id="object-print" width="100%" type="application/pdf" style="height: 80vh" ></object>';
if (data === "1") {
// $("#object-print").attr("data", a);
tag =
'<object id="object-print" width="100%" data="' +
a +
'" type="application/pdf" style="height: 80vh" ></object>';
} else {
// $("#object-print").attr("data", b);
tag =
'<object id="object-print" width="100%" data="' +
b +
'" type="application/pdf" style="height: 80vh" ></object>';
}
$("#object-print").replaceWith(tag);
console.log(tag);
$(".modal-list-print").modal("hide");
$(".modal-print").modal("show");
}
function CloseModalPrint() {
// $("#object-print").removeAttr("data");
// $("#object-print").redraw();
$(".modal-list-print").modal("show");
$(".modal-print").modal("hide");
}
function ShowModalAkses(email, password, checked) {
console.log("email" + email);
console.log("password" + password);
console.log("checked :" + checked);
$(".modal-akses").modal("show");
$('input[name="email"]').val(email);
$('input[name="password"]').val(password);
// $("#akses").attr("checked", checked);
// $('input[type="checkbox"]').removeAttr("checked");
$('input[name="akses"]').removeAttr("checked");
let appChecked =
'<span class="switch switch-sm switch-akses "><label><input id="akses" type="checkbox" name="akses" checked/><span></span></label></span>';
let appNotChecked =
'<span class="switch switch-sm switch-akses "><label><input id="akses" type="checkbox" name="akses" /><span></span></label></span>';
if (checked === "checked") {
// $('input[name="akses"]').attr("checked");
// $(".form-akses-switch").append(appChecked);
$(".switch-akses").replaceWith(appChecked);
} else {
// $('input[name="akses"]').removeAttr("checked");
// $('input[name="akses"]').removeAttr("checked");
// $(".form-akses-switch").append(appNotChecked);
$(".switch-akses").replaceWith(appNotChecked);
}
if (checked !== "checked") {
$(".switch-akses").replaceWith(appNotChecked);
}
// $("#akses").load(window.location.href + " #akses");
}
$("#akses").change(function () {
if (this.checked) {
$('input[name="akses"]').attr("checked", "checked");
} else {
$('input[name="akses"]').removeAttr("checked");
}
});
</script>
</body>
<!--end::Body-->
</html>

View File

@@ -1,273 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<!--begin::Head-->
<head>
<base href="../" />
<meta charset="utf-8" />
<title>Company Portal | { title }</title>
<meta name="description" content="Company Portal" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<!--begin::Fonts-->
<link rel="stylesheet" href="assets/css/googlefont/poppins.css" />
<!--end::Fonts-->
<!--begin::Page Custom Styles(used by this page)-->
<link
href="assets/css/pages/login/login-1.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Page Custom Styles-->
<!--begin::Global Theme Styles(used by all pages)-->
<link
href="assets/plugins/global/plugins.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/plugins/custom/prismjs/prismjs.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
<!--end::Global Theme Styles-->
<!--begin::Layout Themes(used by all pages)-->
<link
href="assets/css/themes/layout/header/base/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/header/menu/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/brand/dark.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/aside/dark.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Layout Themes-->
<link
rel="shortcut icon"
href="asset-corporate-portal/media/logo/logo-small.jpg"
/>
<!--end::Layout Themes SAS-->
<link
href="asset-corporate-portal/css/sas.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.18/css/bootstrap-select.min.css"
/>
<style>
.filter-option-inner-inner {
margin-top: 1.2vh;
color: var(--text-disabled);
}
.bootstrap-select > .dropdown-toggle.bs-placeholder.btn {
color: var(--text-disabled);
}
.bootstrap-select.btn-group .dropdown-menu {
min-width: 100%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
position: sticky;
}
.dropdown-menu {
transform: translate3d(0px, 0px, 0px) !important;
}
/* mik */
.input-container {
position: relative;
}
.input-label {
position: absolute;
right: 20px;
transform: translateY(-50%);
pointer-events: none;
transition: all 0.2s ease;
}
.input-field:not(:placeholder-shown) + .input-label {
top: 50%;
font-size: 12px;
color: var(--secondary-hover);
}
</style>
</head>
<!--end::Head-->
<!--begin::Body-->
<body
id="kt_body"
class="bg-white header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading"
>
<!--begin::Main-->
<div class="wrapperx p-5 h-100">
<!--begin::Row 1-->
<div class="form-row">
<div class="col-3">
<div class="container px-15">
<div
class="d-flex flex-column bg-primary-transparent rounded p-4 m-2 shadow"
>
<h4>Orders</h4>
<h1 class="font-weight-bolder ml-auto">120.000.000</h1>
</div>
</div>
</div>
<div class="col-3">
<div class="container px-15">
<div
class="d-flex flex-column bg-warning-transparent rounded p-4 m-2 shadow"
>
<h4>Tagihan</h4>
<h1 class="font-weight-bolder ml-auto">85.000.000</h1>
</div>
</div>
</div>
<div class="col-3">
<div class="container px-15">
<div
class="d-flex flex-column bg-success-transparent rounded p-4 m-2 shadow"
>
<h4>Pelunasan</h4>
<h1 class="font-weight-bolder ml-auto">55.000.000</h1>
</div>
</div>
</div>
<div class="col-3">
<div class="container px-15">
<div
class="d-flex flex-column bg-danger-transparent rounded p-4 m-2 shadow"
>
<h4>Hutang</h4>
<h1 class="font-weight-bolder ml-auto">55.000.000</h1>
</div>
</div>
</div>
<!--end::Row 1-->
</div>
<!-- begin::Row 2 -->
<div class="form-row mt-15">
<div class="col">
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr >
<th scope="col" class="text-center text-black col-5" colspan="3">Tagihan</th>
<th scope="col" class="text-center text-black col-4" colspan="2">Pelunasan</th>
<th scope="col" class="text-center text-black col-3" rowspan="2">
<div class="d-flex justify-content-center align-items-center h-100">
<h3>Sisa</h3>
</div>
</th>
</tr>
<tr>
<th scope="col" class="text-center text-black">No/Tgl</th>
<th scope="col" class="text-center text-black">Tgl Jatuh Tempo</th>
<th scope="col" class="text-center text-black">Jumlah</th>
<th scope="col" class="text-center text-black">No/Tgl</th>
<th scope="col" class="text-center text-black">Jumlah</th>
</tr>
</thead>
<tbody>
<tr>
<td class="text-center" rowspan="2">T/103/200/XYZ 20 MARET 2024</td>
<td class="text-center" rowspan="2">20 MARET 2024</td>
<td class="text-center" rowspan="2">20.000.000</td>
<td class="text-center">T/103/200/XYZ 20 MARET 2024</td>
<td class="text-center">10.000.000</td>
<td class="text-center" rowspan="2">5.000.000</td>
</tr>
<tr>
<td class="text-center">T/103/200/XYZ 20 MARET 2024</td>
<td class="text-center">5.000.000</td>
</tr>
<tr>
<td class="text-center" rowspan="2">T/103/200/XYZ 20 MARET 2024</td>
<td class="text-center" rowspan="2">20 MARET 2024</td>
<td class="text-center" rowspan="2">20.000.000</td>
<td class="text-center">T/103/200/XYZ 20 MARET 2024</td>
<td class="text-center">10.000.000</td>
<td class="text-center" rowspan="2">5.000.000</td>
</tr>
<tr>
<td class="text-center">T/103/200/XYZ 20 MARET 2024</td>
<td class="text-center">5.000.000</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- end::Row 2 -->
<!--end::Main-->
<script src="asset-corporate-portal/js/ktappsetting.js"></script>
<!-- iconify -->
<script src="assets/js/iconify/iconify.min.js"></script>
<!--end::Global Config-->
<!--begin::Global Theme Bundle(used by all pages)-->
<script src="assets/plugins/global/plugins.bundle.js"></script>
<script src="assets/plugins/custom/prismjs/prismjs.bundle.js"></script>
<script src="assets/js/scripts.bundle.js"></script>
<script src="assets/js/pages/crud/forms/widgets/bootstrap-datepicker.js"></script>
<script>
function ShowLoading() {
document
.getElementById("demo")
.setAttribute("style", "display:block !important;");
document
.getElementById("a")
.setAttribute("style", "display:none !important;");
}
function ShowForm() {
document
.getElementById("demo")
.setAttribute("style", "display:none !important;");
document
.getElementById("a")
.setAttribute("style", "display:block !important;;");
}
$(document).ready(function () {
// $(".selectpicker").selectpicker();
$(".selectpicker").selectpicker({
dropupAuto: false,
});
$("#datepicker").datepicker({
format: "dd/mm/yyyy",
});
$("#calendar-icon").click(function () {
$("#datepicker").datepicker("show");
});
});
</script>
<!--end::Global Theme Bundle-->
<!--end::Page Scripts-->
</body>
<!--end::Body-->
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -1,27 +0,0 @@
package auth
import (
"net/http"
echojwt "github.com/labstack/echo-jwt/v4"
"github.com/labstack/echo/v4"
)
var IsLoggedIn = echojwt.WithConfig(
echojwt.Config{
SigningKey: []byte("--one_api-secret-2019-04-01"),
TokenLookup: "cookie:token",
ErrorHandler: JWTErrorChecker,
},
)
var IsAlreadyLogin = echojwt.WithConfig(
echojwt.Config{
SigningKey: []byte("--one_api-secret-2019-04-01"),
ErrorHandler: JWTErrorChecker,
},
)
func JWTErrorChecker(c echo.Context, err error) error {
return c.Redirect(http.StatusTemporaryRedirect, "/login")
}

View File

@@ -60,10 +60,8 @@ func main() {
handlers.SetupRoutesCorporate(app, appStore)
// SETUP ROUT CLIENT
handlers.SetupRoutesClient(app, appStore)
// SETUP ROUT DEV
// handlers.SetupRoutesDev(app, appStore)
handlers.SetupRoutesDev(app, appStore)
app.Logger.Fatal(app.Start(":5000"))
}

View File

@@ -11,7 +11,7 @@ script GenerateChart(idDiv string, udata string) {
var element = document.getElementById(idDiv);
console.log("element ",element)
if (element) {
element.style.height = "450px";
element.style.height = "400px";
element.style.width = "100%";
}
@@ -27,73 +27,4 @@ script GenerateChart(idDiv string, udata string) {
// myChart_001.setOption(option_001);
myChart[idDiv].setOption(option[idDiv]);
});
}
templ ShowChartFixed(idDiv string, udata string, width string, height string) {
<div id={ idDiv } class="mx-auto"></div>
@GenerateChartFixed(idDiv, udata, width, height)
}
script GenerateChartFixed(idDiv string, udata string, width string, height string) {
htmx.onLoad(function(elt) {
// console.log("elt ",elt)
var element = document.getElementById(idDiv);
// console.log("element ",element)
if (element) {
element.style.height = height;
element.style.width = width;
}
var myChart = {};
var option = {};
// var myChart_001 = echarts.init(document.getElementById(idDiv));
myChart[idDiv] = echarts.init(element);
// var option_001 = JSON.parse(udata);
option[idDiv] = JSON.parse(udata);
// console.log("option ", option)
// myChart_001.setOption(option_001);
myChart[idDiv].setOption(option[idDiv]);
});
}
templ ShowChartResponsiveWidth(idDiv string, udata string, height string) {
<div id={ idDiv } class="mx-auto" style="width: 100%;"></div>
@GenerateChartResponsive(idDiv, udata, height)
}
script GenerateChartResponsive(idDiv string, udata string, height string) {
htmx.onLoad(function(elt) {
// console.log("elt ",elt)
var element = document.getElementById(idDiv);
// console.log("element ",element)
if (element) {
element.style.height = height;
}
var myChart = {};
var option = {};
// var myChart_001 = echarts.init(document.getElementById(idDiv));
myChart[idDiv] = echarts.init(element);
// var option_001 = JSON.parse(udata);
option[idDiv] = JSON.parse(udata);
// console.log("option ", option)
// myChart_001.setOption(option_001);
if (option[idDiv]['series']['radius']) {
option[idDiv]['series']['radius'] = ['30%', '55%'];
} else {
option[idDiv]['series'][0]['radius'] = ['30%', '55%'];
}
myChart[idDiv].setOption(option[idDiv]);
var resizeObserver = new ResizeObserver(function() {
myChart[idDiv].resize();
});
resizeObserver.observe(element);
});
}

View File

@@ -53,13 +53,13 @@ func ShowChart(idDiv string, udata string) templ.Component {
func GenerateChart(idDiv string, udata string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_GenerateChart_906c`,
Function: `function __templ_GenerateChart_906c(idDiv, udata){htmx.onLoad(function(elt) {
Name: `__templ_GenerateChart_4c73`,
Function: `function __templ_GenerateChart_4c73(idDiv, udata){htmx.onLoad(function(elt) {
console.log("elt ",elt)
var element = document.getElementById(idDiv);
console.log("element ",element)
if (element) {
element.style.height = "450px";
element.style.height = "400px";
element.style.width = "100%";
}
@@ -76,160 +76,7 @@ func GenerateChart(idDiv string, udata string) templ.ComponentScript {
myChart[idDiv].setOption(option[idDiv]);
});
}`,
Call: templ.SafeScript(`__templ_GenerateChart_906c`, idDiv, udata),
CallInline: templ.SafeScriptInline(`__templ_GenerateChart_906c`, idDiv, udata),
}
}
func ShowChartFixed(idDiv string, udata string, width string, height string) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var3 := templ.GetChildren(ctx)
if templ_7745c5c3_Var3 == nil {
templ_7745c5c3_Var3 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(idDiv)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\chart\chart.templ`, Line: 33, Col: 19}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" class=\"mx-auto\"></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = GenerateChartFixed(idDiv, udata, width, height).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func GenerateChartFixed(idDiv string, udata string, width string, height string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_GenerateChartFixed_c5bf`,
Function: `function __templ_GenerateChartFixed_c5bf(idDiv, udata, width, height){htmx.onLoad(function(elt) {
// console.log("elt ",elt)
var element = document.getElementById(idDiv);
// console.log("element ",element)
if (element) {
element.style.height = height;
element.style.width = width;
}
var myChart = {};
var option = {};
// var myChart_001 = echarts.init(document.getElementById(idDiv));
myChart[idDiv] = echarts.init(element);
// var option_001 = JSON.parse(udata);
option[idDiv] = JSON.parse(udata);
// console.log("option ", option)
// myChart_001.setOption(option_001);
myChart[idDiv].setOption(option[idDiv]);
});
}`,
Call: templ.SafeScript(`__templ_GenerateChartFixed_c5bf`, idDiv, udata, width, height),
CallInline: templ.SafeScriptInline(`__templ_GenerateChartFixed_c5bf`, idDiv, udata, width, height),
}
}
func ShowChartResponsiveWidth(idDiv string, udata string, height string) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var5 := templ.GetChildren(ctx)
if templ_7745c5c3_Var5 == nil {
templ_7745c5c3_Var5 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(idDiv)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\chart\chart.templ`, Line: 62, Col: 19}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" class=\"mx-auto\" style=\"width: 100%;\"></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = GenerateChartResponsive(idDiv, udata, height).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func GenerateChartResponsive(idDiv string, udata string, height string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_GenerateChartResponsive_fa78`,
Function: `function __templ_GenerateChartResponsive_fa78(idDiv, udata, height){htmx.onLoad(function(elt) {
// console.log("elt ",elt)
var element = document.getElementById(idDiv);
// console.log("element ",element)
if (element) {
element.style.height = height;
}
var myChart = {};
var option = {};
// var myChart_001 = echarts.init(document.getElementById(idDiv));
myChart[idDiv] = echarts.init(element);
// var option_001 = JSON.parse(udata);
option[idDiv] = JSON.parse(udata);
// console.log("option ", option)
// myChart_001.setOption(option_001);
if (option[idDiv]['series']['radius']) {
option[idDiv]['series']['radius'] = ['30%', '55%'];
} else {
option[idDiv]['series'][0]['radius'] = ['30%', '55%'];
}
myChart[idDiv].setOption(option[idDiv]);
var resizeObserver = new ResizeObserver(function() {
myChart[idDiv].resize();
});
resizeObserver.observe(element);
});
}`,
Call: templ.SafeScript(`__templ_GenerateChartResponsive_fa78`, idDiv, udata, height),
CallInline: templ.SafeScriptInline(`__templ_GenerateChartResponsive_fa78`, idDiv, udata, height),
Call: templ.SafeScript(`__templ_GenerateChart_4c73`, idDiv, udata),
CallInline: templ.SafeScriptInline(`__templ_GenerateChart_4c73`, idDiv, udata),
}
}

View File

@@ -57,29 +57,3 @@ templ ModalXL(modalID string, modalTitle string, modalBody templ.Component, moda
</div>
</div>
}
templ ModalViewXL(modalID string, modalTitle string, modalBody templ.Component, btnClose templ.Component) {
<div
class="modal fade"
style="display: none"
id={ modalID }
tabindex="-1"
role="dialog"
data-backdrop="static"
aria-hidden="true"
>
<div class="modal-dialog modal-xl modal-dialog-centered" role="document">
<div class="modal-content rounded-lg">
<div class="modal-header border-bottom-0">
<h6 class="modal-title text-black font-weight-bolder">
{ modalTitle }
</h6>
@btnClose
</div>
<div class="modal-body border-bottom-0">
@modalBody
</div>
</div>
</div>
</div>
}

View File

@@ -157,69 +157,3 @@ func ModalXL(modalID string, modalTitle string, modalBody templ.Component, modal
return templ_7745c5c3_Err
})
}
func ModalViewXL(modalID string, modalTitle string, modalBody templ.Component, btnClose templ.Component) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var7 := templ.GetChildren(ctx)
if templ_7745c5c3_Var7 == nil {
templ_7745c5c3_Var7 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"modal fade\" style=\"display: none\" id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(modalID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\modal\modal.templ`, Line: 65, Col: 14}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" tabindex=\"-1\" role=\"dialog\" data-backdrop=\"static\" aria-hidden=\"true\"><div class=\"modal-dialog modal-xl modal-dialog-centered\" role=\"document\"><div class=\"modal-content rounded-lg\"><div class=\"modal-header border-bottom-0\"><h6 class=\"modal-title text-black font-weight-bolder\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var9 string
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(modalTitle)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\modal\modal.templ`, Line: 75, Col: 18}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</h6>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = btnClose.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"modal-body border-bottom-0\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = modalBody.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -40,50 +40,6 @@ templ Navbar(dataUser models.User) {
</div>
}
templ NavbarWithLogo(dataUser models.User) {
<div id="kt_header" class="header">
<!--begin::Container-->
<div class="container-fluid d-flex align-items-stretch justify-content-between">
<!--begin::Header Menu Wrapper-->
<div class="header-menu-wrapper header-menu-wrapper-left" id="kt_header_menu_wrapper">
<a class="navbar-brand" href="#">
<img
src="/asset-corporate-portal/media/landingpage/logo.png"
width="126"
height="40"
class="d-inline-block align-top"
alt="Your Brand"
/>
</a>
</div>
<!--end::Header Menu Wrapper-->
<!--begin::Topbar-->
<div class="topbar">
<!--begin::User-->
<div class="topbar-item">
<div
class="btn btn-icon btn-icon-mobile w-auto btn-clean d-flex align-items-center btn-lg px-2"
id="kt_quick_user_toggle"
>
<span
class="text-muted font-weight-bold font-size-base d-none d-md-inline mr-1"
>Hi,</span>
<span
class="text-dark-50 font-weight-bolder font-size-base d-none d-md-inline mr-3"
>{ dataUser.Username }</span>
<span class="bg-primary-transparent p-3" style="border-radius: 50%; width: 40px; height: 40px;">
<span class="iconify text-primary" data-icon="gravity-ui:person"></span>
</span>
</div>
</div>
<!--end::User-->
</div>
<!--end::Topbar-->
</div>
<!--end::Container-->
</div>
}
templ NavbarMenu(datamenu []models.Menu) {
<div class="aside-menu-wrapper flex-column-fluid" id="kt_aside_menu_wrapper">
<!--begin::Menu Container-->

View File

@@ -53,7 +53,7 @@ func Navbar(dataUser models.User) templ.Component {
})
}
func NavbarWithLogo(dataUser models.User) templ.Component {
func NavbarMenu(datamenu []models.Menu) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
@@ -66,43 +66,6 @@ func NavbarWithLogo(dataUser models.User) templ.Component {
templ_7745c5c3_Var3 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"kt_header\" class=\"header\"><!--begin::Container--><div class=\"container-fluid d-flex align-items-stretch justify-content-between\"><!--begin::Header Menu Wrapper--><div class=\"header-menu-wrapper header-menu-wrapper-left\" id=\"kt_header_menu_wrapper\"><a class=\"navbar-brand\" href=\"#\"><img src=\"/asset-corporate-portal/media/landingpage/logo.png\" width=\"126\" height=\"40\" class=\"d-inline-block align-top\" alt=\"Your Brand\"></a></div><!--end::Header Menu Wrapper--><!--begin::Topbar--><div class=\"topbar\"><!--begin::User--><div class=\"topbar-item\"><div class=\"btn btn-icon btn-icon-mobile w-auto btn-clean d-flex align-items-center btn-lg px-2\" id=\"kt_quick_user_toggle\"><span class=\"text-muted font-weight-bold font-size-base d-none d-md-inline mr-1\">Hi,</span> <span class=\"text-dark-50 font-weight-bolder font-size-base d-none d-md-inline mr-3\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(dataUser.Username)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\navbar\navbar.templ`, Line: 73, Col: 26}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</span> <span class=\"bg-primary-transparent p-3\" style=\"border-radius: 50%; width: 40px; height: 40px;\"><span class=\"iconify text-primary\" data-icon=\"gravity-ui:person\"></span></span></div></div><!--end::User--></div><!--end::Topbar--></div><!--end::Container--></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func NavbarMenu(datamenu []models.Menu) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var5 := templ.GetChildren(ctx)
if templ_7745c5c3_Var5 == nil {
templ_7745c5c3_Var5 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"aside-menu-wrapper flex-column-fluid\" id=\"kt_aside_menu_wrapper\"><!--begin::Menu Container--><div id=\"kt_aside_menu\" class=\"aside-menu my-4 \" data-menu-vertical=\"1\" data-menu-scroll=\"1\" data-menu-dropdown-timeout=\"500\"><!--begin::Menu Nav--><ul class=\"menu-nav \">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err

View File

@@ -1,157 +0,0 @@
package sidebaruserprofile
import (
"cpone/component/customtextfield"
"cpone/models"
"cpone/component/modal"
)
templ SidebarForm() {
<div>
<form
id="form-ganti-password"
class="form"
hx-post="/corp/dashboard_pic/gantipassword"
hx-target="#body-ganti-pass"
hx-swap="outerHTML"
hx-indicator=".formloading"
hx-on::before-request={ HandleFormBeforeRequest() }
hx-on::after-request={ HandleFormAfterGantiPass() }
>
@modalcomponent.Modal("modal-ganti-pass",
"Ganti Password",
ModalGantiPassword(),
ActionFormGantiPassword(),
CloseFormGantiPassword(),
)
</form>
</div>
}
templ ModalGantiPassword() {
<div id="body-ganti-pass">
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "oldPassID",
Name: "oldpassid",
Type: "password",
Placeholder: "Masukan password lama",
Label: "Password Lama",
})
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "newPassID",
Name: "newpassid",
Type: "password",
Placeholder: "Masukan password baru",
Label: "Password Baru",
})
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "reNewPassID",
Name: "renewpassid",
Type: "password",
Placeholder: "Masukan ulang password baru",
Label: "Ulangi Password Baru",
})
</div>
<script>
document.addEventListener('htmx:afterSwap', function(event) {
$('.selectpicker').selectpicker('refresh');
})
</script>
}
templ RetModalGantiPassword(
oldPass models.CustomTextFieldv2Prm,
newPass models.CustomTextFieldv2Prm,
renewPass models.CustomTextFieldv2Prm,
hxOnLoad templ.ComponentScript,
) {
<div id="body-ganti-pass" hx-on::load={ hxOnLoad }>
@customtextfield.CustomTextFieldv2(oldPass)
@customtextfield.CustomTextFieldv2(newPass)
@customtextfield.CustomTextFieldv2(renewPass)
</div>
<script>
document.addEventListener('htmx:afterSwap', function(event) {
$('.selectpicker').selectpicker('refresh');
})
</script>
}
templ ActionFormGantiPassword() {
<div>
<button
hx-on::after-request={ JSHideModal("#modal-ganti-pass") }
hx-post="/corp/dashboard_pic/tutupgantipassword"
hx-target="#body-ganti-pass"
hx-swap="outerHTML"
hx-indicator=".cancelloading"
type="button"
class="btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btnactcancel"
data-dismiss="modal"
>
<span class="htmx-indicator spinner-border spinner-border-sm cancelloading" role="status" aria-hidden="true"></span>
Batal
</button>
<button
type="submit"
class="btn btn-primary btn-shadow font-weight-bold rounded-lg btnactsavedata"
>
<span class="htmx-indicator spinner-border spinner-border-sm formloading" role="status" aria-hidden="true"></span>
Simpan
</button>
</div>
}
templ CloseFormGantiPassword() {
<button
type="button"
hx-on::after-request={ JSHideModal("#modal-ganti-pass") }
hx-post="/corp/dashboard_pic/tutupgantipassword"
hx-target="#body-ganti-pass"
hx-swap="outerHTML"
class="close btnactcancel"
data-dismiss="modal"
aria-label="Close"
>
<i aria-hidden="true" class="ki ki-close"></i>
</button>
}
script JSHideModal(modalID string) {
$(modalID).modal('hide')
}
script JSShowModal(modalID string) {
$(modalID).modal('show')
const btnActCancel = document.querySelectorAll('.btnactcancel');
const btnActSaveData = document.querySelectorAll('.btnactsavedata');
for (let i = 0; i < btnActCancel.length; i++) {
btnActCancel[i].removeAttribute('disabled');
}
for (let i = 0; i < btnActSaveData.length; i++) {
btnActSaveData[i].removeAttribute('disabled');
}
}
script HandleFormBeforeRequest() {
const btnActCancel = document.querySelectorAll('.btnactcancel');
const btnActSaveData = document.querySelectorAll('.btnactsavedata');
for (let i = 0; i < btnActCancel.length; i++) {
btnActCancel[i].setAttribute('disabled', 'true');
}
for (let i = 0; i < btnActSaveData.length; i++) {
btnActSaveData[i].setAttribute('disabled', 'true');
}
}
script HandleFormAfterGantiPass() {
const btnActCancel = document.querySelectorAll('.btnactcancel');
const btnActSaveData = document.querySelectorAll('.btnactsavedata');
for (let i = 0; i < btnActCancel.length; i++) {
btnActCancel[i].removeAttribute('disabled');
}
for (let i = 0; i < btnActSaveData.length; i++) {
btnActSaveData[i].removeAttribute('disabled');
}
}

View File

@@ -1,336 +0,0 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package sidebaruserprofile
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
import (
"cpone/component/customtextfield"
"cpone/component/modal"
"cpone/models"
)
func SidebarForm() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, HandleFormBeforeRequest(), HandleFormAfterGantiPass())
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<form id=\"form-ganti-password\" class=\"form\" hx-post=\"/corp/dashboard_pic/gantipassword\" hx-target=\"#body-ganti-pass\" hx-swap=\"outerHTML\" hx-indicator=\".formloading\" hx-on::before-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 templ.ComponentScript = HandleFormBeforeRequest()
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var2.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-on::after-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 templ.ComponentScript = HandleFormAfterGantiPass()
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var3.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = modalcomponent.Modal("modal-ganti-pass",
"Ganti Password",
ModalGantiPassword(),
ActionFormGantiPassword(),
CloseFormGantiPassword(),
).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</form></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func ModalGantiPassword() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var4 := templ.GetChildren(ctx)
if templ_7745c5c3_Var4 == nil {
templ_7745c5c3_Var4 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"body-ganti-pass\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "oldPassID",
Name: "oldpassid",
Type: "password",
Placeholder: "Masukan password lama",
Label: "Password Lama",
}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "newPassID",
Name: "newpassid",
Type: "password",
Placeholder: "Masukan password baru",
Label: "Password Baru",
}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "reNewPassID",
Name: "renewpassid",
Type: "password",
Placeholder: "Masukan ulang password baru",
Label: "Ulangi Password Baru",
}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><script>\r\n document.addEventListener('htmx:afterSwap', function(event) {\r\n $('.selectpicker').selectpicker('refresh');\r\n })\r\n </script>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func RetModalGantiPassword(
oldPass models.CustomTextFieldv2Prm,
newPass models.CustomTextFieldv2Prm,
renewPass models.CustomTextFieldv2Prm,
hxOnLoad templ.ComponentScript,
) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var5 := templ.GetChildren(ctx)
if templ_7745c5c3_Var5 == nil {
templ_7745c5c3_Var5 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hxOnLoad)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"body-ganti-pass\" hx-on::load=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 templ.ComponentScript = hxOnLoad
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var6.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(oldPass).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(newPass).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(renewPass).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><script>\r\n document.addEventListener('htmx:afterSwap', function(event) {\r\n $('.selectpicker').selectpicker('refresh');\r\n })\r\n </script>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func ActionFormGantiPassword() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var7 := templ.GetChildren(ctx)
if templ_7745c5c3_Var7 == nil {
templ_7745c5c3_Var7 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, JSHideModal("#modal-ganti-pass"))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<button hx-on::after-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 templ.ComponentScript = JSHideModal("#modal-ganti-pass")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var8.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-post=\"/corp/dashboard_pic/tutupgantipassword\" hx-target=\"#body-ganti-pass\" hx-swap=\"outerHTML\" hx-indicator=\".cancelloading\" type=\"button\" class=\"btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btnactcancel\" data-dismiss=\"modal\"><span class=\"htmx-indicator spinner-border spinner-border-sm cancelloading\" role=\"status\" aria-hidden=\"true\"></span> Batal\r</button> <button type=\"submit\" class=\"btn btn-primary btn-shadow font-weight-bold rounded-lg btnactsavedata\"><span class=\"htmx-indicator spinner-border spinner-border-sm formloading\" role=\"status\" aria-hidden=\"true\"></span> Simpan\r</button></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func CloseFormGantiPassword() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var9 := templ.GetChildren(ctx)
if templ_7745c5c3_Var9 == nil {
templ_7745c5c3_Var9 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, JSHideModal("#modal-ganti-pass"))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<button type=\"button\" hx-on::after-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var10 templ.ComponentScript = JSHideModal("#modal-ganti-pass")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var10.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-post=\"/corp/dashboard_pic/tutupgantipassword\" hx-target=\"#body-ganti-pass\" hx-swap=\"outerHTML\" class=\"close btnactcancel\" data-dismiss=\"modal\" aria-label=\"Close\"><i aria-hidden=\"true\" class=\"ki ki-close\"></i></button>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func JSHideModal(modalID string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_JSHideModal_4530`,
Function: `function __templ_JSHideModal_4530(modalID){$(modalID).modal('hide')
}`,
Call: templ.SafeScript(`__templ_JSHideModal_4530`, modalID),
CallInline: templ.SafeScriptInline(`__templ_JSHideModal_4530`, modalID),
}
}
func JSShowModal(modalID string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_JSShowModal_658d`,
Function: `function __templ_JSShowModal_658d(modalID){$(modalID).modal('show')
const btnActCancel = document.querySelectorAll('.btnactcancel');
const btnActSaveData = document.querySelectorAll('.btnactsavedata');
for (let i = 0; i < btnActCancel.length; i++) {
btnActCancel[i].removeAttribute('disabled');
}
for (let i = 0; i < btnActSaveData.length; i++) {
btnActSaveData[i].removeAttribute('disabled');
}
}`,
Call: templ.SafeScript(`__templ_JSShowModal_658d`, modalID),
CallInline: templ.SafeScriptInline(`__templ_JSShowModal_658d`, modalID),
}
}
func HandleFormBeforeRequest() templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_HandleFormBeforeRequest_7bdf`,
Function: `function __templ_HandleFormBeforeRequest_7bdf(){const btnActCancel = document.querySelectorAll('.btnactcancel');
const btnActSaveData = document.querySelectorAll('.btnactsavedata');
for (let i = 0; i < btnActCancel.length; i++) {
btnActCancel[i].setAttribute('disabled', 'true');
}
for (let i = 0; i < btnActSaveData.length; i++) {
btnActSaveData[i].setAttribute('disabled', 'true');
}
}`,
Call: templ.SafeScript(`__templ_HandleFormBeforeRequest_7bdf`),
CallInline: templ.SafeScriptInline(`__templ_HandleFormBeforeRequest_7bdf`),
}
}
func HandleFormAfterGantiPass() templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_HandleFormAfterGantiPass_cc6f`,
Function: `function __templ_HandleFormAfterGantiPass_cc6f(){const btnActCancel = document.querySelectorAll('.btnactcancel');
const btnActSaveData = document.querySelectorAll('.btnactsavedata');
for (let i = 0; i < btnActCancel.length; i++) {
btnActCancel[i].removeAttribute('disabled');
}
for (let i = 0; i < btnActSaveData.length; i++) {
btnActSaveData[i].removeAttribute('disabled');
}
}`,
Call: templ.SafeScript(`__templ_HandleFormAfterGantiPass_cc6f`),
CallInline: templ.SafeScriptInline(`__templ_HandleFormAfterGantiPass_cc6f`),
}
}

View File

@@ -22,35 +22,26 @@ templ Navbaruserprofile(dataUser models.User) {
<!--end::Header-->
<!--begin::Separator-->
<div class="separator separator-dashed my-7"></div>
<div class="navi mt-2">
<a
class="btn btn-sm btn-light-primary font-weight-bolder py-2 px-5 block"
style="width: 100%"
data-toggle="modal"
data-target="#modal-ganti-pass"
>
Change Password
</a>
</div>
<div class="navi mt-2">
<a
class="btn btn-sm btn-light-primary font-weight-bolder py-2 px-5 block"
hx-get="/login/signout"
hx-indicator=".logoutloading"
style="width: 100%"
>
<span class="htmx-indicator spinner-border spinner-border-sm logoutloading" role="status" aria-hidden="true"></span>
Sign Out
</a>
<!--end::Separator-->
<!--begin::Notifications-->
<div>
<!--begin:Heading-->
<h5 class="mb-5">
Recent Notifications
</h5>
<!--end:Heading-->
<!--begin::Item-->
@NotificationCard()
<!--end::Item-->
</div>
<!--end::Notifications-->
</div>
<!--end::Content-->
</div>
@SidebarForm()
}
templ ProfileHeader(dataUser models.User) {
<div class="d-flex mt-5">
<div class="d-flex align-items-center mt-5">
<div class="symbol symbol-100 mr-5 p-2 bg-primary-transparent">
// <div class="symbol-label" style="background-image:url('/assets/media/users/300_21.jpg')"></div>
// <i class="symbol-badge bg-success"></i>
@@ -63,6 +54,9 @@ templ ProfileHeader(dataUser models.User) {
<div class="text-muted mt-1">
{ dataUser.UserPosition }
</div>
<div class="navi mt-2">
<a href="#" class="btn btn-sm btn-light-primary font-weight-bolder py-2 px-5">Sign Out</a>
</div>
</div>
</div>
}

View File

@@ -33,11 +33,15 @@ func Navbaruserprofile(dataUser models.User) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--end::Header--><!--begin::Separator--><div class=\"separator separator-dashed my-7\"></div><div class=\"navi mt-2\"><a class=\"btn btn-sm btn-light-primary font-weight-bolder py-2 px-5 block\" style=\"width: 100%\" data-toggle=\"modal\" data-target=\"#modal-ganti-pass\">Change Password\r</a></div><div class=\"navi mt-2\"><a class=\"btn btn-sm btn-light-primary font-weight-bolder py-2 px-5 block\" hx-get=\"/login/signout\" hx-indicator=\".logoutloading\" style=\"width: 100%\"><span class=\"htmx-indicator spinner-border spinner-border-sm logoutloading\" role=\"status\" aria-hidden=\"true\"></span> Sign Out\r</a></div></div><!--end::Content--></div>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--end::Header--><!--begin::Separator--><div class=\"separator separator-dashed my-7\"></div><!--end::Separator--><!--begin::Notifications--><div><!--begin:Heading--><h5 class=\"mb-5\">Recent Notifications\r</h5><!--end:Heading--><!--begin::Item-->")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = SidebarForm().Render(ctx, templ_7745c5c3_Buffer)
templ_7745c5c3_Err = NotificationCard().Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--end::Item--></div><!--end::Notifications--></div><!--end::Content--></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -61,14 +65,14 @@ func ProfileHeader(dataUser models.User) templ.Component {
templ_7745c5c3_Var2 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"d-flex mt-5\"><div class=\"symbol symbol-100 mr-5 p-2 bg-primary-transparent\"><span class=\"iconify symbol-label bg-primary-transparent text-primary\" data-icon=\"gravity-ui:person\"></span></div><div class=\"d-flex flex-column\"><a href=\"#\" class=\"font-weight-bold font-size-h5 text-dark-75 text-hover-primary\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"d-flex align-items-center mt-5\"><div class=\"symbol symbol-100 mr-5 p-2 bg-primary-transparent\"><span class=\"iconify symbol-label bg-primary-transparent text-primary\" data-icon=\"gravity-ui:person\"></span></div><div class=\"d-flex flex-column\"><a href=\"#\" class=\"font-weight-bold font-size-h5 text-dark-75 text-hover-primary\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(dataUser.UserFullName)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\sidebar_user_profile\sidebar_user_profile.templ`, Line: 61, Col: 27}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\sidebar_user_profile\sidebar_user_profile.templ`, Line: 52, Col: 27}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil {
@@ -81,13 +85,13 @@ func ProfileHeader(dataUser models.User) templ.Component {
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(dataUser.UserPosition)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\sidebar_user_profile\sidebar_user_profile.templ`, Line: 64, Col: 27}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\sidebar_user_profile\sidebar_user_profile.templ`, Line: 55, Col: 27}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div></div>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"navi mt-2\"><a href=\"#\" class=\"btn btn-sm btn-light-primary font-weight-bolder py-2 px-5\">Sign Out</a></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -10,11 +10,7 @@ templ TableV3(thName []string, thWidth []string, trComponent templ.Component) {
<thead>
<tr class="rounded-lg bg-header-table">
for i, item := range thName {
if item == "AKSI" {
<th scope="col" width={ thWidth[i] } class="text-center">{ item }</th>
} else {
<th scope="col" width={ thWidth[i] }>{ item }</th>
}
<th scope="col" width={ thWidth[i] }>{ item }</th>
}
</tr>
</thead>

View File

@@ -38,68 +38,35 @@ func TableV3(thName []string, thWidth []string, trComponent templ.Component) tem
return templ_7745c5c3_Err
}
for i, item := range thName {
if item == "AKSI" {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<th scope=\"col\" width=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(thWidth[i])
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\table\tablev3.templ`, Line: 14, Col: 42}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" class=\"text-center\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(item)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\table\tablev3.templ`, Line: 14, Col: 71}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</th>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<th scope=\"col\" width=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(thWidth[i])
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\table\tablev3.templ`, Line: 16, Col: 42}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(item)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\table\tablev3.templ`, Line: 16, Col: 51}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</th>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<th scope=\"col\" width=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(thWidth[i])
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\table\tablev3.templ`, Line: 13, Col: 41}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(item)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\table\tablev3.templ`, Line: 13, Col: 50}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</th>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</tr></thead> <tbody>")
@@ -134,9 +101,9 @@ func DivEmptyV3() templ.Component {
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var6 := templ.GetChildren(ctx)
if templ_7745c5c3_Var6 == nil {
templ_7745c5c3_Var6 = templ.NopComponent
templ_7745c5c3_Var4 := templ.GetChildren(ctx)
if templ_7745c5c3_Var4 == nil {
templ_7745c5c3_Var4 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div></div>")

View File

@@ -41,7 +41,7 @@ templ CustomToastV2Show(title string, message string, typeToast string) {
aria-atomic="true"
id="notification-001"
hx-swap-oob="true"
hx-get="/home/hidetoast"
hx-get="/dev/hidetoast"
hx-trigger="load delay:3s"
hx-target="this"
style="border-radius: 8px 8px 8px 8px;"

View File

@@ -56,7 +56,7 @@ func CustomToastV2Show(title string, message string, typeToast string) templ.Com
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"toast toast-top-right fade show\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" id=\"notification-001\" hx-swap-oob=\"true\" hx-get=\"/home/hidetoast\" hx-trigger=\"load delay:3s\" hx-target=\"this\" style=\"border-radius: 8px 8px 8px 8px;\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"toast toast-top-right fade show\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" id=\"notification-001\" hx-swap-oob=\"true\" hx-get=\"/dev/hidetoast\" hx-trigger=\"load delay:3s\" hx-target=\"this\" style=\"border-radius: 8px 8px 8px 8px;\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

2
go.mod
View File

@@ -7,7 +7,6 @@ require (
github.com/fsnotify/fsnotify v1.7.0
github.com/glebarez/go-sqlite v1.22.0
github.com/go-sql-driver/mysql v1.8.1
github.com/golang-jwt/jwt/v5 v5.0.0
github.com/jmoiron/sqlx v1.4.0
github.com/labstack/echo/v4 v4.12.0
github.com/spf13/viper v1.18.2
@@ -37,7 +36,6 @@ require (
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
github.com/google/uuid v1.5.0 // indirect
github.com/labstack/echo-jwt/v4 v4.2.0
github.com/labstack/gommon v0.4.2
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect

4
go.sum
View File

@@ -18,8 +18,6 @@ github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpv
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE=
github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ=
@@ -34,8 +32,6 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/labstack/echo-jwt/v4 v4.2.0 h1:odSISV9JgcSCuhgQSV/6Io3i7nUmfM/QkBeR5GVJj5c=
github.com/labstack/echo-jwt/v4 v4.2.0/go.mod h1:MA2RqdXdEn4/uEglx0HcUOgQSyBaTh5JcaHIan3biwU=
github.com/labstack/echo/v4 v4.12.0 h1:IKpw49IMryVB2p1a4dzwlhP1O2Tf2E0Ir/450lH+kI0=
github.com/labstack/echo/v4 v4.12.0/go.mod h1:UP9Cr2DJXbOK3Kr9ONYzNowSh7HP0aG0ShAyycHSJvM=
github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=

View File

@@ -1,156 +0,0 @@
package corporate_handlers
import (
sidebaruserprofile "cpone/component/sidebar_user_profile"
customtoastv2 "cpone/component/toastbootstrap"
"cpone/models"
"cpone/utils"
"net/http"
"strings"
"time"
"github.com/a-h/templ"
"github.com/golang-jwt/jwt/v5"
"github.com/labstack/echo/v4"
)
type AccountService interface {
ChangePasswordPIC(host string, token string, currPassword string, newPassword string) (models.ResponseStatus, error)
ChangePasswordPAT(token string, currPassword string, newPassword string) (models.ResponseStatus, error)
}
func NewAccountHandler(as AccountService) *AccountHandler {
return &AccountHandler{
AccountService: as,
}
}
type AccountHandler struct {
AccountService AccountService
}
func (as *AccountHandler) HandleChangePassword(c echo.Context) error {
var response models.ResponseStatus
userToken := c.Get("user").(*jwt.Token)
token := userToken.Raw
claims := userToken.Claims.(jwt.MapClaims)
userGroup := claims["M_UserGroupDashboard"].(string)
h := c.Request().Host
old_pass := c.FormValue("oldpassid")
new_pass := c.FormValue("newpassid")
re_new_pass := c.FormValue("renewpassid")
// logger.Info("params", zap.Any("old", old_pass), zap.Any("new", new_pass), zap.Any("re-new", re_new_pass))
old_validation := ""
new_validation := ""
renew_validation := ""
errorPop := ""
if strings.TrimSpace(old_pass) == "" {
old_validation = "Tidak boleh kosong"
errorPop = "Tidak boleh kosong"
}
if strings.TrimSpace(new_pass) == "" {
new_validation = "Tidak boleh kosong"
errorPop = "Tidak boleh kosong"
}
if strings.TrimSpace(re_new_pass) == "" {
renew_validation = "Tidak boleh kosong"
errorPop = "Tidak boleh kosong"
}
if strings.TrimSpace(new_pass) != strings.TrimSpace(re_new_pass) {
new_validation = "Password tidak sama"
renew_validation = "Password tidak sama"
errorPop = "Password tidak sama"
}
if old_validation != "" || new_validation != "" || renew_validation != "" {
newBody := sidebaruserprofile.RetModalGantiPassword(
models.CustomTextFieldv2Prm{
ID: "oldPassID",
Name: "oldpassid",
Type: "password",
Placeholder: "Masukan password lama",
Label: "Password Lama",
ErrorMsg: old_validation,
},
models.CustomTextFieldv2Prm{
ID: "newPassID",
Name: "newpassid",
Type: "password",
Placeholder: "Masukan password baru",
Label: "Password Baru",
ErrorMsg: new_validation,
},
models.CustomTextFieldv2Prm{
ID: "reNewPassID",
Name: "renewpassid",
Type: "password",
Placeholder: "Masukan ulang password baru",
Label: "Ulangi Password Baru",
ErrorMsg: renew_validation,
},
sidebaruserprofile.JSHideModal(""),
)
toast := customtoastv2.CustomToastV2Show("Warning", errorPop, "warning")
return utils.ViewMulti(c, []templ.Component{toast, newBody})
}
if userGroup == "pic" {
resp, err := as.AccountService.ChangePasswordPIC(h, token, old_pass, new_pass)
if err != nil {
newBody := sidebaruserprofile.ModalGantiPassword()
toast := customtoastv2.CustomToastV2Show("Warning", err.Error(), "warning")
return utils.ViewMulti(c, []templ.Component{toast, newBody})
}
response = resp
}
if userGroup == "patient" {
resp, err := as.AccountService.ChangePasswordPAT(token, old_pass, new_pass)
if err != nil {
newBody := sidebaruserprofile.ModalGantiPassword()
toast := customtoastv2.CustomToastV2Show("Warning", "Error ganti password pat", "warning")
return utils.ViewMulti(c, []templ.Component{toast, newBody})
}
response = resp
}
if response.Status == "ERR" {
newBody := sidebaruserprofile.ModalGantiPassword()
toast := customtoastv2.CustomToastV2Show("Warning", response.Message, "warning")
return utils.ViewMulti(c, []templ.Component{toast, newBody})
}
expire := time.Now().Add(-7 * 24 * time.Hour)
cookie := new(http.Cookie)
cookie.Name = "token"
cookie.Value = ""
cookie.Path = "/"
cookie.Expires = expire
cookie.HttpOnly = true
c.SetCookie(cookie)
ret := `
<script>
$("#body-ganti-pass").modal('hide')
console.log("signout")
localStorage.removeItem("token")
localStorage.removeItem("user")
setTimeout(() => {
window.location.replace("/login");
}, 200)
</script>
`
c.Response().Header().Set("HX-Trigger", "script")
return c.String(http.StatusOK, ret)
}
func (as *AccountHandler) HandleCloseChangePassword(c echo.Context) error {
newBody := sidebaruserprofile.ModalGantiPassword()
return utils.View(c, newBody)
}

View File

@@ -1,217 +0,0 @@
package corporate_handlers
import (
breadcrumadmin "cpone/component/breadcrumbadmin"
navbarmenu "cpone/component/navbar"
"cpone/component/pagination"
sidebaruserprofile "cpone/component/sidebar_user_profile"
"cpone/models"
"cpone/utils"
corporate_dashboardpic "cpone/views/corporate/dashboardpic"
"net/http"
"strconv"
"github.com/a-h/templ"
"github.com/golang-jwt/jwt/v5"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type DashboardPicServices interface {
GetEmployeeAnalyticBreadcrumb(title string) (models.BreadCrumbV1, error)
GetCorporateName(userID string) (string, error)
DummyDataTest() ([]models.DashboardPic, error)
ListingDashboardPic(email string, search string, startdate string, enddate string, currentpage int, rowperpage int) ([]models.DashboardPic, int, error)
}
type DashboardPicHandler struct {
DashboardPicServices DashboardPicServices
}
func NewDashboardPicHandler(ea DashboardPicServices) *DashboardPicHandler {
return &DashboardPicHandler{
DashboardPicServices: ea,
}
}
func (ea *DashboardPicHandler) HandleShowEmployeeAnalyticScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
listID := utils.GenerateRandomID("listid")
paginationID := utils.GenerateRandomID("paginationid")
userCok := c.Get("user").(*jwt.Token)
claims := userCok.Claims.(jwt.MapClaims)
userID := claims["M_UserID"].(string)
name := claims["M_StaffName"].(string)
position := claims["M_UserGroupDashboard"].(string)
email := claims["M_UserEmail"].(string)
title, err := ea.DashboardPicServices.GetCorporateName(userID)
if err != nil {
defer logger.Sync()
logger.Info("error get corporate name", zap.Any("error", err))
return err
}
convr, _ := strconv.Atoi(userID)
user := models.User{
UserID: convr,
Username: name,
UserFullName: name,
UserPosition: position,
}
dataBreadcrumb, err := ea.DashboardPicServices.GetEmployeeAnalyticBreadcrumb(title)
if err != nil {
defer logger.Sync()
logger.Info("Error breadcrumb dev", zap.Any("error", err))
return err
}
defer logger.Sync()
navbaruser := navbarmenu.NavbarWithLogo(user)
sidbaruser := sidebaruserprofile.Navbaruserprofile(user)
breadcrumb := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadcrumb)
listingData, totalPage, err := ea.DashboardPicServices.ListingDashboardPic(email, "", "", "", 1, 10)
if err != nil {
defer logger.Sync()
logger.Info("Error get listing data", zap.Any("error", err), zap.Any("total", totalPage))
return err
}
listingcomponent := corporate_dashboardpic.ListingData(listingData, listID)
paginationcomponent := pagination.PaginationV3(
totalPage,
1,
"/corp/dashboard_pic/changepage",
paginationID,
"#listID, #paginationID, #searchID, #startdateID, #enddateID",
"#"+paginationID,
"outerHTML", "", "",
corporate_dashboardpic.BeforeRequestContent(),
corporate_dashboardpic.AfterRequestContent(),
)
filtercomponent := corporate_dashboardpic.FilterListing(
"/corp/dashboard_pic/filter",
"input changed delay:500ms",
"#searchID, #startdateID, #enddateID, #listID, #paginationID",
"outerHTML",
"#"+paginationID,
corporate_dashboardpic.BeforeRequestContent(),
corporate_dashboardpic.AfterRequestContent(),
)
content := corporate_dashboardpic.DashboardPic(
listID,
paginationID,
breadcrumb,
filtercomponent,
listingcomponent,
paginationcomponent,
)
css := corporate_dashboardpic.CSSDashboardPIC()
js := corporate_dashboardpic.JSDashboardPIC()
view := corporate_dashboardpic.ShowDashboardPic(title, content, css, js, navbaruser, sidbaruser)
return utils.View(c, view)
}
func (ea *DashboardPicHandler) HandlePagination(c echo.Context) error {
pageparam := c.QueryParam("page")
listID := c.QueryParam("listID")
paginationID := c.QueryParam("paginationID")
search := c.QueryParam("search")
startdate := c.QueryParam("startdate")
enddate := c.QueryParam("enddate")
userCok := c.Get("user").(*jwt.Token)
claims := userCok.Claims.(jwt.MapClaims)
email := claims["M_UserEmail"].(string)
var retVal []templ.Component
logger, _ := zap.NewProduction()
page, err := strconv.Atoi(pageparam)
if err != nil {
defer logger.Sync()
logger.Info("Error convert page param")
return err
}
listdata, totalPage, err := ea.DashboardPicServices.ListingDashboardPic(email, search, startdate, enddate, page, 10)
if err != nil {
defer logger.Sync()
logger.Info("Error convert page param")
return err
}
listcomponent := corporate_dashboardpic.ListingData(listdata, listID)
paginationcomponent := pagination.PaginationV3(
totalPage,
page,
"/corp/dashboard_pic/changepage",
paginationID,
"#listID, #paginationID, #searchID, #startdateID, #enddateID",
"#"+paginationID,
"outerHTML", "", "",
corporate_dashboardpic.BeforeRequestContent(),
corporate_dashboardpic.AfterRequestContent(),
)
retVal = append(retVal, listcomponent)
retVal = append(retVal, paginationcomponent)
return utils.ViewMulti(c, retVal)
}
func (ea *DashboardPicHandler) HandleFilter(c echo.Context) error {
logger, _ := zap.NewProduction()
search := c.QueryParam("search")
startdate := c.QueryParam("startdate")
enddate := c.QueryParam("enddate")
listID := c.QueryParam("listID")
paginationID := c.QueryParam("paginationID")
userCok := c.Get("user").(*jwt.Token)
claims := userCok.Claims.(jwt.MapClaims)
email := claims["M_UserEmail"].(string)
dataList, totalPage, err := ea.DashboardPicServices.ListingDashboardPic(email, search, startdate, enddate, 1, 10)
if err != nil {
defer logger.Sync()
logger.Info("Error Get Listing Data", zap.Any("error", err))
return err
}
listcomponent := corporate_dashboardpic.ListingData(dataList, listID)
paginationcomponent := pagination.PaginationV3(
totalPage, 1,
"/corp/dashboard_pic/changepage",
paginationID,
"#listID, #paginationID, #searchID, #startdateID, #enddateID",
"#"+paginationID, "outerHTML", "", "",
corporate_dashboardpic.BeforeRequestContent(),
corporate_dashboardpic.AfterRequestContent(),
)
var retval []templ.Component
retval = append(retval, listcomponent)
retval = append(retval, paginationcomponent)
return utils.ViewMulti(c, retval)
}
func (ea *DashboardPicHandler) HandleToDetail(c echo.Context) error {
logger, _ := zap.NewProduction()
id := c.Param("id")
logger.Info("params", zap.Any("id", id))
url := "/corp/dashboard_pic/detail/" + id
c.Response().Header().Set("HX-Redirect", url)
return c.String(http.StatusOK, url)
}

View File

@@ -1,89 +0,0 @@
package corporate_handlers
import (
breadcrumadmin "cpone/component/breadcrumbadmin"
navbarmenu "cpone/component/navbar"
sidebaruserprofile "cpone/component/sidebar_user_profile"
"cpone/models"
"cpone/utils"
corporate_mcudetail "cpone/views/corporate/mcu"
corporate_kesimpulan "cpone/views/corporate/mcu/mcutab/kesimpulan"
"github.com/golang-jwt/jwt/v5"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type McuDetailServices interface {
GetBreadcrumb(id string) (models.BreadCrumbV1, error)
GetTabNameList(id string) ([]models.McuTabModels, error)
}
type McuDetailHandler struct {
McuDetailServices McuDetailServices
}
func NewMcuDetailHandler(mcud McuDetailServices) *McuDetailHandler {
return &McuDetailHandler{
McuDetailServices: mcud,
}
}
func (mcud *McuDetailHandler) HandlerShowMcuDetailScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
id := c.Param("id")
logger.Info("params", zap.Any("id", id))
userCok := c.Get("user").(*jwt.Token)
claims := userCok.Claims.(jwt.MapClaims)
name := claims["M_StaffName"].(string)
position := claims["M_UserGroupDashboard"].(string)
// logger.Info("jwt", zap.Any("name", name))
user := models.User{
UserID: 1,
Username: name,
UserFullName: name,
UserPosition: position,
}
dataBreadcrumb, err := mcud.McuDetailServices.GetBreadcrumb(id)
if err != nil {
defer logger.Sync()
logger.Info("Error breadcrumb corp", zap.Any("error", err))
return err
}
breadcrumb := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadcrumb)
navbaruser := navbarmenu.NavbarWithLogo(user)
sidbaruser := sidebaruserprofile.Navbaruserprofile(user)
// test := []models.McuTabModels{}
// tabname, err := mcud.McuDetailServices.GetTabNameList(id)
// if err != nil {
// return err
// }
// logger.Info("List tab name", zap.Any("tav", tabname))
content := corporate_mcudetail.McuDetailScreen(
breadcrumb,
corporate_mcudetail.TabViewMcuDetail(id),
// corporate_mcudetail.McuDetailTabView(id, tabname),
)
css := corporate_mcudetail.CSSMcuDetail(
corporate_kesimpulan.CSSKesimpulan(),
)
js := corporate_mcudetail.JSMcuDetail()
view := corporate_mcudetail.ShowMcuDetail(
dataBreadcrumb.Title,
content,
css,
js,
navbaruser,
sidbaruser,
)
return utils.View(c, view)
}

View File

@@ -1,748 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/component/pagination"
customtoastv2 "cpone/component/toastbootstrap"
"cpone/models"
"cpone/utils"
corporate_daftarpeserta "cpone/views/corporate/mcu/mcutab/daftarpeserta"
"strconv"
"strings"
"github.com/a-h/templ"
"github.com/golang-jwt/jwt/v5"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type TabDaftarPesertaServices interface {
SearchDaftarPesertaMCU(mcuID string, keyword string, page int, perPage int) ([]models.ModelMcuDaftarPeserta, int, error)
GenerataPasswordMCU(mgmMCUID string, host string) (models.GeneratePasswordResponse, error)
GetAkunPeserta(patientID string) (models.AuthPatient, error)
GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error)
GetListReportPesertaV5(orderheaderID string, mcuid string, staffname string) ([]models.TabViewReportMcu, error)
ResetPasswordPeserta(token string, newPassword string, email string, authuserid string) (models.ResponseStatus, error)
DetailTestdanPaket(orderheaderID string) ([]models.TableTestPaket, error)
GetListAttachmentFile(orderheaderID string) ([]models.AttachmentFIle, error)
}
type TabDaftarPesertaHandlers struct {
TabDaftarPesertaServices TabDaftarPesertaServices
}
func NewTabDaftarPesertaHandlers(tdp TabDaftarPesertaServices) *TabDaftarPesertaHandlers {
return &TabDaftarPesertaHandlers{TabDaftarPesertaServices: tdp}
}
func (tdp *TabDaftarPesertaHandlers) HandleShowTabDaftarPeserta(c echo.Context) error {
logger, _ := zap.NewProduction()
table_id := utils.GenerateRandomID("table-id")
pagination_id := utils.GenerateRandomID("pagination-id")
dialog_rpt_id := utils.GenerateRandomID("dialog-rpt-id")
dialog_rptbody_id := utils.GenerateRandomID("dialog-rptbody-id")
dialog_akun_id := utils.GenerateRandomID("dialog-akun-id")
dialog_akunbody_id := utils.GenerateRandomID("dialog-akunbody-id")
dialog_password_id := utils.GenerateRandomID("dialog-password-id")
dialog_passbody_id := utils.GenerateRandomID("dialog-passbody-id")
dialog_attach_id := utils.GenerateRandomID("dialog-attach-id")
dialog_attachbody_id := utils.GenerateRandomID("dialog-attachbody-id")
dialog_paket_id := utils.GenerateRandomID("dialog-paket-id")
dialog_paketbody_id := utils.GenerateRandomID("dialog-paketbody-id")
id := c.Param("id")
logger.Info("mgm_mcu", zap.Any("id", id))
data_peserta, total_peserta, err := tdp.TabDaftarPesertaServices.SearchDaftarPesertaMCU(id, "", 1, 10)
if err != nil {
return err
}
hxinclude := "#search-daftar-peserta, #table-id, #pagination-id, #dialog-rpt-id, #dialog-rptbody-id, #dialog-akun-id, #dialog-akunbody-id, #dialog-password-id, #dialog-passbody-id, #dialog-attach-id, #dialog-attachbody-id, #dialog-paket-id, #dialog-paketbody-id"
table := corporate_daftarpeserta.Table_DaftarPeserta(
data_peserta, table_id,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openreport",
"#"+dialog_rptbody_id, hxinclude, "outerHTML",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/opendetail",
"#"+dialog_paketbody_id, hxinclude, "outerHTML",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openviewakun",
"#"+dialog_akunbody_id, hxinclude, "outerHTML",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openattachment",
"#"+dialog_attachbody_id, hxinclude, "outerHTML",
)
page := pagination.PaginationV3(
total_peserta, 1, "/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/changepage", pagination_id,
"#search-daftar-peserta, #loading-parent, #loading-child, #loading-spinner, #loadingcontent"+hxinclude,
"#content-dp", "outerHTML", "", "", corporate_daftarpeserta.BeforeRequestContent(), corporate_daftarpeserta.AfterRequestContent(),
)
dp_layout := corporate_daftarpeserta.Content(table, page)
filtercomp := corporate_daftarpeserta.Filter_DaftarPeserta(
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/filter",
"#content-dp",
"#search-daftar-peserta, #loading-parent, #loading-child, #loading-spinner, #loadingcontent"+hxinclude,
"outerHTML", "input changed delay:500ms", corporate_daftarpeserta.BeforeRequestContent(), corporate_daftarpeserta.AfterRequestContent(),
)
// dialog rpt peserta
l_rpt := []models.TabViewReportMcu{}
t_rpt := corporate_daftarpeserta.Tab_RPT(l_rpt)
body_rpt := corporate_daftarpeserta.Body_RPT(dialog_rptbody_id, t_rpt, corporate_daftarpeserta.JSShowModal(""))
close_rpt := corporate_daftarpeserta.Close_Modal("#" + dialog_rpt_id)
aksi_rpt := corporate_daftarpeserta.Aksi_Modal("", "", "", "", true)
dialog_rpt := corporate_daftarpeserta.Dialog_DaftarPeserta(
"rptform", "xl",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/dialogreport",
"#"+dialog_rptbody_id, "outerHTML", hxinclude, dialog_rpt_id,
"Daftar RPT", body_rpt, close_rpt, aksi_rpt,
)
// dialog generate password peserta
text := "Apakah anda yakin untuk me-generate password untuk seluruh peserta"
body_genpass := corporate_daftarpeserta.Body_GenPass(dialog_passbody_id, text, corporate_daftarpeserta.JSShowModal(""))
close_genpass := corporate_daftarpeserta.Close_Modal("#" + dialog_password_id)
aksi_genpass := corporate_daftarpeserta.Aksi_Modal(
"#"+dialog_password_id,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/closegenpass",
"#"+dialog_passbody_id, "outerHTML", false,
)
dialog_genpass := corporate_daftarpeserta.Dialog_DaftarPeserta(
"genpassform", "",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/dialoggenpass",
"#"+dialog_passbody_id, "outerHTML", hxinclude,
dialog_password_id, "Generate Passsword Akun Peserta",
body_genpass, close_genpass, aksi_genpass,
)
// dialog reset akun peserta
body_acc := corporate_daftarpeserta.Body_Account(
dialog_akunbody_id,
models.CustomTextFieldv2Prm{
Label: "ID Akun Peserta",
Name: "akunpesertaid",
Type: "hidden",
ID: "akunpesertaidid",
},
models.CustomTextFieldv2Prm{
Label: "Email",
Name: "akunpesertaemail",
Type: "text",
ID: "akunpesertaemailid",
},
models.CustomTextFieldv2Prm{
Label: "Password baru",
Name: "akunpesertapassnew",
Type: "password",
ID: "akunpesertapassnewid",
},
models.CustomTextFieldv2Prm{
Label: "Ulangi password baru",
Name: "akunpesertapasscek",
Type: "password",
ID: "akunpesertapasscekid",
},
corporate_daftarpeserta.JSShowModal(""),
)
close_acc := corporate_daftarpeserta.Close_Modal("#" + dialog_akun_id)
aksi_acc := corporate_daftarpeserta.Aksi_Modal(
"#"+dialog_akun_id,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/closeviewakun",
"#"+dialog_akunbody_id, "outerHTML", false,
)
dialog_acc := corporate_daftarpeserta.Dialog_DaftarPeserta(
"akunform", "",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/viewakun",
"#"+dialog_akunbody_id, "outerHTML", hxinclude,
dialog_akun_id, "Reset Password Akun Peserta", body_acc, close_acc, aksi_acc,
)
// dialog detail paket dan test peserta
l_detail, err := tdp.TabDaftarPesertaServices.DetailTestdanPaket("")
if err != nil {
return err
}
t_detail := corporate_daftarpeserta.Table_DetailPaket(l_detail)
body_paket := corporate_daftarpeserta.Body_Detail(dialog_paketbody_id, t_detail, corporate_daftarpeserta.JSShowModal(""))
close_paket := corporate_daftarpeserta.Close_Modal("#" + dialog_paket_id)
aksi_paket := corporate_daftarpeserta.Aksi_Modal(
"#"+dialog_paket_id,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/closedetail",
"#"+dialog_paketbody_id, "outerHTML", true,
)
dialog_paket := corporate_daftarpeserta.Dialog_DaftarPeserta(
"detailpaketform", "xl",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/dialogdetail",
"#"+dialog_paketbody_id, "outerHTML", hxinclude,
dialog_paket_id, "Detail Pemeriksaan", body_paket, close_paket, aksi_paket,
)
// dialog file attachment peserta
l_file, err := tdp.TabDaftarPesertaServices.GetListAttachmentFile("")
if err != nil {
return err
}
t_file := corporate_daftarpeserta.Tab_Attachment(l_file)
body_file := corporate_daftarpeserta.Body_Attachment(dialog_attachbody_id, t_file, corporate_daftarpeserta.JSShowModal(""))
close_file := corporate_daftarpeserta.Close_Modal("#" + dialog_attach_id)
aksi_file := corporate_daftarpeserta.Aksi_Modal(
"#"+dialog_attach_id,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/closeattachment",
"#"+dialog_attachbody_id, "outerHTML", true,
)
dialog_file := corporate_daftarpeserta.Dialog_DaftarPeserta(
"attachmentform", "xl",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/dialogattachment",
"#"+dialog_attachbody_id, "outerHTML", hxinclude,
dialog_attach_id, "Detail Attachment", body_file, close_file, aksi_file,
)
tabdaftarpeserta := corporate_daftarpeserta.DaftarPesertaScreen(
table_id,
pagination_id,
dialog_rpt_id,
dialog_rptbody_id,
dialog_rpt,
dialog_akun_id,
dialog_akunbody_id,
dialog_acc,
dialog_password_id,
dialog_passbody_id,
dialog_genpass,
dialog_paket_id,
dialog_paketbody_id,
dialog_paket,
dialog_attach_id,
dialog_attachbody_id,
dialog_file,
dp_layout,
filtercomp,
)
return utils.View(c, tabdaftarpeserta)
}
func (tdp *TabDaftarPesertaHandlers) HandlePagination(c echo.Context) error {
pageparam := c.QueryParam("page")
table_id := c.QueryParam("table-id")
pagination_id := c.QueryParam("pagination-id")
keyword := c.QueryParam("searchdp")
mcu_id := c.Param("id")
dialog_rptbody_id := c.QueryParam("dialog-rptbody-id")
dialog_paketbody_id := c.QueryParam("dialog-paketbody-id")
dialog_akunbody_id := c.QueryParam("dialog-akunbody-id")
dialog_attachbody_id := c.QueryParam("dialog-attachbody-id")
page, err := strconv.Atoi(pageparam)
if err != nil {
return err
}
peserta, total, err := tdp.TabDaftarPesertaServices.SearchDaftarPesertaMCU(mcu_id, keyword, page, 10)
if err != nil {
return err
}
hxinclude := "#search-daftar-peserta, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #table-id, #pagination-id, #dialog-rpt-id, #dialog-rptbody-id, #dialog-akun-id, #dialog-akunbody-id, #dialog-password-id, #dialog-passbody-id, #dialog-attach-id, #dialog-attachbody-id, #dialog-paket-id, #dialog-paketbody-id"
table := corporate_daftarpeserta.Table_DaftarPeserta(
peserta, table_id,
"/corp/dashboard_pic/detail/"+mcu_id+"/tabdaftarpeserta/openreport",
"#"+dialog_rptbody_id, hxinclude, "outerHTML",
"/corp/dashboard_pic/detail/"+mcu_id+"/tabdaftarpeserta/opendetail",
"#"+dialog_paketbody_id, hxinclude, "outerHTML",
"/corp/dashboard_pic/detail/"+mcu_id+"/tabdaftarpeserta/openviewakun",
"#"+dialog_akunbody_id, hxinclude, "outerHTML",
"/corp/dashboard_pic/detail/"+mcu_id+"/tabdaftarpeserta/openattachment",
"#"+dialog_attachbody_id, hxinclude, "outerHTML",
)
paginat := pagination.PaginationV3(
total, page, "/corp/dashboard_pic/detail/"+mcu_id+"/tabdaftarpeserta/changepage", pagination_id,
hxinclude, "#content-dp", "outerHTML", "", "", corporate_daftarpeserta.BeforeRequestContent(), corporate_daftarpeserta.AfterRequestContent(),
)
layout := corporate_daftarpeserta.Content(table, paginat)
return utils.View(c, layout)
}
func (tdp *TabDaftarPesertaHandlers) HandleFilter(c echo.Context) error {
keyword := c.QueryParam("searchdp")
mcuid := c.Param("id")
table_id := c.QueryParam("table-id")
paginat_id := c.QueryParam("pagination-id")
dialog_rptbody_id := c.QueryParam("dialog-rptbody-id")
dialog_paketbody_id := c.QueryParam("dialog-paketbody-id")
dialog_akunbody_id := c.QueryParam("dialog-akunbody-id")
dialog_attachbody_id := c.QueryParam("dialog-attachbody-id")
peserta, total, err := tdp.TabDaftarPesertaServices.SearchDaftarPesertaMCU(mcuid, keyword, 1, 10)
if err != nil {
return err
}
hxinclude := "#search-daftar-peserta, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #table-id, #pagination-id, #dialog-rpt-id, #dialog-rptbody-id, #dialog-akun-id, #dialog-akunbody-id, #dialog-password-id, #dialog-passbody-id, #dialog-attach-id, #dialog-attachbody-id, #dialog-paket-id, #dialog-paketbody-id"
table := corporate_daftarpeserta.Table_DaftarPeserta(
peserta, table_id,
"/corp/dashboard_pic/detail/"+mcuid+"/tabdaftarpeserta/openreport",
"#"+dialog_rptbody_id, hxinclude, "outerHTML",
"/corp/dashboard_pic/detail/"+mcuid+"/tabdaftarpeserta/opendetail",
"#"+dialog_paketbody_id, hxinclude, "outerHTML",
"/corp/dashboard_pic/detail/"+mcuid+"/tabdaftarpeserta/openviewakun",
"#"+dialog_akunbody_id, hxinclude, "outerHTML",
"/corp/dashboard_pic/detail/"+mcuid+"/tabdaftarpeserta/openattachment",
"#"+dialog_attachbody_id, hxinclude, "outerHTML",
)
paginat := pagination.PaginationV3(
total, 1, "/corp/dashboard_pic/detail/"+mcuid+"/tabdaftarpeserta/changepage", paginat_id,
hxinclude, "#content-dp", "outerHTML", "", "", corporate_daftarpeserta.BeforeRequestContent(), corporate_daftarpeserta.AfterRequestContent(),
)
content := corporate_daftarpeserta.Content(table, paginat)
return utils.View(c, content)
}
func (tdp *TabDaftarPesertaHandlers) HandleOpenReportDialog(c echo.Context) error {
logger, _ := zap.NewProduction()
user_token := c.Get("user").(*jwt.Token)
claims := user_token.Claims.(jwt.MapClaims)
staffname := claims["M_StaffName"].(string)
mcuid := c.Param("id")
orderheaderid := c.QueryParam("idx")
dialog_rpt_id := c.QueryParam("dialog-rpt-id")
dialog_rptbody_id := c.QueryParam("dialog-rptbody-id")
logger.Info("show rpt by: ", zap.Any("orderheaderid", orderheaderid))
// rpt_dialog, err := tdp.TabDaftarPesertaServices.GetListReportPesertaV4(orderheaderid, staffname)
rpt_dialog, err := tdp.TabDaftarPesertaServices.GetListReportPesertaV5(orderheaderid, mcuid, staffname)
if err != nil {
logger.Error("Error get rpt", zap.Any("error: ", err))
tab := corporate_daftarpeserta.Tab_RPT([]models.TabViewReportMcu{})
mod := corporate_daftarpeserta.Body_RPT(dialog_rptbody_id, tab, corporate_daftarpeserta.JSShowModal("#"+dialog_rpt_id))
return utils.View(c, mod)
}
comp := corporate_daftarpeserta.Tab_RPT(rpt_dialog)
body := corporate_daftarpeserta.Body_RPT(dialog_rptbody_id, comp, corporate_daftarpeserta.JSShowModal("#"+dialog_rpt_id))
return utils.View(c, body)
}
func (tdp *TabDaftarPesertaHandlers) HandleDialogGenPass(c echo.Context) error {
id := c.Param("id")
dialog_rpt_id := c.QueryParam("dialog-rpt-id")
dialog_rptbody_id := c.QueryParam("dialog-rptbody-id")
dialog_paket_id := c.QueryParam("dialog-paket-id")
dialog_paketbody_id := c.QueryParam("dialog-paketbody-id")
dialog_akun_id := c.QueryParam("dialog-akun-id")
dialog_akunbody_id := c.QueryParam("dialog-akunbody-id")
dialog_attach_id := c.QueryParam("dialog-attach-id")
dialog_attachbody_id := c.QueryParam("dialog-attachbody-id")
dialog_password_id := c.FormValue("dialog-password-id")
dialog_passbody_id := c.FormValue("dialog-passbody-id")
table_id := c.FormValue("table-id")
paginat_id := c.FormValue("pagination-id")
pageparam := c.FormValue("currpage" + paginat_id)
msg := "Apakah anda yakin untuk me-generate password untuk seluruh peserta"
resp, err := tdp.TabDaftarPesertaServices.GenerataPasswordMCU(id, "")
if err != nil {
body_pass := corporate_daftarpeserta.Body_GenPass(dialog_passbody_id, msg, corporate_daftarpeserta.JSShowModal(""))
toast := customtoastv2.CustomToastV2Show("Warning", "Gagal generate password peserta", "warning")
ret := []templ.Component{toast, body_pass}
return utils.ViewMulti(c, ret)
}
if resp.Status != "OK" {
body_pass := corporate_daftarpeserta.Body_GenPass(dialog_passbody_id, msg, corporate_daftarpeserta.JSShowModal(""))
toast := customtoastv2.CustomToastV2Show("Warning", "Gagal generate password peserta", "warning")
ret := []templ.Component{toast, body_pass}
return utils.ViewMulti(c, ret)
}
aa := "/corp/dashboard_pic/detail/" + id + "/tabdaftarpeserta/reload?page=" + pageparam
bb := "&table-id=" + table_id
cc := "&pagination-id=" + paginat_id
dd := "&dialog-rpt-id=" + dialog_rpt_id
ee := "&dialog-rptbody-id=" + dialog_rptbody_id
ff := "&dialog-password-id=" + dialog_password_id
gg := "&dialog-passbody-id=" + dialog_passbody_id
hh := "&dialog-akun-id=" + dialog_akun_id
ii := "&dialog-akunbody-id=" + dialog_akunbody_id
jj := "&dialog-attach-id=" + dialog_attach_id + "&dialog-attachbody-id=" + dialog_attachbody_id
kk := "&dialog-paket-id=" + dialog_paket_id + "&dialog-paketbody-id" + dialog_paketbody_id
ll := "&currpage" + paginat_id + "=" + pageparam
link := aa + bb + cc + dd + ee + ff + gg + hh + ii + jj + kk + ll
body_pass := corporate_daftarpeserta.Body_GenPass(dialog_passbody_id, msg, corporate_daftarpeserta.JSGenPassReload("#"+dialog_password_id, link))
msg = "Success generate password.\n" + resp.Message + " password, telah dikirim melalui email peserta"
toastt := customtoastv2.CustomToastV2Show("Success", msg, "success")
ret := []templ.Component{toastt, body_pass}
return utils.ViewMulti(c, ret)
}
func (tdp *TabDaftarPesertaHandlers) HandleCloseDialogGenPass(c echo.Context) error {
dialog_password_id := c.FormValue("dialog-password-id")
dialog_passbody_id := c.FormValue("dialog-passbody-id")
msg := "Apakah anda yakin untuk me-generate password untuk seluruh peserta"
body_pass := corporate_daftarpeserta.Body_GenPass(dialog_passbody_id, msg, corporate_daftarpeserta.JSHideModal("#"+dialog_password_id))
return utils.View(c, body_pass)
}
func (tdp *TabDaftarPesertaHandlers) HandleContentReload(c echo.Context) error {
id := c.Param("id")
keyword := c.FormValue("searchdp")
dialog_rptbody_id := c.QueryParam("dialog-rptbody-id")
dialog_paketbody_id := c.QueryParam("dialog-paketbody-id")
dialog_akunbody_id := c.QueryParam("dialog-akunbody-id")
dialog_attachbody_id := c.QueryParam("dialog-attachbody-id")
table_id := c.FormValue("table-id")
pagination_id := c.FormValue("pagination-id")
pageparam := c.FormValue("currpage" + pagination_id)
currpage, err := strconv.Atoi(pageparam)
if err != nil {
return err
}
peserta, total, err := tdp.TabDaftarPesertaServices.SearchDaftarPesertaMCU(id, keyword, currpage, 10)
if err != nil {
return err
}
hxinclude := "#search-daftar-peserta, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #table-id, #pagination-id, #dialog-rpt-id, #dialog-rptbody-id, #dialog-akun-id, #dialog-akunbody-id, #dialog-password-id, #dialog-passbody-id, #dialog-attach-id, #dialog-attachbody-id, #dialog-paket-id, #dialog-paketbody-id"
table := corporate_daftarpeserta.Table_DaftarPeserta(
peserta, table_id,
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openreport",
"#"+dialog_rptbody_id, hxinclude, "outerHTML",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/opendetail",
"#"+dialog_paketbody_id, hxinclude, "outerHTML",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openviewakun",
"#"+dialog_akunbody_id, hxinclude, "outerHTML",
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openattachment",
"#"+dialog_attachbody_id, hxinclude, "outerHTML",
)
pagination := pagination.PaginationV3(
total, currpage, "/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/changepage", pagination_id,
hxinclude, "#content-dp", "outerHTML", "", "", corporate_daftarpeserta.BeforeRequestContent(), corporate_daftarpeserta.AfterRequestContent(),
)
clayout := corporate_daftarpeserta.Content(table, pagination)
return utils.View(c, clayout)
}
func (tdp *TabDaftarPesertaHandlers) HandleOpenViewAkun(c echo.Context) error {
patient_id := c.QueryParam("patid")
dialog_akun_id := c.QueryParam("dialog-akun-id")
dialog_akunbody_id := c.QueryParam("dialog-akunbody-id")
akun, err := tdp.TabDaftarPesertaServices.GetAkunPeserta(patient_id)
if err != nil {
body := corporate_daftarpeserta.Body_Account(
dialog_akunbody_id,
models.CustomTextFieldv2Prm{
Label: "ID Akun Peserta",
Name: "akunpesertaid",
Type: "hidden",
ID: "akunpesertaidid",
},
models.CustomTextFieldv2Prm{
Label: "Email",
Name: "akunpesertaemail",
Type: "text",
ID: "akunpesertaemailid",
},
models.CustomTextFieldv2Prm{
Label: "Password baru",
Name: "akunpesertapassnew",
Type: "password",
ID: "akunpesertapassnewid",
},
models.CustomTextFieldv2Prm{
Label: "Ulangi password baru",
Name: "akunpesertapasscek",
Type: "password",
ID: "akunpesertapasscekid",
},
corporate_daftarpeserta.JSShowModal(""),
)
toast := customtoastv2.CustomToastV2Show("Warning", "Gagal mengambil data peserta", "warning")
ret := []templ.Component{toast, body}
return utils.ViewMulti(c, ret)
}
body := corporate_daftarpeserta.Body_Account(
dialog_akunbody_id,
models.CustomTextFieldv2Prm{
Label: "ID Akun Peserta",
Name: "akunpesertaid",
Type: "hidden",
ID: "akunpesertaidid",
Value: strconv.Itoa(akun.AuthPatientID),
},
models.CustomTextFieldv2Prm{
Label: "Email",
Name: "akunpesertaemail",
Type: "text",
ID: "akunpesertaemailid",
Value: akun.AuthPatientEmail,
},
models.CustomTextFieldv2Prm{
Label: "Password baru",
Name: "akunpesertapassnew",
Type: "password",
ID: "akunpesertapassnewid",
Placeholder: "Masukan password baru",
},
models.CustomTextFieldv2Prm{
Label: "Ulangi password baru",
Name: "akunpesertapasscek",
Type: "password",
ID: "akunpesertapasscekid",
Placeholder: "Masukan password baru",
},
corporate_daftarpeserta.JSShowModal("#"+dialog_akun_id),
)
return utils.View(c, body)
}
func (tdp *TabDaftarPesertaHandlers) HandleCloseViewAkun(c echo.Context) error {
dialog_akun_id := c.QueryParam("dialog-akun-id")
dialog_akunbody_id := c.QueryParam("dialog-akunbody-id")
body := corporate_daftarpeserta.Body_Account(
dialog_akunbody_id,
models.CustomTextFieldv2Prm{
Label: "ID Akun Peserta",
Name: "akunpesertaid",
Type: "hidden",
ID: "akunpesertaidid",
},
models.CustomTextFieldv2Prm{
Label: "Email",
Name: "akunpesertaemail",
Type: "text",
ID: "akunpesertaemailid",
},
models.CustomTextFieldv2Prm{
Label: "Password baru",
Name: "akunpesertapassnew",
Type: "password",
ID: "akunpesertapassnewid",
},
models.CustomTextFieldv2Prm{
Label: "Ulangi password baru",
Name: "akunpesertapasscek",
Type: "password",
ID: "akunpesertapasscekid",
},
corporate_daftarpeserta.JSHideModal("#"+dialog_akun_id),
)
return utils.View(c, body)
}
func (tdp *TabDaftarPesertaHandlers) HandleAkun(c echo.Context) error {
user_token := c.Get("user").(*jwt.Token)
token := user_token.Raw
// patient_id := c.QueryParam("patid")
dialog_akun_id := c.QueryParam("dialog-akun-id")
dialog_akunbody_id := c.QueryParam("dialog-akunbody-id")
akunID := c.FormValue("akunpesertaid")
akunEmail := c.FormValue("akunpesertaemail")
newPass := c.FormValue("akunpesertapassnew")
newPasscek := c.FormValue("akunpesertapasscek")
formValidation := ""
newValidation := ""
cekValidation := ""
if strings.TrimSpace(newPass) == "" {
formValidation = "Password tidak boleh kosong"
newValidation = "Password tidak boleh kosong"
}
if strings.TrimSpace(newPasscek) == "" {
formValidation = "Password tidak boleh kosong"
cekValidation = "Password tidak boleh kosong"
}
if strings.TrimSpace(newPass) == "" && strings.TrimSpace(newPasscek) == "" {
formValidation = "Password baru tidak boleh kosong"
newValidation = "Password baru tidak boleh kosong"
cekValidation = "Password baru tidak boleh kosong"
}
if strings.TrimSpace(newPass) != strings.TrimSpace(newPasscek) {
formValidation = "Password tidak sama"
newValidation = "Password tidak sama"
cekValidation = "Password tidak sama"
}
if formValidation != "" || newValidation != "" || cekValidation != "" {
body := corporate_daftarpeserta.Body_Account(
dialog_akunbody_id,
models.CustomTextFieldv2Prm{
Label: "ID Akun Peserta",
Name: "akunpesertaid",
Type: "hidden",
ID: "akunpesertaidid",
Value: akunID,
},
models.CustomTextFieldv2Prm{
Label: "Email",
Name: "akunpesertaemail",
Type: "text",
ID: "akunpesertaemailid",
Value: akunEmail,
},
models.CustomTextFieldv2Prm{
Label: "Password baru",
Name: "akunpesertapassnew",
Type: "password",
ID: "akunpesertapassnewid",
ErrorMsg: newValidation,
},
models.CustomTextFieldv2Prm{
Label: "Ulangi password baru",
Name: "akunpesertapasscek",
Type: "password",
ID: "akunpesertapasscekid",
ErrorMsg: cekValidation,
},
corporate_daftarpeserta.JSShowModal(""),
)
toast := customtoastv2.CustomToastV2Show("Warning", formValidation, "warning")
ret := []templ.Component{toast, body}
return utils.ViewMulti(c, ret)
}
resp, err := tdp.TabDaftarPesertaServices.ResetPasswordPeserta(token, newPass, akunEmail, akunID)
body_err := corporate_daftarpeserta.Body_Account(
dialog_akunbody_id,
models.CustomTextFieldv2Prm{
Label: "ID Akun Peserta",
Name: "akunpesertaid",
Type: "hidden",
ID: "akunpesertaidid",
Value: akunID,
},
models.CustomTextFieldv2Prm{
Label: "Email",
Name: "akunpesertaemail",
Type: "text",
ID: "akunpesertaemailid",
Value: akunEmail,
},
models.CustomTextFieldv2Prm{
Label: "Password baru",
Name: "akunpesertapassnew",
Type: "password",
ID: "akunpesertapassnewid",
},
models.CustomTextFieldv2Prm{
Label: "Ulangi password baru",
Name: "akunpesertapasscek",
Type: "password",
ID: "akunpesertapasscekid",
},
corporate_daftarpeserta.JSShowModal(""),
)
if err != nil {
toastt := customtoastv2.CustomToastV2Show("Warning", err.Error(), "warning")
return utils.ViewMulti(c, []templ.Component{toastt, body_err})
}
if resp.Status == "ERR" {
toastt := customtoastv2.CustomToastV2Show("Warning", resp.Message, "warning")
return utils.ViewMulti(c, []templ.Component{toastt, body_err})
}
body_scs := corporate_daftarpeserta.Body_Account(
dialog_akunbody_id,
models.CustomTextFieldv2Prm{
Label: "ID Akun Peserta",
Name: "akunpesertaid",
Type: "hidden",
ID: "akunpesertaidid",
},
models.CustomTextFieldv2Prm{
Label: "Email",
Name: "akunpesertaemail",
Type: "text",
ID: "akunpesertaemailid",
},
models.CustomTextFieldv2Prm{
Label: "Password baru",
Name: "akunpesertapassnew",
Type: "password",
ID: "akunpesertapassnewid",
},
models.CustomTextFieldv2Prm{
Label: "Ulangi password baru",
Name: "akunpesertapasscek",
Type: "password",
ID: "akunpesertapasscekid",
},
corporate_daftarpeserta.JSHideModal("#"+dialog_akun_id),
)
toasttt := customtoastv2.CustomToastV2Show("Success", "Berhasil reset password peserta", "success")
return utils.ViewMulti(c, []templ.Component{toasttt, body_scs})
}
func (tdp *TabDaftarPesertaHandlers) HandleOpenDetail(c echo.Context) error {
idx := c.QueryParam("idx")
dialog_paket_id := c.QueryParam("dialog-paket-id")
dialog_paketbody_id := c.QueryParam("dialog-paketbody-id")
paket, err := tdp.TabDaftarPesertaServices.DetailTestdanPaket(idx)
if err != nil {
toastt := customtoastv2.CustomToastV2Show("Warning", "error get data", "error")
tab := corporate_daftarpeserta.Table_DetailPaket([]models.TableTestPaket{})
mod := corporate_daftarpeserta.Body_Detail(dialog_paketbody_id, tab, corporate_daftarpeserta.JSHideModal("#"+dialog_paket_id))
return utils.ViewMulti(c, []templ.Component{toastt, mod})
}
table := corporate_daftarpeserta.Table_DetailPaket(paket)
body := corporate_daftarpeserta.Body_Detail(dialog_paketbody_id, table, corporate_daftarpeserta.JSShowModal("#"+dialog_paket_id))
return utils.View(c, body)
}
func (tdp *TabDaftarPesertaHandlers) HandleOpenAttachmentFile(c echo.Context) error {
idx := c.QueryParam("idx")
dialog_attach_id := c.QueryParam("dialog-attach-id")
dialog_attachbody_id := c.QueryParam("dialog-attachbody-id")
file, err := tdp.TabDaftarPesertaServices.GetListAttachmentFile(idx)
if err != nil {
toastt := customtoastv2.CustomToastV2Show("Error", "error get data", "error")
tab := corporate_daftarpeserta.Tab_Attachment([]models.AttachmentFIle{})
mod := corporate_daftarpeserta.Body_Attachment(dialog_attachbody_id, tab, corporate_daftarpeserta.JSHideModal("#"+dialog_attach_id))
return utils.ViewMulti(c, []templ.Component{toastt, mod})
}
tab := corporate_daftarpeserta.Tab_Attachment(file)
body := corporate_daftarpeserta.Body_Attachment(dialog_attachbody_id, tab, corporate_daftarpeserta.JSShowModal("#"+dialog_attach_id))
return utils.View(c, body)
}

View File

@@ -1,71 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/component/chart"
"cpone/models"
"cpone/utils"
corporate_kelainanfisik "cpone/views/corporate/mcu/mcutab/kelainanfisik"
"strings"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type TabKelainanFisikServices interface {
GetKelainanFisikBMI(mcuID string) (models.Piechart, error)
GetKelainanFisikHipertensi(mcuID string) (models.Piechart, error)
GetKelainanFisikRefraksi(mcuID string) (models.Piechart, error)
GetKelainanFisikPresentase(mcuID string) (models.Barchart, error)
GetKelFisikAlkohol(mcuID string) (models.Piechart, error)
GetKelFisikMerokok(mcuID string) (models.Piechart, error)
GetKelFisikOlahraga(mcuID string) (models.Piechart, error)
GetChartRenderFisik(mcuID string) ([]models.McuTabModels, error)
}
type TabKelainanFisikHandler struct {
TabKelainanFisikServices TabKelainanFisikServices
}
func NewTabKelainanFisikHandler(tkf TabKelainanFisikServices) *TabKelainanFisikHandler {
return &TabKelainanFisikHandler{
TabKelainanFisikServices: tkf,
}
}
func (tkf *TabKelainanFisikHandler) HandleShowTabKelainanFisik(c echo.Context) error {
logger, _ := zap.NewProduction()
logger.Info("Tab Kelainan Fisik")
id := c.Param("id")
chartsxs := []templ.Component{}
chartsmd := []templ.Component{}
chartslg := []templ.Component{}
tablist, err := tkf.TabKelainanFisikServices.GetChartRenderFisik(id)
if err != nil {
return err
}
for _, d := range tablist {
chartsxs = append(chartsxs, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"xs", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartsmd = append(chartsmd, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"md", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartslg = append(chartslg, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"lg", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
}
content := corporate_kelainanfisik.KelainanFisikScreen(chartsxs, chartsmd, chartslg)
return utils.View(c, content)
}

View File

@@ -1,62 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/component/chart"
"cpone/models"
"cpone/utils"
corporate_kelainanglobal "cpone/views/corporate/mcu/mcutab/kelainanglobal"
"strings"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
)
type TabKelainanGlobalServices interface {
GetKelainanFisik(mcuID string) (models.Barchart, error)
GetKelainanGlobalV2(mcuID string) (models.Barchart, error)
GetChartRenderGlobal(mcuID string) ([]models.McuTabModels, error)
}
type TabKelainanGlobalHandler struct {
TabKelainanGlobalServices TabKelainanGlobalServices
}
func NewTabKelainanGlobalHandler(tkg TabKelainanGlobalServices) *TabKelainanGlobalHandler {
return &TabKelainanGlobalHandler{
TabKelainanGlobalServices: tkg,
}
}
func (tkg *TabKelainanGlobalHandler) HandleShowTabKelainanGlobal(c echo.Context) error {
id := c.Param("id")
chartsxs := []templ.Component{}
chartsmd := []templ.Component{}
chartslg := []templ.Component{}
tablist, err := tkg.TabKelainanGlobalServices.GetChartRenderGlobal(id)
if err != nil {
return err
}
for _, d := range tablist {
chartsxs = append(chartsxs, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"xs", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartsmd = append(chartsmd, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"md", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartslg = append(chartslg, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"lg", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
}
content := corporate_kelainanglobal.KelainanGlobal_Screen(chartsxs, chartsmd, chartslg)
return utils.View(c, content)
}

View File

@@ -1,68 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/component/chart"
"cpone/models"
"cpone/utils"
corporate_kelainanlab "cpone/views/corporate/mcu/mcutab/kelainanlab"
"strings"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
)
type TabKelainanLabServices interface {
GetDataPresentaseKelainanLab(mcuID string) (models.Barchart, error)
GetHematologi(mcuID string) (models.BarchartV2, error)
GetUrinalisa(mcuID string) (models.BarchartV2, error)
GetGangguanFungsiHati(mcuID string) (models.BarchartV2, error)
GetGangguanMetabolismeLemak(mcuID string) (models.BarchartV2, error)
GetPeningkatanGlukosa(mcuID string) (models.BarchartV2, error)
GetChartRenderLab(mcuID string) ([]models.McuTabModels, error)
}
type TabKelainanLabHandler struct {
TabKelainanLabServices TabKelainanLabServices
}
func NewTabKelainanLabHandler(tkl TabKelainanLabServices) *TabKelainanLabHandler {
return &TabKelainanLabHandler{
TabKelainanLabServices: tkl,
}
}
func (tkl *TabKelainanLabHandler) HandleShowTabKelainanLab(c echo.Context) error {
id := c.Param("id")
tablist, err := tkl.TabKelainanLabServices.GetChartRenderLab(id)
if err != nil {
return err
}
chartsxs := []templ.Component{}
chartsmd := []templ.Component{}
chartslg := []templ.Component{}
for _, d := range tablist {
chartsxs = append(chartsxs, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"xs", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartsmd = append(chartsmd, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"md", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartslg = append(chartslg, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"lg", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
}
content := corporate_kelainanlab.KelainanLabScreen(chartsxs, chartsmd, chartslg)
return utils.View(c, content)
}

View File

@@ -1,65 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/component/chart"
"cpone/models"
"cpone/utils"
corporate_kelainannonlab "cpone/views/corporate/mcu/mcutab/kelainannonlab"
"strings"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
)
type TabKelainanNonLabServices interface {
GetDataKelNonLab(mcuID string) (models.Barchart, error)
GetThoraxPA(mcuID string) (models.BarchartV2, error)
GetGangguanJantung(mcuID string) (models.BarchartV2, error)
GetAutospirometri(mcuID string) (models.BarchartV2, error)
GetPendengaran(mcuID string) (models.BarchartV2, error)
GetChartRenderNonLab(mcuID string) ([]models.McuTabModels, error)
}
type TabKelainanNonLabHandler struct {
TabKelainanNonLabServices TabKelainanNonLabServices
}
func NewTabKelainanNonLabHandler(tknl TabKelainanNonLabServices) *TabKelainanNonLabHandler {
return &TabKelainanNonLabHandler{
TabKelainanNonLabServices: tknl,
}
}
func (tknl *TabKelainanNonLabHandler) HandleShowTabKelainanNonLab(c echo.Context) error {
id := c.Param("id")
chartsxs := []templ.Component{}
chartsmd := []templ.Component{}
chartslg := []templ.Component{}
tablist, err := tknl.TabKelainanNonLabServices.GetChartRenderNonLab(id)
if err != nil {
return err
}
for _, d := range tablist {
chartsxs = append(chartsxs, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"xs", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartsmd = append(chartsmd, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"md", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartslg = append(chartslg, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"lg", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
}
content := corporate_kelainannonlab.KelainanNonlabScreen(chartsxs, chartsmd, chartslg)
return utils.View(c, content)
}

View File

@@ -1,68 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/component/chart"
"cpone/models"
"cpone/utils"
corporate_kepesertaan "cpone/views/corporate/mcu/mcutab/kepesertaan"
"strings"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type TabKepersertaanServices interface {
GetTotalKepesertaanMCU(mcuID string) (models.Piechart, error)
GetKepesertaanByGender(mcuID string) (models.Piechart, error)
GetKepesertaanByUmur(mcuID string) (models.Piechart, error)
GetChartRenderPeserta(mcuID string) ([]models.McuTabModels, error)
}
type TabKepersertaanHandler struct {
TabKepersertaanServices TabKepersertaanServices
}
func NewTabKepersertaanHandler(tkh TabKepersertaanServices) *TabKepersertaanHandler {
return &TabKepersertaanHandler{
TabKepersertaanServices: tkh,
}
}
func (tkh *TabKepersertaanHandler) HandleShowTabKepesertaan(c echo.Context) error {
logger, _ := zap.NewProduction()
logger.Info("Tab Kepesertaan")
id := c.Param("id")
logger.Info("Params", zap.Any("id", id))
tablist, err := tkh.TabKepersertaanServices.GetChartRenderPeserta(id)
if err != nil {
return err
}
chartsxs := []templ.Component{}
chartsmd := []templ.Component{}
chartslg := []templ.Component{}
for _, d := range tablist {
chartsxs = append(chartsxs, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"xs", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartsmd = append(chartsmd, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"md", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
chartslg = append(chartslg, chart.ShowChartResponsiveWidth(
strings.ToLower(strings.ReplaceAll(d.Mcu_ImageGrafikName+"lg", " ", "")),
d.Mcu_ImageGrafikJsonRender,
"450px",
))
}
content := corporate_kepesertaan.KepesertaanScreen(chartsxs, chartsmd, chartslg)
return utils.View(c, content)
}

View File

@@ -1,82 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/models"
"cpone/utils"
corporate_kesimpulan "cpone/views/corporate/mcu/mcutab/kesimpulan"
"fmt"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type TabKesimpulanServices interface {
GetListKesimpulanLab(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanFisik(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanLabV2(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanNonLabV2(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanFisikV2(id string) ([]models.ModelKesimpulanLab, error)
}
type TabKesimpulanHandler struct {
TabKesimpulanServices TabKesimpulanServices
}
func NewTabKesimpulanHandler(us TabKesimpulanServices) *TabKesimpulanHandler {
return &TabKesimpulanHandler{
TabKesimpulanServices: us,
}
}
func (tkh *TabKesimpulanHandler) HandleShowTabKesimpulanScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
tableID := utils.GenerateRandomID("table-id")
id := c.Param("id")
dataLab, err := tkh.TabKesimpulanServices.GetListKesimpulanLabV2(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST LAB",
zap.Any("error", err),
)
fmt.Println(dataLab)
return err
}
// tableComponentLab := corporate_mcudetail.CardTableKesimpulan("3 Kelainan Pemeriksaan Lab terbesar :", dataLab, tableID)
tableComponentLab := corporate_kesimpulan.Table_Kesimpulan("3 Kelainan Pemeriksaan Lab terbesar :", dataLab, tableID)
dataNonLab, err := tkh.TabKesimpulanServices.GetListKesimpulanNonLabV2(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST NON LAB",
zap.Any("error", err),
)
fmt.Println(dataNonLab)
return err
}
tableComponentNonLab := corporate_kesimpulan.Table_Kesimpulan("3 Kelainan Pemeriksaan Non Lab terbesar :", dataNonLab, tableID)
dataFisik, err := tkh.TabKesimpulanServices.GetListKesimpulanFisikV2(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST FISIK",
zap.Any("error", err),
)
fmt.Println(dataFisik)
return err
}
tableComponentFisik := corporate_kesimpulan.Table_Kesimpulan("3 Kelainan Pemeriksaan Fisik terbesar :", dataFisik, tableID)
// content := corporate_mcudetail.MainKesimpulan(
// tableID,
// tableComponentLab,
// tableComponentNonLab,
// tableComponentFisik,
// )
content := corporate_kesimpulan.KesimpulanScreen(tableID, tableComponentLab, tableComponentNonLab, tableComponentFisik)
return utils.View(c, content)
}

View File

@@ -1,120 +0,0 @@
package mcu_corporate_handlers
import (
"cpone/component/pagination"
"cpone/models"
"cpone/utils"
corporate_keuangan "cpone/views/corporate/mcu/mcutab/keuangan"
"strconv"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type TabKeuanganServices interface {
GetTotalOrderKeuangan(mcuID string) (int, error)
GetTotalCardData(mcuID string) (models.TotalBillCard, error)
GetListingDataKeuangan(mcuID string, currentpage int, rowperpage int) ([]models.KeuanganModel, int, error)
}
type TabKeuanganHandler struct {
TabKeuanganServices TabKeuanganServices
}
func NewTabKeuanganHandler(tk TabKeuanganServices) *TabKeuanganHandler {
return &TabKeuanganHandler{
TabKeuanganServices: tk,
}
}
func (tk *TabKeuanganHandler) HandleShowTabKeuangan(c echo.Context) error {
logger, _ := zap.NewProduction()
logger.Info("handler keuangan")
tableID := utils.GenerateRandomID("table-id")
paginationID := utils.GenerateRandomID("pagination-id")
id := c.Param("id")
logger.Info("Params", zap.Any("id", id))
dataTable, totalPage, err := tk.TabKeuanganServices.GetListingDataKeuangan(id, 1, 10)
if err != nil {
defer logger.Sync()
logger.Info("error get list data keuangan", zap.Any("error", err))
return err
}
tablecompo := corporate_keuangan.Table_Keuangan(dataTable, tableID)
pagination := pagination.PaginationV3(
totalPage,
1,
"/corp/dashboard_pic/detail/"+id+"/tabkeuangan/changepage",
paginationID,
"#table-id, #pagination-id, #loading-parent, #loading-child, #loading-spinner, #loadingcontent",
"#content-uang",
"outerHTML", "", "",
corporate_keuangan.BeforeRequestContent(),
corporate_keuangan.AfterRequestContent(),
)
totalOrder, err := tk.TabKeuanganServices.GetTotalOrderKeuangan(id)
if err != nil {
defer logger.Sync()
logger.Info("error get total order keuangan", zap.Any("error", err))
return err
}
totalBill, err := tk.TabKeuanganServices.GetTotalCardData(id)
if err != nil {
defer logger.Sync()
logger.Info("error get total bill keuangan", zap.Any("error", err))
return err
}
totalOrderF := utils.FormatRibuan(int(totalOrder))
totalTagihan := utils.FormatRibuan(int(totalBill.TotalTagihan))
totalPelunasan := utils.FormatRibuan(int(totalBill.TotalPelunasan))
totalHutang := utils.FormatRibuan(int(totalBill.TotalHutang))
content := corporate_keuangan.Tab_Keuangan(
tableID, paginationID,
corporate_keuangan.Summary_Card(totalOrderF, totalTagihan, totalPelunasan, totalHutang),
corporate_keuangan.Content(tablecompo, pagination),
)
return utils.View(c, content)
}
func (tk *TabKeuanganHandler) HandleChangePage(c echo.Context) error {
pageparam := c.QueryParam("page")
tableID := c.QueryParam("table-id")
paginationID := c.QueryParam("pagination-id")
id := c.Param("id")
page, err := strconv.Atoi(pageparam)
if err != nil {
return err
}
tableData, totalPage, err := tk.TabKeuanganServices.GetListingDataKeuangan(id, page, 10)
if err != nil {
return err
}
tablecomp := corporate_keuangan.Table_Keuangan(tableData, tableID)
pagination := pagination.PaginationV3(
totalPage,
page,
"/corp/dashboard_pic/detail/"+id+"/tabkeuangan/changepage",
paginationID,
"#table-id, #pagination-id, #loading-parent, #loading-child, #loading-spinner, #loadingcontent",
"#content-uang",
"outerHTML", "", "",
corporate_keuangan.BeforeRequestContent(),
corporate_keuangan.AfterRequestContent(),
)
tabdanpagi := corporate_keuangan.Content(tablecomp, pagination)
return utils.View(c, tabdanpagi)
}

View File

@@ -1,25 +1,13 @@
package corporate_handlers
import (
breadcrumadmin "cpone/component/breadcrumbadmin"
navbarmenu "cpone/component/navbar"
"cpone/component/pagination"
sidebaruserprofile "cpone/component/sidebar_user_profile"
"cpone/models"
"cpone/utils"
corporate_patient "cpone/views/corporate/patient"
"strconv"
"github.com/golang-jwt/jwt/v5"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type PatientService interface {
GetDashboardPatientBreadcrumb(title string) (models.BreadCrumbV1, error)
GetListtingData(email string, currentpage int, rowperpage int) ([]models.DashboardPatient, int, error)
GetPatientData(email string) (string, error)
GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error)
}
func NewPatientHandler(us PatientService) *PatientHandler {
@@ -32,214 +20,7 @@ type PatientHandler struct {
PatientService PatientService
}
func (ph *PatientHandler) LoadLocalData(c echo.Context) error {
logger, _ := zap.NewProduction()
listID := c.QueryParam("listID")
paginationID := c.QueryParam("paginationID")
dialogID := c.QueryParam("dialogID")
dialogBodyID := c.QueryParam("dialogBodyID")
userEmail := c.QueryParam("userEmail")
logger.Info("params", zap.Any("email", userEmail))
title, err := ph.PatientService.GetPatientData(userEmail)
if err != nil {
defer logger.Sync()
logger.Info("Error get user", zap.Any("error", err))
return err
}
dataBreadcrumb, err := ph.PatientService.GetDashboardPatientBreadcrumb(title)
if err != nil {
defer logger.Sync()
logger.Info("Error breadcrumb", zap.Any("error", err))
return err
}
defer logger.Sync()
breadcrumb := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadcrumb)
listingdata, totalPage, err := ph.PatientService.GetListtingData(userEmail, 1, 10)
if err != nil {
defer logger.Sync()
logger.Info("error get listing data", zap.Any("error", err), zap.Any("total", totalPage))
return err
}
listingcomponent := corporate_patient.ListingData(listingdata,
listID,
"/corp/dashboard_pat/open",
"#"+dialogBodyID,
"#listID, #paginationID, #dialogID, #dialogBodyID, #userEmail",
"outerHTML",
)
paginationcomponent := pagination.PaginationV3(
totalPage,
1,
"/corp/dashboard_pat/changepage",
paginationID,
"#listID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #dialogID, #dialogBodyID, #userEmail",
"#contentlayout",
"outerHTML", "", "",
corporate_patient.BeforeRequestContent(),
corporate_patient.AfterRequestContent(),
)
tabData := []models.TabViewReportMcu{}
tabcomponent := corporate_patient.TabReportView(tabData)
bodyModal := corporate_patient.ModalBody(
dialogBodyID,
tabcomponent,
corporate_patient.JsShowModal(""),
)
bodyClose := corporate_patient.ModalClose(
"/corp/dashboard_pat/closemodal",
"#"+dialogBodyID,
"outerHTML",
"#"+dialogID,
)
modalDialog := corporate_patient.DialogReport(
"",
"/corp/dashboard_pat/dialog",
"#"+dialogBodyID,
"outerHTML",
"#listID, #paginationID, #dialogID, #userEmail, #dialogBodyID"+paginationID,
dialogID,
title,
bodyModal,
bodyClose,
)
content := corporate_patient.ContentP(listingcomponent, paginationcomponent)
view := corporate_patient.ContentPage(
breadcrumb,
content,
modalDialog,
)
return utils.View(c, view)
}
func (ph *PatientHandler) HandleShowPatient(c echo.Context) error {
logger, _ := zap.NewProduction()
listID := utils.GenerateRandomID("listid")
paginationID := utils.GenerateRandomID("paginationid")
dialogID := utils.GenerateRandomID("dialogid")
dialogBodyID := utils.GenerateRandomID("dialogbodyid")
userCok := c.Get("user").(*jwt.Token)
claims := userCok.Claims.(jwt.MapClaims)
name := claims["M_StaffName"].(string)
position := claims["M_UserGroupDashboard"].(string)
logger.Info("jwt", zap.Any("name", name))
user := models.User{
UserID: 1,
Username: name,
UserFullName: name,
UserPosition: position,
}
navbaruser := navbarmenu.NavbarWithLogo(user)
sidbaruser := sidebaruserprofile.Navbaruserprofile(user)
content := corporate_patient.DashboardPat(
listID,
paginationID,
dialogID,
dialogBodyID,
)
css := corporate_patient.CSSDashboardPat()
js := corporate_patient.JSDashboardPat()
view := corporate_patient.ShowDashboardPat("Dashboard Pasien", content, css, js, navbaruser, sidbaruser)
return utils.View(c, view)
}
func (ph *PatientHandler) HandleChangePage(c echo.Context) error {
logger, _ := zap.NewProduction()
pageparam := c.QueryParam("page")
listID := c.QueryParam("listID")
paginationID := c.QueryParam("paginationID")
dialogBodyID := c.QueryParam("dialogBodyID")
userEmail := c.QueryParam("userEmail")
logger.Info("params", zap.Any("userEmail", userEmail))
// var retval []templ.Component
page, err := strconv.Atoi(pageparam)
if err != nil {
defer logger.Sync()
logger.Info("error convert page param")
return err
}
listData, totalPage, err := ph.PatientService.GetListtingData(userEmail, page, 10)
if err != nil {
defer logger.Sync()
logger.Info("error get data listing")
return err
}
listcomponent := corporate_patient.ListingData(listData,
listID,
"/corp/dashboard_pat/open",
"#"+dialogBodyID,
"#listID, #paginationID, #dialogID, #dialogBodyID, #userEmail",
"outerHTML",
)
paginationcomponent := pagination.PaginationV3(
totalPage,
page,
"/corp/dashboard_pat/changepage",
paginationID,
"#listID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #dialogID, #dialogBodyID, #userEmail, #currPage"+paginationID,
"#contentlayout",
"outerHTML", "", "",
corporate_patient.BeforeRequestContent(),
corporate_patient.AfterRequestContent(),
)
// retval = append(retval, listcomponent)
// retval = append(retval, paginationcomponent)
// return utils.ViewMulti(c, retval)
content := corporate_patient.ContentP(listcomponent, paginationcomponent)
return utils.View(c, content)
}
func (ph *PatientHandler) HandleOpenReport(c echo.Context) error {
logger, _ := zap.NewProduction()
id := c.QueryParam("id")
dialogID := c.QueryParam("dialogID")
dialogBodyID := c.QueryParam("dialogBodyID")
logger.Info("params", zap.Any("id", id))
userCok := c.Get("user").(*jwt.Token)
claims := userCok.Claims.(jwt.MapClaims)
staffname := claims["M_StaffName"].(string)
newtabdata, err := ph.PatientService.GetListReportPesertaV4(id, staffname)
if err != nil {
tab := corporate_patient.TabReportView([]models.TabViewReportMcu{})
mod := corporate_patient.ModalBody(
dialogBodyID,
tab,
corporate_patient.JsShowModal(""),
)
return utils.View(c, mod)
}
tabcomponent := corporate_patient.TabReportView(newtabdata)
modalBody := corporate_patient.ModalBody(
dialogBodyID,
tabcomponent,
corporate_patient.JsShowModal("#"+dialogID),
)
return utils.View(c, modalBody)
func (uh *PatientHandler) ShowPatient(c echo.Context) error {
helo := corporate_patient.Show()
return utils.View(c, helo)
}

View File

@@ -1,72 +0,0 @@
package dev_handlers
import (
breadcrumadmin "cpone/component/breadcrumbadmin"
navbarmenu "cpone/component/navbar"
sidebaruserprofile "cpone/component/sidebar_user_profile"
"cpone/models"
"cpone/services"
"cpone/utils"
dev_detailmcu "cpone/views/dev/mcu"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type DetailMcuServices interface {
GetBreadcrumb(title string) (models.BreadCrumbV1, error)
}
type DetailMcuHandler struct {
DetailMcuServices DetailMcuServices
}
func NewDetailMcuHandler(dmcu DetailMcuServices) *DetailMcuHandler {
return &DetailMcuHandler{
DetailMcuServices: dmcu,
}
}
func (dmcu *DetailMcuHandler) HandleShowDetailMcuScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
title := "PT. Sadhana Abiyasa Sampoerna"
id := c.Param("id")
logger.Info("params", zap.Any("id", id))
user, err := services.GetUserLogin()
if err != nil {
defer logger.Sync()
logger.Info("Error get user dev", zap.Any("error", err))
return err
}
dataBreadcrumb, err := dmcu.DetailMcuServices.GetBreadcrumb(title)
if err != nil {
defer logger.Sync()
logger.Info("Error breadcrumb dev", zap.Any("error", err))
return err
}
breadcrumb := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadcrumb)
navbaruser := navbarmenu.NavbarWithLogo(user)
sidbaruser := sidebaruserprofile.Navbaruserprofile(user)
content := dev_detailmcu.DetailMcuScreen(
breadcrumb,
dev_detailmcu.TabViewDetailMcu(id),
)
css := dev_detailmcu.CSSDetailMcu()
js := dev_detailmcu.JSDetailMcu()
view := dev_detailmcu.ShowDetailMcu(
title,
content,
css,
js,
navbaruser,
sidbaruser,
)
return utils.View(c, view)
}

View File

@@ -1,192 +0,0 @@
package dev_handlers
import (
breadcrumadmin "cpone/component/breadcrumbadmin"
navbarmenu "cpone/component/navbar"
"cpone/component/pagination"
sidebaruserprofile "cpone/component/sidebar_user_profile"
"cpone/models"
"cpone/services"
"cpone/utils"
dev_employeeanalytic "cpone/views/dev/employeeanalytic"
"strconv"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type EmployeeAnalyticServices interface {
GetEmployeeAnalyticBreadcrumb(title string) (models.BreadCrumbV1, error)
DummyDataTest() ([]models.DashboardPic, error)
ListingEmployeeAnalytic(search string, startdate string, enddate string, currentpage int, rowperpage int) ([]models.DashboardPic, int, error)
}
type EmployeeAnalyticHandler struct {
EmployeeAnalyticServices EmployeeAnalyticServices
}
func NewEmployeeAnalyticHandler(ea EmployeeAnalyticServices) *EmployeeAnalyticHandler {
return &EmployeeAnalyticHandler{
EmployeeAnalyticServices: ea,
}
}
func (ea *EmployeeAnalyticHandler) HandleShowEmployeeAnalyticScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
title := "PT. Sadhana Abiyasa Sampoerna"
listID := utils.GenerateRandomID("listid")
paginationID := utils.GenerateRandomID("paginationid")
user, err := services.GetUserLogin()
if err != nil {
defer logger.Sync()
logger.Info("Error get user dev", zap.Any("error", err))
return err
}
dataBreadcrumb, err := ea.EmployeeAnalyticServices.GetEmployeeAnalyticBreadcrumb(title)
if err != nil {
defer logger.Sync()
logger.Info("Error breadcrumb dev", zap.Any("error", err))
return err
}
defer logger.Sync()
navbaruser := navbarmenu.NavbarWithLogo(user)
sidbaruser := sidebaruserprofile.Navbaruserprofile(user)
breadcrumb := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadcrumb)
listingData, totalPage, err := ea.EmployeeAnalyticServices.ListingEmployeeAnalytic("", "", "", 1, 5)
if err != nil {
defer logger.Sync()
logger.Info("Error get listing data", zap.Any("error", err), zap.Any("total", totalPage))
return err
}
listingcomponent := dev_employeeanalytic.ListingData(listingData, listID)
paginationcomponent := pagination.PaginationV3(
totalPage,
1,
"/dev/dashboard_pic/changepage",
paginationID,
"#listID, #paginationID, #searchID, #startdateID, #enddateID",
"#"+paginationID,
"outerHTML", "", "",
dev_employeeanalytic.BeforeRequestContent(),
dev_employeeanalytic.AfterRequestContent(),
)
filtercomponent := dev_employeeanalytic.FilterListing(
"/dev/dashboard_pic/filter",
"input changed delay:500ms",
"#searchID, #startdateID, #enddateID, #listID, #paginationID",
"outerHTML",
"#"+paginationID,
dev_employeeanalytic.BeforeRequestContent(),
dev_employeeanalytic.AfterRequestContent(),
)
content := dev_employeeanalytic.EmployeeAnalyticScreen(
listID,
paginationID,
breadcrumb,
filtercomponent,
listingcomponent,
paginationcomponent,
)
css := dev_employeeanalytic.CSSEmployeeAnalytic()
js := dev_employeeanalytic.JSEmployeeAnalytic()
view := dev_employeeanalytic.ShowEmployeeAnalytic(title, content, css, js, navbaruser, sidbaruser)
return utils.View(c, view)
}
func (ea *EmployeeAnalyticHandler) HandlePagination(c echo.Context) error {
pageparam := c.QueryParam("page")
listID := c.QueryParam("listID")
paginationID := c.QueryParam("paginationID")
search := c.QueryParam("search")
startdate := c.QueryParam("startdate")
enddate := c.QueryParam("enddate")
var retVal []templ.Component
logger, _ := zap.NewProduction()
page, err := strconv.Atoi(pageparam)
if err != nil {
defer logger.Sync()
logger.Info("Error convert page param")
return err
}
listdata, totalPage, err := ea.EmployeeAnalyticServices.ListingEmployeeAnalytic(search, startdate, enddate, page, 5)
if err != nil {
defer logger.Sync()
logger.Info("Error convert page param")
return err
}
listcomponent := dev_employeeanalytic.ListingData(listdata, listID)
paginationcomponent := pagination.PaginationV3(
totalPage,
page,
"/dev/dashboard_pic/changepage",
paginationID,
"#listID, #paginationID, #searchID, #startdateID, #enddateID",
"#"+paginationID,
"outerHTML", "", "",
dev_employeeanalytic.BeforeRequestContent(),
dev_employeeanalytic.AfterRequestContent(),
)
retVal = append(retVal, listcomponent)
retVal = append(retVal, paginationcomponent)
return utils.ViewMulti(c, retVal)
}
func (ea *EmployeeAnalyticHandler) HandleFilter(c echo.Context) error {
logger, _ := zap.NewProduction()
search := c.QueryParam("search")
startdate := c.QueryParam("startdate")
enddate := c.QueryParam("enddate")
listID := c.QueryParam("listID")
paginationID := c.QueryParam("paginationID")
dataList, totalPage, err := ea.EmployeeAnalyticServices.ListingEmployeeAnalytic(search, startdate, enddate, 1, 5)
if err != nil {
defer logger.Sync()
logger.Info("Error Get Listing Data", zap.Any("error", err))
return err
}
listcomponent := dev_employeeanalytic.ListingData(dataList, listID)
paginationcomponent := pagination.PaginationV3(
totalPage, 1,
"/dev/dashboard_pic/changepage",
paginationID,
"#listID, #paginationID, #searchID, #startdateID, #enddateID",
"#"+paginationID, "outerHTML", "", "",
dev_employeeanalytic.BeforeRequestContent(),
dev_employeeanalytic.AfterRequestContent(),
)
var retval []templ.Component
retval = append(retval, listcomponent)
retval = append(retval, paginationcomponent)
return utils.ViewMulti(c, retval)
}
func (ea *EmployeeAnalyticHandler) HandleIntoDetail(c echo.Context) error {
logger, _ := zap.NewProduction()
id := c.Param("id")
logger.Info("params", zap.Any("id", id))
url := "/dev/detail/" + id
c.Response().Header().Set("HX-Redirect", url)
return nil
}

View File

@@ -1,88 +0,0 @@
package dev_handlers
import (
"cpone/models"
"cpone/utils"
dev_kesimpulan "cpone/views/dev/kesimpulan"
"fmt"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type KesimpulanService interface {
GetListKesimpulanLab(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error)
GetListKesimpulanFisik(id string) ([]models.ModelKesimpulanLab, error)
}
func NewKesimpulanHandler(us KesimpulanService) *KesimpulanHandler {
return &KesimpulanHandler{
KesimpulanService: us,
}
}
type KesimpulanHandler struct {
KesimpulanService KesimpulanService
}
func (h *KesimpulanHandler) HandleShowKesimpulanScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
tableID := utils.GenerateRandomID("tablebody")
id := c.Param("id")
// table component
dataLab, err := h.KesimpulanService.GetListKesimpulanLab(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST LAB",
zap.Any("error", err),
)
fmt.Println(dataLab)
return err
}
logger.Info("CEK DATA",
zap.Any("data lab", dataLab))
tableComponentLab := dev_kesimpulan.CardTableKesimpulan("3 Kelainan Pemeriksaan Lab terbesar :", dataLab, tableID)
// table component non lab
dataNonLab, err := h.KesimpulanService.GetListKesimpulanNonLab(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST NON LAB",
zap.Any("error", err),
)
fmt.Println(dataNonLab)
return err
}
logger.Info("CEK DATA",
zap.Any("data lab", dataNonLab))
tableComponentNonLab := dev_kesimpulan.CardTableKesimpulan("3 Kelainan Pemeriksaan Non Lab terbesar :", dataNonLab, tableID)
// table component fisik
dataFisik, err := h.KesimpulanService.GetListKesimpulanFisik(id)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST FISIK",
zap.Any("error", err),
)
fmt.Println(dataFisik)
return err
}
logger.Info("CEK DATA",
zap.Any("data lab", dataFisik))
tableComponentFisik := dev_kesimpulan.CardTableKesimpulan("3 Kelainan Pemeriksaan Fisik terbesar :", dataFisik, tableID)
content := dev_kesimpulan.MainKesimpulan(tableID,
tableComponentLab,
tableComponentNonLab,
tableComponentFisik)
view := dev_kesimpulan.ShowKesimpulan("KESIMPULAN", content, dev_kesimpulan.CssKesimpulan(), dev_kesimpulan.JsKesimpulan())
return utils.View(c, view)
}

View File

@@ -1,66 +0,0 @@
package dev_handlers
import (
"cpone/models"
"cpone/utils"
dev_mcudaftarpeserta "cpone/views/dev/mcu/daftarpeserta"
"fmt"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type McuDaftarPesertaServices interface {
GetListMcuDaftarPeserta(id string, currentPage int, rowPerPage int) ([]models.ModelMcuDaftarPeserta, int, error)
}
type McuDaftarPesertaHandler struct {
McuDaftarPesertaServices McuDaftarPesertaServices
}
func NewMcuDaftarPeserta(mdp McuDaftarPesertaServices) *McuDaftarPesertaHandler {
return &McuDaftarPesertaHandler{
McuDaftarPesertaServices: mdp,
}
}
func (mdp *McuDaftarPesertaHandler) HandleGetMcuDaftarPeserta(c echo.Context) error {
logger, _ := zap.NewProduction()
id := c.Param("id")
// get listing data
dataMcuDaftarPeserta, totalPage, err := mdp.McuDaftarPesertaServices.GetListMcuDaftarPeserta(id, 1, 5)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET LIST LAB",
zap.Any("error", err),
)
fmt.Println(dataMcuDaftarPeserta)
return err
}
defer logger.Sync()
logger.Info("PESERTA",
zap.Any("totalpage", totalPage),
)
return err
}
func (mdp *McuDaftarPesertaHandler) HandleShowMcuDaftarPeserta(c echo.Context) error {
title := "Daftar Peserta"
content := dev_mcudaftarpeserta.McuDaftarPesertaScreen()
css := dev_mcudaftarpeserta.CSSMcuDaftarPeserta()
js := dev_mcudaftarpeserta.JsMcuDaftarPeserta()
view := dev_mcudaftarpeserta.ShowMcuDafterPeserta(
title,
content,
css,
js,
)
return utils.View(c, view)
}

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,6 @@ package public_handlers
import (
public_services "cpone/services/public"
public_landingpage "cpone/views/public/landingpage"
"net/http"
"github.com/a-h/templ"
"go.uber.org/zap"
@@ -57,7 +56,7 @@ func (uh *LandingPageHandler) ShowLandingPage(c echo.Context) error {
)
// fmt.Printf("%+v\n", udata)
helo := public_landingpage.ShowLandingPage("HOME",
helo := public_landingpage.ShowLandingPage("Hello World",
public_landingpage.MainLandingPage(public_landingpage.ListMedicalService(udata),
public_landingpage.ListAdvantage(adData), public_landingpage.ListPromotion(lpData),
public_landingpage.FooterSection(ftNav)),
@@ -66,12 +65,6 @@ func (uh *LandingPageHandler) ShowLandingPage(c echo.Context) error {
return uh.View(c, helo)
}
func (uh *LandingPageHandler) HandleBtnLogin(c echo.Context) error {
c.Response().Header().Set("HX-Redirect", "/login")
return c.String(http.StatusOK, "/login")
}
func (uh *LandingPageHandler) View(c echo.Context, cmp templ.Component) error {
c.Response().Header().Set(echo.HeaderContentType, echo.MIMETextHTML)

View File

@@ -1,22 +1,13 @@
package public_handlers
import (
"cpone/models"
"cpone/utils"
public_login "cpone/views/public/login"
"encoding/json"
"net/http"
"time"
"github.com/golang-jwt/jwt/v5"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type LoginService interface {
CheckIsAccountCpone(email string) (string, error)
CheckAccountHasLocation(email string) (bool, error)
MultiSignInV2(username string, password string) (models.Response, error)
}
func NewLoginHandler(us LoginService) *LoginHandler {
@@ -29,321 +20,14 @@ type LoginHandler struct {
LoginService LoginService
}
// func (uh *LoginHandler) ShowLogin(c echo.Context) error {
// helo := client_Login.Show()
// return utils.View(c, helo)
// }
func (lh *LoginHandler) HandlerShowLogin(c echo.Context) error {
si := public_login.ShowLogin("Login ", public_login.MainLogin(true), public_login.CssLogin(), public_login.JsLogin())
si := public_login.ShowLogin("Login ", public_login.MainLogin(), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, si)
}
func (lh *LoginHandler) HandleSignIn(c echo.Context) error {
logger, _ := zap.NewProduction()
// host := c.Request().Host
username := c.FormValue("username")
password := c.FormValue("password")
defer logger.Sync()
logger.Info("Params", zap.Any("username", username), zap.Any("pass", password))
resp, err := lh.LoginService.MultiSignInV2(username, password)
if err != nil {
defer logger.Sync()
logger.Info("Error", zap.Any("error multi signin", err))
si := public_login.ShowLogin("Login", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, si)
}
if resp.Status == "ERR" {
defer logger.Sync()
logger.Info("Error", zap.Any("ERR", resp.Status))
si := public_login.ShowLogin("Login", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, si)
}
defer logger.Sync()
logger.Info("valid", zap.Any("value", resp))
var url string
switch resp.Data.Type {
case "cpone":
url = "/one-ui"
case "pic":
url = "/corp/dashboard_pic"
case "patient":
url = "/corp/dashboard_pat"
default:
url = "/one-ui"
}
user, err := json.Marshal(resp.Data.User)
if err != nil {
defer logger.Sync()
logger.Info("Error", zap.Error(err))
si := public_login.ShowLogin("Login ", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, si)
}
cookie := new(http.Cookie)
cookie.Name = "token"
cookie.Value = resp.Data.Token
cookie.Path = "/"
cookie.HttpOnly = true
c.SetCookie(cookie)
userString := string(user)
store := `
<script>
console.log("store token");
const token = "` + resp.Data.Token + `";
const user = JSON.stringify(` + userString + `);
localStorage.setItem("token", token);
localStorage.setItem("user", user);
htmx.on("htmx:configRequest", (e)=> {
e.detail.headers["Authorization"] = "Bearer ` + resp.Data.Token + `"
})
setTimeout(() => {
htmx.ajax('GET', '/login/redirect?url=` + url + `')
}, 200)
</script>
`
c.Response().Header().Set("HX-Trigger", "script")
return c.String(http.StatusOK, store)
}
func (lh *LoginHandler) HandleRedirect(c echo.Context) error {
logger, _ := zap.NewProduction()
url := c.QueryParam("url")
token := c.Request().Header.Get("Authorization")
logger.Info("params", zap.Any("url", url), zap.Any("token", token))
c.Response().Header().Set("HX-Redirect", url)
return c.String(http.StatusOK, url)
}
func (lh *LoginHandler) HandleSignOut(c echo.Context) error {
logger, _ := zap.NewProduction()
logger.Info("Logout")
expire := time.Now().Add(-7 * 24 * time.Hour)
cookie := new(http.Cookie)
cookie.Name = "token"
cookie.Value = ""
cookie.Path = "/"
cookie.Expires = expire
cookie.HttpOnly = true
c.SetCookie(cookie)
ret := `
<script>
console.log("signout")
localStorage.removeItem("token")
localStorage.removeItem("user")
setTimeout(() => {
window.location.replace("/login");
}, 200)
</script>
`
c.Response().Header().Set("HX-Trigger", "script")
return c.String(http.StatusOK, ret)
}
func (lh *LoginHandler) HandleAutoLoginPage(c echo.Context) error {
userToken := c.Get("user").(*jwt.Token)
token := userToken.Raw
claims := userToken.Claims.(jwt.MapClaims)
userGroup := claims["M_UserGroupDashboard"].(string)
cookie := new(http.Cookie)
cookie.Name = "token"
cookie.Value = token
cookie.Path = "/"
cookie.HttpOnly = true
c.SetCookie(cookie)
var url string
switch userGroup {
case "cpone":
url = "/one-ui"
case "pic":
url = "/corp/dashboard_pic"
case "patient":
url = "/corp/dashboard_pat"
default:
url = "/one-ui"
}
redirect := `
<script>
setTimeout(() => {
htmx.ajax('GET', '/login/redirect?url=` + url + `', {
headers: {
Authorization: 'Bearer ` + token + `'
}
})
}, 200)
</script>
`
c.Response().Header().Set("HX-Trigger", "script")
return c.String(http.StatusOK, redirect)
}
func (lh *LoginHandler) HandleSignInV2(c echo.Context) error {
logger, _ := zap.NewProduction()
username := c.FormValue("username")
password := c.FormValue("password")
defer logger.Sync()
utype, err := lh.LoginService.CheckIsAccountCpone(username)
if err != nil {
logger.Info("[ERROR]", zap.Any("error check type account : ", err))
si := public_login.ShowLogin("Login", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, si)
}
// logger.Info("[INFO]", zap.Any("type account : ", utype))
// if utype == "cpone" {
if utype != "" {
url := "/one-ui/test/vuex/one-login-v2"
c.Response().Header().Set("HX-Redirect", url)
return c.String(http.StatusOK, utype)
}
// resp, err := lh.LoginService.MultiSignIn(username, password, "")
resp, err := lh.LoginService.MultiSignInV2(username, password)
if err != nil {
logger.Info("[ERROR]", zap.Any("error multi sigin: ", err))
si := public_login.ShowLogin("Login", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, si)
}
if resp.Status == "ERR" {
logger.Info("[ERROR]", zap.Any("error: ", resp.Status))
si := public_login.ShowLogin("Login", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, si)
}
defer logger.Sync()
var url string
switch resp.Data.Type {
case "pic":
url = "/corp/dashboard_pic"
case "patient":
url = "/corp/dashboard_pat"
default:
url = "/one-ui"
}
user, err := json.Marshal(resp.Data.User)
if err != nil {
logger.Info("Error", zap.Error(err))
si := public_login.ShowLogin("Login ", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, si)
}
cookie := new(http.Cookie)
cookie.Name = "token"
cookie.Value = resp.Data.Token
cookie.Path = "/"
cookie.HttpOnly = true
c.SetCookie(cookie)
user_str := string(user)
store := `
<script>
console.log("store token");
const token = "` + resp.Data.Token + `";
const user = JSON.stringify(` + user_str + `);
localStorage.setItem("token", token);
localStorage.setItem("user", user);
htmx.on("htmx:configRequest", (e)=> {
e.detail.headers["Authorization"] = "Bearer ` + resp.Data.Token + `"
})
setTimeout(() => {
htmx.ajax('GET', '/login/redirect?url=` + url + `')
}, 200)
</script>
`
c.Response().Header().Set("HX-Trigger", "script")
return c.String(http.StatusOK, store)
}
func (lh *LoginHandler) HandleSignInV3(c echo.Context) error {
logger, _ := zap.NewProduction()
username := c.FormValue("username")
password := c.FormValue("password")
// check is type cpone and exist in location
resp, err := lh.LoginService.MultiSignInV2(username, password)
if err != nil {
logger.Error("[ERROR]", zap.Any("multi signin process: ", err))
ret := public_login.ShowLogin("Login", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, ret)
}
if resp.Status == "ERR" {
logger.Error("[ERROR]", zap.Any("response signin process error: ", resp.Status))
ret := public_login.ShowLogin("Login", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, ret)
}
defer logger.Sync()
var url string
switch resp.Data.Type {
case "pic":
url = "/corp/dashboard_pic"
case "patient":
url = "/corp/dashboard_pat"
default:
url = "/one-ui"
}
user, err := json.Marshal(resp.Data.User)
if err != nil {
logger.Error("[ERROR]", zap.Any("process marshal response user", err))
ret := public_login.ShowLogin("Login", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
return utils.View(c, ret)
}
cookie := new(http.Cookie)
cookie.Name = "token"
cookie.Value = resp.Data.Token
cookie.Path = "/"
cookie.HttpOnly = true
c.SetCookie(cookie)
user_str := string(user)
// logger.Info("[INFO]", zap.Any("user data ", user_str))
store := `
<script>
console.log("store token");
const token = "` + resp.Data.Token + `";
const user = JSON.stringify(` + user_str + `);
localStorage.setItem("token", token);
localStorage.setItem("user", user);
htmx.on("htmx:configRequest", (e)=> {
e.detail.headers["Authorization"] = "Bearer ` + resp.Data.Token + `"
})
setTimeout(() => {
htmx.ajax('GET', '/login/redirect?url=` + url + `')
}, 200)
</script>
`
c.Response().Header().Set("HX-Trigger", "script")
return c.String(http.StatusOK, store)
}

View File

@@ -1,16 +0,0 @@
package public_handlers
import (
customtoastv2 "cpone/component/toastbootstrap"
"cpone/utils"
"github.com/labstack/echo/v4"
)
func HandlerHideToast(c echo.Context) error {
toastComponent := customtoastv2.CustomToastV2Hide()
si := toastComponent
return utils.View(c, si)
}

View File

@@ -1,15 +1,12 @@
package handlers
import (
"cpone/auth"
client_handlers "cpone/handlers/client"
corporate_handlers "cpone/handlers/corporate"
mcu_corporate_handlers "cpone/handlers/corporate/mcudetail"
dev_handlers "cpone/handlers/dev"
public_handlers "cpone/handlers/public"
client_services "cpone/services/client"
corporate_services "cpone/services/corporate"
mcu_corporate_services "cpone/services/corporate/mcudetail"
dev_services "cpone/services/dev"
public_services "cpone/services/public"
@@ -19,10 +16,10 @@ import (
)
func SetupRoutes(app *echo.Echo, h *dev_handlers.UserHandler) {
// group := app.Group("/user")
group := app.Group("/user")
// group.GET("", h.HandlerShowUsers)
// group.GET("/details/:id", h.HandlerShowUserById)
group.GET("", h.HandlerShowUsers)
group.GET("/details/:id", h.HandlerShowUserById)
}
@@ -64,30 +61,13 @@ func SetupRoutesEmployee(app *echo.Echo, e *dev_handlers.EmployeeHandler) {
func SetupRoutesProject(app *echo.Echo) {
}
func SetupRoutesPublic(app *echo.Echo, appStore db.AppStore) {
public := app.Group("/")
l := public_services.NewServicesLandingPage(public_services.LandingPage{}, appStore)
lh := public_handlers.NewLandingPageHandler(l)
public.GET("landingpage", lh.ShowLandingPage)
public.GET("home", lh.ShowLandingPage)
public.GET("home/login", lh.HandleBtnLogin)
public.GET("home/hidetoast", public_handlers.HandlerHideToast)
loginServ := public_services.NewServicesLogin(appStore)
loginHadlr := public_handlers.NewLoginHandler(loginServ)
public.GET("login", loginHadlr.HandlerShowLogin)
// ver cpone
// public.POST("login/signin", loginHadlr.HandleSignIn)
// ver devcpone
public.POST("login/signin", loginHadlr.HandleSignInV3)
public.GET("login/redirect", loginHadlr.HandleRedirect)
public.GET("login/signout", loginHadlr.HandleSignOut)
public.POST("login/autologin", loginHadlr.HandleAutoLoginPage, auth.IsAlreadyLogin)
loginHdr := public_handlers.NewLoginHandler(l)
public.GET("login", loginHdr.HandlerShowLogin)
// kartu kontrol
publicKartuKontrolServices := public_services.NewServicesKartuKontrol(appStore)
@@ -109,95 +89,17 @@ func SetupRoutesPublic(app *echo.Echo, appStore db.AppStore) {
// redirect to survey mcu page
public.GET("redirectsurveymcu", publicKartuKontrolhandlers.HandlerRedirectToSurveyMcu)
}
func SetupRoutesCorporate(app *echo.Echo, appStore db.AppStore) {
corp := app.Group("/corp", auth.IsLoggedIn)
// corp := app.Group("/corp")
public := app.Group("/corp")
l := corporate_services.NewServicesCompany(appStore)
lh := corporate_handlers.NewCompanyHandler(l)
corp.GET("/company", lh.ShowCompany)
// ganti password
accountService := corporate_services.NewAccountService(appStore)
accountHandler := corporate_handlers.NewAccountHandler(accountService)
corp.POST("/dashboard_pic/tutupgantipassword", accountHandler.HandleCloseChangePassword)
corp.POST("/dashboard_pic/gantipassword", accountHandler.HandleChangePassword)
// dashboard_pic
dashbrdPicServ := corporate_services.NewDashboardPicServices(appStore)
dashbrdPicHandl := corporate_handlers.NewDashboardPicHandler(dashbrdPicServ)
corp.GET("/dashboard_pic", dashbrdPicHandl.HandleShowEmployeeAnalyticScreen)
corp.GET("/dashboard_pic/changepage", dashbrdPicHandl.HandlePagination)
corp.GET("/dashboard_pic/filter", dashbrdPicHandl.HandleFilter)
corp.GET("/dashboard_pic/click/:id", dashbrdPicHandl.HandleToDetail)
// mcu detail
mcudServ := corporate_services.NewMcuDetailServices(appStore)
mcudHandr := corporate_handlers.NewMcuDetailHandler(mcudServ)
corp.GET("/dashboard_pic/detail/:id", mcudHandr.HandlerShowMcuDetailScreen)
// tab kepesertaan
kepesertaanSrvs := mcu_corporate_services.NewTabKepersertaanService(appStore)
kepesertaanHdlr := mcu_corporate_handlers.NewTabKepersertaanHandler(kepesertaanSrvs)
corp.GET("/dashboard_pic/detail/:id/tabkepesertaan", kepesertaanHdlr.HandleShowTabKepesertaan)
// tab kelainan global
kelainanglobalSrvs := mcu_corporate_services.NewTabKelainanGlobalServices(appStore)
kelainanglobalHdlr := mcu_corporate_handlers.NewTabKelainanGlobalHandler(kelainanglobalSrvs)
corp.GET("/dashboard_pic/detail/:id/tabkelainanglobal", kelainanglobalHdlr.HandleShowTabKelainanGlobal)
// tab kelainan lab
kelainanlabSrvs := mcu_corporate_services.NewTabKelainanLabServices(appStore)
kelainanlabHdlr := mcu_corporate_handlers.NewTabKelainanLabHandler(kelainanlabSrvs)
corp.GET("/dashboard_pic/detail/:id/tabkelainanlab", kelainanlabHdlr.HandleShowTabKelainanLab)
// tab kelainan non lab
kelnonlabSrvs := mcu_corporate_services.NewTabKelainanNonLabServices(appStore)
kelnonlabHdlr := mcu_corporate_handlers.NewTabKelainanNonLabHandler(kelnonlabSrvs)
corp.GET("/dashboard_pic/detail/:id/tabkelainannonlab", kelnonlabHdlr.HandleShowTabKelainanNonLab)
// tab kelainan fisik
kelainanfisikSrvs := mcu_corporate_services.NewTabKelainanFisikServices(appStore)
kelainanfisikHdlr := mcu_corporate_handlers.NewTabKelainanFisikHandler(kelainanfisikSrvs)
corp.GET("/dashboard_pic/detail/:id/tabkelainanfisik", kelainanfisikHdlr.HandleShowTabKelainanFisik)
// tab kesimpulan
kesimpulanSrv := mcu_corporate_services.NewTabKesimpulanServices(appStore)
kesimpulanHdr := mcu_corporate_handlers.NewTabKesimpulanHandler(kesimpulanSrv)
corp.GET("/dashboard_pic/detail/:id/tabkesimpulan", kesimpulanHdr.HandleShowTabKesimpulanScreen)
// tab daftar peserta
daftarpesertaServ := mcu_corporate_services.NewTabDaftarPesertaServices(appStore)
daftarpesertaHandl := mcu_corporate_handlers.NewTabDaftarPesertaHandlers(daftarpesertaServ)
corp.GET("/dashboard_pic/detail/:id/tabdaftarpeserta", daftarpesertaHandl.HandleShowTabDaftarPeserta)
corp.GET("/dashboard_pic/detail/:id/tabdaftarpeserta/changepage", daftarpesertaHandl.HandlePagination)
corp.GET("/dashboard_pic/detail/:id/tabdaftarpeserta/openreport", daftarpesertaHandl.HandleOpenReportDialog)
corp.POST("/dashboard_pic/detail/:id/tabdaftarpeserta/dialoggenpass", daftarpesertaHandl.HandleDialogGenPass)
corp.POST("/dashboard_pic/detail/:id/tabdaftarpeserta/closegenpass", daftarpesertaHandl.HandleCloseDialogGenPass)
corp.GET("/dashboard_pic/detail/:id/tabdaftarpeserta/openviewakun", daftarpesertaHandl.HandleOpenViewAkun)
corp.POST("/dashboard_pic/detail/:id/tabdaftarpeserta/closeviewakun", daftarpesertaHandl.HandleCloseViewAkun)
corp.POST("/dashboard_pic/detail/:id/tabdaftarpeserta/viewakun", daftarpesertaHandl.HandleAkun)
corp.POST("/dashboard_pic/detail/:id/tabdaftarpeserta/reload", daftarpesertaHandl.HandleContentReload)
corp.GET("/dashboard_pic/detail/:id/tabdaftarpeserta/opendetail", daftarpesertaHandl.HandleOpenDetail)
corp.GET("/dashboard_pic/detail/:id/tabdaftarpeserta/filter", daftarpesertaHandl.HandleFilter)
corp.GET("/dashboard_pic/detail/:id/tabdaftarpeserta/openattachment", daftarpesertaHandl.HandleOpenAttachmentFile)
// tab keuangan
keuanganService := mcu_corporate_services.NewTabKeuanganServices(appStore)
keuanganHandler := mcu_corporate_handlers.NewTabKeuanganHandler(keuanganService)
corp.GET("/dashboard_pic/detail/:id/tabkeuangan", keuanganHandler.HandleShowTabKeuangan)
corp.GET("/dashboard_pic/detail/:id/tabkeuangan/changepage", keuanganHandler.HandleChangePage)
patienServices := corporate_services.NewPatientServices(appStore)
patientHandler := corporate_handlers.NewPatientHandler(patienServices)
corp.GET("/dashboard_pat", patientHandler.HandleShowPatient)
corp.GET("/dashboard_pat/content", patientHandler.LoadLocalData)
corp.GET("/dashboard_pat/changepage", patientHandler.HandleChangePage)
corp.GET("/dashboard_pat/open", patientHandler.HandleOpenReport)
public.GET("/company", lh.ShowCompany)
patientHandler := corporate_handlers.NewPatientHandler(l)
public.GET("/patient", patientHandler.ShowPatient)
}
func SetupRoutesClient(app *echo.Echo, appStore db.AppStore) {
public := app.Group("/client", auth.IsLoggedIn)
public := app.Group("/client")
lpanel := client_services.NewServicesMdPanel(appStore)
lhpanel := client_handlers.NewMdPanelHandler(lpanel)
@@ -330,18 +232,6 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) {
// clientgroup.GET("/usergroup/edit", mastermenuusergroupHandler.ChangeFormEdit)
// clientgroup.GET("/usergroup/pagination", mastermenuusergroupHandler.HandleChangePage)
// employee analytic
devEmplAnaServices := dev_services.NewEmployeeAnalyticServices(appStore)
devEmplAnaHandler := dev_handlers.NewEmployeeAnalyticHandler(devEmplAnaServices)
dev.GET("/dashboard_pic", devEmplAnaHandler.HandleShowEmployeeAnalyticScreen)
dev.GET("/dashboard_pic/changepage", devEmplAnaHandler.HandlePagination)
dev.GET("/dashboard_pic/filter", devEmplAnaHandler.HandleFilter)
dev.GET("/dashboard_pic/click/:id", devEmplAnaHandler.HandleIntoDetail)
devDetailMcuService := dev_services.NewDetailMcuServices(appStore)
devDetailMcuHandler := dev_handlers.NewDetailMcuHandler(devDetailMcuService)
dev.GET("/detail/:id", devDetailMcuHandler.HandleShowDetailMcuScreen)
// group result
devGRServices := dev_services.NewServicesGroupResult(appStore)
devGRhandlers := dev_handlers.NewGroupResultHandler(devGRServices)
@@ -388,6 +278,20 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) {
dev.POST("/md/samplestation/edit", devMDSampleStationHandlers.HandleEditMDSS)
dev.POST("/md/samplestation/closeeditform", devMDSampleStationHandlers.HandleCloseEditForm)
// md nonlab template
devMDNonlabTemplateServices := dev_services.NewMDNonlabTemplateServices(appStore)
devMDNonlabTemplateHandlers := dev_handlers.NewMDNonLabTemplateHandler(devMDNonlabTemplateServices)
dev.GET("/md/nonlabtemplate", devMDNonlabTemplateHandlers.HandleShowNonlabTemplateScreen)
dev.GET("/md/nonlabtemplate/filter", devMDNonlabTemplateHandlers.HandleFilterNonlabTemplate)
dev.GET("/md/nonlabtemplate/changepage", devMDNonlabTemplateHandlers.HandleNonlabTempltPagination)
dev.GET("/md/nonlabtemplate/opendelete", devMDNonlabTemplateHandlers.HandleOpenFormDelete)
dev.POST("/md/nonlabtemplate/closedeleteform", devMDNonlabTemplateHandlers.HandleCloseFormDelete)
dev.POST("/md/nonlabtemplate/delete", devMDNonlabTemplateHandlers.HandleDelete)
dev.POST("/md/nonlabtemplate/simpanama", devMDNonlabTemplateHandlers.HandleSimpanNama)
dev.POST("/md/nonlabtemplate/closeaddform", devMDNonlabTemplateHandlers.HandleCloseFormAdd)
dev.POST("/md/nonlabtemplate/adddetail", devMDNonlabTemplateHandlers.HandleAddDetail)
dev.POST("/md/nonlabtemplate/deletedetail", devMDNonlabTemplateHandlers.HandleDeleteDetail)
// masterdata nat unit
devMdNatUnitServices := dev_services.NewMdNatUnitServices(appStore)
devMdNatUnitHandlers := dev_handlers.NeWMdNatUnitHandler(devMdNatUnitServices)
@@ -431,14 +335,4 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) {
dev.GET("/md/bahan/opendelete", devMdBahanHandlers.HandleOpenDeleteMdBahan)
dev.POST("/md/bahan/closedeleteform", devMdBahanHandlers.HandleCloseDeleteMdBahan)
dev.POST("/md/bahan/delete", devMdBahanHandlers.HandleDeleteMdBahan)
// Kesimpulan
devKesimpulanServices := dev_services.NewServicesKesimpulan(appStore)
devKesimpuanHandler := dev_handlers.NewKesimpulanHandler(devKesimpulanServices)
dev.GET("/kesimpulan/:id", devKesimpuanHandler.HandleShowKesimpulanScreen)
// mcu daftar peserta
devMcuDaftarPesertaServices := dev_services.NewMcuDaftarPesertaServices(appStore)
devMcuDaftarPesertaHandler := dev_handlers.NewMcuDaftarPeserta(devMcuDaftarPesertaServices)
dev.GET("/mcudaftarpeserta/:id", devMcuDaftarPesertaHandler.HandleGetMcuDaftarPeserta)
}

View File

@@ -1,197 +0,0 @@
package layout
templ DashboardLayout(
title string,
css templ.Component,
js templ.Component,
navbaruser templ.Component,
sidebaruser templ.Component,
) {
<!DOCTYPE html>
<html lang="en">
<!--begin::Head-->
<head>
<base href="/"/>
<meta charset="utf-8"/>
<title>Company Portal | { title }</title>
<meta name="description" content="Company Portal"/>
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<!--begin::Fonts-->
<link
rel="stylesheet"
href="assets/css/googlefont/poppins.css"
/>
<!--end::Fonts-->
<!--begin::Page Custom Styles(used by this page)-->
<link
href="assets/css/pages/login/login-1.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Page Custom Styles-->
<!--begin::Global Theme Styles(used by all pages)-->
<link
href="assets/plugins/global/plugins.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/plugins/custom/prismjs/prismjs.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css"/>
<!--end::Global Theme Styles-->
<!--begin::Layout Themes(used by all pages)-->
<link
href="assets/css/themes/layout/header/base/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/header/menu/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/brand/dark.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/aside/dark.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Layout Themes-->
<link
rel="shortcut icon"
href="asset-corporate-portal/media/logo/logo-small.jpg"
/>
<!--end::Layout Themes SAS-->
<link
href="asset-corporate-portal/css/sas.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/publicsans.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/roboto.css"
/>
<!-- slick -->
<link
rel="stylesheet"
type="text/css"
href="assets/css/slick/slick.css"
/>
<link
rel="stylesheet"
type="text/css"
href="assets/css/slick/slick-theme.css"
/>
@css
</head>
<!--end::Head-->
<!--begin::Body-->
<body id="kt_body" class="header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading bg-white">
<script src="assets/js/htmx/htmx.min.js"></script>
<!--start::Navbar Mobile-->
<div id="kt_header_mobile" class="header-mobile align-items-center header-mobile-fixed ">
<!--begin::Logo-->
<a href="index.html">
<img alt="Logo" src="asset-corporate-portal/media/logo/logo.png" style="object-fit: contain;height: 4vh;"/>
</a>
<!--end::Logo-->
<!--begin::Toolbar-->
<div class="d-flex align-items-center">
<!--begin::Topbar Mobile Toggle-->
<button class="btn btn-hover-text-primary p-0 ml-2" id="kt_header_mobile_topbar_toggle">
<span class="svg-icon svg-icon-xl">
<!--begin::Svg Icon | path:/assets/media/svg/icons/General/User.svg-->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="24px"
height="24px"
viewBox="0 0 24 24"
version="1.1"
>
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<polygon points="0 0 24 0 24 24 0 24"></polygon>
<path
d="M12,11 C9.790861,11 8,9.209139 8,7 C8,4.790861 9.790861,3 12,3 C14.209139,3 16,4.790861 16,7 C16,9.209139 14.209139,11 12,11 Z"
fill="#000000"
fill-rule="nonzero"
opacity="0.3"
></path>
<path
d="M3.00065168,20.1992055 C3.38825852,15.4265159 7.26191235,13 11.9833413,13 C16.7712164,13 20.7048837,15.2931929 20.9979143,20.2 C21.0095879,20.3954741 20.9979143,21 20.2466999,21 C16.541124,21 11.0347247,21 3.72750223,21 C3.47671215,21 2.97953825,20.45918 3.00065168,20.1992055 Z"
fill="#000000"
fill-rule="nonzero"
></path>
</g>
</svg><!--end::Svg Icon-->
</span>
</button>
<!--end::Topbar Mobile Toggle-->
</div>
<!--end::Toolbar-->
</div>
<!--start::Navbar Mobile-->
<!--start::Navbar Laptop With Sidebar-->
<div class="mb-24 mt-8" style="padding-left: 10vw; padding-right: 10vw;">
<div class="align-item-center">
@navbaruser
</div>
<div class="mt-16">
// toast
<div class="toast-top-right" id="container-system-notification" style="position: absolute; top: 1vh; right: 0vw; z-index: 999;">
<!-- toast success -->
<div
id="notification-001"
class="toast fade hide"
role="alert"
aria-live="assertive"
aria-atomic="true"
>
<div class="toast-header bg-success text-white">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ep mr-2 icon-xl" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 1024 1024" data-icon="ep:success-filled"><path fill="currentColor" d="M512 64a448 448 0 1 1 0 896a448 448 0 0 1 0-896m-55.808 536.384l-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"></path></svg>
<strong class="mr-auto">Success</strong>
<small class="text-muted text-white">just now</small>
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="toast-body bg-success-transparent">
This is a success toast.
</div>
</div>
</div>
{ children... }
</div>
</div>
<!--end::Navbar Laptop With Sidebar-->
@sidebaruser
<!--begin::Global Config(global config for global JS scripts)-->
<script src="asset-corporate-portal/js/ktappsetting.js"></script>
<!--end::Global Config-->
<!--begin::Global Theme Bundle(used by all pages)-->
<script src="assets/plugins/global/plugins.bundle.js"></script>
<script src="assets/plugins/custom/prismjs/prismjs.bundle.js"></script>
<script src="assets/js/scripts.bundle.js"></script>
<!--end::Global Theme Bundle-->
<script src="assets/js/iconify/iconify.min.js"></script>
// bootstrap datepicker
<script src="assets/js/pages/crud/forms/widgets/bootstrap-datepicker.js"></script>
@js
<!--end::Page Scripts-->
</body>
</html>
}

View File

@@ -1,94 +0,0 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package layout
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
func DashboardLayout(
title string,
css templ.Component,
js templ.Component,
navbaruser templ.Component,
sidebaruser templ.Component,
) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!doctype html><html lang=\"en\"><!--begin::Head--><head><base href=\"/\"><meta charset=\"utf-8\"><title>Company Portal | ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(title)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `layout\layout_dashboard.templ`, Line: 16, Col: 34}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</title><meta name=\"description\" content=\"Company Portal\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"><!--begin::Fonts--><link rel=\"stylesheet\" href=\"assets/css/googlefont/poppins.css\"><!--end::Fonts--><!--begin::Page Custom Styles(used by this page)--><link href=\"assets/css/pages/login/login-1.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Page Custom Styles--><!--begin::Global Theme Styles(used by all pages)--><link href=\"assets/plugins/global/plugins.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/plugins/custom/prismjs/prismjs.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/style.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Global Theme Styles--><!--begin::Layout Themes(used by all pages)--><link href=\"assets/css/themes/layout/header/base/light.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/header/menu/light.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/brand/dark.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/aside/dark.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Layout Themes--><link rel=\"shortcut icon\" href=\"asset-corporate-portal/media/logo/logo-small.jpg\"><!--end::Layout Themes SAS--><link href=\"asset-corporate-portal/css/sas.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/publicsans.css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/roboto.css\"><!-- slick --><link rel=\"stylesheet\" type=\"text/css\" href=\"assets/css/slick/slick.css\"><link rel=\"stylesheet\" type=\"text/css\" href=\"assets/css/slick/slick-theme.css\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = css.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</head><!--end::Head--><!--begin::Body--><body id=\"kt_body\" class=\"header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading bg-white\"><script src=\"assets/js/htmx/htmx.min.js\"></script><!--start::Navbar Mobile--><div id=\"kt_header_mobile\" class=\"header-mobile align-items-center header-mobile-fixed \"><!--begin::Logo--><a href=\"index.html\"><img alt=\"Logo\" src=\"asset-corporate-portal/media/logo/logo.png\" style=\"object-fit: contain;height: 4vh;\"></a><!--end::Logo--><!--begin::Toolbar--><div class=\"d-flex align-items-center\"><!--begin::Topbar Mobile Toggle--><button class=\"btn btn-hover-text-primary p-0 ml-2\" id=\"kt_header_mobile_topbar_toggle\"><span class=\"svg-icon svg-icon-xl\"><!--begin::Svg Icon | path:/assets/media/svg/icons/General/User.svg--><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" version=\"1.1\"><g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><polygon points=\"0 0 24 0 24 24 0 24\"></polygon> <path d=\"M12,11 C9.790861,11 8,9.209139 8,7 C8,4.790861 9.790861,3 12,3 C14.209139,3 16,4.790861 16,7 C16,9.209139 14.209139,11 12,11 Z\" fill=\"#000000\" fill-rule=\"nonzero\" opacity=\"0.3\"></path> <path d=\"M3.00065168,20.1992055 C3.38825852,15.4265159 7.26191235,13 11.9833413,13 C16.7712164,13 20.7048837,15.2931929 20.9979143,20.2 C21.0095879,20.3954741 20.9979143,21 20.2466999,21 C16.541124,21 11.0347247,21 3.72750223,21 C3.47671215,21 2.97953825,20.45918 3.00065168,20.1992055 Z\" fill=\"#000000\" fill-rule=\"nonzero\"></path></g></svg><!--end::Svg Icon--></span></button><!--end::Topbar Mobile Toggle--></div><!--end::Toolbar--></div><!--start::Navbar Mobile--><!--start::Navbar Laptop With Sidebar--><div class=\"mb-24 mt-8\" style=\"padding-left: 10vw; padding-right: 10vw;\"><div class=\"align-item-center\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = navbaruser.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"mt-16\"><div class=\"toast-top-right\" id=\"container-system-notification\" style=\"position: absolute; top: 1vh; right: 0vw; z-index: 999;\"><!-- toast success --><div id=\"notification-001\" class=\"toast fade hide\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\"><div class=\"toast-header bg-success text-white\"><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-hidden=\"true\" role=\"img\" class=\"iconify iconify--ep mr-2 icon-xl\" width=\"1em\" height=\"1em\" preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 1024 1024\" data-icon=\"ep:success-filled\"><path fill=\"currentColor\" d=\"M512 64a448 448 0 1 1 0 896a448 448 0 0 1 0-896m-55.808 536.384l-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z\"></path></svg> <strong class=\"mr-auto\">Success</strong> <small class=\"text-muted text-white\">just now</small> <button type=\"button\" class=\"ml-2 mb-1 close\" data-dismiss=\"toast\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button></div><div class=\"toast-body bg-success-transparent\">This is a success toast.\r</div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div><!--end::Navbar Laptop With Sidebar-->")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = sidebaruser.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--begin::Global Config(global config for global JS scripts)--><script src=\"asset-corporate-portal/js/ktappsetting.js\"></script><!--end::Global Config--><!--begin::Global Theme Bundle(used by all pages)--><script src=\"assets/plugins/global/plugins.bundle.js\"></script><script src=\"assets/plugins/custom/prismjs/prismjs.bundle.js\"></script><script src=\"assets/js/scripts.bundle.js\"></script><!--end::Global Theme Bundle--><script src=\"assets/js/iconify/iconify.min.js\"></script><script src=\"assets/js/pages/crud/forms/widgets/bootstrap-datepicker.js\"></script>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = js.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--end::Page Scripts--></body></html>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -3,6 +3,18 @@ package layout
// LAYOUT PLAYGROUND
templ PlaygroundLayout(title string, css templ.Component, js templ.Component) {
<!DOCTYPE html>
<!--
Template Name: Metronic - Bootstrap 4 HTML, React, Angular 9 & VueJS Admin Dashboard Theme
Author: KeenThemes
Website: http://www.keenthemes.com/
Contact: support@keenthemes.com
Follow: www.twitter.com/keenthemes
Dribbble: www.dribbble.com/keenthemes
Like: www.facebook.com/keenthemes
Purchase: https://1.envato.market/EA4JP
Renew Support: https://1.envato.market/EA4JP
License: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.
-->
<html lang="en">
<!--begin::Head-->
<head>

View File

@@ -24,14 +24,14 @@ func PlaygroundLayout(title string, css templ.Component, js templ.Component) tem
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!doctype html><html lang=\"en\"><!--begin::Head--><head><base href=\"/\"><meta charset=\"utf-8\"><title>Company Portal | ")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!doctype html><!--\r\n\t\tTemplate Name: Metronic - Bootstrap 4 HTML, React, Angular 9 & VueJS Admin Dashboard Theme\r\n\t\tAuthor: KeenThemes\r\n\t\tWebsite: http://www.keenthemes.com/\r\n\t\tContact: support@keenthemes.com\r\n\t\tFollow: www.twitter.com/keenthemes\r\n\t\tDribbble: www.dribbble.com/keenthemes\r\n\t\tLike: www.facebook.com/keenthemes\r\n\t\tPurchase: https://1.envato.market/EA4JP\r\n\t\tRenew Support: https://1.envato.market/EA4JP\r\n\t\tLicense: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.\r\n\t\t--><html lang=\"en\"><!--begin::Head--><head><base href=\"/\"><meta charset=\"utf-8\"><title>Company Portal | ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(title)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `layout\playground_layout.templ`, Line: 11, Col: 34}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `layout\playground_layout.templ`, Line: 23, Col: 34}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil {

View File

@@ -1,6 +0,0 @@
package models
type ResponseStatus struct {
Status string `json:"status"`
Message string `json:"message"`
}

View File

@@ -1,177 +0,0 @@
package models
type SeriesData struct {
Value int `json:"value"`
Name string `json:"name"`
}
type Series struct {
Label struct {
Position string `json:"position"`
Formatter string `json:"formatter"`
} `json:"label"`
Name string `json:"name"`
Type string `json:"type"`
Radius []string `json:"radius"`
ItemStyle struct {
BorderRadius int `json:"borderRadius"`
BorderColor string `json:"borderColor"`
BorderWidth int `json:"borderWidth"`
} `json:"itemStyle"`
Data []SeriesData `json:"data"`
Emphasis struct {
ItemStyle struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
} `json:"itemStyle"`
} `json:"emphasis"`
}
type Piechart struct {
Title struct {
Text string `json:"text"`
SubText string `json:"subtext"`
Left string `json:"left"`
} `json:"title"`
Tooltip struct {
Trigger string `json:"trigger"`
} `json:"tooltip"`
Legend struct {
Top string `json:"top"`
Left string `json:"left"`
Orient string `json:"orient"`
Height int `json:"height"`
} `json:"legend"`
Series []Series `json:"series"`
}
type Barchart struct {
Title struct {
Text string `json:"text"`
Left string `json:"left"`
} `json:"title"`
Dataset struct {
Source [][]interface{} `json:"source"`
} `json:"dataset"`
Grid struct {
ContainLabel bool `json:"containLabel"`
} `json:"grid"`
XAxis struct {
Name string `json:"name"`
} `json:"xAxis"`
YAxis struct {
Type string `json:"type"`
} `json:"yAxis"`
VisualMap struct {
Orient string `json:"orient"`
Left string `json:"left"`
Min int `json:"min"`
Max int `json:"max"`
Show bool `json:"show"`
Dimension int `json:"dimension"`
InRange struct {
Color []string `json:"color"`
} `json:"inRange"`
} `json:"visualMap"`
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"`
} `json:"series"`
Tooltip struct {
Trigger string `json:"trigger"`
AxisPointer struct {
Type string `json:"type"`
} `json:"axisPointer"`
} `json:"tooltip"`
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"`
} `json:"graphic"`
}
type BarDataset struct {
Source [][]interface{} `json:"source"`
}
type BarchartV2 struct {
Title struct {
Text string `json:"text"`
Left string `json:"left"`
} `json:"title"`
Dataset struct {
Source [][]interface{} `json:"source"`
} `json:"dataset"`
Grid struct {
ContainLabel bool `json:"containLabel"`
} `json:"grid"`
XAxis struct {
Name string `json:"name"`
Type string `json:"type"`
AxisLabel struct {
Interval int `json:"interval"`
Rotate int `json:"rotate"`
} `json:"axisLabel"`
} `json:"xAxis"`
YAxis struct {
Type string `json:"type"`
Name string `json:"name"`
NameTextStyle struct {
Align string `json:"align"`
} `json:"nameTextStyle"`
NameGap int `json:"nameGap"`
} `json:"yAxis"`
VisualMap struct {
Orient string `json:"orient"`
Left string `json:"left"`
Min int `json:"min"`
Max int `json:"max"`
Dimension int `json:"dimension"`
Show bool `json:"show"`
InRange struct {
Color []string `json:"color"`
} `json:"inRange"`
} `json:"visualMap"`
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"`
} `json:"series"`
Tooltip struct {
Trigger string `json:"trigger"`
AxisPointer struct {
Type string `json:"type"`
} `json:"axisPointer"`
} `json:"tooltip"`
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"`
} `json:"graphic"`
}

View File

@@ -1,11 +0,0 @@
package models
type DashboardPatient struct {
T_OrderHeaderID int `db:"T_OrderHeaderID"`
T_OrderHeaderDate string `db:"T_OrderHeaderDate"`
T_OrderHeaderLabNumber string `db:"T_OrderHeaderLabNumber"`
T_OrderHeaderM_PatientID int `db:"T_OrderHeaderM_PatientID"`
T_OrderHeaderCorporateID int `db:"T_OrderHeaderCorporateID"`
T_OrderHeaderMgm_McuID int `db:"T_OrderHeaderMgm_McuID"`
T_OrderHeaderIsActive string `db:"T_OrderHeaderIsActive"`
}

View File

@@ -1,15 +0,0 @@
package models
type DashboardPic struct {
Mgm_McuID int `db:"Mgm_McuID"`
Mgm_McuLabel string `db:"Mgm_McuLabel"`
Mgm_McuFlagRelasiBayarSendiri string `db:"Mgm_McuFlagRelasiBayarSendiri"`
Mgm_McuBisaTambahPemeriksaan string `db:"Mgm_McuBisaTambahPemeriksaan"`
Mgm_McuCorporateID int `db:"Mgm_McuCorporateID"`
Mgm_McuNumber string `db:"Mgm_McuNumber"`
Mgm_McuNumberNational string `db:"Mgm_McuNumberNational"`
Mgm_McuNote string `db:"Mgm_McuNote"`
Mgm_McuStartDate string `db:"Mgm_McuStartDate"`
Mgm_McuEndDate string `db:"Mgm_McuEndDate"`
Mgm_McuIsActive string `db:"Mgm_McuIsActive"`
}

View File

@@ -1,7 +0,0 @@
package models
type ModelKesimpulanLab struct {
Nomor string `db:"nomor"`
Test string `db:"Test"`
Total string `db:"total"`
}

View File

@@ -1,34 +0,0 @@
package models
type KeuanganModel struct {
F_BillID int `db:"F_BillID"`
F_BillNo string `db:"F_BillNo"`
F_BillCorporateID int `db:"F_BillCorporateID"`
F_BillDueDate string `db:"F_BillDueDate"`
F_BillTotal int `db:"F_BillTotal"`
F_BillUnpaid int `db:"F_BillUnpaid"`
F_BillCreated string `db:"F_BillCreated"`
BillPayment []BillPaymentModel
TotalBillPayment int
}
type BillPaymentModel struct {
F_BillPaymentID int `db:"F_BillPaymentID"`
F_BillPaymentF_BillID int `db:"F_BillPaymentF_BillID"`
F_BillPaymentDate string `db:"F_BillPaymentDate"`
F_BillPaymentNumber string `db:"F_BillPaymentNumber"`
F_BillPaymentAmount float64 `db:"F_BillPaymentAmount"`
}
type TotalOrderHeader struct {
T_OrderHeaderID int `db:"T_OrderHeaderID"`
T_OrderHeaderCorporateID int `db:"T_OrderHeaderCorporateID"`
T_OrderHeaderTotal float64 `db:"T_OrderHeaderTotal"`
T_OrderHeaderCreated string `db:"T_OrderHeaderCreated"`
}
type TotalBillCard struct {
TotalTagihan int
TotalPelunasan int
TotalHutang int
}

View File

@@ -1,91 +0,0 @@
package models
type ResponseApi struct {
Status string `json:"status"`
Data struct {
User struct {
MUserID string `json:"M_UserID"`
MUserEmail string `json:"M_UserEmail"`
MUserUsername string `json:"M_UserUsername"`
MUserGroupDashboard string `json:"M_UserGroupDashboard"`
MUserDefaultTSampleStationID string `json:"M_UserDefaultT_SampleStationID"`
MStaffName string `json:"M_StaffName"`
IsCourier string `json:"is_courier"`
TimeAutologout string `json:"time_autologout"`
IP string `json:"ip"`
Agent string `json:"agent"`
Version string `json:"version"`
LastLogin string `json:"last-login"`
} `json:"user"`
Token string `json:"token"`
Type string `json:"type"`
} `json:"data"`
Message string `json:"message"`
Query string `json:"query"`
DbError struct {
Code int `json:"code"`
Message string `json:"message"`
} `json:"db_error"`
}
type ResponseInvalid struct {
Status string `json:"status"`
Message string `json:"message"`
Query string `json:"query"`
DbError struct {
Code int `json:"code"`
Message string `json:"message"`
} `json:"db_error"`
}
type ResponseValid struct {
Status string `json:"status"`
Data struct {
User struct {
MUserID string `json:"M_UserID"`
MUserEmail string `json:"M_UserEmail"`
MUserUsername string `json:"M_UserUsername"`
MUserGroupDashboard string `json:"M_UserGroupDashboard"`
MUserDefaultTSampleStationID string `json:"M_UserDefaultT_SampleStationID"`
MStaffName string `json:"M_StaffName"`
IsCourier string `json:"is_courier"`
TimeAutologout string `json:"time_autologout"`
IP string `json:"ip"`
Agent string `json:"agent"`
Version string `json:"version"`
LastLogin string `json:"last-login"`
} `json:"user"`
Token string `json:"token"`
Type string `json:"type"`
} `json:"data"`
}
type Response struct {
Status string `json:"status"`
Message string `json:"message"`
Query string `json:"query"`
DbError struct {
Code int `json:"code"`
Message string `json:"message"`
} `json:"db_error"`
Data struct {
User struct {
MUserID string `json:"M_UserID"`
MUserEmail string `json:"M_UserEmail"`
MUserUsername string `json:"M_UserUsername"`
MUserGroupDashboard string `json:"M_UserGroupDashboard"`
MUserDefaultTSampleStationID string `json:"M_UserDefaultT_SampleStationID"`
MStaffName string `json:"M_StaffName"`
MBranchID string `json:"M_BranchID"`
MBranchName string `json:"M_BranchName"`
IsCourier string `json:"is_courier"`
TimeAutologout string `json:"time_autologout"`
IP string `json:"ip"`
Agent string `json:"agent"`
Version string `json:"version"`
LastLogin string `json:"last-login"`
} `json:"user"`
Token string `json:"token"`
Type string `json:"type"`
} `json:"data"`
}

View File

@@ -1,110 +0,0 @@
package models
type ModelMcuDaftarPeserta struct {
T_OrderHeaderID string `db:"T_OrderHeaderID"`
T_OrderHeaderDate string `db:"T_OrderHeaderDate"`
T_OrderHeaderLabNumber string `db:"T_OrderHeaderLabNumber"`
T_OrderHeaderM_PatientAge string `db:"T_OrderHeaderM_PatientAge"`
M_PatientID string `db:"M_PatientID"`
M_PatientNoReg string `db:"M_PatientNoReg"`
M_PatientName string `db:"M_PatientName"`
M_PatientGender string `db:"M_PatientGender"`
JenisKelamin string `db:"jenisKelamin"`
M_PatientDOB string `db:"M_PatientDOB"`
Age string `db:"age"`
AuthPatientEmail string `db:"authPatientEmail"`
AuthPatientIsActive string `db:"authPatientIsActive"`
Test_Paket string `db:"test_paket"`
List_Paket string `db:"list_paket"`
}
type SoResultEntryReportModel struct {
So_ResultEntryID int `db:"So_ResultEntryID"`
So_ResultEntryT_OrderHeaderID int `db:"So_ResultEntryT_OrderHeaderID"`
So_ResultEntryT_OrderDetailID int `db:"So_ResultEntryT_OrderDetailID"`
So_ResultEntryNonlab_TemplateID int `db:"So_ResultEntryNonlab_TemplateID"`
So_ResultEntryNonlab_TemplateName string `db:"So_ResultEntryNonlab_TemplateName"`
Datetime string `db:"Datetime"`
}
type TabViewReportMcu struct {
Name string
Link string
}
type OrderReport struct {
M_OrderReportID int `db:"M_OrderReportID"`
M_OrderReportName string `db:"M_OrderReportName"`
M_OrderReportOrdering int `db:"M_OrderReportOrdering"`
M_OrderReportUrl string `db:"M_OrderReportUrl"`
M_OrderReportIsOrderHeader string `db:"M_OrderReportIsOrderHeader"`
M_OrderReportIsFisikUmum string `db:"M_OrderReportIsFisikUmum"`
M_OrderReportIsActive string `db:"M_OrderReportIsActive"`
Datetime string `db:"Datetime"`
}
type GeneratePasswordResponse struct {
Status string `json:"status"`
Message string `json:"message"`
}
type AuthPatient struct {
AuthPatientID int `db:"authPatientID"`
AuthPatientM_PatientID int `db:"authPatientM_PatientID"`
AuthPatientEmail string `db:"authPatientEmail"`
AuthPatientPassword string `db:"authPatientPassword"`
AuthPatientIsActive string `db:"authPatientIsActive"`
}
type GroupResultOrderModel struct {
Group_ResultID string `db:"Group_ResultID"`
Group_ResultName string `db:"Group_ResultName"`
Group_ResultResumeMcu string `db:"Group_ResultResumeMcu"`
Group_ResultOrderOrder string `db:"Group_ResultOrderOrder"`
Group_ResultUrl string `db:"Group_ResultUrl"`
Group_ResultIsOrderHeader string `db:"Group_ResultIsOrderHeader"`
Datetime string `db:"Datetime"`
}
type PatientMCU struct {
T_OrderHeaderID string `db:"T_OrderHeaderID"`
T_OrderHeaderLabNumber string `db:"T_OrderHeaderLabNumber"`
M_PatientID string `db:"M_PatientID"`
M_PatientName string `db:"M_PatientName"`
Datetime string `db:"Datetime"`
}
type SoRptData struct {
Rpt_name string `db:"rpt_name"`
So_id string `db:"so_id"`
Order_id string `db:"order_id"`
Datetime string `db:"Datetime"`
}
type ResumeMCU struct {
Mcu_ResumeID string `db:"Mcu_ResumeID"`
Datetime string `db:"Datetime"`
}
type DetailPaketMCU struct {
T_OrderDetailOrderT_PacketID string `db:"T_OrderDetailOrderT_PacketID"`
T_OrderDetailOrderT_PacketName string `db:"T_OrderDetailOrderT_PacketName"`
T_TestName string `db:"T_TestName"`
}
type DetailTestMCU struct {
T_OrderDetailOrderT_TestID string `db:"T_OrderDetailOrderT_TestID"`
T_OrderDetailOrderT_TestName string `db:"T_OrderDetailOrderT_TestName"`
}
type TableTestPaket struct {
Nomor int
NamaTest string
NamaPaket string
}
type AttachmentFIle struct {
File_AttachmentID int `db:"File_AttachmentID"`
File_AttachmentFileName string `db:"File_AttachmentFileName"`
Link string
}

View File

@@ -1,10 +0,0 @@
package models
type McuTabModels struct {
Mcu_ImageGrafikGroupResult string `db:"Mcu_ImageGrafikGroupResult"`
Mcu_ImageGrafikGroupMenu string `db:"Mcu_ImageGrafikGroupMenu"`
Mcu_ImageGrafikName string `db:"Mcu_ImageGrafikName"`
Mcu_ImageGrafikJsonRender string `db:"Mcu_ImageGrafikJsonRender"`
TabID string
TabName string
}

View File

@@ -0,0 +1,43 @@
package models
import "github.com/a-h/templ"
type MDNonlabTemplate struct {
NonlabTemplateID int `db:"NonlabTemplateID"`
NonlabTemplateName string `db:"NonlabTemplateName"`
NonlabTemplateFlagFisik string `db:"NonlabTemplateFlagFisik"`
NonlabTemplateIsActive string `db:"NonlabTemplateIsActive"`
NonlabTemplateCreated string `db:"NonlabTemplateCreated"`
NonlabTemplateCreatedUserID string `db:"NonlabTemplateUserID"`
NonlabTemplateLastUpdated string `db:"NonlabTemplateLastUpdated"`
NonlabTemplateLastUpdatedUserID string `db:"NonlabTemplateLastUpdatedUserID"`
NonlabTemplateDelete string `db:"NonlabTemplateDelete"`
NonlabTemplateDeleteUserID string `db:"NonlabTemplateDeleteUserID"`
}
type NonlabTemplateDetail struct {
NonlabTemplateDetailID int `db:"NonlabTemplateDetailID"`
NonlabTemplateDetailNonlabTemplateID int `db:"NonlabTemplateDetailNonlabTemplateID"`
NonlabTemplateDetailCode string `db:"NonlabTemplateDetailCode"`
NonlabTemplateDetailName string `db:"NonlabTemplateDetailName"`
NonlabTemplateDetaiNat_UnitID string `db:"NonlabTemplateDetaiNat_UnitID"`
NonlabTemplateDetailFlagActive string `db:"NonlabTemplateDetailFlagActive"`
NonlabTemplateDetaiM_LangID string `db:"NonlabTemplateDetaiM_LangID"`
NonlabTemplateDetailIsActive string `db:"NonlabTemplateDetailIsActive"`
}
type MDNonlabTemplateForm struct {
IDComponent string
Link string
HxTarget string
HxSwap string
HxInclude string
ModalID string
ModalTitle string
InputID CustomTextFieldv2Prm
InputName CustomTextFieldv2Prm
InputFlag CustomCheckboxv1Prm
DialogBody templ.Component
DialogAction templ.Component
ButtonClose templ.Component
}

View File

@@ -1,7 +0,0 @@
package models
type KelainanFisikDataModel struct {
Test string `db:"test"`
Total int `db:"total"`
Mcu_KelainanClasification string `db:"Mcu_KelainanClasification"`
}

View File

@@ -1,17 +0,0 @@
package models
type KelainanGlobalMCUModel struct {
Test string `db:"Test"`
Total int `db:"total"`
}
type KelainanGlobalFisikModel struct {
Mcu_KelainanName string `db:"Mcu_KelainanName"`
Total int `db:"total"`
}
type KelainanGlobalModel struct {
Mcu_KelainanID string `db:"Mcu_KelainanID"`
Test string `db:"Test"`
Total int `db:"Total"`
}

View File

@@ -1,7 +0,0 @@
package models
type KelainanLabModel struct {
Mcu_KelainanID string `db:"Mcu_KelainanID"`
Mcu_KelainanName string `db:"Test"`
Total int `db:"total"`
}

View File

@@ -1,7 +0,0 @@
package models
type KelNonLabModel struct {
Mcu_KelainanID string `db:"Mcu_KelainanID"`
Test string `db:"Test"`
Total int `db:"total"`
}

View File

@@ -1,16 +0,0 @@
package models
type TotalPesertaModel struct {
Peserta int `db:"peserta"`
Total int `db:"total"`
}
type GenderPesertaModel struct {
M_PatientGender string `db:"M_PatientGender"`
Jumlah int `db:"Jumlah"`
}
type UmurPesertaModel struct {
Umur string `db:"umur"`
Total int `db:"total"`
}

View File

@@ -16,10 +16,6 @@ import (
var Handle *sql.DB
var Handlex *sqlx.DB
// log
var HandleLog *sql.DB
var HandlexLog *sqlx.DB
func InitDB() {
println(config.Data.Get("DBhost"))
if config.Data.Get("DBhost") == "" {
@@ -32,15 +28,6 @@ func InitDB() {
}
Handle = handle
// log handle
handlelog, err := sql.Open("sqlite", config.Data.Get("DBnamelog"))
if err != nil {
// log.Fatalf("🔥 failed to connect to the database: %s", err.Error())
log.Panic(err)
}
HandleLog = handlelog
// log handle
db, err := sqlx.Open("sqlite", config.Data.Get("DBname"))
if err != nil {
@@ -48,16 +35,6 @@ func InitDB() {
}
Handlex = db
// log
dblog, err := sqlx.Open("sqlite", config.Data.Get("DBnamelog"))
if err != nil {
log.Fatal(err)
}
HandlexLog = dblog
// log
} else {
println("mysql")
dsn := config.Data.Get("DBuser") + ":" + config.Data.Get("DBpass") + "@tcp(" + config.Data.Get("DBhost") + ":" + config.Data.Get("DBport") + ")/" + config.Data.Get("DBname")
@@ -73,21 +50,6 @@ func InitDB() {
}
Handle = handle
// log
dsnlog := config.Data.Get("DBuser") + ":" + config.Data.Get("DBpass") + "@tcp(" + config.Data.Get("DBhost") + ":" + config.Data.Get("DBport") + ")/" + config.Data.Get("DBnamelog")
println(dsnlog)
handlelog, err := sql.Open("mysql", dsnlog)
if err != nil {
log.Panic(err)
}
if err = handlelog.Ping(); err != nil {
log.Panic(err)
}
HandleLog = handlelog
// log
// sqlx
db, err := sqlx.Open("mysql", dsn)
@@ -97,16 +59,6 @@ func InitDB() {
Handlex = db
// log
dblog, err := sqlx.Open("mysql", dsnlog)
if err != nil {
log.Fatal(err)
}
HandlexLog = dblog
// log
}
log.Println("🚀 Connected Successfully to the Database")

View File

@@ -1,122 +0,0 @@
package corporate_services
import (
"bytes"
"cpone/db"
"cpone/models"
"cpone/package/config"
"encoding/json"
"io"
"net/http"
)
type AccountService struct {
AccountStore db.AppStore
}
func NewAccountService(aStore db.AppStore) *AccountService {
return &AccountService{
AccountStore: aStore,
}
}
func (as *AccountService) ChangePasswordPIC(host string, token string, currPassword string, newPassword string) (models.ResponseStatus, error) {
var ret models.ResponseStatus
uri := "https://" + config.Data.Get("servername") + "/one-api/mockup/system/menu/change_password_pic"
params, _ := json.Marshal(map[string]string{
"new": newPassword,
"old": currPassword,
"token": token,
})
paramsBody := bytes.NewBuffer(params)
req, err := http.Post(uri, "application/json", paramsBody)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error request change password",
}
return ret, err
}
defer req.Body.Close()
resp, err := io.ReadAll(req.Body)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error read response",
}
return ret, err
}
err = json.Unmarshal(resp, &ret)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error unmarshal response",
}
return ret, err
}
return ret, nil
}
func (as *AccountService) ChangePasswordPAT(token string, currPassword string, newPassword string) (models.ResponseStatus, error) {
var ret models.ResponseStatus
uri := "https://" + config.Data.Get("servername") + "/one-api/mockup/system/menu/change_password_pat"
// params := url.Values{}
// params.Add("new", newPassword)
// params.Add("old", currPassword)
// params.Add("token", token)
// req, err := http.PostForm(uri, params)
// if err != nil {
// ret = models.ResponseStatus{
// Status: "ERR",
// Message: "error request change password",
// }
// return ret, err
// }
// defer req.Body.Close()
params, _ := json.Marshal(map[string]string{
"new": newPassword,
"old": currPassword,
"token": token,
})
paramsBody := bytes.NewBuffer(params)
req, err := http.Post(uri, "application/json", paramsBody)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error request change password",
}
return ret, err
}
defer req.Body.Close()
resp, err := io.ReadAll(req.Body)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error read response",
}
return ret, err
}
err = json.Unmarshal(resp, &ret)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error unmarshal response",
}
return ret, err
}
return ret, nil
}

View File

@@ -1,143 +0,0 @@
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 +0,0 @@
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
}

View File

@@ -1,922 +0,0 @@
package mcu_corporate_services
import (
"bytes"
"cpone/db"
"cpone/models"
"cpone/package/config"
dbx "cpone/package/database"
"database/sql"
"encoding/json"
"errors"
"fmt"
"io"
"math"
"net/http"
"strconv"
"go.uber.org/zap"
)
type TabDaftarPesertaServices struct {
TabDaftarPesertaStore db.AppStore
}
func NewTabDaftarPesertaServices(uStore db.AppStore) *TabDaftarPesertaServices {
return &TabDaftarPesertaServices{
TabDaftarPesertaStore: uStore,
}
}
func (tdps *TabDaftarPesertaServices) GetListDaftarPesertaMCU(id string, currentpage int, rowperpage int) ([]models.ModelMcuDaftarPeserta, int, error) {
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 *,
GROUP_CONCAT(test_paket) as list_paket
FROM (
SELECT
T_OrderHeaderID,
T_OrderHeaderDate,
IFNULL(T_OrderHeaderLabNumber, 0) AS 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,
DATE_FORMAT(M_PatientDOB, '%d %M %Y') AS M_PatientDOB,
FLOOR(DATEDIFF(CURDATE(), M_PatientDOB)/ 365.25) AS age,
IFNULL(authPatientEmail, "none") AS authPatientEmail,
IFNULL(authPatientIsActive, "N") AS authPatientIsActive,
CASE
WHEN T_OrderDetailOrderIsPacket = 'Y' THEN T_OrderDetailOrderT_PacketName
ELSE T_OrderDetailOrderT_TestName
END AS test_paket
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
JOIN t_orderdetailorder ON T_OrderDetailOrderT_OrderHeaderID = T_OrderHeaderID
AND T_OrderDetailOrderIsActive = 'Y'
LEFT JOIN auth_patient ON M_PatientID = authPatientM_PatientID AND authPatientIsActive = 'Y'
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ?
) x
GROUP BY T_OrderHeaderID
ORDER BY T_OrderHeaderLabNumber 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)))
return listDaftarPeserta, totalPage, nil
}
func (tdps *TabDaftarPesertaServices) SearchDaftarPesertaMCU(mcuID string, keyword string, page int, perPage int) ([]models.ModelMcuDaftarPeserta, int, error) {
var listDaftarPeserta []models.ModelMcuDaftarPeserta
var totalData int
prmWord := "%" + keyword + "%"
offset := (page - 1) * perPage
sqlt := `
SELECT COUNT(*) as total
FROM (
SELECT
T_OrderHeaderID,
T_OrderHeaderDate,
IFNULL(T_OrderHeaderLabNumber, 0) AS 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,
DATE_FORMAT(M_PatientDOB, '%d %M %Y') AS M_PatientDOB,
FLOOR(DATEDIFF(CURDATE(), M_PatientDOB)/ 365.25) AS age,
IFNULL(authPatientEmail, "none") AS authPatientEmail,
IFNULL(authPatientIsActive, "N") AS authPatientIsActive,
CASE
WHEN T_OrderDetailOrderIsPacket = 'Y' THEN T_OrderDetailOrderT_PacketName
ELSE T_OrderDetailOrderT_TestName
END AS test_paket
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
JOIN t_orderdetailorder ON T_OrderDetailOrderT_OrderHeaderID = T_OrderHeaderID
AND T_OrderDetailOrderIsActive = 'Y'
LEFT JOIN auth_patient ON M_PatientID = authPatientM_PatientID AND authPatientIsActive = 'Y'
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ? AND (M_PatientName LIKE ? OR M_PatientNIP LIKE ?)
GROUP BY T_OrderHeaderID
)x
`
if err := dbx.Handlex.Get(&totalData, sqlt, mcuID, prmWord, prmWord); err != nil {
return listDaftarPeserta, 0, fmt.Errorf("error querying database: %v", err)
}
sql := `
SELECT *,
GROUP_CONCAT(test_paket) as list_paket
FROM (
SELECT
T_OrderHeaderID,
T_OrderHeaderDate,
IFNULL(T_OrderHeaderLabNumber, 0) AS 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,
DATE_FORMAT(M_PatientDOB, '%d %M %Y') AS M_PatientDOB,
FLOOR(DATEDIFF(CURDATE(), M_PatientDOB)/ 365.25) AS age,
IFNULL(authPatientEmail, "none") AS authPatientEmail,
IFNULL(authPatientIsActive, "N") AS authPatientIsActive,
CASE
WHEN T_OrderDetailOrderIsPacket = 'Y' THEN T_OrderDetailOrderT_PacketName
ELSE T_OrderDetailOrderT_TestName
END AS test_paket
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
JOIN t_orderdetailorder ON T_OrderDetailOrderT_OrderHeaderID = T_OrderHeaderID
AND T_OrderDetailOrderIsActive = 'Y'
LEFT JOIN auth_patient ON M_PatientID = authPatientM_PatientID AND authPatientIsActive = 'Y'
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ?
AND (M_PatientName LIKE ? OR M_PatientNIP LIKE ?)
) x
GROUP BY T_OrderHeaderID
ORDER BY T_OrderHeaderLabNumber ASC
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&listDaftarPeserta, sql, mcuID, prmWord, prmWord, perPage, offset); err != nil {
return listDaftarPeserta, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(perPage)))
return listDaftarPeserta, totalPage, nil
}
func (tdps *TabDaftarPesertaServices) DetailTestdanPaket(orderheaderID string) ([]models.TableTestPaket, error) {
var listPaket []models.DetailPaketMCU
var listTest []models.DetailTestMCU
var ret []models.TableTestPaket
// get list test name
qr := `
SELECT
T_OrderDetailOrderT_TestID,
T_OrderDetailOrderT_TestName
FROM t_orderdetailorder
WHERE T_OrderDetailOrderT_OrderHeaderID = ?
AND T_OrderDetailOrderIsActive = 'Y'
AND T_OrderDetailOrderIsPacket = 'N'
`
if err := dbx.Handlex.Select(&listTest, qr, orderheaderID); err != nil {
return ret, err
}
// get detail paket
q := `
SELECT DISTINCT
T_OrderDetailOrderT_PacketID,
T_OrderDetailOrderT_PacketName,
T_TestName
FROM t_orderdetailorder
JOIN t_packet ON T_PacketID = T_OrderDetailOrderT_PacketID
JOIN t_packetdetail ON T_PacketDetailT_PacketID = T_PacketID
JOIN t_test ON T_PacketDetailT_TestID = T_TestID
WHERE T_OrderDetailOrderT_OrderHeaderID = ?
`
if err := dbx.Handlex.Select(&listPaket, q, orderheaderID); err != nil {
return ret, err
}
nomor := 1
for _, d := range listTest {
ret = append(ret, models.TableTestPaket{
Nomor: nomor,
NamaTest: d.T_OrderDetailOrderT_TestName,
NamaPaket: d.T_OrderDetailOrderT_TestName,
})
nomor++
}
for _, d := range listPaket {
ret = append(ret, models.TableTestPaket{
Nomor: nomor,
NamaTest: d.T_TestName,
NamaPaket: d.T_OrderDetailOrderT_PacketName,
})
nomor++
}
return ret, nil
}
func (tdps *TabDaftarPesertaServices) GenerataPasswordMCU(mgmMCUID string, host string) (models.GeneratePasswordResponse, error) {
logger, _ := zap.NewProduction()
var ret models.GeneratePasswordResponse
uri := "https://" + config.Data.Get("servername") + "/one-api/tools/auth_patient/generate/" + mgmMCUID
payload := []byte{}
resp, err := http.Post(uri, "application/json", bytes.NewBuffer(payload))
if err != nil {
return ret, fmt.Errorf("error request generate password: %v", err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return ret, fmt.Errorf("error read body respoonse")
}
if err := json.Unmarshal(body, &ret); err != nil {
return ret, fmt.Errorf("error unmarshal json respoonse")
}
defer logger.Sync()
logger.Info("response", zap.Any("data", ret))
return ret, nil
}
func (tdps *TabDaftarPesertaServices) GetAkunPeserta(patientID string) (models.AuthPatient, error) {
// logger, _ := zap.NewProduction()
var ret models.AuthPatient
q := `
SELECT
authPatientID,
authPatientM_PatientID,
authPatientEmail,
authPatientPassword,
authPatientIsActive
FROM auth_patient
WHERE authPatientM_PatientID = ?
AND authPatientIsActive = 'Y'
`
if err := dbx.Handlex.Get(&ret, q, patientID); err != nil {
return ret, fmt.Errorf("error get akun peserta")
}
// logger.Info("response", zap.Any("data", ret))
return ret, nil
}
func (tdps *TabDaftarPesertaServices) ResetPasswordPeserta(token string, newPassword string, email string, authuserid string) (models.ResponseStatus, error) {
var ret models.ResponseStatus
uri := "https://" + config.Data.Get("servername") + "/one-api/mockup/system/menu/reset_password_pat"
params, _ := json.Marshal(map[string]string{
"new": newPassword,
"email": email,
"authuserid": authuserid,
"token": token,
})
paramsBody := bytes.NewBuffer(params)
resp, err := http.Post(uri, "application/json", paramsBody)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error request change password",
}
return ret, err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error read response",
}
return ret, err
}
err = json.Unmarshal(body, &ret)
if err != nil {
ret = models.ResponseStatus{
Status: "ERR",
Message: "error unmarshal response",
}
return ret, err
}
return ret, nil
}
func (tdps *TabDaftarPesertaServices) 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 (tdps *TabDaftarPesertaServices) GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) {
var returnTab []models.TabViewReportMcu
var profile_patient models.PatientMCU
lab_rpt := ""
sql_prof := `
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_prof, orderheaderID); err != nil {
if errors.Is(err, sql.ErrNoRows) {
profile_patient = models.PatientMCU{}
} else {
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 {
if errors.Is(err, sql.ErrNoRows) {
so_data_rpt = []models.SoRptData{}
} else {
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 {
if errors.Is(err, sql.ErrNoRows) {
ResumeData = models.ResumeMCU{}
} else {
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
}
func (tdps *TabDaftarPesertaServices) GetListReportPesertaV5(orderheaderID string, mcuid string, staffname string) ([]models.TabViewReportMcu, error) {
var returnTab []models.TabViewReportMcu
var profile_patient models.PatientMCU
var tahunan_mcu int
sqlmgm := `
SELECT Mgm_McuReportHasil
FROM mgm_mcu
WHERE Mgm_McuID = ?
`
if err := dbx.Handlex.Get(&tahunan_mcu, sqlmgm, mcuid); err != nil {
if errors.Is(err, sql.ErrNoRows) {
tahunan_mcu = 1
} else {
return returnTab, fmt.Errorf("error get type tahunan mcur: %v", err)
}
}
lab_rpt := ""
sql_prof := `
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_prof, orderheaderID); err != nil {
if errors.Is(err, sql.ErrNoRows) {
profile_patient = models.PatientMCU{}
} else {
return returnTab, fmt.Errorf("error get group result order: %v", err)
}
}
if profile_patient.T_OrderHeaderLabNumber != "" {
if tahunan_mcu != 1 {
lab_rpt = "/birt/frameset?__report=report/one/lab/rpt_test_history_portal.rptdesign&__format=pdf&PID=" + profile_patient.T_OrderHeaderID + "&tm=" + profile_patient.Datetime + "&username=" + staffname
} else {
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 := ""
mikro := ""
usg := ""
sds := ""
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 {
if errors.Is(err, sql.ErrNoRows) {
so_data_rpt = []models.SoRptData{}
} else {
return returnTab, fmt.Errorf("error get data so_id: %v", err)
}
}
for _, d := range so_data_rpt {
if tahunan_mcu != 1 {
switch d.Rpt_name {
case "Pemeriksaan Fisik":
// fisik = "/birt/frameset?__report=report/one/mcu/mcu_fisik_history_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_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_radiology_2_annual_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_2_annual_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_2_annual_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_2_annual_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_2_annual_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_history_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.Order_id + "&tm=" + d.Datetime
case "Mikro":
mikro = "/birt/run?__report=report/one/lab/rpt_test_mikro_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.Order_id + "&tm=" + d.Datetime
case "USG", "USG Abdominal Aorta", "USG Upp & Low Abdomen":
usg = "/birt/run?__report=report/one/lab/rpt_hasil_so_usg_2_annual_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "SDS":
if d.So_id != "0" {
tipval := ""
tpe := `SELECT So_ResultEntrySDSTypeValue as tipval
FROM so_resultentrysds_type WHERE So_ResultEntrySDSTypeSo_ResultEntryID = ?
AND So_ResultEntrySDSTypeIsActive = 'Y' LIMIT 1`
if err := dbx.Handlex.Get(&tipval, tpe, d.So_id); err != nil {
if errors.Is(err, sql.ErrNoRows) {
} else {
return returnTab, fmt.Errorf("error get sds type value : %v", err)
}
}
if tipval != "" {
sds = "/birt/run?__report=report/one/lab/rpt_hasil_so_sds.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&PType=" + tipval + "&tm=" + d.Datetime
}
}
}
} else {
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.Order_id + "&tm=" + d.Datetime
case "Mikro":
mikro = "/birt/run?__report=report/one/lab/rpt_test_mikro_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.Order_id + "&tm=" + d.Datetime
case "USG", "USG Abdominal Aorta", "USG Upp & Low Abdomen":
usg = "/birt/run?__report=report/one/lab/rpt_hasil_so_usg_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
case "SDS":
if d.So_id != "0" {
tipval := ""
tpe := `SELECT So_ResultEntrySDSTypeValue as tipval
FROM so_resultentrysds_type WHERE So_ResultEntrySDSTypeSo_ResultEntryID = ?
AND So_ResultEntrySDSTypeIsActive = 'Y' LIMIT 1`
if err := dbx.Handlex.Get(&tipval, tpe, d.So_id); err != nil {
if errors.Is(err, sql.ErrNoRows) {
} else {
return returnTab, fmt.Errorf("error get sds type value : %v", err)
}
}
if tipval != "" {
sds = "/birt/run?__report=report/one/lab/rpt_hasil_so_sds_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&PType=" + tipval + "&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 {
if errors.Is(err, sql.ErrNoRows) {
ResumeData = models.ResumeMCU{}
} else {
return returnTab, fmt.Errorf("error get data resume id: %v", err)
}
}
if ResumeData.Mcu_ResumeID != "" {
if tahunan_mcu != 1 {
kesimpulan = "/birt/frameset?__report=report/one/mcu/rpt_mcu_saran_kesimpulan_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime
} else {
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
}
// cover = "/birt/frameset?__report=report/one/mcu/rpt_mcu_resume_cover_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime
}
additional := ""
if fisik == "" {
id_add := ""
sql_additional := `SELECT So_ResultEntryID FROM t_orderdetail
JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_TestID IN (2571,2573,3450,2572) LIMIT 1`
if err := dbx.Handlex.Get(&id_add, sql_additional, orderheaderID); err != nil {
if errors.Is(err, sql.ErrNoRows) {
} else {
return returnTab, fmt.Errorf("error get additional rpt: %v", err)
}
}
if id_add != "" {
if tahunan_mcu != 1 {
additional = "/birt/run?__report=report/one/mcu/mcu_fisik_ttbbmata_history_portal.rptdesign&__format=pdf&username=" + staffname + "&PType=fisik&PID=" + id_add + "&PLang=1&tm="
} else {
additional = "/birt/run?__report=report/one/mcu/mcu_fisik_ttbbmata_portal.rptdesign&__format=pdf&username=" + staffname + "&PType=fisik&PID=" + id_add + "&PLang=1&tm="
}
}
}
if fisik != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Fisik", Link: fisik})
}
if rontgen != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Rontgen", Link: rontgen})
}
if usg != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "USG", Link: usg})
}
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 sds != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "SDS", Link: sds})
}
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})
}
if mikro != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Mikro", Link: mikro})
}
if additional != "" {
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Tambahan", Link: additional})
}
return returnTab, nil
}
func (tdps *TabDaftarPesertaServices) GetListAttachmentFile(orderheaderID string) ([]models.AttachmentFIle, error) {
list_file := []models.AttachmentFIle{}
sql := `
SELECT
File_AttachmentID,
File_AttachmentFileName
FROM t_orderheader
JOIN file_attachment ON File_AttachmentT_OrderHeaderID = T_OrderHeaderID
AND T_OrderHeaderID = ? AND File_AttachmentIsActive = 'Y'
ORDER BY File_AttachmentID ASC`
if err := dbx.Handlex.Select(&list_file, sql, orderheaderID); err != nil {
return list_file, err
}
url := "/one-media/one-files/"
for i, v := range list_file {
list_file[i].Link = url + v.File_AttachmentFileName
}
return list_file, nil
}

View File

@@ -1,589 +0,0 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"cpone/utils"
"fmt"
"math"
"strconv"
"go.uber.org/zap"
)
type TabKelainanFisikServices struct {
TabKelainanFisikStore db.AppStore
}
func NewTabKelainanFisikServices(store db.AppStore) *TabKelainanFisikServices {
return &TabKelainanFisikServices{
TabKelainanFisikStore: store,
}
}
func (tkf *TabKelainanFisikServices) 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 (tkf *TabKelainanFisikServices) 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 (tkf *TabKelainanFisikServices) GetKelainanFisikPresentase(mcuID string) (models.Barchart, error) {
var option models.Barchart
var data []models.KelainanGlobalFisikModel
q := `
SELECT Mcu_KelainanName,
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 10
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kelainan fisik: %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 Fisik (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.Mcu_KelainanName, 2)
chartData.Source = append(chartData.Source, []interface{}{
i, d.Total, newText, percentStr,
})
}
option, err := tkf.GetBarChartConf(title, chartData)
if err != nil {
return option, fmt.Errorf("error insert data to barchart %v", err)
}
return option, nil
}
func (tkf *TabKelainanFisikServices) GetKelainanFisikBMI(mcuID string) (models.Piechart, error) {
logger, _ := zap.NewProduction()
var option models.Piechart
var data []models.KelainanFisikDataModel
q := `
SELECT Mcu_KelainanName as test,
Mcu_KelainanClasification,
count(distinct orderkel.T_OrderHeaderID) as total
FROM mcu_kelainan
JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND
Mcu_SummaryFisikIsActive = 'Y'
LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_FisikSummaryID = Mcu_SummaryFisikID AND
T_KelainanFiskIsActive= 'Y'
LEFT JOIN t_orderheader orderkel ON T_KelainanFiskT_OrderHeaderID = orderkel.T_OrderHeaderID AND
orderkel.T_OrderHeaderIsActive = 'Y' AND orderkel.T_OrderHeaderMgm_McuID = ?
WHERE
Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanClasification = 'asia_pacific'
group by Mcu_KelainanID
UNION
SELECT 'Normal' as test,
'asia_pacific' as Mcu_KelainanClasification,
ifnull(count(distinct T_OrderHeaderID) - summary_total_kelainan_bmi(?), 0) as total
FROM t_orderheader
WHERE
T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y'
group by T_OrderHeaderMgm_McuID
`
if err := dbx.Handlex.Select(&data, q, mcuID, mcuID, mcuID); err != nil {
return option, fmt.Errorf("error get data kel fisik bmi %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Status Index Masa Tubuh (BMI)"
subtext := ""
chartData := []models.SeriesData{}
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Total,
Name: d.Test + ": " + strconv.Itoa(d.Total) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkf.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get & insert data into chart: %v", err)
}
return option, nil
}
func (tkf *TabKelainanFisikServices) GetKelainanFisikHipertensi(mcuID string) (models.Piechart, error) {
logger, _ := zap.NewProduction()
var option models.Piechart
var data []models.KelainanFisikDataModel
q := `
SELECT Mcu_KelainanName as test,
Mcu_KelainanClasification,
count(distinct orderkel.T_OrderHeaderID) as total
FROM mcu_kelainan
JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND
Mcu_SummaryFisikIsActive = 'Y'
LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_FisikSummaryID = Mcu_SummaryFisikID AND
T_KelainanFiskIsActive= 'Y'
LEFT JOIN t_orderheader orderkel ON T_KelainanFiskT_OrderHeaderID = orderkel.T_OrderHeaderID AND
orderkel.T_OrderHeaderIsActive = 'Y' AND orderkel.T_OrderHeaderMgm_McuID = ?
WHERE
Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanClasification = 'JNC-VII'
group by Mcu_KelainanID
UNION
SELECT 'Normal' as test,
'JNC-VII' as Mcu_KelainanClasification,
IFNULL(COUNT(T_OrderHeaderID) - summary_total_kelainan_hipertensi(?), 0) as total
FROM t_orderheader
WHERE
T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y'
group by T_OrderHeaderMgm_McuID
`
if err := dbx.Handlex.Select(&data, q, mcuID, mcuID, mcuID); err != nil {
return option, fmt.Errorf("error get data kel fisik hipertensi: %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Kriteria Hipertensi"
subtext := ""
chartData := []models.SeriesData{}
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Total,
Name: d.Test + ": " + strconv.Itoa(d.Total) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkf.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get and insert data into piechart : %v", err)
}
return option, nil
}
func (tkf *TabKelainanFisikServices) GetKelainanFisikRefraksi(mcuID string) (models.Piechart, error) {
var option models.Piechart
var data []models.KelainanFisikDataModel
q := `
SELECT Mcu_KelainanName as test,
count(distinct orderkel.T_OrderHeaderID) as total
FROM mcu_kelainan
JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND
Mcu_SummaryFisikIsActive = 'Y'
LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_FisikSummaryID = Mcu_SummaryFisikID AND
T_KelainanFiskIsActive= 'Y'
LEFT JOIN t_orderheader orderkel ON T_KelainanFiskT_OrderHeaderID = orderkel.T_OrderHeaderID AND
orderkel.T_OrderHeaderIsActive = 'Y' AND orderkel.T_OrderHeaderMgm_McuID = ?
WHERE
Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanID IN (24,25)
group by Mcu_KelainanID
UNION
SELECT 'Normal' as test,
IFNULL(count(distinct T_OrderHeaderID) - summary_total_kelainan_visus(?), 0) as total
FROM t_orderheader
WHERE
T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y'
group by T_OrderHeaderMgm_McuID
`
if err := dbx.Handlex.Select(&data, q, mcuID, mcuID, mcuID); err != nil {
return option, fmt.Errorf("error get data kel fisik refraksi: %v", err)
}
title := "Refraksi"
subtext := ""
chartData := []models.SeriesData{}
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Total,
Name: d.Test + ": " + strconv.Itoa(d.Total) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkf.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get and insert data to chart: %v", err)
}
return option, nil
}
func (tkf *TabKelainanFisikServices) GetKelFisikAlkohol(mcuID string) (models.Piechart, error) {
var option models.Piechart
var data []models.KelainanFisikDataModel
q := `
SELECT
Mcu_KelainanName as test,
COUNT( distinct T_OrderHeaderID) as total
FROM mcu_kelainan
JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND
Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanID IN (117,118,119)
LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_FisikSummaryID = Mcu_SummaryFisikID AND
T_KelainanFiskIsActive = 'Y'
LEFT JOIN so_resultentry ON T_KelainanFiskSo_ResultEntryID = So_ResultEntryID AND
So_ResultEntryIsActive = 'Y'
LEFT JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumSo_ResultEntryID = So_ResultEntryID AND
So_ResultEntryFisikUmumIsActive = 'Y'
LEFT JOIN t_orderheader ON So_ResultEntryT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kel fisik konsumsi alkohol: %v", err)
}
title := "Konsumsi Alkohol"
subtext := ""
chartData := []models.SeriesData{}
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Total,
Name: d.Test + ": " + strconv.Itoa(d.Total) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkf.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get and insert data to chart: %v", err)
}
return option, nil
}
func (tkf *TabKelainanFisikServices) GetKelFisikMerokok(mcuID string) (models.Piechart, error) {
var option models.Piechart
var data []models.KelainanFisikDataModel
q := `
SELECT Mcu_KelainanName as test, COUNT( distinct T_OrderHeaderID) as total
FROM mcu_kelainan
JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND
Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanID IN (120,121,122)
LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_FisikSummaryID = Mcu_SummaryFisikID AND
T_KelainanFiskIsActive = 'Y'
LEFT JOIN so_resultentry ON T_KelainanFiskSo_ResultEntryID = So_ResultEntryID AND
So_ResultEntryIsActive = 'Y'
LEFT JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumSo_ResultEntryID = So_ResultEntryID AND
So_ResultEntryFisikUmumIsActive = 'Y'
LEFT JOIN t_orderheader ON So_ResultEntryT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kel fisik merokok %v", err)
}
title := "Merokok"
subtext := ""
chartData := []models.SeriesData{}
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Total,
Name: d.Test + ": " + strconv.Itoa(d.Total) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkf.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get and insert data into chart %v", err)
}
return option, nil
}
func (tkf *TabKelainanFisikServices) GetKelFisikOlahraga(mcuID string) (models.Piechart, error) {
var option models.Piechart
var data []models.KelainanFisikDataModel
q := `
SELECT Mcu_KelainanName as test, COUNT( distinct T_OrderHeaderID) as total
FROM mcu_kelainan
JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND
Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanID IN (123,124)
LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_FisikSummaryID = Mcu_SummaryFisikID AND
T_KelainanFiskIsActive = 'Y'
LEFT JOIN so_resultentry ON T_KelainanFiskSo_ResultEntryID = So_ResultEntryID AND
So_ResultEntryIsActive = 'Y'
LEFT JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumSo_ResultEntryID = So_ResultEntryID AND
So_ResultEntryFisikUmumIsActive = 'Y'
LEFT JOIN t_orderheader ON So_ResultEntryT_OrderHeaderID = T_OrderHeaderID AND
T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data kel fisik olahraga %v", err)
}
title := "Olahraga"
subtext := ""
chartData := []models.SeriesData{}
if data != nil {
for _, d := range data {
chartData = append(chartData, models.SeriesData{
Value: d.Total,
Name: d.Test + ": " + strconv.Itoa(d.Total) + " Peserta",
})
}
} else {
chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"})
}
option, err := tkf.GetPieChartConf(title, subtext, chartData)
if err != nil {
return option, fmt.Errorf("error get and insert data to chart %v", err)
}
return option, nil
}
func (tkf *TabKelainanFisikServices) GetChartRenderFisik(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_ImageGrafikGroupResult = "FISIK"
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,349 +0,0 @@
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
}

View File

@@ -1,550 +0,0 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"cpone/utils"
"fmt"
"math"
"strconv"
"go.uber.org/zap"
)
type TabKelainanLabServices struct {
TabKelainanLabStore db.AppStore
}
func NewTabKelainanLabServices(store db.AppStore) *TabKelainanLabServices {
return &TabKelainanLabServices{
TabKelainanLabStore: store,
}
}
func (tkl *TabKelainanLabServices) ConfBarchart(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 (tkl *TabKelainanLabServices) ConfBarchartVertical(title string, data []models.KelainanLabModel) (models.BarchartV2, error) {
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product"},
},
}
isEmpty := ""
if len(data) == 0 {
isEmpty = "Data tidak ditemukan"
}
cnt := len(data)
for idx, d := range data {
newText := utils.SplitStrings(d.Mcu_KelainanName, 2)
chartData.Source = append(chartData.Source, []interface{}{
idx, d.Total, newText,
})
}
option := models.BarchartV2{
Title: struct {
Text string "json:\"text\""
Left string `json:"left"`
}{
Text: title,
Left: "center",
},
Dataset: struct {
Source [][]interface{} "json:\"source\""
}{chartData.Source},
Grid: struct {
ContainLabel bool "json:\"containLabel\""
}{true},
XAxis: struct {
Name string "json:\"name\""
Type string "json:\"type\""
AxisLabel struct {
Interval int "json:\"interval\""
Rotate int "json:\"rotate\""
} "json:\"axisLabel\""
}{
Name: "",
Type: "category",
AxisLabel: struct {
Interval int "json:\"interval\""
Rotate int "json:\"rotate\""
}{
Interval: 0,
Rotate: 0,
},
},
YAxis: struct {
Type string "json:\"type\""
Name string "json:\"name\""
NameTextStyle struct {
Align string "json:\"align\""
} "json:\"nameTextStyle\""
NameGap int "json:\"nameGap\""
}{
Type: "value",
Name: "",
NameTextStyle: struct {
Align string "json:\"align\""
}{
Align: "right",
},
NameGap: 20,
},
VisualMap: struct {
Orient string "json:\"orient\""
Left string "json:\"left\""
Min int "json:\"min\""
Max int "json:\"max\""
Dimension int "json:\"dimension\""
Show bool "json:\"show\""
InRange struct {
Color []string "json:\"color\""
} "json:\"inRange\""
}{
Orient: "horizontal",
Left: "center",
Min: 0,
Max: cnt,
Dimension: 0,
Show: false,
InRange: struct {
Color []string "json:\"color\""
}{
Color: []string{"#035bff", "#42aaf5", "#00eaf2"},
},
},
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: "inside",
Show: true,
Formatter: "{@[1]}",
},
Type: "bar",
Encode: struct {
X string "json:\"x\""
Y string "json:\"y\""
}{
X: "product",
Y: "amount",
},
},
},
Tooltip: struct {
Trigger string "json:\"trigger\""
AxisPointer struct {
Type string "json:\"type\""
} "json:\"axisPointer\""
}{
Trigger: "axis",
AxisPointer: struct {
Type string "json:\"type\""
}{
Type: "shadow",
},
},
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 (tkl *TabKelainanLabServices) GetDataPresentaseKelainanLab(mcuID string) (models.Barchart, error) {
logger, _ := zap.NewProduction()
var option models.Barchart
var data []models.KelainanLabModel
q := `
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
ORDER BY total DESC
LIMIT 10
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get kelainan lab %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Kelainan Lab (10 Terbesar)"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
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)
}
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.Mcu_KelainanName, 2)
chartData.Source = append(chartData.Source, []interface{}{
i, d.Total, newText, percentStr,
})
}
option, err := tkl.ConfBarchart(title, chartData)
if err != nil {
return option, fmt.Errorf("error insert data to chart %v", err)
}
return option, nil
}
func (tkl *TabKelainanLabServices) GetHematologi(mcuID string) (models.BarchartV2, error) {
logger, _ := zap.NewProduction()
var option models.BarchartV2
var data []models.KelainanLabModel
q := `
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 AND Mcu_KelainanGroupID = 14
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
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get hematologi %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Hematologi"
option, err := tkl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data to chart %v", err)
}
return option, nil
}
func (tkl *TabKelainanLabServices) GetUrinalisa(mcuID string) (models.BarchartV2, error) {
logger, _ := zap.NewProduction()
var option models.BarchartV2
var data []models.KelainanLabModel
q := `
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
AND Mcu_KelainanGroupID = 15
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
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get urinalisa %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Urinalisa"
option, err := tkl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data to chart %v", err)
}
return option, nil
}
func (tkl *TabKelainanLabServices) GetGangguanFungsiHati(mcuID string) (models.BarchartV2, error) {
logger, _ := zap.NewProduction()
var option models.BarchartV2
var data []models.KelainanLabModel
q := `
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 AND Mcu_KelainanGroupID = 16
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
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get gangguan fungsi hati %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Gangguan Fungsi Hati"
option, err := tkl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data to chart %v", err)
}
return option, nil
}
func (tkl *TabKelainanLabServices) GetGangguanMetabolismeLemak(mcuID string) (models.BarchartV2, error) {
logger, _ := zap.NewProduction()
var option models.BarchartV2
var data []models.KelainanLabModel
q := `
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 AND Nat_TestCode IN ( '10520300','10520400')
where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get gangguan metabolisme lemak %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Gangguan Metabolisme Lemak"
option, err := tkl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data to chart %v", err)
}
return option, nil
}
func (tkl *TabKelainanLabServices) GetPeningkatanGlukosa(mcuID string) (models.BarchartV2, error) {
logger, _ := zap.NewProduction()
var option models.BarchartV2
var data []models.KelainanLabModel
q := `
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 AND Nat_TestCode IN ( '10540200')
where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get peningkatan glukosa %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Peningkatan Glukosa"
option, err := tkl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data to chart %v", err)
}
return option, nil
}
func (tkl *TabKelainanLabServices) GetChartRenderLab(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_ImageGrafikGroupResult = "LAB"
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,516 +0,0 @@
package mcu_corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"cpone/utils"
"fmt"
"math"
"strconv"
"go.uber.org/zap"
)
type TabKelainanNonLabServices struct {
TabKelainanNonLabStore db.AppStore
}
func NewTabKelainanNonLabServices(store db.AppStore) *TabKelainanNonLabServices {
return &TabKelainanNonLabServices{
TabKelainanNonLabStore: store,
}
}
func (tknl *TabKelainanNonLabServices) 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 = 4
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 (tknl *TabKelainanNonLabServices) ConfBarchartVertical(title string, data []models.KelNonLabModel) (models.BarchartV2, error) {
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product"},
},
}
isEmpty := ""
if len(data) == 0 {
isEmpty = "Data tidak ditemukan"
}
cnt := len(data)
for idx, d := range data {
// if len(d.Test) > 30 {
// var newText = d.Test[:30] + "- \n" + d.Test[30:]
// chartData.Source = append(chartData.Source, []interface{}{
// idx, d.Total, newText,
// })
// continue
// }
newText := utils.SplitStrings(d.Test, 2)
chartData.Source = append(chartData.Source, []interface{}{
idx, d.Total, newText,
})
}
option := models.BarchartV2{
Title: struct {
Text string "json:\"text\""
Left string `json:"left"`
}{
Text: title,
Left: "center",
},
Dataset: struct {
Source [][]interface{} "json:\"source\""
}{chartData.Source},
Grid: struct {
ContainLabel bool "json:\"containLabel\""
}{true},
XAxis: struct {
Name string "json:\"name\""
Type string "json:\"type\""
AxisLabel struct {
Interval int "json:\"interval\""
Rotate int "json:\"rotate\""
} "json:\"axisLabel\""
}{
Name: "",
Type: "category",
AxisLabel: struct {
Interval int "json:\"interval\""
Rotate int "json:\"rotate\""
}{
Interval: 0,
Rotate: 0,
},
},
YAxis: struct {
Type string "json:\"type\""
Name string "json:\"name\""
NameTextStyle struct {
Align string "json:\"align\""
} "json:\"nameTextStyle\""
NameGap int "json:\"nameGap\""
}{
Type: "value",
Name: "",
NameTextStyle: struct {
Align string "json:\"align\""
}{
Align: "right",
},
NameGap: 20,
},
VisualMap: struct {
Orient string "json:\"orient\""
Left string "json:\"left\""
Min int "json:\"min\""
Max int "json:\"max\""
Dimension int "json:\"dimension\""
Show bool "json:\"show\""
InRange struct {
Color []string "json:\"color\""
} "json:\"inRange\""
}{
Orient: "horizontal",
Left: "center",
Min: 0,
Max: cnt,
Dimension: 0,
Show: false,
InRange: struct {
Color []string "json:\"color\""
}{
Color: []string{"#035bff", "#42aaf5", "#00eaf2"},
},
},
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: "inside",
Show: true,
Formatter: "{@[1]}",
},
Type: "bar",
Encode: struct {
X string "json:\"x\""
Y string "json:\"y\""
}{
X: "product",
Y: "amount",
},
},
},
Tooltip: struct {
Trigger string "json:\"trigger\""
AxisPointer struct {
Type string "json:\"type\""
} "json:\"axisPointer\""
}{
Trigger: "axis",
AxisPointer: struct {
Type string "json:\"type\""
}{
Type: "shadow",
},
},
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 (tknl *TabKelainanNonLabServices) GetDataKelNonLab(mcuID string) (models.Barchart, error) {
logger, _ := zap.NewProduction()
var option models.Barchart
var data []models.KelNonLabModel
q := `
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
ORDER BY total DESC
LIMIT 10
`
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 Non Lab (10 Terbesar)"
chartData := models.BarDataset{
Source: [][]interface{}{
{"score", "amount", "product", "percentage"},
},
}
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)
}
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 := tknl.GetBarChartConf(title, chartData)
if err != nil {
return option, fmt.Errorf("error insert data to barchart %v", err)
}
return option, nil
}
func (tknl *TabKelainanNonLabServices) GetThoraxPA(mcuID string) (models.BarchartV2, error) {
logger, _ := zap.NewProduction()
var option models.BarchartV2
var data []models.KelNonLabModel
q := `
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 AND Nat_TestID = 5798
where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 10
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data thorax pa %v", err)
}
defer logger.Sync()
logger.Info("resp data", zap.Any("data", data))
title := "Thorax PA"
option, err := tknl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data into chart %v", err)
}
return option, nil
}
func (tknl *TabKelainanNonLabServices) GetGangguanJantung(mcuID string) (models.BarchartV2, error) {
var option models.BarchartV2
var data []models.KelNonLabModel
q := `
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 AND
Mcu_KelainanGroupID = 10
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 10
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data gangguan jantung %v", err)
}
title := "Gangguan Jantung"
option, err := tknl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data into chart %v", err)
}
return option, nil
}
func (tknl *TabKelainanNonLabServices) GetAutospirometri(mcuID string) (models.BarchartV2, error) {
var option models.BarchartV2
var data []models.KelNonLabModel
q := `
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 AND Nat_TestID = 5321
where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 10
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data autspirometri %v", err)
}
title := "Spirometri"
option, err := tknl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data into chart %v", err)
}
return option, nil
}
func (tknl *TabKelainanNonLabServices) GetPendengaran(mcuID string) (models.BarchartV2, error) {
var option models.BarchartV2
var data []models.KelNonLabModel
q := `
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 AND Nat_TestID = 5308
where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ?
group by Mcu_KelainanID
ORDER BY total DESC
LIMIT 10
`
if err := dbx.Handlex.Select(&data, q, mcuID); err != nil {
return option, fmt.Errorf("error get data gangguan pendengaran %v", err)
}
title := "Gangguan Pendengaran"
option, err := tknl.ConfBarchartVertical(title, data)
if err != nil {
return option, fmt.Errorf("error insert data into chart %v", err)
}
return option, nil
}
func (tknl *TabKelainanNonLabServices) GetChartRenderNonLab(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_ImageGrafikGroupResult = "NONLAB"
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,267 +0,0 @@
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 +0,0 @@
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 +0,0 @@
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,15 @@
package corporate_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"encoding/json"
"fmt"
"math"
"strconv"
import "cpone/db"
"go.uber.org/zap"
)
type PatientServices struct {
type ServicesPatient struct {
PatientStore db.AppStore
}
func NewPatientServices(uStore db.AppStore) *PatientServices {
func NewServicesPatient(uStore db.AppStore) *ServicesPatient {
return &PatientServices{
return &ServicesPatient{
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,37 +0,0 @@
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,128 +0,0 @@
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
}

View File

@@ -1,232 +0,0 @@
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,74 +0,0 @@
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

@@ -0,0 +1,430 @@
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strconv"
"strings"
"go.uber.org/zap"
)
type MDNonlabTemplateServices struct {
MDNonlabTemplateStore db.AppStore
}
func NewMDNonlabTemplateServices(uStore db.AppStore) *MDNonlabTemplateServices {
return &MDNonlabTemplateServices{
MDNonlabTemplateStore: uStore,
}
}
func (nlt *MDNonlabTemplateServices) GetMDNonLabTemplateBreadcrumb() (models.BreadCrumbV1, error) {
var ret models.BreadCrumbV1
breadcrumb := models.BreadCrumbV1{
Title: "Master Non-lab Template",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "Non-lab Template",
Url: "",
},
},
}
ret = breadcrumb
return ret, nil
}
func (nlt *MDNonlabTemplateServices) GetListNonlabTemplate(search string, currPage int, rowPerPage int) ([]models.MDNonlabTemplate, int, error) {
var ret []models.MDNonlabTemplate
var totalData int
offset := (currPage - 1) * rowPerPage
prm := "%" + strings.TrimSpace(search) + "%"
query := `
SELECT COUNT(*)
FROM nonlab_template
WHERE NonlabTemplateIsActive = 'Y'
AND (NonlabTemplateName LIKE ?)
`
if err := dbx.Handlex.Get(&totalData, query, prm); err != nil {
return nil, 0, fmt.Errorf("error querying databases: %v", err)
}
query = `
SELECT
NonlabTemplateID,
NonlabTemplateName,
NonlabTemplateFlagFisik,
NonlabTemplateIsActive,
NonlabTemplateCreated,
NonlabTemplateLastUpdated
FROM nonlab_template
WHERE NonlabTemplateIsActive = 'Y'
AND (NonlabTemplateName LIKE ?)
ORDER BY NonlabTemplateID ASC
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&ret, query, prm, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
return ret, totalPage, nil
}
func (nlt *MDNonlabTemplateServices) GetMDNonlabTemplateByID(id string) (models.MDNonlabTemplate, error) {
logger, _ := zap.NewProduction()
var ret models.MDNonlabTemplate
q := `
SELECT
NonlabTemplateID,
NonlabTemplateName,
NonlabTemplateFlagFisik,
NonlabTemplateIsActive,
NonlabTemplateCreated,
NonlabTemplateLastUpdated
FROM nonlab_template
WHERE NonlabTemplateID = ?
`
err := dbx.Handlex.Get(&ret, q, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data non lab template by id vs",
zap.String("ID", id),
zap.Error(err),
)
return ret, fmt.Errorf("QUERY FAILED GET DATA BY ID")
}
return ret, nil
}
func (nlt *MDNonlabTemplateServices) DeleteDataNonlabTemplate(id string) (models.MDNonlabTemplate, error) {
logger, _ := zap.NewProduction()
var ret models.MDNonlabTemplate
q := `
UPDATE nonlab_template
SET
NonlabTemplateIsActive = 'N',
NonlabTemplateLastUpdated = NOW()
WHERE NonlabTemplateID = ?
`
dlt := dbx.Handlex.MustExec(q, id)
_, err := dlt.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error delete nonlab template", zap.String("id", id))
return ret, fmt.Errorf("query failed delete non lab template")
}
return nlt.GetMDNonlabTemplateByID(id)
}
func (nlt *MDNonlabTemplateServices) AddNonlabTemplate(nama string, fisik string) (models.MDNonlabTemplate, error) {
logger, _ := zap.NewProduction()
var ret models.MDNonlabTemplate
var count int
var prmName = "%" + nama + "%"
q := `
SELECT COUNT(*)
FROM nonlab_template
WHERE NonlabTemplateName LIKE ?
AND NonlabTemplateIsActive = 'Y'
`
err := dbx.Handlex.Get(&count, q, prmName)
if err != nil {
defer logger.Sync()
logger.Error("cek duplicate", zap.Any("nama", prmName))
return ret, fmt.Errorf("query failed to cek duplicate: %v", err)
}
if count > 0 {
defer logger.Sync()
logger.Error("duplicate data", zap.Any("nama", nama))
return ret, fmt.Errorf("duplicate nama")
}
q = `
INSERT INTO nonlab_template (
NonlabTemplateName,
NonlabTemplateFlagFisik,
NonlabTemplateCreated,
NonlabTemplateCreatedUserID
) VALUES (?,?,NOW(),1);
`
rsp := dbx.Handlex.MustExec(q, nama, fisik)
insertedID, err := rsp.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("error insert data", zap.Any("nama", nama))
return ret, fmt.Errorf("failed insert data: %v", err)
}
s := strconv.Itoa(int(insertedID))
return nlt.GetMDNonlabTemplateByID(s)
}
func (nlt *MDNonlabTemplateServices) UpdateNonlabTemplate(id string, nama string, fisik string) (models.MDNonlabTemplate, error) {
logger, _ := zap.NewProduction()
var ret models.MDNonlabTemplate
var count int
var prmNama = "%" + nama + "%"
q := `
SELECT COUNT(*)
FROM nonlab_template
WHERE NonlabTemplateName LIKE ?
AND NonlabTemplateIsActive = 'Y'
AND NonlabTemplateID <> ?
`
err := dbx.Handlex.Get(&count, q, prmNama, id)
if err != nil {
defer logger.Sync()
logger.Error("cek duplicate", zap.Any("nama", prmNama))
return ret, fmt.Errorf("query failed to cek duplicate: %v", err)
}
if count > 0 {
defer logger.Sync()
logger.Error("duplicate data", zap.Any("nama", nama))
return ret, fmt.Errorf("duplicate nama")
}
q = `
UPDATE nonlab_template SET
NonlabTemplateName = ?,
NonlabTemplateFlagFisik = ?,
NonlabTemplateLastUpdated = NOW(),
NonlabTemplateLastUpdatedUserID = 1
WHERE NonlabTemplateID = ?;
`
respUpdt := dbx.Handlex.MustExec(q, nama, fisik, id)
_, err = respUpdt.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("error update data", zap.Any("name", nama))
return ret, fmt.Errorf("query failed to update data")
}
return nlt.GetMDNonlabTemplateByID(id)
}
func (nlt *MDNonlabTemplateServices) GetIDNonlabTemplate(name string) (int, error) {
logger, _ := zap.NewProduction()
var ret int
prmName := "%" + name + "%"
q := `
SELECT
NonlabTemplateID
FROM nonlab_template
WHERE NonlabTemplateName LIKE ?
AND NonlabTemplateIsActive = 'Y'
`
err := dbx.Handlex.Get(&ret, q, prmName)
if err != nil {
defer logger.Sync()
logger.Error("Error get data non lab template by id vs",
zap.String("name", prmName),
zap.Error(err),
)
return ret, fmt.Errorf("QUERY FAILED GET DATA BY NAME")
}
return ret, nil
}
func (nlt *MDNonlabTemplateServices) GetDetailByID(id string) (models.NonlabTemplateDetail, error) {
logger, _ := zap.NewProduction()
var ret models.NonlabTemplateDetail
q := `
SELECT
NonlabTemplateDetailID,
NonlabTemplateDetailNonlabTemplateID,
NonlabTemplateDetailCode,
NonlabTemplateDetailName,
NonlabTemplateDetaiNat_UnitID,
NonlabTemplateDetailFlagActive,
NonlabTemplateDetaiM_LangID,
NonlabTemplateDetailIsActive
FROM nonlab_template_detail
WHERE NonlabTemplateDetailID = ?
AND NonlabTemplateDetailIsActive = 'Y'
`
err := dbx.Handlex.Get(&ret, q, id)
if err != nil {
defer logger.Sync()
logger.Error("Error get data detail nonlab template", zap.Any("ID", id))
return ret, fmt.Errorf("query failed, error get data by id : %v", err)
}
return ret, nil
}
func (nlt *MDNonlabTemplateServices) ListDetailByIDNonlabTemplate(id string) ([]models.NonlabTemplateDetail, error) {
var ret []models.NonlabTemplateDetail
var totalData int
query := `
SELECT COUNT(*)
FROM nonlab_template_detail
WHERE NonlabTemplateDetailNonlabTemplateID = ?
AND NonlabTemplateDetailIsActive = 'Y'
`
if err := dbx.Handlex.Get(&totalData, query, id); err != nil {
return ret, fmt.Errorf("error querying databases: %v", err)
}
query = `
SELECT
NonlabTemplateDetailID,
NonlabTemplateDetailNonlabTemplateID,
NonlabTemplateDetailCode,
NonlabTemplateDetailName,
NonlabTemplateDetaiNat_UnitID,
NonlabTemplateDetailFlagActive,
NonlabTemplateDetaiM_LangID,
NonlabTemplateDetailIsActive
FROM nonlab_template_detail
WHERE NonlabTemplateDetailNonlabTemplateID = ?
AND NonlabTemplateDetailIsActive = 'Y'
`
if err := dbx.Handlex.Select(&ret, query, id); err != nil {
return ret, fmt.Errorf("error querying database: %v", err)
}
return ret, nil
}
func (nlt *MDNonlabTemplateServices) AddDetailNonlabTemplate(idnonlab string, kode string, name string, flagActive string) ([]models.NonlabTemplateDetail, error) {
logger, _ := zap.NewProduction()
var ret []models.NonlabTemplateDetail
var count int
prmKode := "%" + kode + "%"
prmName := "%" + name + "%"
q := `
SELECT COUNT(*)
FROM nonlab_template_detail
WHERE (NonlabTemplateDetailCode LIKE ? OR NonlabTemplateDetailName LIKE ?)
AND NonlabTemplateDetailNonlabTemplateID = ?
AND NonlabTemplateDetailIsActive = 'Y'
`
err := dbx.Handlex.Get(&count, q, prmKode, prmName, idnonlab)
if err != nil {
defer logger.Sync()
logger.Error("cek duplicate", zap.Any("kode", prmKode), zap.Any("nama", prmName))
return ret, fmt.Errorf("query failed to cek duplicate: %v", err)
}
if count > 0 {
defer logger.Sync()
logger.Error("data duplicate", zap.Any("kode", prmKode), zap.Any("nama", prmName))
return ret, fmt.Errorf("terdapat data duplikat")
}
q = `
INSERT INTO nonlab_template_detail (
NonlabTemplateDetailNonlabTemplateID,
NonlabTemplateDetailCode,
NonlabTemplateDetailName,
NonlabTemplateDetailFlagActive,
NonlabTemplateDetailCreated
) VALUES(?,?,?,?,NOW())
`
rsp := dbx.Handlex.MustExec(q, idnonlab, kode, name, flagActive)
insertedID, err := rsp.LastInsertId()
if err != nil {
defer logger.Sync()
logger.Error("error insert data", zap.Any("kode", prmKode), zap.Any("nama", prmName))
return ret, fmt.Errorf("query failed to insert data: %v", err)
}
logger.Info("Success Insert data", zap.Any("id", insertedID))
return nlt.ListDetailByIDNonlabTemplate(idnonlab)
}
func (nlt *MDNonlabTemplateServices) DeleteDetailNonlabTemplate(id string) ([]models.NonlabTemplateDetail, error) {
logger, _ := zap.NewProduction()
var temp models.NonlabTemplateDetail
var ret []models.NonlabTemplateDetail
temp, err := nlt.GetDetailByID(id)
if err != nil {
defer logger.Sync()
logger.Error("Error get current detail nonlab template", zap.Any("id", id))
return ret, fmt.Errorf("query failed get current detail nonlab template")
}
q := `
UPDATE nonlab_template_detail
SET
NonlabTemplateDetailIsActive = 'N',
NonlabTemplateDetailLastUpdated = NOW()
WHERE NonlabTemplateDetailID = ?
AND NonlabTemplateDetailNonlabTemplateID = ?
`
dlt := dbx.Handlex.MustExec(q, id, temp.NonlabTemplateDetailNonlabTemplateID)
_, err = dlt.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error delete detail nonlab template", zap.Any("id", id))
return ret, fmt.Errorf("query failed delete detail nonlab template")
}
s := strconv.Itoa(int(temp.NonlabTemplateDetailNonlabTemplateID))
return nlt.ListDetailByIDNonlabTemplate(s)
}
func (nlt *MDNonlabTemplateServices) PilihDetailNonlabTemplate(id string) ([]models.NonlabTemplateDetail, error) {
logger, _ := zap.NewProduction()
var cek models.NonlabTemplateDetail
var ret []models.NonlabTemplateDetail
var flag string
cek, err := nlt.GetDetailByID(id)
if err != nil {
defer logger.Sync()
logger.Error("Error cek current detail nonlab template", zap.Any("ID", id))
return ret, fmt.Errorf("query failed cek current detail nonlab template")
}
if cek.NonlabTemplateDetailFlagActive == "Y" {
flag = "N"
} else {
flag = "Y"
}
q := `
UPDATE nonlab_template_detail
SET
NonlabTemplateDetailFlagActive = ?,
NonlabTemplateDetailLastUpdated = NOW()
WHERE NonlabTemplateDetailID = ?
AND NonlabTemplateDetailNonlabTemplateID = ?
`
updt := dbx.Handlex.MustExec(q, flag, id, cek.NonlabTemplateDetailNonlabTemplateID)
_, err = updt.RowsAffected()
if err != nil {
defer logger.Sync()
logger.Error("Error update detail nonlab template", zap.Any("id", id), zap.Any("flag", flag))
return ret, fmt.Errorf("query failed update detail nonlab template")
}
s := strconv.Itoa(int(cek.NonlabTemplateDetailNonlabTemplateID))
return nlt.ListDetailByIDNonlabTemplate(s)
}

View File

@@ -1,19 +1,6 @@
package public_services
import (
"bytes"
"cpone/db"
"cpone/models"
"cpone/package/config"
dbx "cpone/package/database"
"database/sql"
"encoding/json"
"errors"
"io"
"net/http"
"go.uber.org/zap"
)
import "cpone/db"
type ServicesLogin struct {
CompanyStore db.AppStore
@@ -25,77 +12,3 @@ func NewServicesLogin(uStore db.AppStore) *ServicesLogin {
CompanyStore: uStore,
}
}
func (ls *ServicesLogin) MultiSignInV2(username string, password string) (models.Response, error) {
logger, _ := zap.NewProduction()
var ret models.Response
// uri := "https://" + config.Data.Get("servername") + "/one-api/v1/system/auth_v2/multi_login"
uri := "https://" + config.Data.Get("servername") + "/one-api/v1/system/auth_v2/multi_login_v2"
params, _ := json.Marshal(map[string]string{
"username": username,
"password": password,
})
paramsBody := bytes.NewBuffer(params)
resp, err := http.Post(uri, "application/json", paramsBody)
if err != nil {
logger.Error("[ERROR]", zap.Any("error request login ", err))
return ret, err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
logger.Error("[ERROR]", zap.Any("error read body response ", err))
return ret, err
}
err = json.Unmarshal(body, &ret)
if err != nil {
logger.Error("[ERROR]", zap.Any("error unmarshal response ", err))
return ret, err
}
// logger.Info("[INFO]", zap.Any("success sign in ", &ret))
return ret, nil
}
func (ls *ServicesLogin) CheckIsAccountCpone(email string) (string, error) {
var usr_type string
q := `
SELECT M_UserEmail
FROM m_user
WHERE M_UserEmail = ? AND M_UserIsActive = 'Y'
`
if err := dbx.Handlex.Get(&usr_type, q, email); err != nil {
if errors.Is(err, sql.ErrNoRows) {
return "", nil
}
return "", err
}
return usr_type, nil
}
func (ls *ServicesLogin) CheckAccountHasLocation(email string) (bool, error) {
var placeholder string
sqla := `SELECT
M_UserEmail
FROM m_user
JOIN m_userlocation ON M_UserLocationM_UserID = M_UserID
WHERE M_UserEmail = ?
AND M_UserIsActive = 'Y'
`
if err := dbx.Handlex.Get(&placeholder, sqla, email); err != nil {
if errors.Is(err, sql.ErrNoRows) {
return false, nil
}
return false, err
}
return true, nil
}

View File

@@ -1,12 +0,0 @@
package utils
import (
"golang.org/x/text/language"
"golang.org/x/text/message"
)
func FormatRibuan(amount int) string {
p := message.NewPrinter(language.Indonesian)
formated := p.Sprintf("%v", amount)
return formated
}

View File

@@ -1,20 +0,0 @@
package utils
import (
"strings"
)
func SplitStrings(text string, count int) string {
words := strings.Split(text, " ")
var result strings.Builder
for i := 0; i < len(words); i += count {
if i+count < len(words) {
result.WriteString(strings.Join(words[i:i+count], " ") + "\n")
} else {
result.WriteString(strings.Join(words[i:], " "))
}
}
return result.String()
}

View File

@@ -1,117 +0,0 @@
package corporate_dashboardpic
import "cpone/layout"
import "cpone/component/customtextfield"
import "cpone/models"
templ DashboardPic(
listID string,
paginationID string,
breadcrumb templ.Component,
filtercomponent templ.Component,
listingcomponent templ.Component,
paginationcomponent templ.Component,
) {
<div class="container-fluid">
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "listID",
Name: "listID",
Type: "hidden",
Value: listID})
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "paginationID",
Name: "paginationID",
Type: "hidden",
Value: paginationID})
<div class="row align-item-center mb-10">
<div class="col-md-10 col-sm-12 p-0">
@breadcrumb
</div>
</div>
@filtercomponent
<div id="loading-parent" class="rounded">
@listingcomponent
@paginationcomponent
<div id="loading-child" class="rounded bg-transparent">
<div id="loading-spinner" class="spinner-border text-primary d-none" style="width: 3rem; height: 3rem;" role="status">
<span class="sr-only">Loading...</span>
</div>
</div>
</div>
<div id="loadingcontent"></div>
</div>
}
templ JSDashboardPIC() {
<script>
document.body.addEventListener('htmx:configRequest', function(evt) {
const token = localStorage.getItem("token");
if (token) {
evt.detail.headers['Authentication'] = "Bearer " + token;
}
});
</script>
}
templ CSSDashboardPIC() {
<link
rel="stylesheet"
href="assets/css/googlefont/poppins.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/publicsans.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/roboto.css"
/>
<style>
body {
background-color: white;
}
#div-chart {
margin: 40px 10vw 40px 10vw;
}
.title {
font-size: 20px;
font-weight: bold;
}
#title {
font-weight: 600;
}
</style>
}
script BeforeRequestContent() {
const loadingParent = document.getElementById("loading-parent");
const loadingChild = document.getElementById("loading-child");
const loadingSpinner = document.getElementById("loading-spinner");
loadingParent.classList.add("overlay");
loadingParent.classList.add("overlay-block");
loadingChild.classList.add("overlay-layer");
loadingSpinner.classList.remove("d-none");
}
script AfterRequestContent() {
const loadingParent = document.getElementById("loading-parent");
const loadingChild = document.getElementById("loading-child");
const loadingSpinner = document.getElementById("loading-spinner");
loadingParent.classList.remove("overlay");
loadingParent.classList.remove("overlay-block");
loadingChild.classList.remove("overlay-layer");
loadingSpinner.classList.add("d-none");
}
templ ShowDashboardPic(
title string,
cmp templ.Component,
css templ.Component,
js templ.Component,
navbaruser templ.Component,
userprofile templ.Component,
) {
@layout.DashboardLayout(title, css, js, navbaruser, userprofile) {
@cmp
}
}

View File

@@ -1,220 +0,0 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package corporate_dashboardpic
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
import "cpone/layout"
import "cpone/component/customtextfield"
import "cpone/models"
func DashboardPic(
listID string,
paginationID string,
breadcrumb templ.Component,
filtercomponent templ.Component,
listingcomponent templ.Component,
paginationcomponent templ.Component,
) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"container-fluid\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "listID",
Name: "listID",
Type: "hidden",
Value: listID}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "paginationID",
Name: "paginationID",
Type: "hidden",
Value: paginationID}).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"row align-item-center mb-10\"><div class=\"col-md-10 col-sm-12 p-0\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = breadcrumb.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = filtercomponent.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"loading-parent\" class=\"rounded\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = listingcomponent.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = paginationcomponent.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"loading-child\" class=\"rounded bg-transparent\"><div id=\"loading-spinner\" class=\"spinner-border text-primary d-none\" style=\"width: 3rem; height: 3rem;\" role=\"status\"><span class=\"sr-only\">Loading...</span></div></div></div><div id=\"loadingcontent\"></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func JSDashboardPIC() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var2 := templ.GetChildren(ctx)
if templ_7745c5c3_Var2 == nil {
templ_7745c5c3_Var2 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<script>\r\n\t\tdocument.body.addEventListener('htmx:configRequest', function(evt) {\r\n\t\t\tconst token = localStorage.getItem(\"token\");\r\n\t\t\tif (token) {\r\n\t\t\t\tevt.detail.headers['Authentication'] = \"Bearer \" + token;\r\n\t\t\t}\r\n\t\t});\t\r\n\t</script>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func CSSDashboardPIC() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var3 := templ.GetChildren(ctx)
if templ_7745c5c3_Var3 == nil {
templ_7745c5c3_Var3 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<link rel=\"stylesheet\" href=\"assets/css/googlefont/poppins.css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/publicsans.css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/roboto.css\"><style>\r\n body {\r\n background-color: white;\r\n }\r\n #div-chart {\r\n margin: 40px 10vw 40px 10vw;\r\n }\r\n .title {\r\n font-size: 20px;\r\n font-weight: bold;\r\n }\r\n #title {\r\n font-weight: 600;\r\n }\r\n </style>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func BeforeRequestContent() templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_BeforeRequestContent_5717`,
Function: `function __templ_BeforeRequestContent_5717(){const loadingParent = document.getElementById("loading-parent");
const loadingChild = document.getElementById("loading-child");
const loadingSpinner = document.getElementById("loading-spinner");
loadingParent.classList.add("overlay");
loadingParent.classList.add("overlay-block");
loadingChild.classList.add("overlay-layer");
loadingSpinner.classList.remove("d-none");
}`,
Call: templ.SafeScript(`__templ_BeforeRequestContent_5717`),
CallInline: templ.SafeScriptInline(`__templ_BeforeRequestContent_5717`),
}
}
func AfterRequestContent() templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_AfterRequestContent_077f`,
Function: `function __templ_AfterRequestContent_077f(){const loadingParent = document.getElementById("loading-parent");
const loadingChild = document.getElementById("loading-child");
const loadingSpinner = document.getElementById("loading-spinner");
loadingParent.classList.remove("overlay");
loadingParent.classList.remove("overlay-block");
loadingChild.classList.remove("overlay-layer");
loadingSpinner.classList.add("d-none");
}`,
Call: templ.SafeScript(`__templ_AfterRequestContent_077f`),
CallInline: templ.SafeScriptInline(`__templ_AfterRequestContent_077f`),
}
}
func ShowDashboardPic(
title string,
cmp templ.Component,
css templ.Component,
js templ.Component,
navbaruser templ.Component,
userprofile templ.Component,
) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var4 := templ.GetChildren(ctx)
if templ_7745c5c3_Var4 == nil {
templ_7745c5c3_Var4 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Var5 := templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
templ_7745c5c3_Err = cmp.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = io.Copy(templ_7745c5c3_W, templ_7745c5c3_Buffer)
}
return templ_7745c5c3_Err
})
templ_7745c5c3_Err = layout.DashboardLayout(title, css, js, navbaruser, userprofile).Render(templ.WithChildren(ctx, templ_7745c5c3_Var5), templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -1,68 +0,0 @@
package corporate_dashboardpic
templ FilterListing(
hxGet string,
hxTrigger string,
hxInclude string,
hxSwap string,
hxTarget string,
hxBeforeRequest templ.ComponentScript,
hxAfterRequest templ.ComponentScript,
) {
<div class="row pt-8 align-items-center">
<div class="col-12 col-sm-3 col-md-1 col-lg-1 col-xl-1 mb-2">
<label class="text-black font-weight-bolder">Start Date:</label>
</div>
<div class="col-12 col-sm-9 col-md-2 col-lg-2 col-xl-2 mb-2">
<input
id="startdateID"
name="startdate"
class="form-control form-control-lg bg-field border-0 rounded-lg"
type="date"
autocomplete="off"
hx-get={ hxGet }
hx-trigger={ hxTrigger }
hx-include={ hxInclude }
hx-swap={ hxSwap }
hx-target={ hxTarget }
hx-on::before-request={ hxBeforeRequest }
hx-on::after-request={ hxAfterRequest }
/>
</div>
<div class="col-12 col-sm-3 col-md-1 col-lg-1 col-xl-1 mb-2">
<label class="text-black font-weight-bolder">End Date:</label>
</div>
<div class="col-12 col-sm-9 col-md-2 col-lg-2 col-xl-2 mb-2">
<input
id="enddateID"
name="enddate"
class="form-control form-control-lg bg-field border-0 rounded-lg"
type="date"
autocomplete="off"
hx-get={ hxGet }
hx-trigger={ hxTrigger }
hx-include={ hxInclude }
hx-swap={ hxSwap }
hx-target={ hxTarget }
hx-on::before-request={ hxBeforeRequest }
hx-on::after-request={ hxAfterRequest }
/>
</div>
<div class="col-12 col-sm-12 col-md-6 col-lg-6 col-xl-6 mb-2">
<input
id="searchID"
name="search"
class="form-control form-control-lg bg-field border-0 rounded-lg"
type="text"
placeholder="Nama MCU"
hx-get={ hxGet }
hx-trigger={ hxTrigger }
hx-include={ hxInclude }
hx-swap={ hxSwap }
hx-target={ hxTarget }
hx-on::before-request={ hxBeforeRequest }
hx-on::after-request={ hxAfterRequest }
/>
</div>
</div>
}

View File

@@ -1,48 +0,0 @@
package corporate_dashboardpic
import "cpone/models"
import "strconv"
templ ListingData(
data []models.DashboardPic,
listID string,
) {
<div id={listID} class="align-items-center py-8 flex-column" hx-swap-oob="true">
if len(data) == 0 {
<div class="text-center">
<h4>Data Tidak Ditemukan</h4>
</div>
} else {
<div class="bg-field rounded">
<div class="p-8">
for i, d := range data {
if i == (len(data) - 1) {
<div id={ strconv.Itoa(int(d.Mgm_McuID)) } class="card shadow p-8" hx-get={"/corp/dashboard_pic/click/" + strconv.Itoa(d.Mgm_McuID)}>
@ItemCard(d)
</div>
} else {
<div id={ strconv.Itoa(int(d.Mgm_McuID)) } class="card shadow p-8 mb-8" hx-get={"/corp/dashboard_pic/click/" + strconv.Itoa(d.Mgm_McuID)}>
@ItemCard(d)
</div>
}
}
</div>
</div>
}
</div>
}
templ ItemCard(data models.DashboardPic) {
<div class="row d-flex align-items-center">
<div class="col-7">
<h3 class="text-black">{ data.Mgm_McuLabel }</h3>
</div>
<div class="col-md col-lg text-right">
<span class="text-black font-weight-bolder">{ data.Mgm_McuNote }</span>
</div>
<div class="col-md col-lg text-right">
<span class="text-black font-weight-bolder">{ data.Mgm_McuStartDate } - { data.Mgm_McuEndDate }</span>
</div>
</div>
}

View File

@@ -1,230 +0,0 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package corporate_dashboardpic
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
import "cpone/models"
import "strconv"
func ListingData(
data []models.DashboardPic,
listID string,
) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(listID)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 10, Col: 19}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" class=\"align-items-center py-8 flex-column\" hx-swap-oob=\"true\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if len(data) == 0 {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"text-center\"><h4>Data Tidak Ditemukan</h4></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"bg-field rounded\"><div class=\"p-8\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for i, d := range data {
if i == (len(data) - 1) {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(int(d.Mgm_McuID)))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 20, Col: 68}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" class=\"card shadow p-8\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs("/corp/dashboard_pic/click/" + strconv.Itoa(d.Mgm_McuID))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 20, Col: 159}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = ItemCard(d).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(int(d.Mgm_McuID)))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 24, Col: 68}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" class=\"card shadow p-8 mb-8\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs("/corp/dashboard_pic/click/" + strconv.Itoa(d.Mgm_McuID))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 24, Col: 164}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = ItemCard(d).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func ItemCard(data models.DashboardPic) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var7 := templ.GetChildren(ctx)
if templ_7745c5c3_Var7 == nil {
templ_7745c5c3_Var7 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"row d-flex align-items-center\"><div class=\"col-7\"><h3 class=\"text-black\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(data.Mgm_McuLabel)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 38, Col: 54}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</h3></div><div class=\"col-md col-lg text-right\"><span class=\"text-black font-weight-bolder\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var9 string
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(data.Mgm_McuNote)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 41, Col: 74}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</span></div><div class=\"col-md col-lg text-right\"><span class=\"text-black font-weight-bolder\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var10 string
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(data.Mgm_McuStartDate)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 44, Col: 79}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" - ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var11 string
templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(data.Mgm_McuEndDate)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\dashboardpic\listingdashboardpic.templ`, Line: 44, Col: 105}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</span></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -1,75 +0,0 @@
package corporate_mcudetail
import "cpone/layout"
templ McuDetailScreen(
breadcrumb templ.Component,
content templ.Component,
) {
<div class="container-fluid">
<div class="row align-item-center mb-10">
<div class="col-md-10 col-sm-12 p-0">
@breadcrumb
</div>
</div>
<div id="loading-parent" class="rounded">
@content
<div id="loading-child" class="rounded bg-transparent">
<div id="loading-spinner" class="spinner-border text-primary d-none" style="width: 3rem; height: 3rem;" role="status">
<span class="sr-only">Loading....</span>
</div>
</div>
</div>
<div id="loadingcontent"></div>
</div>
}
templ CSSMcuDetail(
CssKesimpulan templ.Component,
) {
<link
rel="stylesheet"
href="assets/css/googlefont/poppins.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/publicsans.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/roboto.css"
/>
<style>
body {
background-color: white;
}
#div-chart {
margin: 40px 10vw 40px 10vw;
}
.title {
font-size: 20px;
font-weight: bold;
}
#title {
font-weight: 600;
}
</style>
@CssKesimpulan
}
templ JSMcuDetail() {
<script src="assets/js/echarts-js/echart.min.js"></script>
}
templ ShowMcuDetail(
title string,
cmp templ.Component,
css templ.Component,
js templ.Component,
navbaruser templ.Component,
userprofile templ.Component,
) {
@layout.DashboardLayout(title, css, js, navbaruser, userprofile) {
@cmp
}
}

View File

@@ -1,156 +0,0 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package corporate_mcudetail
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
import "cpone/layout"
func McuDetailScreen(
breadcrumb templ.Component,
content templ.Component,
) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"container-fluid\"><div class=\"row align-item-center mb-10\"><div class=\"col-md-10 col-sm-12 p-0\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = breadcrumb.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div><div id=\"loading-parent\" class=\"rounded\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = content.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"loading-child\" class=\"rounded bg-transparent\"><div id=\"loading-spinner\" class=\"spinner-border text-primary d-none\" style=\"width: 3rem; height: 3rem;\" role=\"status\"><span class=\"sr-only\">Loading....</span></div></div></div><div id=\"loadingcontent\"></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func CSSMcuDetail(
CssKesimpulan templ.Component,
) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var2 := templ.GetChildren(ctx)
if templ_7745c5c3_Var2 == nil {
templ_7745c5c3_Var2 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<link rel=\"stylesheet\" href=\"assets/css/googlefont/poppins.css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/publicsans.css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/roboto.css\"><style>\r\n body {\r\n background-color: white;\r\n }\r\n #div-chart {\r\n margin: 40px 10vw 40px 10vw;\r\n }\r\n .title {\r\n font-size: 20px;\r\n font-weight: bold;\r\n }\r\n #title {\r\n font-weight: 600;\r\n }\r\n </style>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = CssKesimpulan.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func JSMcuDetail() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var3 := templ.GetChildren(ctx)
if templ_7745c5c3_Var3 == nil {
templ_7745c5c3_Var3 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<script src=\"assets/js/echarts-js/echart.min.js\"></script>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func ShowMcuDetail(
title string,
cmp templ.Component,
css templ.Component,
js templ.Component,
navbaruser templ.Component,
userprofile templ.Component,
) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var4 := templ.GetChildren(ctx)
if templ_7745c5c3_Var4 == nil {
templ_7745c5c3_Var4 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Var5 := templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
templ_7745c5c3_Err = cmp.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = io.Copy(templ_7745c5c3_W, templ_7745c5c3_Buffer)
}
return templ_7745c5c3_Err
})
templ_7745c5c3_Err = layout.DashboardLayout(title, css, js, navbaruser, userprofile).Render(templ.WithChildren(ctx, templ_7745c5c3_Var5), templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -1,158 +0,0 @@
package corporate_mcudetail
import "cpone/models"
import "strconv"
templ McuDetailTabView(
McuID string,
McuTab []models.McuTabModels,
) {
<div>
<ul class="nav nav-tabs nav-tabs-line">
for i, d := range McuTab {
if i == 0 {
<li class="nav-item">
<a
class="nav-link active"
data-toggle="tab"
href={templ.URL("#mcu_tab_" + strconv.Itoa(i))}
>{ d.TabName }</a>
</li>
} else {
<li class="nav-item">
<a
class="nav-link"
data-toggle="tab"
href={templ.URL("#mcu_tab_" + strconv.Itoa(i))}
>{ d.TabName }</a>
</li>
}
}
<li class="nav-item">
<a
if len(McuTab) == 0 {
class="nav-link active"
} else {
class="nav-link"
}
data-toggle="tab"
href={templ.URL("#mcu_tab_" + strconv.Itoa(len(McuTab) + 1))}
>Kesimpulan</a>
</li>
<li class="nav-item">
<a
class="nav-link"
data-toggle="tab"
href={templ.URL("#mcu_tab_" + strconv.Itoa(len(McuTab) + 2))}
>Daftar Peserta</a>
</li>
<li class="nav-item">
<a
class="nav-link"
data-toggle="tab"
href={templ.URL("#mcu_tab_" + strconv.Itoa(len(McuTab) + 3))}
>Executive Summary</a>
</li>
<li class="nav-item">
<a
class="nav-link"
data-toggle="tab"
href={templ.URL("#mcu_tab_" + strconv.Itoa(len(McuTab) + 4))}
>Keuangan</a>
</li>
</ul>
</div>
<div class="tab-content mt-5" id="mcutabcontent">
for i, d := range McuTab {
if i == 0 {
<div
class="tab-pane fade show active" role="tabpanel"
id={"mcu_tab_" + strconv.Itoa(i)}
aria-labelledby={"mcu_tab_" + strconv.Itoa(i)}
hx-get={"/corp/dashboard_pic/detail/" + McuID +"/" + d.TabID}
hx-target={"#" + d.TabID}
hx-trigger="load"
hx-indicator={"." + d.TabID + d.Mcu_ImageGrafikGroupMenu}
>
<div id={d.TabID}></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class={"htmx-indicator spinner-border spinner-border-lg " + d.TabID + d.Mcu_ImageGrafikGroupMenu} role="status" aria-hidden="true"></span>
</div>
</div>
} else {
<div
class="tab-pane fade" role="tabpanel"
id={"mcu_tab_" + strconv.Itoa(i)}
aria-labelledby={"mcu_tab_" + strconv.Itoa(i)}
hx-get={"/corp/dashboard_pic/detail/" + McuID +"/" + d.TabID}
hx-target={"#" + d.TabID}
hx-trigger="load"
hx-indicator={"." + d.TabID + d.Mcu_ImageGrafikGroupMenu}
>
<div id={d.TabID}></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class={"htmx-indicator spinner-border spinner-border-lg " + d.TabID + d.Mcu_ImageGrafikGroupMenu} role="status" aria-hidden="true"></span>
</div>
</div>
}
}
<div
if len(McuTab) == 0 {
class="tab-pane fade show active"
} else {
class="tab-pane fade"
}
role="tabpanel"
id={"mcu_tab_" + strconv.Itoa(len(McuTab) + 1)}
aria-labelledby={"mcu_tab_" + strconv.Itoa(len(McuTab) + 1)}
hx-get={"/corp/dashboard_pic/detail/" + McuID +"/tabkesimpulan"}
hx-target="#tabkesimpulan"
hx-trigger="load"
hx-indicator=".kesimpulanloading"
>
<div id="tabkesimpulan"></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class="htmx-indicator spinner-border spinner-border-lg kesimpulanloading" role="status" aria-hidden="true"></span>
</div>
</div>
<div
class="tab-pane fade" role="tabpanel"
id={"mcu_tab_" + strconv.Itoa(len(McuTab) + 2)}
aria-labelledby={"mcu_tab_" + strconv.Itoa(len(McuTab) + 2)}
hx-get={"/corp/dashboard_pic/detail/" + McuID +"/tabdaftarpeserta"}
hx-target="#tabdaftarpeserta"
hx-trigger="load"
hx-indicator=".tabdaftarpesertaload"
>
<div id="tabdaftarpeserta"></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class="htmx-indicator spinner-border spinner-border-lg tabdaftarpesertaload" role="status" aria-hidden="true"></span>
</div>
</div>
<div
class="tab-pane fade" role="tabpanel"
id={"mcu_tab_" + strconv.Itoa(len(McuTab) + 3)}
aria-labelledby={"mcu_tab_" + strconv.Itoa(len(McuTab) + 3)}
style="height: 700px;"
>
<object
data={"/birt/run?__report=report/one/mcu/rpt_executive_summary_mcu_001.rptdesign&__format=pdf&PID="+McuID+"&username=admin&tm=1722914077866"}
type="application/pdf" width="100%" height="100%"
></object>
</div>
<div
class="tab-pane fade" role="tabpanel"
id={"mcu_tab_" + strconv.Itoa(len(McuTab) + 4)}
aria-labelledby={"mcu_tab_" + strconv.Itoa(len(McuTab) + 4)}
hx-get={"/corp/dashboard_pic/detail/" + McuID +"/tabkeuangan"}
hx-target="#tabkeuangan"
hx-trigger="load"
hx-indicator=".uangloading"
>
<div id="tabkeuangan"></div>
<div style="display: flex; justify-content: center; align-items: center;">
<span class="htmx-indicator spinner-border spinner-border-lg uangloading" role="status" aria-hidden="true"></span>
</div>
</div>
</div>
}

View File

@@ -1,17 +0,0 @@
package corporate_daftarpeserta
templ Filter_DaftarPeserta(
hx_get string, hx_target string, hx_include string, hx_swap string,
hx_trigger string, hx_before templ.ComponentScript, hx_after templ.ComponentScript,
) {
<div class="row pt-8 align-items-center">
<div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 mb-2">
<input
id="search-daftar-peserta" type="text" placeholder="Cari nama peserta atau NIP"
name="searchdp" class="form-control form-control-lg bg-field border-0 rounded-lg"
hx-get={ hx_get } hx-target={ hx_target } hx-include={ hx_include } hx-swap={ hx_swap }
hx-trigger={ hx_trigger } hx-on::before-request={ hx_before } hx-on::after-request={ hx_after }
/>
</div>
</div>
}

View File

@@ -1,129 +0,0 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package corporate_daftarpeserta
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
func Filter_DaftarPeserta(
hx_get string, hx_target string, hx_include string, hx_swap string,
hx_trigger string, hx_before templ.ComponentScript, hx_after templ.ComponentScript,
) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"row pt-8 align-items-center\"><div class=\"col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 mb-2\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hx_before, hx_after)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<input id=\"search-daftar-peserta\" type=\"text\" placeholder=\"Cari nama peserta atau NIP\" name=\"searchdp\" class=\"form-control form-control-lg bg-field border-0 rounded-lg\" hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(hx_get)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\filter.templ`, Line: 12, Col: 31}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(hx_target)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\filter.templ`, Line: 12, Col: 55}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-include=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(hx_include)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\filter.templ`, Line: 12, Col: 81}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-swap=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(hx_swap)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\filter.templ`, Line: 12, Col: 101}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-trigger=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(hx_trigger)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\filter.templ`, Line: 13, Col: 39}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-on::before-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var7 templ.ComponentScript = hx_before
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var7.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-on::after-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 templ.ComponentScript = hx_after
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var8.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -1,92 +0,0 @@
package corporate_daftarpeserta
import "cpone/component/modal"
import "cpone/component/customtextfield"
import "cpone/models"
templ Dialog_DaftarPeserta(
component_id string, size string,
hx_post string, hx_target string, hx_swap string, hx_include string,
modal_id string, modal_title string, modal_body templ.Component,
modal_close templ.Component, modal_aksi templ.Component,
) {
<div>
<form
id={ component_id } class="form"
hx-post={ hx_post } hx-target={ hx_target }
hx-swap={ hx_swap } hx-inclide={ hx_include } hx-indicator=".formloading"
>
if size == "xl" {
@modalcomponent.ModalXL(modal_id, modal_title, modal_body, modal_aksi, modal_close)
} else {
@modalcomponent.Modal(modal_id, modal_title, modal_body, modal_aksi, modal_close)
}
</form>
</div>
}
templ Body_GenPass(component_id string, message string, hx_onload templ.ComponentScript) {
<div id={ component_id } hx-on::load={ hx_onload }>
<p>{ message }</p>
</div>
}
templ Body_Account(
component_id string,
acc_id models.CustomTextFieldv2Prm,
acc_email models.CustomTextFieldv2Prm,
pass models.CustomTextFieldv2Prm,
pass_cek models.CustomTextFieldv2Prm,
hx_onload templ.ComponentScript,
) {
<div id={ component_id } hx-on::load={ hx_onload }>
@customtextfield.CustomTextFieldv2(acc_id)
@customtextfield.CustomTextFieldv2(acc_email)
@customtextfield.CustomTextFieldv2(pass)
@customtextfield.CustomTextFieldv2(pass_cek)
</div>
}
templ Body_RPT(component_id string, list_rpt templ.Component, hx_onload templ.ComponentScript) {
<div id={ component_id } hx-on::load={ hx_onload }>
@list_rpt
</div>
}
templ Body_Detail(component_id string, table_detail templ.Component, hx_onload templ.ComponentScript) {
<div id={ component_id } hx-on::load={ hx_onload }>
@table_detail
</div>
}
templ Body_Attachment(component_id string, list_atc templ.Component, hx_onload templ.ComponentScript) {
<div id={ component_id } hx-on::load={ hx_onload }>
@list_atc
</div>
}
templ Close_Modal(modal_id string) {
<button
type="button" class="close" data-dismiss="modal"
aria-label="Close" hx-on::after-request={ JSHideModal(modal_id) }
> <i aria-hidden="true" class="ki ki-close"></i> </button>
}
templ Aksi_Modal(modal_id string, hx_post string, hx_target string, hx_swap string, blank bool) {
<div>
if !blank {
<button
type="button" class="btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btncancel"
data-dismiss="modal" hx-indicator=".cancelloading" hx-on::after-request={ JSHideModal(modal_id) }
hx-post={ hx_post } hx-target={ hx_target } hx-swap={ hx_swap }
>
<span class="htmx-indicator spinner-border spinner-border-sm cancelloading" role="status" aria-hidden="true"></span>
Batal
</button>
<button type="submit" class="btn btn-primary btn-shadow font-weight-bold rounded-lg btnsimpan">
<span class="htmx-indicator spinner-border spinner-border-sm formloading" role="status" aria-hidden="true"></span>
Yakin
</button>
}
</div>
}

View File

@@ -1,561 +0,0 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package corporate_daftarpeserta
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
import "cpone/component/modal"
import "cpone/component/customtextfield"
import "cpone/models"
func Dialog_DaftarPeserta(
component_id string, size string,
hx_post string, hx_target string, hx_swap string, hx_include string,
modal_id string, modal_title string, modal_body templ.Component,
modal_close templ.Component, modal_aksi templ.Component,
) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div><form id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(component_id)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\modal.templ`, Line: 15, Col: 29}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" class=\"form\" hx-post=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(hx_post)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\modal.templ`, Line: 16, Col: 29}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(hx_target)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\modal.templ`, Line: 16, Col: 53}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-swap=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(hx_swap)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\modal.templ`, Line: 17, Col: 29}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-inclide=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(hx_include)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\modal.templ`, Line: 17, Col: 55}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-indicator=\".formloading\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if size == "xl" {
templ_7745c5c3_Err = modalcomponent.ModalXL(modal_id, modal_title, modal_body, modal_aksi, modal_close).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = modalcomponent.Modal(modal_id, modal_title, modal_body, modal_aksi, modal_close).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</form></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func Body_GenPass(component_id string, message string, hx_onload templ.ComponentScript) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var7 := templ.GetChildren(ctx)
if templ_7745c5c3_Var7 == nil {
templ_7745c5c3_Var7 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hx_onload)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(component_id)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\modal.templ`, Line: 29, Col: 26}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-on::load=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var9 templ.ComponentScript = hx_onload
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var9.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"><p>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var10 string
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(message)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\modal.templ`, Line: 30, Col: 20}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</p></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func Body_Account(
component_id string,
acc_id models.CustomTextFieldv2Prm,
acc_email models.CustomTextFieldv2Prm,
pass models.CustomTextFieldv2Prm,
pass_cek models.CustomTextFieldv2Prm,
hx_onload templ.ComponentScript,
) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var11 := templ.GetChildren(ctx)
if templ_7745c5c3_Var11 == nil {
templ_7745c5c3_Var11 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hx_onload)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var12 string
templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(component_id)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\modal.templ`, Line: 42, Col: 26}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-on::load=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var13 templ.ComponentScript = hx_onload
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var13.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(acc_id).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(acc_email).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(pass).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(pass_cek).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func Body_RPT(component_id string, list_rpt templ.Component, hx_onload templ.ComponentScript) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var14 := templ.GetChildren(ctx)
if templ_7745c5c3_Var14 == nil {
templ_7745c5c3_Var14 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hx_onload)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var15 string
templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(component_id)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\modal.templ`, Line: 51, Col: 26}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-on::load=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var16 templ.ComponentScript = hx_onload
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var16.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = list_rpt.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func Body_Detail(component_id string, table_detail templ.Component, hx_onload templ.ComponentScript) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var17 := templ.GetChildren(ctx)
if templ_7745c5c3_Var17 == nil {
templ_7745c5c3_Var17 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hx_onload)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var18 string
templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(component_id)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\modal.templ`, Line: 57, Col: 26}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-on::load=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var19 templ.ComponentScript = hx_onload
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var19.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = table_detail.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func Body_Attachment(component_id string, list_atc templ.Component, hx_onload templ.ComponentScript) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var20 := templ.GetChildren(ctx)
if templ_7745c5c3_Var20 == nil {
templ_7745c5c3_Var20 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hx_onload)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var21 string
templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(component_id)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\modal.templ`, Line: 63, Col: 26}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-on::load=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var22 templ.ComponentScript = hx_onload
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var22.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = list_atc.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func Close_Modal(modal_id string) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var23 := templ.GetChildren(ctx)
if templ_7745c5c3_Var23 == nil {
templ_7745c5c3_Var23 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, JSHideModal(modal_id))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\" hx-on::after-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var24 templ.ComponentScript = JSHideModal(modal_id)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var24.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"><i aria-hidden=\"true\" class=\"ki ki-close\"></i></button>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func Aksi_Modal(modal_id string, hx_post string, hx_target string, hx_swap string, blank bool) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var25 := templ.GetChildren(ctx)
if templ_7745c5c3_Var25 == nil {
templ_7745c5c3_Var25 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !blank {
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, JSHideModal(modal_id))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<button type=\"button\" class=\"btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btncancel\" data-dismiss=\"modal\" hx-indicator=\".cancelloading\" hx-on::after-request=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var26 templ.ComponentScript = JSHideModal(modal_id)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var26.Call)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-post=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var27 string
templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(hx_post)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\modal.templ`, Line: 81, Col: 33}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var28 string
templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinStringErrs(hx_target)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\modal.templ`, Line: 81, Col: 57}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-swap=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var29 string
templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(hx_swap)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutab\daftarpeserta\modal.templ`, Line: 81, Col: 77}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"><span class=\"htmx-indicator spinner-border spinner-border-sm cancelloading\" role=\"status\" aria-hidden=\"true\"></span> Batal\r</button> <button type=\"submit\" class=\"btn btn-primary btn-shadow font-weight-bold rounded-lg btnsimpan\"><span class=\"htmx-indicator spinner-border spinner-border-sm formloading\" role=\"status\" aria-hidden=\"true\"></span> Yakin\r</button>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -1,61 +0,0 @@
package corporate_daftarpeserta
script BeforeRequestContent() {
const loadingParent = document.getElementById("loading-parent");
const loadingChild = document.getElementById("loading-child");
const loadingSpinner = document.getElementById("loading-spinner");
loadingParent.classList.add("overlay");
loadingParent.classList.add("overlay-block");
loadingChild.classList.add("overlay-layer");
loadingSpinner.classList.remove("d-none");
}
script AfterRequestContent() {
const loadingParent = document.getElementById("loading-parent");
const loadingChild = document.getElementById("loading-child");
const loadingSpinner = document.getElementById("loading-spinner");
loadingParent.classList.remove("overlay");
loadingParent.classList.remove("overlay-block");
loadingChild.classList.remove("overlay-layer");
loadingSpinner.classList.add("d-none");
}
script JSHideModal(modal_id string) {
$(modal_id).modal('hide');
}
script JSShowModal(modal_id string) {
$(modal_id).modal('show');
}
script JSGenPassReload(modal_id string, link string) {
$(modal_id).modal('hide');
htmx.ajax('POST', link, {target:'#content-dp', swap:'outerHTML'});
}
script HandleFormBeforeRequest() {
const btnCancel = document.querySelectorAll('.btncancel');
const btnSimpan = document.querySelectorAll('.btnsimpan');
for (let i = 0; i < btnCancel.length; i++) {
btnCancel[i].setAttribute('disabled', 'true');
}
for (let i = 0; i < btnSimpan.length; i++) {
btnSimpan[i].setAttribute('disabled', 'true');
}
}
script HandleFormAfterRequest() {
const btnCancel = document.querySelectorAll('.btncancel');
const btnSimpan = document.querySelectorAll('.btnsimpan');
for (let i = 0; i < btnCancel.length; i++) {
btnCancel[i].removeAttribute('disabled');
}
for (let i = 0; i < btnSimpan.length; i++) {
btnSimpan[i].removeAttribute('disabled');
}
}

Some files were not shown because too many files have changed in this diff Show More