Compare commits
6 Commits
release/de
...
adib/md-no
| Author | SHA1 | Date | |
|---|---|---|---|
| 7f32ac1c1c | |||
| 709fcb316d | |||
| 897bdc176c | |||
| 466aa0d9cf | |||
| c9a6b21aae | |||
| 70d0ce5383 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -4,4 +4,3 @@ config.yaml
|
||||
restapi.rest
|
||||
cpone.db
|
||||
coba.Http
|
||||
.vscode/
|
||||
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"liveServer.settings.port": 5501
|
||||
}
|
||||
10
README.md
10
README.md
@@ -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
|
||||
@@ -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
@@ -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>
|
||||
@@ -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
27
auth/jwt.go
27
auth/jwt.go
@@ -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")
|
||||
}
|
||||
@@ -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"))
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
@@ -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),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
}
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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-->
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
@@ -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`),
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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;"
|
||||
|
||||
@@ -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
2
go.mod
@@ -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
4
go.sum
@@ -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=
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
1195
handlers/dev/md.nonlabtemplate.handlers.go
Normal file
1195
handlers/dev/md.nonlabtemplate.handlers.go
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
}
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
package models
|
||||
|
||||
type ResponseStatus struct {
|
||||
Status string `json:"status"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
@@ -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"`
|
||||
}
|
||||
@@ -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"`
|
||||
}
|
||||
@@ -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"`
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package models
|
||||
|
||||
type ModelKesimpulanLab struct {
|
||||
Nomor string `db:"nomor"`
|
||||
Test string `db:"Test"`
|
||||
Total string `db:"total"`
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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"`
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
43
models/nonlabtemplate.models.go
Normal file
43
models/nonlabtemplate.models.go
Normal 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
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package models
|
||||
|
||||
type KelainanFisikDataModel struct {
|
||||
Test string `db:"test"`
|
||||
Total int `db:"total"`
|
||||
Mcu_KelainanClasification string `db:"Mcu_KelainanClasification"`
|
||||
}
|
||||
@@ -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"`
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package models
|
||||
|
||||
type KelainanLabModel struct {
|
||||
Mcu_KelainanID string `db:"Mcu_KelainanID"`
|
||||
Mcu_KelainanName string `db:"Test"`
|
||||
Total int `db:"total"`
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package models
|
||||
|
||||
type KelNonLabModel struct {
|
||||
Mcu_KelainanID string `db:"Mcu_KelainanID"`
|
||||
Test string `db:"Test"`
|
||||
Total int `db:"total"`
|
||||
}
|
||||
@@ -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"`
|
||||
}
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
430
services/dev/md.nonlabtemplate.services.go
Normal file
430
services/dev/md.nonlabtemplate.services.go
Normal 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)
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
@@ -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>
|
||||
}
|
||||
@@ -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>
|
||||
}
|
||||
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
@@ -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>
|
||||
}
|
||||
@@ -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>
|
||||
}
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
@@ -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>
|
||||
}
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
@@ -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
Reference in New Issue
Block a user