Compare commits
113 Commits
adib/md-pa
...
middeware-
| Author | SHA1 | Date | |
|---|---|---|---|
| 8f818f9e94 | |||
| 78487fafd0 | |||
| 16a2bd45f5 | |||
| fd4f792d8a | |||
| e1200fae61 | |||
| 3bc13d64bc | |||
| b279a942dd | |||
| 17e1268cac | |||
|
|
e6b5435337 | ||
| 2f651cba3d | |||
|
|
16de8d4493 | ||
|
|
8dd071a924 | ||
|
|
1bfeb97a57 | ||
|
|
988cee93c2 | ||
|
|
fe3cb753b5 | ||
|
|
23382aa755 | ||
|
|
49a9f76574 | ||
|
|
126f623298 | ||
|
|
1c727a5ae7 | ||
|
|
18b89453ba | ||
| b508eb68da | |||
| 7f3e75a8e3 | |||
| d1ff7ba2fb | |||
| 52a161195e | |||
| 6deadec9a3 | |||
| c04b8b1081 | |||
| e1c8ddd8f0 | |||
| e6a5925588 | |||
| a2fc463990 | |||
| 246dd34542 | |||
| 9f822c5514 | |||
| dd980b4430 | |||
|
|
f30189816b | ||
| 8dfdc3fece | |||
| 2d67b7b723 | |||
| f825bc1639 | |||
| 2058220370 | |||
| 6045c459da | |||
| 86264a05e2 | |||
| ae807c1615 | |||
| 88596ac6d9 | |||
|
|
c7a66aae8d | ||
|
|
a4319bee07 | ||
|
|
dbead529fe | ||
|
|
1ed188e3ff | ||
|
|
1e978188ee | ||
| 2c183a43cc | |||
| 2909b06966 | |||
| f2d0db174e | |||
| 42f24d1c77 | |||
| ada2ae9052 | |||
| ac4feb51c1 | |||
| 44eca754f5 | |||
|
|
6e7a84f4aa | ||
|
|
f6296003c9 | ||
|
|
c6c61c7caf | ||
|
|
1b0522146c | ||
| d92cc9727c | |||
| b947c1c6c4 | |||
| 59a3f87644 | |||
| 3719cbff71 | |||
| 9b8e3301cc | |||
| fb29e251d9 | |||
| cca96b0203 | |||
|
|
275205f5dd | ||
|
|
add659eb2c | ||
|
|
4739ae33c7 | ||
|
|
23f8fd513d | ||
|
|
e227d59a39 | ||
|
|
2e5fc8fd87 | ||
|
|
1a3251163a | ||
|
|
ba6ac081e1 | ||
|
|
1b97c6c788 | ||
|
|
348c0c1252 | ||
|
|
8bf75e9ef1 | ||
|
|
4791aceaa5 | ||
|
|
b04e3e8e44 | ||
|
|
b14c89dc34 | ||
|
|
219600fc7f | ||
|
|
3b2086b253 | ||
|
|
b68a2ed2ec | ||
|
|
a3005c3b6a | ||
|
|
04460bac00 | ||
|
|
0053be36f7 | ||
|
|
af29e820d9 | ||
|
|
03d34b80e7 | ||
|
|
4c3361fe74 | ||
|
|
5b2c63a4d4 | ||
|
|
f6ac4944e8 | ||
|
|
4ea514c3f0 | ||
|
|
398ee17727 | ||
|
|
6c7986c676 | ||
|
|
94fea169d1 | ||
|
|
af1c16f8f9 | ||
|
|
67b9f36d29 | ||
|
|
0490d17d2a | ||
|
|
cd0d3aee08 | ||
|
|
eaabf29fda | ||
|
|
d13384ab64 | ||
|
|
9cc14fd92c | ||
|
|
10c1d3c5dd | ||
|
|
b3ef572180 | ||
|
|
9f2ac20180 | ||
|
|
922f8492c3 | ||
|
|
d8278b6886 | ||
|
|
caa6dba306 | ||
|
|
4c12c45aa8 | ||
|
|
fd3609f82f | ||
|
|
e6afeb74b8 | ||
|
|
b1dc143e83 | ||
|
|
e1f76430fc | ||
|
|
edef960ae5 | ||
|
|
4f1a9adb53 |
10
README.md
10
README.md
@@ -56,4 +56,12 @@ $ 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
|
||||
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
|
||||
```
|
||||
|
||||
@@ -94,6 +94,48 @@ License: You must have a valid license purchased only from themeforest(the above
|
||||
>
|
||||
<!--begin::Main-->
|
||||
<div class="d-flex flex-column flex-root bg-white">
|
||||
<div
|
||||
id="notification-001"
|
||||
class="toast toast-top-right toas fade show"
|
||||
role="alert"
|
||||
aria-live="assertive"
|
||||
aria-atomic="true"
|
||||
hx-swap-oob="true"
|
||||
style="margin-top: 2vh; margin-right: 2vw;"
|
||||
>
|
||||
<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>
|
||||
<!-- begin::Navbar -->
|
||||
<div
|
||||
class="d-flex flex-lg-row justify-content-between py-5"
|
||||
|
||||
@@ -59,6 +59,8 @@ SEARCH GROUP CSS KEYWORD "###"
|
||||
--dangerbg: #f7c9c9;
|
||||
--toscabg: #c9f7f5;
|
||||
--fieldbg: #f5f8fa;
|
||||
--labelkartukontrolSudahbg: #e8fff3;
|
||||
--labelkartukontrolBelumbg: #fff8dd;
|
||||
/* END BACKGROUND */
|
||||
/* TEXT COLOR */
|
||||
--text-black: #0e1e28;
|
||||
@@ -67,6 +69,8 @@ SEARCH GROUP CSS KEYWORD "###"
|
||||
--text-header-table: #b5b5c3;
|
||||
--header-table-bg: #f3f6f9;
|
||||
--active-state: #637381;
|
||||
--textcolorlabelkartukontrolSudah: #50cd89;
|
||||
--textcolorlabelkartukontrolBelum: #f1bc00;
|
||||
/* END TEXT COLOR */
|
||||
--light: #f3f6f9;
|
||||
--dark: #181c32;
|
||||
@@ -290,6 +294,56 @@ a.text-white:focus {
|
||||
-webkit-box-shadow: 0 0 0 0.2rem rgba(84, 168, 255, 0.5);
|
||||
box-shadow: 0 0 0 0.2rem rgba(84, 168, 255, 0.5);
|
||||
}
|
||||
|
||||
.btn-field {
|
||||
color: var(--text-black);
|
||||
background-color: var(--fieldbg) !important;
|
||||
border-color: var(--fieldbg) !important;
|
||||
}
|
||||
.btn-field.btn-lg {
|
||||
padding: 0.825rem 1.42rem !important;
|
||||
font-size: 1.08rem !important;
|
||||
line-height: 1.5 !important;
|
||||
border-radius: 0.42rem !important;
|
||||
}
|
||||
.btn-field.btn-lg.rounded-lg {
|
||||
padding: 0.825rem 1.42rem !important;
|
||||
font-size: 1.08rem !important;
|
||||
line-height: 1.5 !important;
|
||||
border-radius: 0.85rem !important;
|
||||
}
|
||||
.btn-field:hover {
|
||||
color: var(--text-black);
|
||||
background-color: var(--fieldbg) !important;
|
||||
border-color: var(--fieldbg) !important;
|
||||
}
|
||||
.btn-field:focus,
|
||||
.btn-field.focus {
|
||||
color: var(--text-black);
|
||||
background-color: var(--fieldbg) !important;
|
||||
border-color: var(--fieldbg) !important;
|
||||
-webkit-box-shadow: 0 0 0 0rem var(--fieldbg) !important;
|
||||
box-shadow: 0 0 0 0rem var(--fieldbg) !important;
|
||||
}
|
||||
.btn-field.disabled,
|
||||
.btn-field:disabled {
|
||||
color: var(--text-black);
|
||||
background-color: var(--fieldbg) !important;
|
||||
border-color: var(--fieldbg) !important;
|
||||
}
|
||||
.btn-field:not(:disabled):not(.disabled):active,
|
||||
.btn-field:not(:disabled):not(.disabled).active,
|
||||
.show > .btn-field.dropdown-toggle {
|
||||
color: var(--text-black);
|
||||
background-color: var(--fieldbg) !important;
|
||||
border-color: var(--fieldbg) !important;
|
||||
}
|
||||
.btn-field:not(:disabled):not(.disabled):active:focus,
|
||||
.btn-field:not(:disabled):not(.disabled).active:focus,
|
||||
.show > .btn-field.dropdown-toggle:focus {
|
||||
-webkit-box-shadow: 0 0 0 0rem var(--fieldbg) !important;
|
||||
box-shadow: 0 0 0 0rem var(--fieldbg) !important;
|
||||
}
|
||||
/* COBA CUSTOM BTN */
|
||||
.btn-tosca {
|
||||
color: #ffffff;
|
||||
@@ -616,7 +670,7 @@ a.text-white:focus {
|
||||
}
|
||||
.btn-outline-secondary.disabled,
|
||||
.btn-outline-secondary:disabled {
|
||||
color: var(--secondary) !important;
|
||||
color: var(--text-black) !important;
|
||||
background-color: transparent;
|
||||
}
|
||||
.btn-outline-secondary:not(:disabled):not(.disabled):active,
|
||||
@@ -5195,9 +5249,11 @@ a.text-hover-tosca:hover .svg-icon svg:hover g [fill],
|
||||
position: fixed;
|
||||
top: 0vh;
|
||||
right: 0vh;
|
||||
z-index: 9998;
|
||||
z-index: 99999999999 !important;
|
||||
width: 350px;
|
||||
height: auto;
|
||||
margin-top: 2vh;
|
||||
margin-right: 2vw;
|
||||
}
|
||||
|
||||
/* ### TOAST FONT SIZE */
|
||||
@@ -5205,6 +5261,27 @@ a.text-hover-tosca:hover .svg-icon svg:hover g [fill],
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
/* ### KARTU KONTROL CSS */
|
||||
.kartukontrol-sudah-label {
|
||||
background-color: var(--labelkartukontrolSudahbg); /*figma*/
|
||||
color: var(--textcolorlabelkartukontrolSudah); /*figma*/
|
||||
padding: 0.15rem 0.75rem;
|
||||
border-radius: 0.42rem;
|
||||
}
|
||||
|
||||
.kartukontrol-pending-label {
|
||||
background-color: var(--labelkartukontrolBelumbg); /*figma*/
|
||||
color: var(--textcolorlabelkartukontrolBelum); /*figma*/
|
||||
padding: 0.15rem 0.75rem;
|
||||
border-radius: 0.42rem;
|
||||
}
|
||||
|
||||
/* ### CUSTOM CSS SELECTPICKER */
|
||||
.btn-custom-selectpicker{
|
||||
height: 8vh;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* ### OVERLAY */
|
||||
.overlay-loading {
|
||||
position: relative !important;
|
||||
@@ -5239,6 +5316,51 @@ a.text-hover-tosca:hover .svg-icon svg:hover g [fill],
|
||||
cursor: wait !important;
|
||||
}
|
||||
|
||||
/* ### PROGRESS BAR HOVER TEXT */
|
||||
/* ## PRIMARY */
|
||||
.progress-bar {
|
||||
height: 4px !important;
|
||||
background-color: var(--primary) !important;
|
||||
width: 100% !important;
|
||||
overflow: hidden !important;
|
||||
}
|
||||
|
||||
.progress-bar-value {
|
||||
width: 100% !important;
|
||||
height: 100% !important;
|
||||
background-color: var(--primarybg) !important;
|
||||
animation: indeterminateAnimation 1s infinite linear !important;
|
||||
transform-origin: 0% 50% !important;
|
||||
}
|
||||
|
||||
@keyframes indeterminateAnimation {
|
||||
0% {
|
||||
transform: translateX(0) scaleX(0);
|
||||
}
|
||||
40% {
|
||||
transform: translateX(0) scaleX(0.4);
|
||||
}
|
||||
100% {
|
||||
transform: translateX(100%) scaleX(0.5);
|
||||
}
|
||||
}
|
||||
/* ## SECONDARY */
|
||||
|
||||
/* ## SUCCESS */
|
||||
/* ## INFO */
|
||||
/* ## WARNING */
|
||||
/* ## DANGER */
|
||||
|
||||
/* ### HTMX INDICATOR */
|
||||
.htmx-indicator {
|
||||
display: none !important;
|
||||
}
|
||||
.htmx-request .htmx-indicator {
|
||||
display: inline-block !important;
|
||||
}
|
||||
.htmx-request.htmx-indicator {
|
||||
display: inline-block !important;
|
||||
}
|
||||
/* ### BUTTON HOVER TEXT */
|
||||
/* ### */
|
||||
/* ## PRIMARY */
|
||||
|
||||
@@ -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.",
|
||||
|
||||
BIN
assets/asset-corporate-portal/media/person/person.png
Normal file
BIN
assets/asset-corporate-portal/media/person/person.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.0 KiB |
4978
assets/hanan/fisik-2.html
Normal file
4978
assets/hanan/fisik-2.html
Normal file
File diff suppressed because it is too large
Load Diff
784
assets/hanan/kesimpulan-saran.html
Normal file
784
assets/hanan/kesimpulan-saran.html
Normal file
@@ -0,0 +1,784 @@
|
||||
<!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>
|
||||
511
assets/mcu/doctor.html
Normal file
511
assets/mcu/doctor.html
Normal file
@@ -0,0 +1,511 @@
|
||||
<!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>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;
|
||||
}
|
||||
</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">
|
||||
<!-- person.png start -->
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<img
|
||||
src="asset-corporate-portal/media/person/person.png"
|
||||
style="display: block; width: 13vw"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mt-5">
|
||||
<div class="col-4">
|
||||
<button
|
||||
class="btn bg-primary-transparent text-center text-primary"
|
||||
style="width: 13vw; font-weight: 600"
|
||||
>
|
||||
Update Foto
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- person.png end -->
|
||||
|
||||
<div class="row mt-5">
|
||||
<!-- col 1 start -->
|
||||
<div class="col-4">
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Sapaan</label
|
||||
>
|
||||
<select
|
||||
class="selectpicker form-control"
|
||||
id="select1"
|
||||
data-live-search="true"
|
||||
data-size="4"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
>
|
||||
<option value="default">Pilih Sapaan</option>
|
||||
<option value="mr">Tuan</option>
|
||||
<option value="mrs">Nyonya</option>
|
||||
<option value="ms">Nona</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Imbuhan Awal 1</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Imbuhan Awal 1"
|
||||
/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Imbuhan Awal 2</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Imbuhan Awal 2"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- jenis kelamin -->
|
||||
<div class="form-row mt-5">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Jenis Kelamin</label
|
||||
>
|
||||
<select
|
||||
class="selectpicker form-control"
|
||||
id="select1"
|
||||
data-live-search="true"
|
||||
data-size="4"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
>
|
||||
<option value="default">Pilih Jenis Kelamin</option>
|
||||
<option value="mr">Tuan</option>
|
||||
<option value="mrs">Nyonya</option>
|
||||
<option value="ms">Nona</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- jenis kelamin -->
|
||||
<!-- gol darah -->
|
||||
<div class="form-row mt-5">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Golongan Darah</label
|
||||
>
|
||||
<select
|
||||
class="selectpicker form-control"
|
||||
id="select1"
|
||||
data-live-search="true"
|
||||
data-size="4"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
>
|
||||
<option value="default">Pilih Golongan Darah</option>
|
||||
<option value="mr">Tuan</option>
|
||||
<option value="mrs">Nyonya</option>
|
||||
<option value="ms">Nona</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- gol darah -->
|
||||
<!-- kewarganegaraan -->
|
||||
<div class="form-row mt-5">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Kewarganegaraan</label
|
||||
>
|
||||
<div class="form-control border-0 h-auto p-0 mt-3">
|
||||
<div class="form-group">
|
||||
<div style="display: flex; gap: 20px">
|
||||
<label style="display: flex; align-items: center; gap: 5px">
|
||||
<input type="radio" name="nationality" value="wni" />
|
||||
<p style="margin: 0">WNI</p>
|
||||
</label>
|
||||
<label style="display: flex; align-items: center; gap: 5px">
|
||||
<input type="radio" name="nationality" value="wna" />
|
||||
<p style="margin: 0">WNA</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- kewarganegaraan -->
|
||||
|
||||
<!-- identitas -->
|
||||
<div class="form-row mt-5">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Imbuhan Awal 1</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Imbuhan Awal 1"
|
||||
/>
|
||||
</div>
|
||||
<!-- identitas -->
|
||||
</div>
|
||||
<!-- col 1 end -->
|
||||
<!-- col 2 start -->
|
||||
<div class="col-4">
|
||||
<!-- nama -->
|
||||
<div class="form-row">
|
||||
<label style="font-family: Poppins; font-weight: 600">Nama</label>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Input 3"
|
||||
/>
|
||||
</div>
|
||||
<!-- nama -->
|
||||
<!-- tanggal lahir -->
|
||||
<div class="form-row mt-5">
|
||||
<label style="font-family: Poppins; font-weight: 600"
|
||||
>Tanggal Lahir</label
|
||||
>
|
||||
<div class="input-group date bg-field border-0 rounded-lg">
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
readonly
|
||||
placeholder="Pilih Tanggal"
|
||||
id="datepicker"
|
||||
/>
|
||||
<div class="input-group-prepend">
|
||||
<span
|
||||
class="input-group-text bg-field border-0 rounded-lg"
|
||||
id="calendar-icon"
|
||||
>
|
||||
<span
|
||||
class="iconify text-grey"
|
||||
data-icon="heroicons-solid:calendar"
|
||||
style="font-size: 20px"
|
||||
></span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- tanggal lahir -->
|
||||
<!-- rhesus -->
|
||||
<div class="form-row mt-5">
|
||||
<label style="font-family: Poppins; font-weight: 600">Rhesus</label>
|
||||
<select
|
||||
class="selectpicker form-control"
|
||||
id="select1"
|
||||
data-live-search="true"
|
||||
data-size="5"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
>
|
||||
<option value="default">Pilih Rhesus</option>
|
||||
<option value="mr">Tuan</option>
|
||||
<option value="mrs">Nyonya</option>
|
||||
<option value="ms">Nona</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- rhesus -->
|
||||
<!-- etnis -->
|
||||
<div class="form-row mt-5">
|
||||
<label style="font-family: Poppins; font-weight: 600">Etnis</label>
|
||||
<select
|
||||
class="selectpicker form-control"
|
||||
id="select1"
|
||||
data-live-search="true"
|
||||
data-size="4"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
>
|
||||
<option value="default">Pilih Etnis</option>
|
||||
<option value="mr">Tuan</option>
|
||||
<option value="mrs">Nyonya</option>
|
||||
<option value="ms">Nona</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- etnis -->
|
||||
|
||||
<!-- no hp -->
|
||||
<div class="form-row mt-6">
|
||||
<div class="col">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Nomor HP</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Nomor HP"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- no hp -->
|
||||
</div>
|
||||
<!-- col 2 end -->
|
||||
<!-- col 3 start -->
|
||||
<div class="col-4">
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Imbuhan Akhir 1</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Imbuhan Akhir 1"
|
||||
/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Imbuhan Akhir 2</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Imbuhan Akhir 2"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- umur -->
|
||||
<div class="form-row mt-5">
|
||||
<div class="col">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Umur</label
|
||||
>
|
||||
<input
|
||||
type="number"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Tahun"
|
||||
/>
|
||||
</div>
|
||||
<div class="col mt-8">
|
||||
<input
|
||||
type="number"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Bulan"
|
||||
/>
|
||||
</div>
|
||||
<div class="col mt-8">
|
||||
<input
|
||||
type="number"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Hari"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- umur -->
|
||||
|
||||
<!-- pendidikan terakhir -->
|
||||
<div class="form-row mt-5">
|
||||
<div class="col">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Pendidikan Terakhir</label
|
||||
>
|
||||
<select
|
||||
class="selectpicker form-control"
|
||||
id="select1"
|
||||
data-live-search="true"
|
||||
data-size="4"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
>
|
||||
<option value="default">Pilih Pendidikan</option>
|
||||
<option value="mr">Tuan</option>
|
||||
<option value="mrs">Nyonya</option>
|
||||
<option value="ms">Nona</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- pendidikan terakhir -->
|
||||
|
||||
<!-- identitas pilihan -->
|
||||
<div class="form-row mt-5">
|
||||
<div class="col">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Identitas</label
|
||||
>
|
||||
<select
|
||||
class="selectpicker form-control"
|
||||
id="select1"
|
||||
data-live-search="true"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
data-size="4"
|
||||
>
|
||||
<option value="default">Pilih Identitas</option>
|
||||
<option value="mr">Tuan</option>
|
||||
<option value="mrs">Nyonya</option>
|
||||
<option value="ms">Nona</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- identitas pilihan -->
|
||||
|
||||
<!-- email -->
|
||||
<div class="form-row mt-6">
|
||||
<div class="col">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Email</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Email"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- email -->
|
||||
</div>
|
||||
<!-- col 3 end -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--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>
|
||||
4682
assets/mcu/isihasilriwayat.html
Normal file
4682
assets/mcu/isihasilriwayat.html
Normal file
File diff suppressed because it is too large
Load Diff
631
assets/mcu/patient.html
Normal file
631
assets/mcu/patient.html
Normal file
@@ -0,0 +1,631 @@
|
||||
<!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>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"
|
||||
>
|
||||
<style></style>
|
||||
<!--begin::Main-->
|
||||
|
||||
<div class="wrapperx p-5 h-100">
|
||||
<div class="row">
|
||||
<div class="col-lg-10">
|
||||
<!--begin::Row 1-->
|
||||
<div class="form-row">
|
||||
<div class="col-md-6 col-lg-2">
|
||||
<label
|
||||
for="input1"
|
||||
class="font-weight-bolder"
|
||||
style="font-family: Poppins"
|
||||
>Sapaan</label
|
||||
>
|
||||
<select
|
||||
class="selectpicker form-control"
|
||||
id="select1"
|
||||
data-live-search="true"
|
||||
data-size="4"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
>
|
||||
<option value="mr">Tn</option>
|
||||
<option value="mrs">Ny</option>
|
||||
<option value="ms">Nn</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Imbuhan Awal</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Imbuhan Awal 1"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-5">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Nama
|
||||
</label>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Imbuhan Awal 2"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-2">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Imbuhan Akhir</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Imbuhan Awal 2"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<!--end::Row 1-->
|
||||
<!--begin::Row 2-->
|
||||
<div class="row mt-5">
|
||||
<div class="col-md-6">
|
||||
<!-- begin::Jenis Kelamin -->
|
||||
<div class="form-row">
|
||||
<label
|
||||
for="input1"
|
||||
style="font-family: Poppins; font-weight: 600"
|
||||
>Jenis Kelamin</label
|
||||
>
|
||||
<select
|
||||
class="selectpicker form-control"
|
||||
id="select1"
|
||||
data-live-search="true"
|
||||
data-size="4"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
>
|
||||
<option value="default">Pilih Jenis Kelamin</option>
|
||||
<option value="mr">Perempuan</option>
|
||||
<option value="mrs">Laki-Laki</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- end::Jenis Kelamin -->
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<!-- begin::Tanggal Lahir -->
|
||||
<div class="form-row">
|
||||
<label style="font-family: Poppins; font-weight: 600"
|
||||
>Tanggal Lahir</label
|
||||
>
|
||||
<div class="input-group date bg-field border-0 rounded-lg">
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
readonly
|
||||
placeholder="Pilih Tanggal"
|
||||
id="datepicker"
|
||||
/>
|
||||
<div class="input-group-prepend">
|
||||
<span
|
||||
class="input-group-text bg-field border-0 rounded-lg"
|
||||
id="calendar-icon"
|
||||
>
|
||||
<span
|
||||
class="iconify text-grey"
|
||||
data-icon="heroicons-solid:calendar"
|
||||
style="font-size: 20px"
|
||||
></span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end::Tanggal Lahir -->
|
||||
</div>
|
||||
</div>
|
||||
<!--end::Row 2-->
|
||||
<!--begin::Row 3-->
|
||||
<div class="row mt-5">
|
||||
<div class="col-lg-6">
|
||||
<!-- begin::Umur -->
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label
|
||||
for="input1"
|
||||
style="font-family: Poppins; font-weight: 600"
|
||||
>Umur</label
|
||||
>
|
||||
<div class="input-container">
|
||||
<input
|
||||
type="text"
|
||||
id="myInput"
|
||||
class="input-field form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
/>
|
||||
<label for="myInput" class="input-label">Tahun</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col mt-8">
|
||||
<div class="input-container">
|
||||
<input
|
||||
type="text"
|
||||
id="myInput"
|
||||
class="input-field form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
/>
|
||||
<label for="myInput" class="input-label">Bulan</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col mt-8">
|
||||
<div class="input-container">
|
||||
<input
|
||||
type="text"
|
||||
id="myInput"
|
||||
class="input-field form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
/>
|
||||
<label for="myInput" class="input-label">Hari</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end::Umur -->
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<!-- begin::Darah -->
|
||||
<div class="form-row">
|
||||
<!-- begin::Golongan Darah -->
|
||||
<div class="col">
|
||||
<label
|
||||
for="input1"
|
||||
style="font-family: Poppins; font-weight: 600"
|
||||
>Golongan Darah</label
|
||||
>
|
||||
<select
|
||||
class="selectpicker form-control"
|
||||
id="select1"
|
||||
data-live-search="true"
|
||||
data-size="4"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
>
|
||||
<option value="default">Pilih Golongan Darah</option>
|
||||
<option value="">O</option>
|
||||
<option value="">A</option>
|
||||
<option value="">B</option>
|
||||
<option value="">AB</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- end::Golongan Darah -->
|
||||
<!-- begin::Rhesus -->
|
||||
<div class="col">
|
||||
<label style="font-family: Poppins; font-weight: 600"
|
||||
>Rhesus</label
|
||||
>
|
||||
<select
|
||||
class="selectpicker form-control"
|
||||
id="select1"
|
||||
data-live-search="true"
|
||||
data-size="5"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
>
|
||||
<option value="default">Pilih Rhesus</option>
|
||||
<option value="">-</option>
|
||||
<option value="">+</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- end::Rhesus -->
|
||||
</div>
|
||||
<!-- end::Darah -->
|
||||
</div>
|
||||
</div>
|
||||
<!--end::Row 3-->
|
||||
<!--begin::Row 4-->
|
||||
<div class="row mt-5">
|
||||
<!--begin::Pekerjaan-->
|
||||
<div class="col-md-6">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Pekerjaan</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Pekerjaan"
|
||||
/>
|
||||
</div>
|
||||
<!--end::Pekerjaan-->
|
||||
<!--begin::Departemen-->
|
||||
<div class="col-md-6">
|
||||
<div class="form-row">
|
||||
<label
|
||||
for="input1"
|
||||
style="font-family: Poppins; font-weight: 600"
|
||||
>Departemen</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Departemen"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<!--end::Departemen-->
|
||||
</div>
|
||||
<!--end::Row 4-->
|
||||
<!--begin::Row 5-->
|
||||
<div class="row mt-5">
|
||||
<!--begin::Posisi-->
|
||||
<div class="col-md-6">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600"
|
||||
>Posisi</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Posisi"
|
||||
/>
|
||||
</div>
|
||||
<!--end::Posisi-->
|
||||
<!--Begin::Pendidikan Terakhir-->
|
||||
<div class="col-md-6">
|
||||
<div class="form-row">
|
||||
<label style="font-family: Poppins; font-weight: 600"
|
||||
>Pendidikan Terakhir</label
|
||||
>
|
||||
<select
|
||||
class="selectpicker form-control"
|
||||
id="select1"
|
||||
data-live-search="true"
|
||||
data-size="5"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
>
|
||||
<option value="default">Pilih Pendidikan Terakhir</option>
|
||||
<option value="mr">SMA/SLTA/Sederajat</option>
|
||||
<option value="mrs">D3</option>
|
||||
<option value="ms">Sarjana</option>
|
||||
<option value="ms">Magister</option>
|
||||
<option value="ms">Doktor</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!--end::Pendidikan Terakhir-->
|
||||
</div>
|
||||
<!--end::Row 5-->
|
||||
<!--begin::Row 6-->
|
||||
<div class="row mt-5">
|
||||
<!--begin::Kewarganegaraan-->
|
||||
<div class="col-md-6">
|
||||
<div class="form-row">
|
||||
<label
|
||||
for="input1"
|
||||
style="font-family: Poppins; font-weight: 600"
|
||||
>Kewarganegaraan</label
|
||||
>
|
||||
<div class="form-control border-0 h-auto p-0 mt-3">
|
||||
<div class="form-group">
|
||||
<div
|
||||
class="justify-content-between"
|
||||
style="display: flex; gap: 20px"
|
||||
>
|
||||
<label
|
||||
style="display: flex; align-items: center; gap: 5px"
|
||||
>
|
||||
<input type="radio" name="nationality" value="wni" />
|
||||
<p style="margin: 0">WNI</p>
|
||||
</label>
|
||||
<label
|
||||
style="display: flex; align-items: center; gap: 5px"
|
||||
>
|
||||
<input type="radio" name="nationality" value="wna" />
|
||||
<p style="margin: 0">WNA</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--end::Kewarganegaraan-->
|
||||
<!--Begin::Etnis-->
|
||||
<div class="col-md-6">
|
||||
<div class="form-row">
|
||||
<label style="font-family: Poppins; font-weight: 600"
|
||||
>Etnis</label
|
||||
>
|
||||
<select
|
||||
class="selectpicker form-control"
|
||||
id="select1"
|
||||
data-live-search="true"
|
||||
data-size="4"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
>
|
||||
<option value="default">Pilih Etnis</option>
|
||||
<option value="">Jawa</option>
|
||||
<option value="">Sunda</option>
|
||||
<option value="">Batak</option>
|
||||
<option value="">Betawi</option>
|
||||
<option value="">Dayak</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!--end::Etnis-->
|
||||
</div>
|
||||
<!--end::Row 6-->
|
||||
<!--begin::Row 7-->
|
||||
<div class="row mt-5">
|
||||
<!--begin::Identitas-->
|
||||
<div class="col-md-6">
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label
|
||||
for="input1"
|
||||
style="font-family: Poppins; font-weight: 600"
|
||||
>Identitas</label
|
||||
>
|
||||
<select
|
||||
class="selectpicker form-control"
|
||||
id="select1"
|
||||
data-live-search="true"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
data-size="4"
|
||||
>
|
||||
<option value="default">Pilih Identitas</option>
|
||||
<option value="">KTP</option>
|
||||
<option value="">SIM</option>
|
||||
<option value="">Paspor</option>
|
||||
<option value="">Kartu Pelajar</option>
|
||||
<option value="">Surat Keterangan</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--end::Identitas-->
|
||||
<!--Begin::Nomor Identitas-->
|
||||
<div class="col-md-6">
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label
|
||||
for="input1"
|
||||
style="font-family: Poppins; font-weight: 600"
|
||||
>Nomor Identitas</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Nomor Identitas"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--end::Nomor Identitas-->
|
||||
</div>
|
||||
<!--end::Row 7-->
|
||||
<!--begin::Row 8-->
|
||||
<div class="row mt-5">
|
||||
<!--begin::Nomor Hp-->
|
||||
<div class="col-md-6">
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label
|
||||
for="input1"
|
||||
style="font-family: Poppins; font-weight: 600"
|
||||
>Nomor HP</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Nomor HP"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--end::Nomor Hp-->
|
||||
<!--Begin::Email-->
|
||||
<div class="col-md-6">
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label
|
||||
for="input1"
|
||||
style="font-family: Poppins; font-weight: 600"
|
||||
>Email</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
placeholder="Email"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--end::Email-->
|
||||
</div>
|
||||
<!--end::Row 8-->
|
||||
</div>
|
||||
<div class="col-lg-2">
|
||||
<!-- person.png start -->
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<img
|
||||
src="asset-corporate-portal/media/person/person.png"
|
||||
style="display: block; width: 13vw"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mt-5">
|
||||
<div class="col">
|
||||
<button
|
||||
class="btn bg-primary-transparent text-center text-primary"
|
||||
style="width: 13vw; font-weight: 600"
|
||||
>
|
||||
Update Foto
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- person.png end -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--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>
|
||||
25
component/customcheckbox/customcheckboxv1.templ
Normal file
25
component/customcheckbox/customcheckboxv1.templ
Normal file
@@ -0,0 +1,25 @@
|
||||
package customcheckbox
|
||||
|
||||
import "cpone/models"
|
||||
|
||||
templ MainCustomCheckboxInput(inp models.CustomCheckboxv1Prm) {
|
||||
<div class="form-control bg-field border-0 h-auto">
|
||||
<div class="form-group">
|
||||
<label>{ inp.Label }</label>
|
||||
<div class="checkbox-list">
|
||||
<label class="checkbox">
|
||||
if (inp.Value == "on") {
|
||||
<input type="checkbox" name={ inp.Name } id={ inp.ID } checked/>
|
||||
} else {
|
||||
<input type="checkbox" name={ inp.Name } id={ inp.ID }/>
|
||||
}
|
||||
<span></span>
|
||||
{ inp.Text }
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="invalid-feedback text-danger mt-3 ml-2 mt-5">
|
||||
{ inp.ErrorMsg }
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
// Code generated by templ - DO NOT EDIT.
|
||||
|
||||
// templ: version: v0.2.663
|
||||
package radiobtn
|
||||
package customcheckbox
|
||||
|
||||
//lint:file-ignore SA4006 This context is only used if a nested component is present.
|
||||
|
||||
@@ -12,7 +12,7 @@ import "bytes"
|
||||
|
||||
import "cpone/models"
|
||||
|
||||
func CustomRadioBtn(input models.CustomRadioBtn) templ.Component {
|
||||
func MainCustomCheckboxInput(inp models.CustomCheckboxv1Prm) 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 {
|
||||
@@ -25,158 +25,109 @@ func CustomRadioBtn(input models.CustomRadioBtn) templ.Component {
|
||||
templ_7745c5c3_Var1 = templ.NopComponent
|
||||
}
|
||||
ctx = templ.ClearChildren(ctx)
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"form-group\"><label")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
if input.Type == "hidden" {
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"text-black d-none\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
} else {
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"text-black\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" style=\"font-family: Poppins; font-weight: 600;\">")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"form-control bg-field border-0 h-auto\"><div class=\"form-group\"><label>")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var2 string
|
||||
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(input.Label)
|
||||
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Label)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\radiobtn\radiobtn.templ`, Line: 15, Col: 25}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customcheckbox\customcheckboxv1.templ`, Line: 8, Col: 21}
|
||||
}
|
||||
_, 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("</label><div class=\"radio-inline\" style=\"display: flex; justify-content: flex-start;\">")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</label><div class=\"checkbox-list\"><label class=\"checkbox\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
for _, d := range input.Item {
|
||||
var templ_7745c5c3_Var3 = []any{input.Type + " mr-24"}
|
||||
templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var3...)
|
||||
if inp.Value == "on" {
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<input type=\"checkbox\" name=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<label class=\"")
|
||||
var templ_7745c5c3_Var3 string
|
||||
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Name)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customcheckbox\customcheckboxv1.templ`, Line: 12, Col: 44}
|
||||
}
|
||||
_, 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("\" id=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var4 string
|
||||
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(templ.CSSClasses(templ_7745c5c3_Var3).String())
|
||||
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(inp.ID)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\radiobtn\radiobtn.templ`, Line: 1, Col: 0}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customcheckbox\customcheckboxv1.templ`, Line: 12, Col: 58}
|
||||
}
|
||||
_, 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("\"><input id=\"")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" checked> ")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
} else {
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<input type=\"checkbox\" name=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var5 string
|
||||
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(input.Name)
|
||||
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Name)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\radiobtn\radiobtn.templ`, Line: 21, Col: 38}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customcheckbox\customcheckboxv1.templ`, Line: 14, Col: 44}
|
||||
}
|
||||
_, 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("\" type=\"")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" id=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var6 string
|
||||
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(input.Type)
|
||||
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(inp.ID)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\radiobtn\radiobtn.templ`, Line: 22, Col: 41}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customcheckbox\customcheckboxv1.templ`, Line: 14, Col: 58}
|
||||
}
|
||||
_, 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("\" name=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var7 string
|
||||
templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(input.Name)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\radiobtn\radiobtn.templ`, Line: 23, Col: 41}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" value=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var8 string
|
||||
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(d.ItemValue)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\radiobtn\radiobtn.templ`, Line: 24, Col: 43}
|
||||
}
|
||||
_, 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("\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
if d.ItemValue == input.Value {
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" checked=\"checked\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
}
|
||||
if input.ErrorMsg == "" {
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control bg-field border-0 h-auto py-6 px-6 rounded-lg\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
} else {
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control bg-field border-1 h-auto py-6 px-6 rounded-lg is-invalid\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("> <span></span> ")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var9 string
|
||||
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(d.ItemLabel)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\radiobtn\radiobtn.templ`, Line: 35, Col: 33}
|
||||
}
|
||||
_, 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("</label>")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"> ")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"invalid-feedback text-danger mt-3 ml-2\">")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<span></span> ")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var10 string
|
||||
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(input.ErrorMsg)
|
||||
var templ_7745c5c3_Var7 string
|
||||
templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Text)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\radiobtn\radiobtn.templ`, Line: 40, Col: 28}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customcheckbox\customcheckboxv1.templ`, Line: 17, Col: 15}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</label></div></div><div class=\"invalid-feedback text-danger mt-3 ml-2 mt-5\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var8 string
|
||||
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(inp.ErrorMsg)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customcheckbox\customcheckboxv1.templ`, Line: 22, Col: 17}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
119
component/customdropdown/customdropdown.templ
Normal file
119
component/customdropdown/customdropdown.templ
Normal file
@@ -0,0 +1,119 @@
|
||||
package customdropdown;
|
||||
|
||||
import "cpone/models"
|
||||
|
||||
templ MainCustomDropdown(inp models.CustomDropdownv1Prm, listItem templ.Component) {
|
||||
<div class="form-control bg-field border-0 h-auto">
|
||||
<select
|
||||
name={ inp.Name }
|
||||
class="form-control bg-field selectpicker"
|
||||
data-live-search="true"
|
||||
data-size="5"
|
||||
id={ inp.ID }
|
||||
hx-get={ inp.HxGet }
|
||||
hx-target={ inp.HxTarget }
|
||||
hx-indicator={ inp.HxIndicator }
|
||||
hx-trigger={ inp.HxTrigger }
|
||||
hx-include={ inp.HxInclude }
|
||||
>
|
||||
@listItem
|
||||
</select>
|
||||
<div class="invalid-feedback text-danger mt-3 ml-2 mt-5">
|
||||
{ inp.ErrorMsg }
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
templ MainCustomDropdownInput(inp models.CustomDropdownv1Prm, listItem templ.Component) {
|
||||
<div class="form-control bg-field border-0 h-auto">
|
||||
<select
|
||||
name={ inp.Name }
|
||||
class="form-control bg-field selectpicker"
|
||||
data-live-search="true"
|
||||
data-style="bg-field btn-lg rounded-lg btn-custom-selectpicker"
|
||||
data-size="5"
|
||||
id={ inp.ID }
|
||||
>
|
||||
@listItem
|
||||
</select>
|
||||
<div class="invalid-feedback text-danger mt-3 ml-2 mt-5">
|
||||
{ inp.ErrorMsg }
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
templ MainCustomDropdownV1(name string, id string, hxTarget string, hxGet string, hxIndicator string, hxTrigger string, hxInclude string, listItem templ.Component) {
|
||||
<div class="form-control bg-field border-0 h-auto">
|
||||
<select
|
||||
name={ name }
|
||||
class="form-control bg-field selectpicker"
|
||||
data-live-search="true"
|
||||
data-size="5"
|
||||
id={ id }
|
||||
hx-get={ hxGet }
|
||||
hx-target={ hxTarget }
|
||||
hx-indicator={ hxIndicator }
|
||||
hx-trigger={ hxTrigger }
|
||||
hx-include={ hxInclude }
|
||||
>
|
||||
@listItem
|
||||
</select>
|
||||
</div>
|
||||
}
|
||||
|
||||
templ CustomDropdownFilter(
|
||||
idCmp string,
|
||||
hxName string,
|
||||
hxInclude string,
|
||||
hxGet string,
|
||||
hxSwap string,
|
||||
hxTarget string,
|
||||
hxTrigger string,
|
||||
hxBeforeRequest templ.ComponentScript,
|
||||
hxAfterRequest templ.ComponentScript,
|
||||
listItem templ.Component) {
|
||||
<select
|
||||
class="form-control form-control-lg bg-field btn-lg rounded-lg selectpicker"
|
||||
data-live-search="true"
|
||||
data-size="5"
|
||||
data-style="btn-field btn-lg rounded-lg"
|
||||
data-live-search-placeholder="cari ..."
|
||||
id={ idCmp }
|
||||
name={ hxName }
|
||||
hx-include={ hxInclude }
|
||||
hx-get={ hxGet }
|
||||
hx-swap={ hxSwap }
|
||||
hx-target={ hxTarget }
|
||||
hx-trigger={ hxTrigger }
|
||||
hx-on::before-request={ hxBeforeRequest }
|
||||
hx-on::after-request={ hxAfterRequest }
|
||||
>
|
||||
@listItem
|
||||
</select>
|
||||
}
|
||||
|
||||
templ CustomDropdownForm(
|
||||
inp models.CustomDropdownV2Prm) {
|
||||
<div class="form-group">
|
||||
<label class="text-black" style="font-family: Poppins; font-weight: 600;">{ inp.Label } </label>
|
||||
<select
|
||||
if inp.ErrorMsg =="" {
|
||||
class="form-control form-control-lg bg-field btn-lg rounded-lg selectpicker"
|
||||
} else {
|
||||
class="form-control form-control-lg bg-field btn-lg rounded-lg selectpicker is-invalid"
|
||||
}
|
||||
data-live-search="true"
|
||||
data-size="5"
|
||||
title={ inp.Placeholder }
|
||||
data-style="btn-field btn-lg rounded-lg"
|
||||
data-live-search-placeholder="cari ..."
|
||||
name={ inp.Name }
|
||||
id={ inp.ID }
|
||||
>
|
||||
@inp.ListItem
|
||||
</select>
|
||||
<div class="invalid-feedback text-danger mt-3 ml-2">
|
||||
{ inp.ErrorMsg }
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
611
component/customdropdown/customdropdown_templ.go
Normal file
611
component/customdropdown/customdropdown_templ.go
Normal file
@@ -0,0 +1,611 @@
|
||||
// Code generated by templ - DO NOT EDIT.
|
||||
|
||||
// templ: version: v0.2.663
|
||||
package customdropdown
|
||||
|
||||
//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"
|
||||
|
||||
func MainCustomDropdown(inp models.CustomDropdownv1Prm, listItem 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=\"form-control bg-field border-0 h-auto\"><select name=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var2 string
|
||||
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Name)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 8, Col: 18}
|
||||
}
|
||||
_, 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-control bg-field selectpicker\" data-live-search=\"true\" data-size=\"5\" id=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var3 string
|
||||
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(inp.ID)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 12, Col: 14}
|
||||
}
|
||||
_, 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-get=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var4 string
|
||||
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(inp.HxGet)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 13, Col: 21}
|
||||
}
|
||||
_, 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-target=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var5 string
|
||||
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(inp.HxTarget)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 14, Col: 27}
|
||||
}
|
||||
_, 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-indicator=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var6 string
|
||||
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(inp.HxIndicator)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 15, Col: 33}
|
||||
}
|
||||
_, 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-trigger=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var7 string
|
||||
templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(inp.HxTrigger)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 16, Col: 29}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
|
||||
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_Var8 string
|
||||
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(inp.HxInclude)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 17, Col: 29}
|
||||
}
|
||||
_, 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("\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
templ_7745c5c3_Err = listItem.Render(ctx, templ_7745c5c3_Buffer)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</select><div class=\"invalid-feedback text-danger mt-3 ml-2 mt-5\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var9 string
|
||||
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(inp.ErrorMsg)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 22, Col: 17}
|
||||
}
|
||||
_, 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("</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 MainCustomDropdownInput(inp models.CustomDropdownv1Prm, listItem 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_Var10 := templ.GetChildren(ctx)
|
||||
if templ_7745c5c3_Var10 == nil {
|
||||
templ_7745c5c3_Var10 = templ.NopComponent
|
||||
}
|
||||
ctx = templ.ClearChildren(ctx)
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"form-control bg-field border-0 h-auto\"><select name=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var11 string
|
||||
templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Name)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 30, Col: 18}
|
||||
}
|
||||
_, 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("\" class=\"form-control bg-field selectpicker\" data-live-search=\"true\" data-style=\"bg-field btn-lg rounded-lg btn-custom-selectpicker\" data-size=\"5\" id=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var12 string
|
||||
templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(inp.ID)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 35, Col: 14}
|
||||
}
|
||||
_, 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("\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
templ_7745c5c3_Err = listItem.Render(ctx, templ_7745c5c3_Buffer)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</select><div class=\"invalid-feedback text-danger mt-3 ml-2 mt-5\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var13 string
|
||||
templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(inp.ErrorMsg)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 40, Col: 17}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
|
||||
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
|
||||
})
|
||||
}
|
||||
|
||||
func MainCustomDropdownV1(name string, id string, hxTarget string, hxGet string, hxIndicator string, hxTrigger string, hxInclude string, listItem 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_Var14 := templ.GetChildren(ctx)
|
||||
if templ_7745c5c3_Var14 == nil {
|
||||
templ_7745c5c3_Var14 = templ.NopComponent
|
||||
}
|
||||
ctx = templ.ClearChildren(ctx)
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"form-control bg-field border-0 h-auto\"><select name=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var15 string
|
||||
templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(name)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 48, Col: 14}
|
||||
}
|
||||
_, 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("\" class=\"form-control bg-field selectpicker\" data-live-search=\"true\" data-size=\"5\" id=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var16 string
|
||||
templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(id)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 52, Col: 10}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-get=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var17 string
|
||||
templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(hxGet)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 53, Col: 17}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
|
||||
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_Var18 string
|
||||
templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(hxTarget)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 54, Col: 23}
|
||||
}
|
||||
_, 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-indicator=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var19 string
|
||||
templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(hxIndicator)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 55, Col: 29}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
|
||||
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_Var20 string
|
||||
templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(hxTrigger)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 56, Col: 25}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
|
||||
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_Var21 string
|
||||
templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(hxInclude)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 57, Col: 25}
|
||||
}
|
||||
_, 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("\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
templ_7745c5c3_Err = listItem.Render(ctx, templ_7745c5c3_Buffer)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</select></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 CustomDropdownFilter(
|
||||
idCmp string,
|
||||
hxName string,
|
||||
hxInclude string,
|
||||
hxGet string,
|
||||
hxSwap string,
|
||||
hxTarget string,
|
||||
hxTrigger string,
|
||||
hxBeforeRequest templ.ComponentScript,
|
||||
hxAfterRequest templ.ComponentScript,
|
||||
listItem 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_Var22 := templ.GetChildren(ctx)
|
||||
if templ_7745c5c3_Var22 == nil {
|
||||
templ_7745c5c3_Var22 = templ.NopComponent
|
||||
}
|
||||
ctx = templ.ClearChildren(ctx)
|
||||
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hxBeforeRequest, hxAfterRequest)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<select class=\"form-control form-control-lg bg-field btn-lg rounded-lg selectpicker\" data-live-search=\"true\" data-size=\"5\" data-style=\"btn-field btn-lg rounded-lg\" data-live-search-placeholder=\"cari ...\" id=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var23 string
|
||||
templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(idCmp)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 81, Col: 12}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" name=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var24 string
|
||||
templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(hxName)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 82, Col: 15}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24))
|
||||
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_Var25 string
|
||||
templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(hxInclude)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 83, Col: 24}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-get=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var26 string
|
||||
templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(hxGet)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 84, Col: 16}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26))
|
||||
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_Var27 string
|
||||
templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwap)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 85, Col: 18}
|
||||
}
|
||||
_, 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(hxTarget)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 86, Col: 22}
|
||||
}
|
||||
_, 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-trigger=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var29 string
|
||||
templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(hxTrigger)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 87, Col: 24}
|
||||
}
|
||||
_, 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("\" hx-on::before-request=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var30 templ.ComponentScript = hxBeforeRequest
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var30.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_Var31 templ.ComponentScript = hxAfterRequest
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var31.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 = listItem.Render(ctx, templ_7745c5c3_Buffer)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</select>")
|
||||
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 CustomDropdownForm(
|
||||
inp models.CustomDropdownV2Prm) 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_Var32 := templ.GetChildren(ctx)
|
||||
if templ_7745c5c3_Var32 == nil {
|
||||
templ_7745c5c3_Var32 = templ.NopComponent
|
||||
}
|
||||
ctx = templ.ClearChildren(ctx)
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"form-group\"><label class=\"text-black\" style=\"font-family: Poppins; font-weight: 600;\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var33 string
|
||||
templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Label)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 98, Col: 87}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</label> <select")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
if inp.ErrorMsg == "" {
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control form-control-lg bg-field btn-lg rounded-lg selectpicker\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
} else {
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control form-control-lg bg-field btn-lg rounded-lg selectpicker is-invalid\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" data-live-search=\"true\" data-size=\"5\" title=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var34 string
|
||||
templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Placeholder)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 107, Col: 26}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" data-style=\"btn-field btn-lg rounded-lg\" data-live-search-placeholder=\"cari ...\" name=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var35 string
|
||||
templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Name)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 110, Col: 18}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" id=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var36 string
|
||||
templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs(inp.ID)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 111, Col: 14}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36))
|
||||
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 = inp.ListItem.Render(ctx, templ_7745c5c3_Buffer)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</select><div class=\"invalid-feedback text-danger mt-3 ml-2\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var37 string
|
||||
templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.JoinStringErrs(inp.ErrorMsg)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customdropdown\customdropdown.templ`, Line: 116, Col: 17}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var37))
|
||||
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
|
||||
})
|
||||
}
|
||||
22
component/customradiobutton/customradiobuttoninline.templ
Normal file
22
component/customradiobutton/customradiobuttoninline.templ
Normal file
@@ -0,0 +1,22 @@
|
||||
package customradiobuttoninline
|
||||
|
||||
import "cpone/models"
|
||||
|
||||
templ MainCustomRadioButtonInput(inp models.CustomRadioButtonv1Prm) {
|
||||
<div class="mt-5">
|
||||
<label for="input1" style="font-family: Poppins; font-weight: 600">{ inp.Label }</label>
|
||||
<div class="form-control">
|
||||
<div class="form-group">
|
||||
<div style="display: flex; gap: 20px">
|
||||
<label style="display: flex; align-items: center; gap: 5px">
|
||||
<input type="radio" name="nationality" value={ inp.Value }/>
|
||||
<p style="margin: 0">{ inp.Text }</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="invalid-feedback text-danger mt-3 ml-2 mt-5">
|
||||
{ inp.ErrorMsg }
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
89
component/customradiobutton/customradiobuttoninline_templ.go
Normal file
89
component/customradiobutton/customradiobuttoninline_templ.go
Normal file
@@ -0,0 +1,89 @@
|
||||
// Code generated by templ - DO NOT EDIT.
|
||||
|
||||
// templ: version: v0.2.663
|
||||
package customradiobuttoninline
|
||||
|
||||
//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"
|
||||
|
||||
func MainCustomRadioButtonInput(inp models.CustomRadioButtonv1Prm) 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=\"mt-5\"><label for=\"input1\" style=\"font-family: Poppins; font-weight: 600\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var2 string
|
||||
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Label)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customradiobutton\customradiobuttoninline.templ`, Line: 7, Col: 80}
|
||||
}
|
||||
_, 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("</label><div class=\"form-control\"><div class=\"form-group\"><div style=\"display: flex; gap: 20px\"><label style=\"display: flex; align-items: center; gap: 5px\"><input type=\"radio\" name=\"nationality\" value=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var3 string
|
||||
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Value)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customradiobutton\customradiobuttoninline.templ`, Line: 12, Col: 62}
|
||||
}
|
||||
_, 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("\"><p style=\"margin: 0\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var4 string
|
||||
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Text)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customradiobutton\customradiobuttoninline.templ`, Line: 13, Col: 37}
|
||||
}
|
||||
_, 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("</p></label></div></div></div><div class=\"invalid-feedback text-danger mt-3 ml-2 mt-5\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var5 string
|
||||
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(inp.ErrorMsg)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customradiobutton\customradiobuttoninline.templ`, Line: 19, Col: 17}
|
||||
}
|
||||
_, 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("</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
|
||||
})
|
||||
}
|
||||
@@ -19,9 +19,9 @@ templ CustomTextFieldv2(inp models.CustomTextFieldv2Prm) {
|
||||
placeholder={ inp.Placeholder }
|
||||
value={ inp.Value }
|
||||
if inp.ErrorMsg =="" {
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
class="form-control bg-field border-0 form-control-lg bg-field rounded-lg"
|
||||
} else {
|
||||
class="form-control bg-field border-1 h-auto py-6 px-6 rounded-lg is-invalid"
|
||||
class="form-control bg-field border-1 form-control-lg bg-field rounded-lg is-invalid"
|
||||
}
|
||||
/>
|
||||
<div class="invalid-feedback text-danger mt-3 ml-2">
|
||||
|
||||
@@ -123,12 +123,12 @@ func CustomTextFieldv2(inp models.CustomTextFieldv2Prm) templ.Component {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
if inp.ErrorMsg == "" {
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control bg-field border-0 h-auto py-6 px-6 rounded-lg\"")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control bg-field border-0 form-control-lg bg-field rounded-lg\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
} else {
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control bg-field border-1 h-auto py-6 px-6 rounded-lg is-invalid\"")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" class=\"form-control bg-field border-1 form-control-lg bg-field rounded-lg is-invalid\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
|
||||
@@ -83,3 +83,42 @@ templ MainCustomTextFieldSearchV2(
|
||||
});
|
||||
</script>
|
||||
}
|
||||
|
||||
templ MainCustomTextFieldSearchV3(
|
||||
inpId,
|
||||
inpName,
|
||||
inpPlaceHolder,
|
||||
inpType,
|
||||
hxGet,
|
||||
hxTrigger,
|
||||
hxTarget,
|
||||
hxIndicator,
|
||||
value,
|
||||
hxSwap string,
|
||||
hxInclude string,
|
||||
hxBeforeRequest templ.ComponentScript,
|
||||
hxAfterRequest templ.ComponentScript) {
|
||||
<input
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
type={ inpType }
|
||||
name={ inpName }
|
||||
id={ inpId }
|
||||
placeholder={ inpPlaceHolder }
|
||||
hx-get={ hxGet }
|
||||
hx-trigger={ hxTrigger }
|
||||
hx-target={ hxTarget }
|
||||
hx-indicator={ hxIndicator }
|
||||
value={ value }
|
||||
hx-include={ hxInclude }
|
||||
hx-swap={ hxSwap }
|
||||
hx-on::before-request={ hxBeforeRequest }
|
||||
hx-on::after-request={ hxAfterRequest }
|
||||
autocomplete="off"
|
||||
/>
|
||||
<script>
|
||||
document.body.addEventListener('htmx:targetError', function(event) {
|
||||
console.error('Error updating target element:', event.detail);
|
||||
alert('There was an error updating the target element.');
|
||||
});
|
||||
</script>
|
||||
}
|
||||
|
||||
@@ -486,3 +486,205 @@ func MainCustomTextFieldSearchV2(
|
||||
return templ_7745c5c3_Err
|
||||
})
|
||||
}
|
||||
|
||||
func MainCustomTextFieldSearchV3(
|
||||
inpId,
|
||||
inpName,
|
||||
inpPlaceHolder,
|
||||
inpType,
|
||||
hxGet,
|
||||
hxTrigger,
|
||||
hxTarget,
|
||||
hxIndicator,
|
||||
value,
|
||||
hxSwap string,
|
||||
hxInclude string,
|
||||
hxBeforeRequest templ.ComponentScript,
|
||||
hxAfterRequest 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_Var33 := templ.GetChildren(ctx)
|
||||
if templ_7745c5c3_Var33 == nil {
|
||||
templ_7745c5c3_Var33 = templ.NopComponent
|
||||
}
|
||||
ctx = templ.ClearChildren(ctx)
|
||||
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hxBeforeRequest, hxAfterRequest)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<input class=\"form-control bg-field border-0 h-auto py-6 px-6 rounded-lg\" type=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var34 string
|
||||
templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(inpType)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfieldsearch\customtextfieldsearch.templ`, Line: 103, Col: 16}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" name=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var35 string
|
||||
templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(inpName)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfieldsearch\customtextfieldsearch.templ`, Line: 104, Col: 16}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" id=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var36 string
|
||||
templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs(inpId)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfieldsearch\customtextfieldsearch.templ`, Line: 105, Col: 12}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" placeholder=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var37 string
|
||||
templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.JoinStringErrs(inpPlaceHolder)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfieldsearch\customtextfieldsearch.templ`, Line: 106, Col: 30}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var37))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-get=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var38 string
|
||||
templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(hxGet)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfieldsearch\customtextfieldsearch.templ`, Line: 107, Col: 16}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38))
|
||||
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_Var39 string
|
||||
templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(hxTrigger)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfieldsearch\customtextfieldsearch.templ`, Line: 108, Col: 24}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39))
|
||||
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_Var40 string
|
||||
templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(hxTarget)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfieldsearch\customtextfieldsearch.templ`, Line: 109, Col: 22}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-indicator=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var41 string
|
||||
templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(hxIndicator)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfieldsearch\customtextfieldsearch.templ`, Line: 110, Col: 28}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" value=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var42 string
|
||||
templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinStringErrs(value)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfieldsearch\customtextfieldsearch.templ`, Line: 111, Col: 15}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))
|
||||
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_Var43 string
|
||||
templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinStringErrs(hxInclude)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfieldsearch\customtextfieldsearch.templ`, Line: 112, Col: 24}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43))
|
||||
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_Var44 string
|
||||
templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwap)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\customtextfieldsearch\customtextfieldsearch.templ`, Line: 113, Col: 18}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44))
|
||||
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_Var45 templ.ComponentScript = hxBeforeRequest
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var45.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_Var46 templ.ComponentScript = hxAfterRequest
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var46.Call)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" autocomplete=\"off\"><script>\r\n document.body.addEventListener('htmx:targetError', function(event) {\r\n console.error('Error updating target element:', event.detail);\r\n alert('There was an error updating the target element.');\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
|
||||
})
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ templ ModalXL(modalID string, modalTitle string, modalBody templ.Component, moda
|
||||
data-backdrop="static"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog modal-dialog-centered modal-xl" role="document">
|
||||
<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">
|
||||
@@ -56,4 +56,30 @@ templ ModalXL(modalID string, modalTitle string, modalBody templ.Component, moda
|
||||
</div>
|
||||
</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>
|
||||
}
|
||||
@@ -28,14 +28,14 @@ templ ModalConfirmation(
|
||||
<p>{ message }</p>
|
||||
<div class="card rounded-lg">
|
||||
<div class="card-body d-flex flex-row">
|
||||
<div class="d-flex flex-column ">
|
||||
<div class="d-flex flex-column">
|
||||
for _, v := range datHeader {
|
||||
<div class="mb-3 text-disabled font-weight-bold mr-5">{ v }</div>
|
||||
<div class="mb-1 mt-1 text-disabled font-weight-bold mr-5">{ v }</div>
|
||||
}
|
||||
</div>
|
||||
<div class="d-flex flex-column ">
|
||||
for _, v := range dataText {
|
||||
<div class="mb-3 font-weight-bold">
|
||||
<div class="mb-1 mt-1 font-weight-bold">
|
||||
{ v }
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -77,19 +77,19 @@ func ModalConfirmation(
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</p><div class=\"card rounded-lg\"><div class=\"card-body d-flex flex-row\"><div class=\"d-flex flex-column \">")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</p><div class=\"card rounded-lg\"><div class=\"card-body d-flex flex-row\"><div class=\"d-flex flex-column\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
for _, v := range datHeader {
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"mb-3 text-disabled font-weight-bold mr-5\">")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"mb-1 mt-1 text-disabled font-weight-bold mr-5\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var5 string
|
||||
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(v)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\modal\modal_confirmation.templ`, Line: 33, Col: 66}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\modal\modal_confirmation.templ`, Line: 33, Col: 71}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
@@ -105,7 +105,7 @@ func ModalConfirmation(
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
for _, v := range dataText {
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"mb-3 font-weight-bold\">")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"mb-1 mt-1 font-weight-bold\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@ func ModalXL(modalID string, modalTitle string, modalBody templ.Component, modal
|
||||
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-dialog-centered modal-xl\" role=\"document\"><div class=\"modal-content rounded-lg\"><div class=\"modal-header border-bottom-0\"><h6 class=\"modal-title text-black font-weight-bolder\">")
|
||||
_, 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
|
||||
}
|
||||
@@ -157,3 +157,69 @@ 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,6 +40,50 @@ 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 NavbarMenu(datamenu []models.Menu) templ.Component {
|
||||
func NavbarWithLogo(dataUser models.User) 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,6 +66,43 @@ func NavbarMenu(datamenu []models.Menu) 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
|
||||
|
||||
@@ -27,18 +27,16 @@ templ PaginationV2(length int,
|
||||
hx-trigger="click"
|
||||
hx-target={ hxTarget }
|
||||
hx-include={ hxInclude }
|
||||
hx-disabled-elt=".btneditug, .btndeleteug"
|
||||
>{ strconv.Itoa(i+1) }</a>
|
||||
} else {
|
||||
<a
|
||||
hx-get={ link + "?" + "page=" + strconv.Itoa(i+1) }
|
||||
class="btn btn-icon btn-sm border-0 btn-light mr-2 my-1"
|
||||
class="btn btn-icon btn-sm border-0 btn-light mr-2 my-1 btneditug"
|
||||
hx-swap={ hxSwap }
|
||||
hx-indicator={ hxIndicator }
|
||||
hx-trigger="click"
|
||||
hx-target={ hxTarget }
|
||||
hx-include={ hxInclude }
|
||||
hx-disabled-elt=".btneditug, .btndeleteug"
|
||||
>{ strconv.Itoa(i+1) }</a>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,14 +132,14 @@ func PaginationV2(length int,
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-disabled-elt=\".btneditug, .btndeleteug\">")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var9 string
|
||||
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(i + 1))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv2.templ`, Line: 31, Col: 25}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv2.templ`, Line: 30, Col: 25}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
@@ -157,20 +157,20 @@ func PaginationV2(length int,
|
||||
var templ_7745c5c3_Var10 string
|
||||
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(link + "?" + "page=" + strconv.Itoa(i+1))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv2.templ`, Line: 34, Col: 55}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv2.templ`, Line: 33, Col: 55}
|
||||
}
|
||||
_, 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("\" class=\"btn btn-icon btn-sm border-0 btn-light mr-2 my-1\" hx-swap=\"")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" class=\"btn btn-icon btn-sm border-0 btn-light mr-2 my-1 btneditug\" hx-swap=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var11 string
|
||||
templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwap)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv2.templ`, Line: 36, Col: 22}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv2.templ`, Line: 35, Col: 22}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
@@ -183,7 +183,7 @@ func PaginationV2(length int,
|
||||
var templ_7745c5c3_Var12 string
|
||||
templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(hxIndicator)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv2.templ`, Line: 37, Col: 32}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv2.templ`, Line: 36, Col: 32}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
@@ -196,7 +196,7 @@ func PaginationV2(length int,
|
||||
var templ_7745c5c3_Var13 string
|
||||
templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(hxTarget)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv2.templ`, Line: 39, Col: 26}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv2.templ`, Line: 38, Col: 26}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
@@ -209,20 +209,20 @@ func PaginationV2(length int,
|
||||
var templ_7745c5c3_Var14 string
|
||||
templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(hxInclude)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv2.templ`, Line: 40, Col: 28}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv2.templ`, Line: 39, Col: 28}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-disabled-elt=\".btneditug, .btndeleteug\">")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var15 string
|
||||
templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(i + 1))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv2.templ`, Line: 42, Col: 25}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv2.templ`, Line: 40, Col: 25}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
|
||||
60
component/pagination/paginationv3.templ
Normal file
60
component/pagination/paginationv3.templ
Normal file
@@ -0,0 +1,60 @@
|
||||
package pagination
|
||||
|
||||
import "strconv"
|
||||
import "cpone/component/customtextfield"
|
||||
import "cpone/models"
|
||||
|
||||
templ PaginationV3(length int,
|
||||
currentPage int,
|
||||
link string,
|
||||
paginationID string,
|
||||
hxInclude string,
|
||||
hxTarget string,
|
||||
hxSwap string,
|
||||
hxIndicator string,
|
||||
hxSwapOob string,
|
||||
hxBeforeRequest templ.ComponentScript,
|
||||
hxAfterRequest templ.ComponentScript,
|
||||
) {
|
||||
// hx-on::before-request={ HideContent(contentID) }
|
||||
// hx-on::after-request="alert('Done making a request!')"
|
||||
<div
|
||||
class="d-flex justify-content-between align-items-center flex-wrap"
|
||||
hx-on::load={ hxAfterRequest }
|
||||
id={ paginationID }
|
||||
hx-swap-oob={ hxSwapOob }
|
||||
>
|
||||
<div class="d-flex flex-wrap py-2 mr-3">
|
||||
for i:=0; i<length; i++ {
|
||||
if (i+1) == currentPage {
|
||||
<a
|
||||
hx-get={ link + "?" + "page=" + strconv.Itoa(i+1) }
|
||||
class="btn btn-icon btn-sm border-0 btn-light btn-hover-primary active mr-2 my-1"
|
||||
hx-swap={ hxSwap }
|
||||
hx-indicator={ hxIndicator }
|
||||
hx-trigger="click"
|
||||
hx-on::before-request={ hxBeforeRequest }
|
||||
hx-target={ hxTarget }
|
||||
hx-include={ hxInclude }
|
||||
>{ strconv.Itoa(i+1) }</a>
|
||||
} else {
|
||||
<a
|
||||
hx-get={ link + "?" + "page=" + strconv.Itoa(i+1) }
|
||||
class="btn btn-icon btn-sm border-0 btn-light mr-2 my-1 btneditug"
|
||||
hx-swap={ hxSwap }
|
||||
hx-on::before-request={ hxBeforeRequest }
|
||||
hx-indicator={ hxIndicator }
|
||||
hx-trigger="click"
|
||||
hx-target={ hxTarget }
|
||||
hx-include={ hxInclude }
|
||||
>{ strconv.Itoa(i+1) }</a>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{
|
||||
ID: "currpage" + paginationID,
|
||||
Name: "currpage" + paginationID,
|
||||
Type: "hidden",
|
||||
Value: strconv.Itoa(currentPage)})
|
||||
</div>
|
||||
}
|
||||
300
component/pagination/paginationv3_templ.go
Normal file
300
component/pagination/paginationv3_templ.go
Normal file
@@ -0,0 +1,300 @@
|
||||
// Code generated by templ - DO NOT EDIT.
|
||||
|
||||
// templ: version: v0.2.663
|
||||
package pagination
|
||||
|
||||
//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 "strconv"
|
||||
import "cpone/component/customtextfield"
|
||||
import "cpone/models"
|
||||
|
||||
func PaginationV3(length int,
|
||||
currentPage int,
|
||||
link string,
|
||||
paginationID string,
|
||||
hxInclude string,
|
||||
hxTarget string,
|
||||
hxSwap string,
|
||||
hxIndicator string,
|
||||
hxSwapOob string,
|
||||
hxBeforeRequest templ.ComponentScript,
|
||||
hxAfterRequest 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.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hxAfterRequest)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"d-flex justify-content-between align-items-center flex-wrap\" hx-on::load=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var2 templ.ComponentScript = hxAfterRequest
|
||||
_, 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("\" id=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var3 string
|
||||
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(paginationID)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv3.templ`, Line: 24, Col: 19}
|
||||
}
|
||||
_, 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-swap-oob=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var4 string
|
||||
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwapOob)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv3.templ`, Line: 25, Col: 25}
|
||||
}
|
||||
_, 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 class=\"d-flex flex-wrap py-2 mr-3\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
for i := 0; i < length; i++ {
|
||||
if (i + 1) == currentPage {
|
||||
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hxBeforeRequest)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<a hx-get=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var5 string
|
||||
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(link + "?" + "page=" + strconv.Itoa(i+1))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv3.templ`, Line: 31, Col: 55}
|
||||
}
|
||||
_, 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=\"btn btn-icon btn-sm border-0 btn-light btn-hover-primary active mr-2 my-1\" hx-swap=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var6 string
|
||||
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwap)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv3.templ`, Line: 33, Col: 22}
|
||||
}
|
||||
_, 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=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var7 string
|
||||
templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(hxIndicator)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv3.templ`, Line: 34, Col: 32}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-trigger=\"click\" hx-on::before-request=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var8 templ.ComponentScript = hxBeforeRequest
|
||||
_, 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-target=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var9 string
|
||||
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(hxTarget)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv3.templ`, Line: 37, Col: 26}
|
||||
}
|
||||
_, 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("\" hx-include=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var10 string
|
||||
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(hxInclude)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv3.templ`, Line: 38, Col: 28}
|
||||
}
|
||||
_, 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(strconv.Itoa(i + 1))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv3.templ`, Line: 39, Col: 25}
|
||||
}
|
||||
_, 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("</a>")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
} else {
|
||||
templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hxBeforeRequest)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<a hx-get=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var12 string
|
||||
templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(link + "?" + "page=" + strconv.Itoa(i+1))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv3.templ`, Line: 42, Col: 55}
|
||||
}
|
||||
_, 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("\" class=\"btn btn-icon btn-sm border-0 btn-light mr-2 my-1 btneditug\" hx-swap=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var13 string
|
||||
templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwap)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv3.templ`, Line: 44, Col: 22}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
|
||||
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_Var14 templ.ComponentScript = hxBeforeRequest
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var14.Call)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-indicator=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var15 string
|
||||
templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(hxIndicator)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv3.templ`, Line: 46, Col: 32}
|
||||
}
|
||||
_, 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-trigger=\"click\" hx-target=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var16 string
|
||||
templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(hxTarget)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv3.templ`, Line: 48, Col: 26}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
|
||||
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_Var17 string
|
||||
templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(hxInclude)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv3.templ`, Line: 49, Col: 28}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
|
||||
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_Var18 string
|
||||
templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(i + 1))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `component\pagination\paginationv3.templ`, Line: 50, Col: 25}
|
||||
}
|
||||
_, 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("</a>")
|
||||
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 = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{
|
||||
ID: "currpage" + paginationID,
|
||||
Name: "currpage" + paginationID,
|
||||
Type: "hidden",
|
||||
Value: strconv.Itoa(currentPage)}).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
|
||||
})
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
package radiobtn
|
||||
|
||||
import "cpone/models"
|
||||
|
||||
templ CustomRadioBtn(input models.CustomRadioBtn) {
|
||||
<div class="form-group">
|
||||
<label
|
||||
if input.Type == "hidden" {
|
||||
class="text-black d-none"
|
||||
} else {
|
||||
class="text-black"
|
||||
}
|
||||
style="font-family: Poppins; font-weight: 600;"
|
||||
>
|
||||
{ input.Label }
|
||||
</label>
|
||||
<div class="radio-inline" style="display: flex; justify-content: flex-start;">
|
||||
for _, d := range input.Item {
|
||||
<label class={ input.Type + " mr-24"}>
|
||||
<input
|
||||
id={input.Name}
|
||||
type={ input.Type }
|
||||
name={ input.Name }
|
||||
value={ d.ItemValue }
|
||||
if d.ItemValue == input.Value {
|
||||
checked="checked"
|
||||
}
|
||||
if input.ErrorMsg == "" {
|
||||
class="form-control bg-field border-0 h-auto py-6 px-6 rounded-lg"
|
||||
} else {
|
||||
class="form-control bg-field border-1 h-auto py-6 px-6 rounded-lg is-invalid"
|
||||
}
|
||||
/>
|
||||
<span></span>
|
||||
{ d.ItemLabel }
|
||||
</label>
|
||||
}
|
||||
</div>
|
||||
<div class="invalid-feedback text-danger mt-3 ml-2">
|
||||
{ input.ErrorMsg }
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@@ -10,7 +10,11 @@ templ TableV3(thName []string, thWidth []string, trComponent templ.Component) {
|
||||
<thead>
|
||||
<tr class="rounded-lg bg-header-table">
|
||||
for i, item := range thName {
|
||||
<th scope="col" width={ thWidth[i] }>{ item }</th>
|
||||
if item == "AKSI" {
|
||||
<th scope="col" width={ thWidth[i] } class="text-center">{ item }</th>
|
||||
} else {
|
||||
<th scope="col" width={ thWidth[i] }>{ item }</th>
|
||||
}
|
||||
}
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
@@ -38,35 +38,68 @@ func TableV3(thName []string, thWidth []string, trComponent templ.Component) tem
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
for i, item := range thName {
|
||||
_, 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
|
||||
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("</tr></thead> <tbody>")
|
||||
@@ -101,9 +134,9 @@ func DivEmptyV3() templ.Component {
|
||||
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
|
||||
templ_7745c5c3_Var6 := templ.GetChildren(ctx)
|
||||
if templ_7745c5c3_Var6 == nil {
|
||||
templ_7745c5c3_Var6 = templ.NopComponent
|
||||
}
|
||||
ctx = templ.ClearChildren(ctx)
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div></div>")
|
||||
|
||||
@@ -13,7 +13,7 @@ func toastBody(typeToastBody string) string {
|
||||
}
|
||||
|
||||
func toastIcon(typeToast string) string {
|
||||
var stringx string
|
||||
var stringx string
|
||||
if typeToast == "success" {
|
||||
stringx = "solar:check-circle-broken"
|
||||
} else {
|
||||
@@ -30,12 +30,12 @@ func toastIcon(typeToast string) string {
|
||||
}
|
||||
}
|
||||
|
||||
return stringx
|
||||
return stringx
|
||||
}
|
||||
|
||||
templ CustomToastV2Show(title string, message string, typeToast string) {
|
||||
<div
|
||||
class="toast fade show"
|
||||
class="toast toast-top-right fade show"
|
||||
role="alert"
|
||||
aria-live="assertive"
|
||||
aria-atomic="true"
|
||||
@@ -63,14 +63,15 @@ templ CustomToastV2Show(title string, message string, typeToast string) {
|
||||
}
|
||||
|
||||
templ CustomToastV2Hide() {
|
||||
<div id="notification-001"
|
||||
class="toast fade hide"
|
||||
role="alert"
|
||||
aria-live="assertive"
|
||||
aria-atomic="true"
|
||||
style="opacity: 0"
|
||||
hx-swap-oob="true"
|
||||
>
|
||||
<div
|
||||
id="notification-001"
|
||||
class="toast fade hide"
|
||||
role="alert"
|
||||
aria-live="assertive"
|
||||
aria-atomic="true"
|
||||
style="opacity: 0"
|
||||
hx-swap-oob="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>
|
||||
|
||||
@@ -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 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;\">")
|
||||
_, 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
|
||||
}
|
||||
|
||||
193
handlers/corporate/dashboardpic.handlers.go
Normal file
193
handlers/corporate/dashboardpic.handlers.go
Normal file
@@ -0,0 +1,193 @@
|
||||
package corporate_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"
|
||||
corporate_dashboardpic "cpone/views/corporate/dashboardpic"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"github.com/a-h/templ"
|
||||
"github.com/labstack/echo/v4"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type DashboardPicServices interface {
|
||||
GetEmployeeAnalyticBreadcrumb(title string) (models.BreadCrumbV1, error)
|
||||
DummyDataTest() ([]models.DashboardPic, error)
|
||||
ListingDashboardPic(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()
|
||||
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.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("", "", "", 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 := 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")
|
||||
|
||||
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(search, startdate, enddate, page, 5)
|
||||
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")
|
||||
|
||||
dataList, totalPage, err := ea.DashboardPicServices.ListingDashboardPic(search, startdate, enddate, 1, 5)
|
||||
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)
|
||||
}
|
||||
75
handlers/corporate/mcudetail.handlers.go
Normal file
75
handlers/corporate/mcudetail.handlers.go
Normal file
@@ -0,0 +1,75 @@
|
||||
package corporate_handlers
|
||||
|
||||
import (
|
||||
breadcrumadmin "cpone/component/breadcrumbadmin"
|
||||
navbarmenu "cpone/component/navbar"
|
||||
sidebaruserprofile "cpone/component/sidebar_user_profile"
|
||||
"cpone/models"
|
||||
"cpone/services"
|
||||
"cpone/utils"
|
||||
corporate_mcudetail "cpone/views/corporate/mcu"
|
||||
corporate_tabmcudetail "cpone/views/corporate/mcu/mcutab"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type McuDetailServices interface {
|
||||
GetBreadcrumb(title string) (models.BreadCrumbV1, 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()
|
||||
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 corp", zap.Any("error", err))
|
||||
return err
|
||||
}
|
||||
|
||||
dataBreadcrumb, err := mcud.McuDetailServices.GetBreadcrumb(title)
|
||||
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)
|
||||
|
||||
content := corporate_mcudetail.McuDetailScreen(
|
||||
breadcrumb,
|
||||
corporate_mcudetail.TabViewMcuDetail(id),
|
||||
)
|
||||
css := corporate_mcudetail.CSSMcuDetail(
|
||||
corporate_tabmcudetail.CssKesimpulan(),
|
||||
)
|
||||
js := corporate_mcudetail.JSMcuDetail()
|
||||
|
||||
view := corporate_mcudetail.ShowMcuDetail(
|
||||
title,
|
||||
content,
|
||||
css,
|
||||
js,
|
||||
navbaruser,
|
||||
sidbaruser,
|
||||
)
|
||||
|
||||
return utils.View(c, view)
|
||||
}
|
||||
180
handlers/corporate/mcudetail/tabdaftarpeserta.handlers.go
Normal file
180
handlers/corporate/mcudetail/tabdaftarpeserta.handlers.go
Normal file
@@ -0,0 +1,180 @@
|
||||
package mcu_corporate_handlers
|
||||
|
||||
import (
|
||||
"cpone/component/pagination"
|
||||
"cpone/models"
|
||||
"cpone/utils"
|
||||
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
|
||||
"strconv"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type TabDaftarPesertaServices interface {
|
||||
GetListMcuDaftarPeserta(id string, currentpage int, rowperpage int) ([]models.ModelMcuDaftarPeserta, int, 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()
|
||||
title := "Daftar Report"
|
||||
tableID := utils.GenerateRandomID("tableid")
|
||||
paginationID := utils.GenerateRandomID("paginationID")
|
||||
dialogReportID := utils.GenerateRandomID("dialogreportid")
|
||||
dialogReportBodyID := utils.GenerateRandomID("dialogreportbodyid")
|
||||
|
||||
id := c.Param("id")
|
||||
logger.Info("Params", zap.Any("id", id))
|
||||
|
||||
dataTable, totalPage, err := tdp.TabDaftarPesertaServices.GetListMcuDaftarPeserta(id, 1, 5)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
logger.Info("totalPage", zap.Any("total", totalPage))
|
||||
|
||||
table := corporate_mcudetail.TableDaftarPeserta(
|
||||
dataTable,
|
||||
tableID,
|
||||
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openreport",
|
||||
"#"+dialogReportBodyID,
|
||||
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID",
|
||||
"outerHTML",
|
||||
)
|
||||
|
||||
pagination := pagination.PaginationV3(
|
||||
totalPage,
|
||||
1,
|
||||
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/changepage",
|
||||
paginationID,
|
||||
"#tableID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #dialogReportID, #dialogReportBodyID",
|
||||
"#contentlayout",
|
||||
"outerHTML", "", "",
|
||||
corporate_mcudetail.BeforeRequestContent(),
|
||||
corporate_mcudetail.AfterRequestContent(),
|
||||
)
|
||||
|
||||
clayout := corporate_mcudetail.ContentLayout(
|
||||
table,
|
||||
pagination,
|
||||
)
|
||||
|
||||
bodymodal := corporate_mcudetail.ModalBody(
|
||||
dialogReportBodyID,
|
||||
corporate_mcudetail.JsShowModal(""),
|
||||
)
|
||||
|
||||
closemodal := corporate_mcudetail.ModalClose(
|
||||
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/closereport",
|
||||
"#"+dialogReportBodyID,
|
||||
"outerHTML",
|
||||
"#"+dialogReportID,
|
||||
)
|
||||
|
||||
modaldialog := corporate_mcudetail.DialogReport(
|
||||
"",
|
||||
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/dialogreport",
|
||||
"#"+dialogReportBodyID,
|
||||
"outerHTML",
|
||||
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID"+paginationID,
|
||||
dialogReportID,
|
||||
title,
|
||||
bodymodal,
|
||||
closemodal,
|
||||
)
|
||||
|
||||
content := corporate_mcudetail.TabDaftarPesertaScreen(
|
||||
tableID,
|
||||
paginationID,
|
||||
dialogReportID,
|
||||
dialogReportBodyID,
|
||||
clayout,
|
||||
modaldialog,
|
||||
)
|
||||
// css := corporate_mcudetail.CSSTabDaftarPeserta()
|
||||
// js := corporate_mcudetail.JsTabDaftarPeserta()
|
||||
|
||||
// view := corporate_mcudetail.ShowTabDafterPeserta(
|
||||
// title,
|
||||
// content,
|
||||
// css,
|
||||
// js,
|
||||
// )
|
||||
|
||||
return utils.View(c, content)
|
||||
}
|
||||
|
||||
func (tdp *TabDaftarPesertaHandlers) HandlePagination(c echo.Context) error {
|
||||
pageparam := c.QueryParam("page")
|
||||
tableID := c.QueryParam("tableID")
|
||||
paginationID := c.QueryParam("paginationID")
|
||||
// dialogReportID := c.QueryParam("dialogReportID")
|
||||
dialogReportBodyID := c.QueryParam("dialogReportBodyID")
|
||||
|
||||
id := c.Param("id")
|
||||
|
||||
// var retval []templ.Component
|
||||
page, err := strconv.Atoi(pageparam)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
tableData, totalPage, err := tdp.TabDaftarPesertaServices.GetListMcuDaftarPeserta(id, page, 5)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
table := corporate_mcudetail.TableDaftarPeserta(
|
||||
tableData,
|
||||
tableID,
|
||||
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/openreport",
|
||||
"#"+dialogReportBodyID,
|
||||
"#tableID, #paginationID, #dialogReportID, #dialogReportBodyID",
|
||||
"outerHTML",
|
||||
)
|
||||
|
||||
pagination := pagination.PaginationV3(
|
||||
totalPage,
|
||||
page,
|
||||
"/corp/dashboard_pic/detail/"+id+"/tabdaftarpeserta/changepage",
|
||||
paginationID,
|
||||
"#tableID, #paginationID, #loading-parent, #loading-child, #loading-spinner, #loadingcontent, #dialogReportID, #dialogReportBodyID",
|
||||
"#contentlayout",
|
||||
"outerHTML", "", "",
|
||||
corporate_mcudetail.BeforeRequestContent(),
|
||||
corporate_mcudetail.AfterRequestContent(),
|
||||
)
|
||||
|
||||
// content := corporate_mcudetail.TabDaftarPesertaScreen(tableID, paginationID, table, pagination)
|
||||
// retval = append(retval, table)
|
||||
// retval = append(retval, pagination)
|
||||
// return utils.ViewMulti(c, retval)
|
||||
|
||||
// return utils.View(c, content)
|
||||
clayout := corporate_mcudetail.ContentLayout(table, pagination)
|
||||
return utils.View(c, clayout)
|
||||
}
|
||||
|
||||
func (tdp *TabDaftarPesertaHandlers) HandleOpenReportDialog(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
idx := c.QueryParam("idx")
|
||||
dialogReportID := c.QueryParam("dialogReportID")
|
||||
dialogReportBodyID := c.QueryParam("dialogReportBodyID")
|
||||
logger.Info("params", zap.Any("idx", idx))
|
||||
|
||||
modalbody := corporate_mcudetail.ModalBody(
|
||||
dialogReportBodyID,
|
||||
corporate_mcudetail.JsShowModal("#"+dialogReportID),
|
||||
)
|
||||
|
||||
return utils.View(c, modalbody)
|
||||
}
|
||||
76
handlers/corporate/mcudetail/tabkesimpulan.handlers.go
Normal file
76
handlers/corporate/mcudetail/tabkesimpulan.handlers.go
Normal file
@@ -0,0 +1,76 @@
|
||||
package mcu_corporate_handlers
|
||||
|
||||
import (
|
||||
"cpone/models"
|
||||
"cpone/utils"
|
||||
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
|
||||
"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)
|
||||
}
|
||||
|
||||
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("tablebody")
|
||||
id := c.Param("id")
|
||||
|
||||
dataLab, err := tkh.TabKesimpulanServices.GetListKesimpulanLab(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)
|
||||
|
||||
dataNonLab, err := tkh.TabKesimpulanServices.GetListKesimpulanNonLab(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_mcudetail.CardTableKesimpulan("3 Kelainan Pemeriksaan Non Lab terbesar :", dataNonLab, tableID)
|
||||
|
||||
dataFisik, err := tkh.TabKesimpulanServices.GetListKesimpulanFisik(id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR GET LIST FISIK",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
fmt.Println(dataFisik)
|
||||
return err
|
||||
}
|
||||
tableComponentFisik := corporate_mcudetail.CardTableKesimpulan("3 Kelainan Pemeriksaan Fisik terbesar :", dataFisik, tableID)
|
||||
|
||||
content := corporate_mcudetail.MainKesimpulan(
|
||||
tableID,
|
||||
tableComponentLab,
|
||||
tableComponentNonLab,
|
||||
tableComponentFisik,
|
||||
)
|
||||
|
||||
return utils.View(c, content)
|
||||
}
|
||||
@@ -1,13 +1,24 @@
|
||||
package corporate_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"
|
||||
corporate_patient "cpone/views/corporate/patient"
|
||||
"strconv"
|
||||
|
||||
"github.com/a-h/templ"
|
||||
"github.com/labstack/echo/v4"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type PatientService interface {
|
||||
GetDashboardPatientBreadcrumb(title string) (models.BreadCrumbV1, error)
|
||||
ListingData(search string, date string, patID string, corpId string, currentpage int, rowperpage int) ([]models.DashboardPatient, int, error)
|
||||
}
|
||||
|
||||
func NewPatientHandler(us PatientService) *PatientHandler {
|
||||
@@ -20,7 +31,160 @@ type PatientHandler struct {
|
||||
PatientService PatientService
|
||||
}
|
||||
|
||||
func (uh *PatientHandler) ShowPatient(c echo.Context) error {
|
||||
helo := corporate_patient.Show()
|
||||
return utils.View(c, helo)
|
||||
func (ph *PatientHandler) HandleShowPatient(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
title := "Nanda Arisu"
|
||||
|
||||
listID := utils.GenerateRandomID("listid")
|
||||
paginationID := utils.GenerateRandomID("paginationid")
|
||||
dialogID := utils.GenerateRandomID("dialogid")
|
||||
dialogBodyID := utils.GenerateRandomID("dialogbodyid")
|
||||
|
||||
user, err := services.GetUserLogin()
|
||||
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()
|
||||
|
||||
navbaruser := navbarmenu.NavbarWithLogo(user)
|
||||
sidbaruser := sidebaruserprofile.Navbaruserprofile(user)
|
||||
breadcrumb := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadcrumb)
|
||||
|
||||
listingdata, totalPage, err := ph.PatientService.ListingData("", "", "108", "40", 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 := corporate_patient.ListingData(listingdata,
|
||||
listID,
|
||||
"/corp/dashboard_pat/open",
|
||||
"#"+dialogBodyID,
|
||||
"#listID, #paginationID, #dialogID, #dialogBodyID",
|
||||
"outerHTML",
|
||||
)
|
||||
|
||||
paginationcomponent := pagination.PaginationV3(
|
||||
totalPage,
|
||||
1,
|
||||
"/corp/dashboard_pat/changepage",
|
||||
paginationID,
|
||||
"#listID, #paginationID, #dialogID, #dialogBodyID",
|
||||
"#"+paginationID,
|
||||
"outerHTML", "", "",
|
||||
corporate_patient.BeforeRequestContent(),
|
||||
corporate_patient.AfterRequestContent(),
|
||||
)
|
||||
|
||||
bodyModal := corporate_patient.ModalBody(
|
||||
dialogBodyID,
|
||||
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, #dialogBodyID"+paginationID,
|
||||
dialogID,
|
||||
title,
|
||||
bodyModal,
|
||||
bodyClose,
|
||||
)
|
||||
|
||||
content := corporate_patient.DashboardPat(
|
||||
listID,
|
||||
paginationID,
|
||||
dialogID,
|
||||
dialogBodyID,
|
||||
breadcrumb,
|
||||
listingcomponent,
|
||||
paginationcomponent,
|
||||
modalDialog,
|
||||
)
|
||||
css := corporate_patient.CSSDashboardPat()
|
||||
js := corporate_patient.JSDashboardPat()
|
||||
|
||||
view := corporate_patient.ShowDashboardPat(title, 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")
|
||||
|
||||
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.ListingData("", "", "108", "40", page, 5)
|
||||
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, ",
|
||||
"outerHTML",
|
||||
)
|
||||
|
||||
paginationcomponent := pagination.PaginationV3(
|
||||
totalPage,
|
||||
page,
|
||||
"/corp/dashboard_pat/changepage",
|
||||
paginationID,
|
||||
"#listID, #paginationID, #dialogID, #dialogBodyID, #currPage"+paginationID,
|
||||
"#"+paginationID,
|
||||
"outerHTML", "", "",
|
||||
corporate_patient.BeforeRequestContent(),
|
||||
corporate_patient.AfterRequestContent(),
|
||||
)
|
||||
|
||||
retval = append(retval, listcomponent)
|
||||
retval = append(retval, paginationcomponent)
|
||||
return utils.ViewMulti(c, retval)
|
||||
}
|
||||
|
||||
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))
|
||||
|
||||
modalBody := corporate_patient.ModalBody(
|
||||
dialogBodyID,
|
||||
corporate_patient.JsShowModal("#"+dialogID),
|
||||
)
|
||||
|
||||
return utils.View(c, modalBody)
|
||||
}
|
||||
|
||||
72
handlers/dev/detailmcu.handlers.go
Normal file
72
handlers/dev/detailmcu.handlers.go
Normal file
@@ -0,0 +1,72 @@
|
||||
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)
|
||||
}
|
||||
192
handlers/dev/employeeanalytic.handlers.go
Normal file
192
handlers/dev/employeeanalytic.handlers.go
Normal file
@@ -0,0 +1,192 @@
|
||||
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
|
||||
}
|
||||
1377
handlers/dev/groupresult.handlers.go
Normal file
1377
handlers/dev/groupresult.handlers.go
Normal file
File diff suppressed because it is too large
Load Diff
88
handlers/dev/kesimpulan.handlers.go
Normal file
88
handlers/dev/kesimpulan.handlers.go
Normal file
@@ -0,0 +1,88 @@
|
||||
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)
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
66
handlers/dev/mcudaftarpeserta.handlers.go
Normal file
66
handlers/dev/mcudaftarpeserta.handlers.go
Normal file
@@ -0,0 +1,66 @@
|
||||
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)
|
||||
}
|
||||
954
handlers/dev/md.bahan.handlers.go
Normal file
954
handlers/dev/md.bahan.handlers.go
Normal file
@@ -0,0 +1,954 @@
|
||||
package dev_handlers
|
||||
|
||||
import (
|
||||
breadcrumadmin "cpone/component/breadcrumbadmin"
|
||||
navbarmenu "cpone/component/navbar"
|
||||
"cpone/component/pagination"
|
||||
sidebaruserprofile "cpone/component/sidebar_user_profile"
|
||||
customtoastv2 "cpone/component/toastbootstrap"
|
||||
"cpone/models"
|
||||
"cpone/services"
|
||||
"cpone/utils"
|
||||
dev_mdbahanview "cpone/views/dev/mdbahan"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/a-h/templ"
|
||||
"github.com/labstack/echo/v4"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type MdBahanServices interface {
|
||||
GetListMdBahan(
|
||||
search string,
|
||||
stationID string,
|
||||
currentPage int,
|
||||
rowPerPage int) ([]models.Bahan, int, error)
|
||||
GetMdBahanBreadCrumb(title string) (models.BreadCrumbV1, error)
|
||||
GetListSampleStation(isFilter bool) ([]models.TmpSampleStation, error)
|
||||
AddMdBahan(code string, name string, stationid string) (bool, error)
|
||||
EditMdBahan(id string, code string, name string, stationid string) (bool, error)
|
||||
GetMdBahanByID(id string) (models.Bahan, error)
|
||||
DeleteMdBahan(id string) (bool, error)
|
||||
}
|
||||
|
||||
func NewMdBahanHandler(us MdBahanServices) *MdBahanHandler {
|
||||
return &MdBahanHandler{
|
||||
MdBahanServices: us,
|
||||
}
|
||||
}
|
||||
|
||||
type MdBahanHandler struct {
|
||||
MdBahanServices MdBahanServices
|
||||
}
|
||||
|
||||
func (lh *MdBahanHandler) HandleShowMdBahanScreen(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
dataMenu, err := services.GetMenu()
|
||||
paginationID := utils.GenerateRandomID("paginationID")
|
||||
modalAddID := utils.GenerateRandomID("modalAdd")
|
||||
modalAddBodyID := utils.GenerateRandomID("modalAddbody")
|
||||
modalEditID := utils.GenerateRandomID("modalEdit")
|
||||
modalEditBodyID := utils.GenerateRandomID("modalEditbody")
|
||||
modalDeleteID := utils.GenerateRandomID("modalDelete")
|
||||
modalDeleteBodyID := utils.GenerateRandomID("modalDeletebody")
|
||||
tableBahanID := utils.GenerateRandomID("BahanID")
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR BREADCRUMB DEV",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
//get user login
|
||||
dataUser, err := services.GetUserLogin()
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR BREADCRUMB DEV",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
return err
|
||||
}
|
||||
dataBreadCrumb, err := lh.MdBahanServices.GetMdBahanBreadCrumb("Bahan")
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR BREADCRUMB DEV",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
//Breadcrumb component
|
||||
breadcrumbComponent := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadCrumb)
|
||||
// navbar menu
|
||||
navbarmenuComponent := navbarmenu.NavbarMenu(dataMenu)
|
||||
|
||||
// navbar user
|
||||
navbaruserComponent := navbarmenu.Navbar(dataUser)
|
||||
|
||||
// sidebar
|
||||
sidebaruserprofileComponent := sidebaruserprofile.Navbaruserprofile(dataUser)
|
||||
bahanList, totalPage, err := lh.MdBahanServices.GetListMdBahan("", "0", 1, 5)
|
||||
defer logger.Sync()
|
||||
logger.Info("GET DATA BAHAN",
|
||||
zap.Any("data", bahanList),
|
||||
zap.Any("err", err),
|
||||
zap.Any("totalPage", totalPage),
|
||||
)
|
||||
stationListFilter, err := lh.MdBahanServices.GetListSampleStation(true)
|
||||
defer logger.Sync()
|
||||
logger.Info("GET STATION LIST Filter",
|
||||
zap.Any("err", err),
|
||||
)
|
||||
stationList, err := lh.MdBahanServices.GetListSampleStation(false)
|
||||
defer logger.Sync()
|
||||
logger.Info("GET STATION LIST ",
|
||||
zap.Any("err", err),
|
||||
)
|
||||
|
||||
//Bahan Table
|
||||
// #dialogDeleteBodyID, #dialogDeleteID
|
||||
mdBahanTable := dev_mdbahanview.TableBahan(
|
||||
bahanList,
|
||||
tableBahanID,
|
||||
"/dev/md/bahan/openedit",
|
||||
"#"+modalEditBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"/dev/md/bahan/opendelete",
|
||||
"#"+modalDeleteBodyID,
|
||||
"outerHTML",
|
||||
"#dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #dialogEditID")
|
||||
|
||||
//FIlter table
|
||||
mdBahanFilter := dev_mdbahanview.MdBahanFilter(
|
||||
"/dev/md/bahan/filter",
|
||||
"input changed delay:500ms",
|
||||
"#filter-name, #filter-station, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID,
|
||||
"outerHTML",
|
||||
"#"+paginationID,
|
||||
stationListFilter,
|
||||
stationListFilter[0].T_SampleStationID,
|
||||
dev_mdbahanview.BeforeRequestContent(),
|
||||
dev_mdbahanview.AfterRequestContent(),
|
||||
)
|
||||
|
||||
//Pagination
|
||||
|
||||
mdbahanPagination := pagination.PaginationV3(
|
||||
totalPage, 1,
|
||||
"/dev/md/bahan/pagination",
|
||||
paginationID,
|
||||
"#filter-name, #filter-station, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID,
|
||||
"#"+paginationID,
|
||||
"outerHTML",
|
||||
"",
|
||||
"",
|
||||
dev_mdbahanview.BeforeRequestContent(),
|
||||
dev_mdbahanview.AfterRequestContent(),
|
||||
)
|
||||
//Form Add
|
||||
modalAddBody := dev_mdbahanview.BodyFormBahan(
|
||||
"",
|
||||
models.CustomTextFieldv2Prm{Label: "Kode Bahan",
|
||||
Name: "kodebahan",
|
||||
Placeholder: "Kode Bahan",
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{Label: "Nama Bahan",
|
||||
Name: "namabahan",
|
||||
Placeholder: "Nama Bahan",
|
||||
Type: "text"},
|
||||
models.CustomDropdownV2Prm{
|
||||
Name: "stationid",
|
||||
Label: "Sample Station",
|
||||
ListItem: dev_mdbahanview.ListItemStation(stationList, 0),
|
||||
},
|
||||
modalAddBodyID,
|
||||
dev_mdbahanview.JsShowModal(""),
|
||||
)
|
||||
modalAddAction := dev_mdbahanview.ActionFormBahan("/dev/md/bahan/closeaddform", "#"+modalAddBodyID, "outerHTML", "#"+modalAddID)
|
||||
modalAddBtnCls := dev_mdbahanview.BtnCloseFormBahan("/dev/md/bahan/closeaddform", "#"+modalAddBodyID, "outerHTML", "#"+modalAddID)
|
||||
modalAddBahan := dev_mdbahanview.BahanForm(models.BahanFormComponent{
|
||||
IDComponent: "",
|
||||
Link: "/dev/md/bahan/add",
|
||||
HxTarget: "#" + modalAddBodyID,
|
||||
HxSwap: "outerHTML",
|
||||
HxInclude: "#filter-name, #filter-station, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage" + paginationID,
|
||||
ModalID: modalAddID,
|
||||
ModalTitle: "New-Bahan",
|
||||
DialogBody: modalAddBody,
|
||||
DialogAction: modalAddAction,
|
||||
ButtonCLose: modalAddBtnCls,
|
||||
})
|
||||
|
||||
//Form Edit
|
||||
modalEditBody := dev_mdbahanview.BodyFormBahan(
|
||||
"",
|
||||
models.CustomTextFieldv2Prm{Label: "Kode Bahan",
|
||||
Name: "kodebahan",
|
||||
Placeholder: "Kode Bahan",
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{Label: "Nama Bahan",
|
||||
Name: "namabahan",
|
||||
Placeholder: "Nama Bahan",
|
||||
Type: "text"},
|
||||
models.CustomDropdownV2Prm{
|
||||
Name: "stationid",
|
||||
Label: "Sample Station",
|
||||
ListItem: dev_mdbahanview.ListItemStation(stationList, 0),
|
||||
},
|
||||
modalEditBodyID,
|
||||
dev_mdbahanview.JsShowModal(""),
|
||||
)
|
||||
modalEditAction := dev_mdbahanview.ActionFormBahan("/dev/md/bahan/closeeditform", "#"+modalEditBodyID, "outerHTML", "#"+modalEditID)
|
||||
modalEditBtnCls := dev_mdbahanview.BtnCloseFormBahan("/dev/md/bahan/closeeditform", "#"+modalEditBodyID, "outerHTML", "#"+modalEditID)
|
||||
modalEditBahan := dev_mdbahanview.BahanForm(models.BahanFormComponent{
|
||||
IDComponent: "",
|
||||
Link: "/dev/md/bahan/edit",
|
||||
HxTarget: "#" + modalEditBodyID,
|
||||
HxSwap: "outerHTML",
|
||||
HxInclude: "#filter-name, #filter-station, #tableID, #paginationID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage" + paginationID,
|
||||
ModalID: modalEditID,
|
||||
ModalTitle: "Edit-Bahan",
|
||||
DialogBody: modalEditBody,
|
||||
DialogAction: modalEditAction,
|
||||
ButtonCLose: modalEditBtnCls,
|
||||
})
|
||||
|
||||
//Form Delete
|
||||
modalDeleteBody := dev_mdbahanview.DeleteConfirmationBody(
|
||||
"",
|
||||
modalDeleteBodyID,
|
||||
"Apakah anda yakin menghapus bahan berikut ?",
|
||||
[]string{"Kode", "Nama Bahan", "Sample Station"},
|
||||
[]string{"", "", ""}, dev_mdbahanview.JsShowModal(""))
|
||||
modalDeleteAction := dev_mdbahanview.ActionFormBahanDelete("/dev/md/bahan/closedeleteform", "#"+modalDeleteBodyID, "outerHTML", "#"+modalDeleteID)
|
||||
modalDeleteBtnCls := dev_mdbahanview.BtnCloseFormBahan("/dev/md/bahan/closedeleteform", "#"+modalDeleteBodyID, "outerHTML", "#"+modalDeleteID)
|
||||
modalDeleteBahan := dev_mdbahanview.BahanForm(models.BahanFormComponent{
|
||||
IDComponent: "",
|
||||
Link: "/dev/md/bahan/delete",
|
||||
HxTarget: "#" + modalDeleteBodyID,
|
||||
HxSwap: "outerHTML",
|
||||
HxInclude: "#filter-name, #filter-station, #tableID, #paginationID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage" + paginationID,
|
||||
ModalID: modalDeleteID,
|
||||
ModalTitle: "Delete-Bahan",
|
||||
DialogBody: modalDeleteBody,
|
||||
DialogAction: modalDeleteAction,
|
||||
ButtonCLose: modalDeleteBtnCls,
|
||||
})
|
||||
|
||||
mdBahanScreen := dev_mdbahanview.MdBahanScreen(
|
||||
tableBahanID,
|
||||
paginationID,
|
||||
modalAddID,
|
||||
modalAddBodyID,
|
||||
modalEditID,
|
||||
modalEditBodyID,
|
||||
modalDeleteID,
|
||||
modalDeleteBodyID,
|
||||
breadcrumbComponent,
|
||||
mdBahanTable,
|
||||
mdBahanFilter,
|
||||
mdbahanPagination,
|
||||
modalAddBahan,
|
||||
modalEditBahan,
|
||||
modalDeleteBahan)
|
||||
cssMdBahan := dev_mdbahanview.CssMdUserGroup()
|
||||
jsMdBahan := dev_mdbahanview.JsMdBahan()
|
||||
|
||||
view := dev_mdbahanview.ShowMdBahanScreen(
|
||||
"Md Bahan",
|
||||
mdBahanScreen,
|
||||
cssMdBahan,
|
||||
jsMdBahan,
|
||||
navbarmenuComponent,
|
||||
navbaruserComponent,
|
||||
sidebaruserprofileComponent)
|
||||
return utils.View(c, view)
|
||||
}
|
||||
|
||||
func (lh *MdBahanHandler) HandleFilterMdBahan(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
var retval []templ.Component
|
||||
filtername := c.QueryParam("filtername")
|
||||
filterstation := c.QueryParam("filterstation")
|
||||
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
|
||||
dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID")
|
||||
tableID := c.QueryParam("tableID")
|
||||
paginationID := c.QueryParam("paginationID")
|
||||
bahanList, totalPage, err := lh.MdBahanServices.GetListMdBahan(filtername, filterstation, 1, 5)
|
||||
defer logger.Sync()
|
||||
logger.Info("GET DATA BAHAN",
|
||||
zap.Any("data", bahanList),
|
||||
zap.Any("err", err),
|
||||
zap.Any("totalPage", totalPage),
|
||||
)
|
||||
//Bahan Table
|
||||
|
||||
mdBahanTable := dev_mdbahanview.TableBahan(
|
||||
bahanList,
|
||||
tableID,
|
||||
"/dev/md/bahan/openedit",
|
||||
"#"+dialogEditBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"/dev/md/bahan/opendelete",
|
||||
"#"+dialogDeleteBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID")
|
||||
//Pagination
|
||||
|
||||
mdbahanPagination := pagination.PaginationV3(
|
||||
totalPage, 1,
|
||||
"/dev/md/bahan/pagination",
|
||||
paginationID,
|
||||
"#filter-name, #filter-station, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID,
|
||||
"#"+paginationID,
|
||||
"outerHTML",
|
||||
"",
|
||||
"",
|
||||
dev_mdbahanview.BeforeRequestContent(),
|
||||
dev_mdbahanview.AfterRequestContent(),
|
||||
)
|
||||
retval = append(retval, mdBahanTable)
|
||||
retval = append(retval, mdbahanPagination)
|
||||
return utils.ViewMulti(c, retval)
|
||||
}
|
||||
func (lh *MdBahanHandler) HandlePaginationMdBahan(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
var retval []templ.Component
|
||||
pageparam := c.QueryParam("page")
|
||||
|
||||
filtername := c.QueryParam("filtername")
|
||||
filterstation := c.QueryParam("filterstation")
|
||||
tableID := c.QueryParam("tableID")
|
||||
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
|
||||
dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID")
|
||||
paginationID := c.QueryParam("paginationID")
|
||||
page, err := strconv.Atoi(pageparam)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR CONVERT PAGE PARAM",
|
||||
zap.Any("page", page),
|
||||
zap.Any("error ", err),
|
||||
)
|
||||
return err
|
||||
}
|
||||
bahanList, totalPage, err := lh.MdBahanServices.GetListMdBahan(filtername, filterstation, page, 5)
|
||||
defer logger.Sync()
|
||||
logger.Info("GET DATA BAHAN",
|
||||
zap.Any("data", bahanList),
|
||||
zap.Any("err", err),
|
||||
zap.Any("totalPage", totalPage),
|
||||
)
|
||||
//Bahan Table
|
||||
|
||||
mdBahanTable := dev_mdbahanview.TableBahan(
|
||||
bahanList,
|
||||
tableID,
|
||||
"/dev/md/bahan/openedit",
|
||||
"#"+dialogEditBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"/dev/md/bahan/opendelete",
|
||||
"#"+dialogDeleteBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID")
|
||||
//Pagination
|
||||
|
||||
mdbahanPagination := pagination.PaginationV3(
|
||||
totalPage, page,
|
||||
"/dev/md/bahan/pagination",
|
||||
paginationID,
|
||||
"#filter-name, #filter-station, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID,
|
||||
"#"+paginationID,
|
||||
"outerHTML",
|
||||
"",
|
||||
"",
|
||||
dev_mdbahanview.BeforeRequestContent(),
|
||||
dev_mdbahanview.AfterRequestContent(),
|
||||
)
|
||||
retval = append(retval, mdBahanTable)
|
||||
retval = append(retval, mdbahanPagination)
|
||||
return utils.ViewMulti(c, retval)
|
||||
}
|
||||
func (lh *MdBahanHandler) HandleCloseFormAddMdBahan(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
stationList, err := lh.MdBahanServices.GetListSampleStation(false)
|
||||
defer logger.Sync()
|
||||
logger.Info("GET DATA STATIOn",
|
||||
zap.Any("err", err),
|
||||
)
|
||||
dialogAddBodyID := c.FormValue("dialogAddBodyID")
|
||||
dialogAddID := c.FormValue("dialogAddID")
|
||||
|
||||
modalAddBody := dev_mdbahanview.BodyFormBahan(
|
||||
"",
|
||||
models.CustomTextFieldv2Prm{Label: "Kode Bahan",
|
||||
Name: "kodebahan",
|
||||
Placeholder: "Kode Bahan",
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{Label: "Nama Bahan",
|
||||
Name: "namabahan",
|
||||
Placeholder: "Nama Bahan",
|
||||
Type: "text"},
|
||||
models.CustomDropdownV2Prm{
|
||||
Name: "stationid",
|
||||
Label: "Sample Station",
|
||||
ListItem: dev_mdbahanview.ListItemStation(stationList, 0),
|
||||
},
|
||||
dialogAddBodyID,
|
||||
dev_mdbahanview.JsHideModal("#"+dialogAddID),
|
||||
)
|
||||
return utils.View(c, modalAddBody)
|
||||
}
|
||||
func (lh *MdBahanHandler) HandleAddMdBahan(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
code := c.FormValue("kodebahan")
|
||||
name := c.FormValue("namabahan")
|
||||
stationIDPrm := c.FormValue("stationid")
|
||||
tableID := c.FormValue("tableID")
|
||||
paginationID := c.FormValue("paginationID")
|
||||
filtername := c.FormValue("filtername")
|
||||
filterstation := c.FormValue("filterstation")
|
||||
currPagePrm := c.FormValue("currpage" + paginationID)
|
||||
dialogAddBodyID := c.FormValue("dialogAddBodyID")
|
||||
// searchID := c.FormValue("searchID")
|
||||
dialogAddID := c.FormValue("dialogAddID")
|
||||
dialogEditBodyID := c.FormValue("dialogEditBodyID")
|
||||
dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID")
|
||||
currPage, err := strconv.Atoi(currPagePrm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
stationID, err := strconv.Atoi(stationIDPrm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
formValidation := ""
|
||||
codeValidation := ""
|
||||
nameValidation := ""
|
||||
stationValidation := ""
|
||||
|
||||
if strings.TrimSpace(code) == "" {
|
||||
formValidation = "Code bahan tidak boleh kosong"
|
||||
codeValidation = "Code bahan tidak boleh kosong"
|
||||
nameValidation = ""
|
||||
stationValidation = ""
|
||||
}
|
||||
if strings.TrimSpace(name) == "" {
|
||||
formValidation = "Nama bahan tidak boleh kosong"
|
||||
codeValidation = ""
|
||||
stationValidation = ""
|
||||
nameValidation = "Nama bahan tidak boleh kosong"
|
||||
}
|
||||
if stationID == 0 {
|
||||
formValidation = "Pilih salah satu station"
|
||||
codeValidation = ""
|
||||
nameValidation = ""
|
||||
stationValidation = "Pilih salah satu station"
|
||||
}
|
||||
if strings.TrimSpace(code) == "" && strings.TrimSpace(name) == "" {
|
||||
formValidation = "Code,nama, dan station bahan tidak boleh kosong"
|
||||
codeValidation = "Code bahan tidak boleh kosong"
|
||||
stationValidation = "Pilih salah satu station"
|
||||
nameValidation = "Nama bahan tidak boleh kosong"
|
||||
|
||||
}
|
||||
stationList, err := lh.MdBahanServices.GetListSampleStation(false)
|
||||
defer logger.Sync()
|
||||
logger.Info("GET DATA STATIOn",
|
||||
zap.Any("err", err),
|
||||
)
|
||||
if formValidation != "" || codeValidation != "" || nameValidation != "" || stationValidation != "" {
|
||||
newForm := dev_mdbahanview.BodyFormBahan(
|
||||
"",
|
||||
models.CustomTextFieldv2Prm{Label: "Kode Bahan",
|
||||
Name: "kodebahan",
|
||||
Placeholder: "Kode Bahan",
|
||||
Value: code,
|
||||
ErrorMsg: codeValidation,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{Label: "Nama Bahan",
|
||||
Name: "namabahan",
|
||||
Placeholder: "Nama Bahan",
|
||||
ErrorMsg: nameValidation,
|
||||
Value: name,
|
||||
Type: "text"},
|
||||
models.CustomDropdownV2Prm{
|
||||
Name: "stationid",
|
||||
Label: "Sample Station",
|
||||
ErrorMsg: stationValidation,
|
||||
ListItem: dev_mdbahanview.ListItemStation(stationList, stationID),
|
||||
},
|
||||
dialogAddBodyID,
|
||||
dev_mdbahanview.JsShowModal(""),
|
||||
)
|
||||
return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Warning", formValidation, "warning"), newForm})
|
||||
}
|
||||
_, err = lh.MdBahanServices.AddMdBahan(code, name, stationIDPrm)
|
||||
if err != nil {
|
||||
newForm := dev_mdbahanview.BodyFormBahan(
|
||||
"",
|
||||
models.CustomTextFieldv2Prm{Label: "Kode Bahan",
|
||||
Name: "kodebahan",
|
||||
Placeholder: "Kode Bahan",
|
||||
Value: code,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{Label: "Nama Bahan",
|
||||
Name: "namabahan",
|
||||
Placeholder: "Nama Bahan",
|
||||
Value: name,
|
||||
Type: "text"},
|
||||
models.CustomDropdownV2Prm{
|
||||
Name: "stationid",
|
||||
Label: "Sample Station",
|
||||
ListItem: dev_mdbahanview.ListItemStation(stationList, int(stationID)),
|
||||
},
|
||||
dialogAddBodyID,
|
||||
dev_mdbahanview.JsShowModal(""),
|
||||
)
|
||||
return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Gagal", err.Error(), "danger"), newForm})
|
||||
}
|
||||
|
||||
bahanList, totalPage, err := lh.MdBahanServices.GetListMdBahan(filtername, filterstation, currPage, 5)
|
||||
defer logger.Sync()
|
||||
logger.Info("GET DATA BAHAN",
|
||||
zap.Any("data", bahanList),
|
||||
zap.Any("err", err),
|
||||
zap.Any("totalPage", totalPage),
|
||||
)
|
||||
//Bahan Table
|
||||
mdBahanTable := dev_mdbahanview.TableBahan(
|
||||
bahanList,
|
||||
tableID,
|
||||
"/dev/md/bahan/openedit",
|
||||
"#"+dialogEditBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"/dev/md/bahan/opendelete",
|
||||
"#"+dialogDeleteBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID")
|
||||
|
||||
//Pagination
|
||||
|
||||
mdbahanPagination := pagination.PaginationV3(
|
||||
totalPage, currPage,
|
||||
"/dev/md/bahan/pagination",
|
||||
paginationID,
|
||||
"#filter-name, #filter-station, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID,
|
||||
"#"+paginationID,
|
||||
"outerHTML",
|
||||
"",
|
||||
"true",
|
||||
dev_mdbahanview.BeforeRequestContent(),
|
||||
dev_mdbahanview.AfterRequestContent(),
|
||||
)
|
||||
//Form Add
|
||||
modalAddBody := dev_mdbahanview.BodyFormBahan(
|
||||
"",
|
||||
models.CustomTextFieldv2Prm{Label: "Kode Bahan",
|
||||
Name: "kodebahan",
|
||||
Placeholder: "Kode Bahan",
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{Label: "Nama Bahan",
|
||||
Name: "namabahan",
|
||||
Placeholder: "Nama Bahan",
|
||||
Type: "text"},
|
||||
models.CustomDropdownV2Prm{
|
||||
Name: "stationid",
|
||||
Label: "Sample Station",
|
||||
ListItem: dev_mdbahanview.ListItemStation(stationList, 0),
|
||||
},
|
||||
dialogAddBodyID,
|
||||
dev_mdbahanview.JsHideModal("#"+dialogAddID),
|
||||
)
|
||||
|
||||
toastSuccess := customtoastv2.CustomToastV2Show("Success", "Success add bahan ", "success")
|
||||
retval := []templ.Component{toastSuccess, mdBahanTable, mdbahanPagination, modalAddBody}
|
||||
// time.Sleep(20 * time.Second)
|
||||
return utils.ViewMulti(c, retval)
|
||||
}
|
||||
func (lh *MdBahanHandler) HandleOpenEditMdBahan(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
id := c.QueryParam("id")
|
||||
dialogEditID := c.QueryParam("dialogEditID")
|
||||
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
|
||||
stationList, err := lh.MdBahanServices.GetListSampleStation(false)
|
||||
defer logger.Sync()
|
||||
logger.Info("GET DATA STATION",
|
||||
zap.Any("err", err),
|
||||
)
|
||||
dataBahan, err := lh.MdBahanServices.GetMdBahanByID(id)
|
||||
if err != nil {
|
||||
newForm := dev_mdbahanview.BodyFormBahan(
|
||||
id,
|
||||
models.CustomTextFieldv2Prm{Label: "Kode Bahan",
|
||||
Name: "kodebahan",
|
||||
Placeholder: "Kode Bahan",
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{Label: "Nama Bahan",
|
||||
Name: "namabahan",
|
||||
Placeholder: "Nama Bahan",
|
||||
Type: "text"},
|
||||
models.CustomDropdownV2Prm{
|
||||
Name: "stationid",
|
||||
Label: "Sample Station",
|
||||
ListItem: dev_mdbahanview.ListItemStation(stationList, dataBahan.T_BahanT_SampleStationID),
|
||||
},
|
||||
dialogEditBodyID,
|
||||
dev_mdbahanview.JsHideModal(""),
|
||||
)
|
||||
return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", "Get data bahan error", "danger"), newForm})
|
||||
}
|
||||
newForm := dev_mdbahanview.BodyFormBahan(
|
||||
id,
|
||||
models.CustomTextFieldv2Prm{Label: "Kode Bahan",
|
||||
Name: "kodebahan",
|
||||
Placeholder: "Kode Bahan",
|
||||
Value: dataBahan.T_BahanCode,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{Label: "Nama Bahan",
|
||||
Name: "namabahan",
|
||||
Placeholder: "Nama Bahan",
|
||||
Value: dataBahan.T_BahanName,
|
||||
Type: "text"},
|
||||
models.CustomDropdownV2Prm{
|
||||
Name: "stationid",
|
||||
Label: "Sample Station",
|
||||
ListItem: dev_mdbahanview.ListItemStation(stationList, dataBahan.T_BahanT_SampleStationID),
|
||||
},
|
||||
dialogEditBodyID,
|
||||
dev_mdbahanview.JsShowModal("#"+dialogEditID),
|
||||
)
|
||||
return utils.View(c, newForm)
|
||||
}
|
||||
func (lh *MdBahanHandler) HandleCloseFormEditMdBahan(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
stationList, err := lh.MdBahanServices.GetListSampleStation(false)
|
||||
dialogEditID := c.FormValue("dialogEditID")
|
||||
dialogEditBodyID := c.FormValue("dialogEditBodyID")
|
||||
defer logger.Sync()
|
||||
logger.Info("GET DATA STATION",
|
||||
zap.Any("err", err),
|
||||
zap.Any("dialogeditbodyid", dialogEditBodyID),
|
||||
)
|
||||
|
||||
modalAddBody := dev_mdbahanview.BodyFormBahan(
|
||||
"",
|
||||
models.CustomTextFieldv2Prm{Label: "Kode Bahan",
|
||||
Name: "kodebahan",
|
||||
Placeholder: "Kode Bahan",
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{Label: "Nama Bahan",
|
||||
Name: "namabahan",
|
||||
Placeholder: "Nama Bahan",
|
||||
Type: "text"},
|
||||
models.CustomDropdownV2Prm{
|
||||
Name: "stationid",
|
||||
Label: "Sample Station",
|
||||
ListItem: dev_mdbahanview.ListItemStation(stationList, 0),
|
||||
},
|
||||
dialogEditBodyID,
|
||||
dev_mdbahanview.JsHideModal("#"+dialogEditID),
|
||||
)
|
||||
return utils.View(c, modalAddBody)
|
||||
}
|
||||
func (lh *MdBahanHandler) HandleEditMdBahan(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
code := c.FormValue("kodebahan")
|
||||
name := c.FormValue("namabahan")
|
||||
id := c.FormValue("bahanid")
|
||||
stationIDPrm := c.FormValue("stationid")
|
||||
tableID := c.FormValue("tableID")
|
||||
paginationID := c.FormValue("paginationID")
|
||||
filtername := c.FormValue("filtername")
|
||||
filterstation := c.FormValue("filterstation")
|
||||
currPagePrm := c.FormValue("currpage" + paginationID)
|
||||
// dialogAddBodyID := c.FormValue("dialogAddBodyID")
|
||||
// searchID := c.FormValue("searchID")
|
||||
dialogEditID := c.FormValue("dialogEditID")
|
||||
dialogEditBodyID := c.FormValue("dialogEditBodyID")
|
||||
dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID")
|
||||
currPage, err := strconv.Atoi(currPagePrm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
stationID, err := strconv.Atoi(stationIDPrm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
formValidation := ""
|
||||
codeValidation := ""
|
||||
nameValidation := ""
|
||||
stationValidation := ""
|
||||
|
||||
if strings.TrimSpace(code) == "" {
|
||||
formValidation = "Code bahan tidak boleh kosong"
|
||||
codeValidation = "Code bahan tidak boleh kosong"
|
||||
nameValidation = ""
|
||||
stationValidation = ""
|
||||
}
|
||||
if strings.TrimSpace(name) == "" {
|
||||
formValidation = "Nama bahan tidak boleh kosong"
|
||||
codeValidation = ""
|
||||
stationValidation = ""
|
||||
nameValidation = "Nama bahan tidak boleh kosong"
|
||||
}
|
||||
if stationID == 0 {
|
||||
formValidation = "Pilih salah satu station"
|
||||
codeValidation = ""
|
||||
nameValidation = ""
|
||||
stationValidation = "Pilih salah satu station"
|
||||
}
|
||||
if strings.TrimSpace(code) == "" && strings.TrimSpace(name) == "" {
|
||||
formValidation = "Code,nama, dan station bahan tidak boleh kosong"
|
||||
codeValidation = "Code bahan tidak boleh kosong"
|
||||
stationValidation = "Pilih salah satu station"
|
||||
nameValidation = "Nama bahan tidak boleh kosong"
|
||||
|
||||
}
|
||||
stationList, err := lh.MdBahanServices.GetListSampleStation(false)
|
||||
defer logger.Sync()
|
||||
logger.Info("GET DATA STATIOn",
|
||||
zap.Any("err", err),
|
||||
)
|
||||
if formValidation != "" || codeValidation != "" || nameValidation != "" || stationValidation != "" {
|
||||
newForm := dev_mdbahanview.BodyFormBahan(
|
||||
id,
|
||||
models.CustomTextFieldv2Prm{Label: "Kode Bahan",
|
||||
Name: "kodebahan",
|
||||
Placeholder: "Kode Bahan",
|
||||
Value: code,
|
||||
ErrorMsg: codeValidation,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{Label: "Nama Bahan",
|
||||
Name: "namabahan",
|
||||
Placeholder: "Nama Bahan",
|
||||
ErrorMsg: nameValidation,
|
||||
Value: name,
|
||||
Type: "text"},
|
||||
models.CustomDropdownV2Prm{
|
||||
Name: "stationid",
|
||||
Label: "Sample Station",
|
||||
ErrorMsg: stationValidation,
|
||||
ListItem: dev_mdbahanview.ListItemStation(stationList, stationID),
|
||||
},
|
||||
dialogEditBodyID,
|
||||
dev_mdbahanview.JsShowModal(""),
|
||||
)
|
||||
return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Warning", formValidation, "warning"), newForm})
|
||||
}
|
||||
_, err = lh.MdBahanServices.EditMdBahan(id, code, name, stationIDPrm)
|
||||
if err != nil {
|
||||
newForm := dev_mdbahanview.BodyFormBahan(
|
||||
id,
|
||||
models.CustomTextFieldv2Prm{Label: "Kode Bahan",
|
||||
Name: "kodebahan",
|
||||
Placeholder: "Kode Bahan",
|
||||
Value: code,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{Label: "Nama Bahan",
|
||||
Name: "namabahan",
|
||||
Placeholder: "Nama Bahan",
|
||||
Value: name,
|
||||
Type: "text"},
|
||||
models.CustomDropdownV2Prm{
|
||||
Name: "stationid",
|
||||
Label: "Sample Station",
|
||||
ListItem: dev_mdbahanview.ListItemStation(stationList, int(stationID)),
|
||||
},
|
||||
dialogEditBodyID,
|
||||
dev_mdbahanview.JsShowModal(""),
|
||||
)
|
||||
return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Gagal", err.Error(), "danger"), newForm})
|
||||
}
|
||||
|
||||
bahanList, totalPage, err := lh.MdBahanServices.GetListMdBahan(filtername, filterstation, currPage, 5)
|
||||
defer logger.Sync()
|
||||
logger.Info("GET DATA BAHAN",
|
||||
zap.Any("data", bahanList),
|
||||
zap.Any("err", err),
|
||||
zap.Any("totalPage", totalPage),
|
||||
)
|
||||
//Bahan Table
|
||||
mdBahanTable := dev_mdbahanview.TableBahan(
|
||||
bahanList,
|
||||
tableID,
|
||||
"/dev/md/bahan/openedit",
|
||||
"#"+dialogEditBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"/dev/md/bahan/opendelete",
|
||||
"#"+dialogDeleteBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID")
|
||||
|
||||
//Pagination
|
||||
|
||||
mdbahanPagination := pagination.PaginationV3(
|
||||
totalPage, currPage,
|
||||
"/dev/md/bahan/pagination",
|
||||
paginationID,
|
||||
"#filter-name, #filter-station, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID,
|
||||
"#"+paginationID,
|
||||
"outerHTML",
|
||||
"",
|
||||
"true",
|
||||
dev_mdbahanview.BeforeRequestContent(),
|
||||
dev_mdbahanview.AfterRequestContent(),
|
||||
)
|
||||
//Form Add
|
||||
modalAddBody := dev_mdbahanview.BodyFormBahan(
|
||||
"",
|
||||
models.CustomTextFieldv2Prm{Label: "Kode Bahan",
|
||||
Name: "kodebahan",
|
||||
Placeholder: "Kode Bahan",
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{Label: "Nama Bahan",
|
||||
Name: "namabahan",
|
||||
Placeholder: "Nama Bahan",
|
||||
Type: "text"},
|
||||
models.CustomDropdownV2Prm{
|
||||
Name: "stationid",
|
||||
Label: "Sample Station",
|
||||
ListItem: dev_mdbahanview.ListItemStation(stationList, 0),
|
||||
},
|
||||
dialogEditBodyID,
|
||||
dev_mdbahanview.JsHideModal("#"+dialogEditID),
|
||||
)
|
||||
|
||||
toastSuccess := customtoastv2.CustomToastV2Show("Success", "Success edit bahan ", "success")
|
||||
retval := []templ.Component{toastSuccess, mdBahanTable, mdbahanPagination, modalAddBody}
|
||||
// time.Sleep(20 * time.Second)
|
||||
return utils.ViewMulti(c, retval)
|
||||
}
|
||||
func (lh *MdBahanHandler) HandleOpenDeleteMdBahan(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
id := c.QueryParam("id")
|
||||
dialogDeleteID := c.QueryParam("dialogDeleteID")
|
||||
dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID")
|
||||
|
||||
dataBahan, err := lh.MdBahanServices.GetMdBahanByID(id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("GET DATA BAHAN",
|
||||
zap.Any("err", err),
|
||||
)
|
||||
newForm := dev_mdbahanview.DeleteConfirmationBody(
|
||||
"",
|
||||
dialogDeleteBodyID,
|
||||
"Apakah anda yakin menghapus bahan berikut ?",
|
||||
[]string{"Kode", "Nama Bahan", "Sample Station"},
|
||||
[]string{"", "", ""}, dev_mdbahanview.JsShowModal(""))
|
||||
return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", "Get data bahan error", "danger"), newForm})
|
||||
}
|
||||
newForm := dev_mdbahanview.DeleteConfirmationBody(
|
||||
strconv.Itoa(dataBahan.T_BahanID),
|
||||
dialogDeleteBodyID,
|
||||
"Apakah anda yakin menghapus bahan berikut ?",
|
||||
[]string{"Kode", "Nama Bahan", "Sample Station"},
|
||||
[]string{dataBahan.T_BahanCode, dataBahan.T_BahanName, dataBahan.T_SampleStationName}, dev_mdbahanview.JsShowModal("#"+dialogDeleteID))
|
||||
return utils.View(c, newForm)
|
||||
}
|
||||
func (lh *MdBahanHandler) HandleCloseDeleteMdBahan(c echo.Context) error {
|
||||
|
||||
dialogDeleteID := c.FormValue("dialogDeleteID")
|
||||
dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID")
|
||||
newForm := dev_mdbahanview.DeleteConfirmationBody(
|
||||
"",
|
||||
dialogDeleteBodyID,
|
||||
"Apakah anda yakin menghapus bahan berikut ?",
|
||||
[]string{"Kode", "Nama Bahan", "Sample Station"},
|
||||
[]string{"", "", ""}, dev_mdbahanview.JsHideModal("#"+dialogDeleteID))
|
||||
return utils.View(c, newForm)
|
||||
}
|
||||
|
||||
func (lh *MdBahanHandler) HandleDeleteMdBahan(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
id := c.FormValue("bahanid")
|
||||
|
||||
tableID := c.FormValue("tableID")
|
||||
paginationID := c.FormValue("paginationID")
|
||||
filtername := c.FormValue("filtername")
|
||||
filterstation := c.FormValue("filterstation")
|
||||
currPagePrm := c.FormValue("currpage" + paginationID)
|
||||
// dialogAddBodyID := c.FormValue("dialogAddBodyID")
|
||||
// searchID := c.FormValue("searchID")
|
||||
dialogDeleteID := c.FormValue("dialogDeleteID")
|
||||
dialogEditBodyID := c.FormValue("dialogEditBodyID")
|
||||
dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID")
|
||||
currPage, err := strconv.Atoi(currPagePrm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = lh.MdBahanServices.DeleteMdBahan(id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERR DELETE MD BAHAN",
|
||||
zap.Any("err", err),
|
||||
)
|
||||
newForm := dev_mdbahanview.DeleteConfirmationBody(
|
||||
"",
|
||||
dialogDeleteBodyID,
|
||||
"Apakah anda yakin menghapus bahan berikut ?",
|
||||
[]string{"Kode", "Nama Bahan", "Sample Station"},
|
||||
[]string{"", "", ""}, dev_mdbahanview.JsShowModal(""))
|
||||
return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", "Get data bahan error", "danger"), newForm})
|
||||
}
|
||||
bahanList, totalPage, err := lh.MdBahanServices.GetListMdBahan(filtername, filterstation, currPage, 5)
|
||||
defer logger.Sync()
|
||||
logger.Info("GET DATA BAHAN",
|
||||
zap.Any("data", bahanList),
|
||||
zap.Any("err", err),
|
||||
zap.Any("totalPage", totalPage),
|
||||
)
|
||||
//Bahan Table
|
||||
mdBahanTable := dev_mdbahanview.TableBahan(
|
||||
bahanList,
|
||||
tableID,
|
||||
"/dev/md/bahan/openedit",
|
||||
"#"+dialogEditBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"/dev/md/bahan/opendelete",
|
||||
"#"+dialogDeleteBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID")
|
||||
|
||||
//Pagination
|
||||
|
||||
mdbahanPagination := pagination.PaginationV3(
|
||||
totalPage, currPage,
|
||||
"/dev/md/bahan/pagination",
|
||||
paginationID,
|
||||
"#filter-name, #filter-station, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID,
|
||||
"#"+paginationID,
|
||||
"outerHTML",
|
||||
"",
|
||||
"true",
|
||||
dev_mdbahanview.BeforeRequestContent(),
|
||||
dev_mdbahanview.AfterRequestContent(),
|
||||
)
|
||||
|
||||
toastSuccess := customtoastv2.CustomToastV2Show("Success", "Berhasil hapus bahan", "success")
|
||||
newForm := dev_mdbahanview.DeleteConfirmationBody(
|
||||
"",
|
||||
dialogDeleteBodyID,
|
||||
"Apakah anda yakin menghapus bahan berikut ?",
|
||||
[]string{"Kode", "Nama Bahan", "Sample Station"},
|
||||
[]string{"", "", ""}, dev_mdbahanview.JsHideModal("#"+dialogDeleteID))
|
||||
return utils.ViewMulti(c, []templ.Component{toastSuccess, mdBahanTable, mdbahanPagination, newForm})
|
||||
}
|
||||
1456
handlers/dev/md.groupresult.handlers.go
Normal file
1456
handlers/dev/md.groupresult.handlers.go
Normal file
File diff suppressed because it is too large
Load Diff
1036
handlers/dev/md.natunit.handlers.go
Normal file
1036
handlers/dev/md.natunit.handlers.go
Normal file
File diff suppressed because it is too large
Load Diff
1358
handlers/dev/md.samplestation.handlers.go
Normal file
1358
handlers/dev/md.samplestation.handlers.go
Normal file
File diff suppressed because it is too large
Load Diff
994
handlers/dev/md.usergroup.handlers.go
Normal file
994
handlers/dev/md.usergroup.handlers.go
Normal file
@@ -0,0 +1,994 @@
|
||||
package dev_handlers
|
||||
|
||||
import (
|
||||
breadcrumadmin "cpone/component/breadcrumbadmin"
|
||||
customtextfieldsearch "cpone/component/customtextfieldsearch"
|
||||
navbarmenu "cpone/component/navbar"
|
||||
"cpone/component/pagination"
|
||||
sidebaruserprofile "cpone/component/sidebar_user_profile"
|
||||
customtoastv2 "cpone/component/toastbootstrap"
|
||||
"cpone/models"
|
||||
"cpone/services"
|
||||
"cpone/utils"
|
||||
dev_mdusergroupview "cpone/views/dev/mdusergroup"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"fmt"
|
||||
|
||||
"github.com/a-h/templ"
|
||||
"github.com/labstack/echo/v4"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type MdUserGroupServices interface {
|
||||
GetListMdUserGroup(search string, currentPage int, rowPerPage int) ([]models.UserGroupV1, int, error)
|
||||
GetMdUserGroupByID(id string) (models.UserGroupV1, error)
|
||||
AddMdUserGroup(code string, name string) (models.UserGroupV1, error)
|
||||
EditMdUsergroup(id string, code string, name string) (models.UserGroupV1, error)
|
||||
DeleteMdUserGroup(id string) (models.UserGroupV1, error)
|
||||
GetMdUserGroupBreadCrumb(title string) (models.BreadCrumbV1, error)
|
||||
}
|
||||
|
||||
func NewMdUserGroupHandler(us MdUserGroupServices) *MdUserGroupHandler {
|
||||
return &MdUserGroupHandler{
|
||||
MdUserGroupServices: us,
|
||||
}
|
||||
}
|
||||
|
||||
type MdUserGroupHandler struct {
|
||||
MdUserGroupServices MdUserGroupServices
|
||||
}
|
||||
|
||||
func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
//get sidebarmenu
|
||||
tableID := utils.GenerateRandomID("tablebody")
|
||||
paginationID := utils.GenerateRandomID("paginationid")
|
||||
searchID := utils.GenerateRandomID("searchid")
|
||||
dialogAddID := utils.GenerateRandomID("dialogaddID")
|
||||
dialogAddBodyID := utils.GenerateRandomID("dialogaddbodyID")
|
||||
dialogEditID := utils.GenerateRandomID("dialogEditID")
|
||||
dialogEditBodyID := utils.GenerateRandomID("dialogEditbodyID")
|
||||
dialogDeleteID := utils.GenerateRandomID("dialogDeleteID")
|
||||
dialogDeleteBodyID := utils.GenerateRandomID("dialogDeletebodyID")
|
||||
dataMenu, err := services.GetMenu()
|
||||
fmt.Println(dataMenu)
|
||||
fmt.Println(err)
|
||||
if err != nil {
|
||||
fmt.Println(dataMenu)
|
||||
return err
|
||||
}
|
||||
|
||||
//get user login
|
||||
dataUser, err := services.GetUserLogin()
|
||||
fmt.Println(dataUser)
|
||||
fmt.Println(err)
|
||||
if err != nil {
|
||||
fmt.Println(dataUser)
|
||||
return err
|
||||
}
|
||||
defer logger.Sync()
|
||||
logger.Info("LOAD USER DEV",
|
||||
zap.Any("data", dataUser),
|
||||
)
|
||||
|
||||
title := "Master User Group"
|
||||
|
||||
dataBreadCrumb, err := lh.MdUserGroupServices.GetMdUserGroupBreadCrumb(title)
|
||||
fmt.Println(dataBreadCrumb)
|
||||
fmt.Println(err)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR BREADCRUMB DEV",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
fmt.Println(dataBreadCrumb)
|
||||
return err
|
||||
}
|
||||
|
||||
defer logger.Sync()
|
||||
logger.Info("LOAD BREADCRUMB DEV",
|
||||
zap.Any("data", dataBreadCrumb),
|
||||
)
|
||||
//Breadcrumb component
|
||||
breadcrumbComponent := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadCrumb)
|
||||
// navbar menu
|
||||
navbarmenuComponent := navbarmenu.NavbarMenu(dataMenu)
|
||||
|
||||
// navbar user
|
||||
navbaruserComponent := navbarmenu.Navbar(dataUser)
|
||||
|
||||
// sidebar
|
||||
sidebaruserprofileComponent := sidebaruserprofile.Navbaruserprofile(dataUser)
|
||||
|
||||
//Table component
|
||||
dataUserGroup, totalPage, err := lh.MdUserGroupServices.GetListMdUserGroup("", 1, 5)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR GET USER GROUP",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
fmt.Println(dataUserGroup)
|
||||
return err
|
||||
}
|
||||
|
||||
tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroup,
|
||||
tableID,
|
||||
"/dev/md/usergroupv2/openedit",
|
||||
"#"+dialogEditBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"/dev/md/usergroupv2/opendelete",
|
||||
"#"+dialogDeleteBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
)
|
||||
|
||||
//filter user group component
|
||||
usergroupFilterComponent := customtextfieldsearch.MainCustomTextFieldSearchV3(searchID,
|
||||
"search",
|
||||
"Cari Kode/Nama",
|
||||
"text",
|
||||
"/dev/md/usergroupv2/filter",
|
||||
"input changed delay:500ms, search",
|
||||
"#"+paginationID, "#loadingcontent", "", "outerHTML", "#tableID, #paginationID, #searchID,#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
dev_mdusergroupview.BeforeRequestContent(),
|
||||
dev_mdusergroupview.AfterRequestContent())
|
||||
//Pagination
|
||||
userGroupPaginationComponent := pagination.PaginationV3(
|
||||
totalPage,
|
||||
1,
|
||||
"/dev/md/usergroupv2/changepage",
|
||||
paginationID,
|
||||
"#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"#"+paginationID,
|
||||
"outerHTML", "", "",
|
||||
dev_mdusergroupview.BeforeRequestContent(),
|
||||
dev_mdusergroupview.AfterRequestContent(),
|
||||
)
|
||||
|
||||
//modal add form
|
||||
dialogAddBodyCmp := dev_mdusergroupview.BodyFormUserGroup(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupcode",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "text", ID: "usergroupinputname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama User Group",
|
||||
Name: "usergroupname",
|
||||
Placeholder: "Nama user group",
|
||||
Type: "text", ID: "usergroupinputname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupid",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "hidden", ID: "usergroupinputid"},
|
||||
dialogAddBodyID, dev_mdusergroupview.JsHideModal(""))
|
||||
modalActioAddCmp := dev_mdusergroupview.ActionFormUserGroup(
|
||||
"/dev/md/usergroupv2/closeaddform",
|
||||
"#"+dialogAddBodyID,
|
||||
"outerHTML",
|
||||
"#"+dialogAddID)
|
||||
btnCloaseModalAdd := dev_mdusergroupview.BtnCloseFormUserGroup(
|
||||
"/dev/md/usergroupv2/closeaddform",
|
||||
"#"+dialogAddBodyID,
|
||||
"outerHTML",
|
||||
"#"+dialogAddID)
|
||||
modalAddFormComponent := dev_mdusergroupview.UserGroupForm(
|
||||
models.UserGroupFormComponent{
|
||||
IDComponent: "formusergroup",
|
||||
Link: "/dev/md/usergroupv2/add",
|
||||
HxTarget: "#" + dialogAddBodyID,
|
||||
HxSwap: "outerHTML",
|
||||
HxInclude: "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogEditBodyID, #" + searchID + ", #currpage" + paginationID,
|
||||
ModalID: dialogAddID,
|
||||
ModalTitle: "New-User Group",
|
||||
DialogBody: dialogAddBodyCmp,
|
||||
DialogAction: modalActioAddCmp,
|
||||
ButtonCLose: btnCloaseModalAdd,
|
||||
},
|
||||
)
|
||||
|
||||
//modal edit form
|
||||
dialogEditBodyCmp := dev_mdusergroupview.BodyFormUserGroup(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupcode",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "text", ID: "usergroupinputname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama User Group",
|
||||
Name: "usergroupname",
|
||||
Placeholder: "Nama user group",
|
||||
Type: "text", ID: "usergroupinputname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupid",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "hidden", ID: "usergroupinputid"},
|
||||
dialogEditBodyID, dev_mdusergroupview.JsHideModal(""))
|
||||
modalActioEditCmp := dev_mdusergroupview.ActionFormUserGroup(
|
||||
"/dev/md/usergroupv2/closeeditform",
|
||||
"#"+dialogEditBodyID,
|
||||
"outerHTML",
|
||||
"#"+dialogEditID)
|
||||
btnCloaseModalEdit := dev_mdusergroupview.BtnCloseFormUserGroup(
|
||||
"/dev/md/usergroupv2/closeeditform",
|
||||
"#"+dialogEditBodyID,
|
||||
"outerHTML",
|
||||
"#"+dialogEditID)
|
||||
modalEditFormComponent := dev_mdusergroupview.UserGroupForm(
|
||||
models.UserGroupFormComponent{
|
||||
IDComponent: "formusergroup",
|
||||
Link: "/dev/md/usergroupv2/edit",
|
||||
HxTarget: "#" + dialogEditBodyID,
|
||||
HxSwap: "outerHTML",
|
||||
HxInclude: "#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogEditBodyID, #dialogEditID, #" + searchID + ", #currpage" + paginationID,
|
||||
ModalID: dialogEditID,
|
||||
ModalTitle: "New-User Group",
|
||||
DialogBody: dialogEditBodyCmp,
|
||||
DialogAction: modalActioEditCmp,
|
||||
ButtonCLose: btnCloaseModalEdit,
|
||||
},
|
||||
)
|
||||
//modal delete form
|
||||
dialogDeleteBodyCmp := dev_mdusergroupview.BodyFormUserGroup(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupcode",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "text", ID: "usergroupinputname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama User Group",
|
||||
Name: "usergroupname",
|
||||
Placeholder: "Nama user group",
|
||||
Type: "text", ID: "usergroupinputname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupid",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "hidden", ID: "usergroupinputid"},
|
||||
dialogDeleteBodyID, dev_mdusergroupview.JsHideModal(""))
|
||||
modalActioDeleteCmp := dev_mdusergroupview.ActionFormUserGroupDelete(
|
||||
"/dev/md/usergroupv2/closedeleteform",
|
||||
"#"+dialogDeleteBodyID,
|
||||
"outerHTML",
|
||||
"#"+dialogDeleteID)
|
||||
btnCloaseModalDelete := dev_mdusergroupview.BtnCloseFormUserGroup(
|
||||
"/dev/md/usergroupv2/closedeleteform",
|
||||
"#"+dialogDeleteBodyID,
|
||||
"outerHTML",
|
||||
"#"+dialogDeleteID)
|
||||
modalDeleteFormComponent := dev_mdusergroupview.UserGroupForm(
|
||||
models.UserGroupFormComponent{
|
||||
IDComponent: "formusergroup",
|
||||
Link: "/dev/md/usergroupv2/delete",
|
||||
HxTarget: "#" + dialogDeleteBodyID,
|
||||
HxSwap: "outerHTML",
|
||||
HxInclude: "#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #" + searchID + ", #currpage" + paginationID,
|
||||
ModalID: dialogDeleteID,
|
||||
ModalTitle: "New-User Group",
|
||||
DialogBody: dialogDeleteBodyCmp,
|
||||
DialogAction: modalActioDeleteCmp,
|
||||
ButtonCLose: btnCloaseModalDelete,
|
||||
},
|
||||
)
|
||||
|
||||
//content js & css
|
||||
content := dev_mdusergroupview.MdUserGroupScreen(
|
||||
tableID,
|
||||
paginationID,
|
||||
searchID,
|
||||
dialogAddID,
|
||||
dialogAddBodyID,
|
||||
dialogEditID,
|
||||
dialogEditBodyID,
|
||||
dialogDeleteID,
|
||||
dialogDeleteBodyID,
|
||||
breadcrumbComponent,
|
||||
tableComponent,
|
||||
usergroupFilterComponent,
|
||||
userGroupPaginationComponent,
|
||||
modalAddFormComponent,
|
||||
modalEditFormComponent,
|
||||
modalDeleteFormComponent)
|
||||
css := dev_mdusergroupview.CssMdUserGroup()
|
||||
js := dev_mdusergroupview.JsMdUserGroup()
|
||||
|
||||
view := dev_mdusergroupview.ShowMdUserGroupScreen(title,
|
||||
content,
|
||||
css,
|
||||
js,
|
||||
navbarmenuComponent,
|
||||
navbaruserComponent,
|
||||
sidebaruserprofileComponent)
|
||||
return utils.View(c, view)
|
||||
}
|
||||
func (lh *MdUserGroupHandler) HandleFilterMdUserGroup(c echo.Context) error {
|
||||
search := c.QueryParam("search")
|
||||
searchID := c.QueryParam("searchID")
|
||||
tableID := c.QueryParam("tableID")
|
||||
paginationID := c.QueryParam("paginationID")
|
||||
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
|
||||
dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID")
|
||||
var retval []templ.Component
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
dataUserGroup, totalpage, err := lh.MdUserGroupServices.GetListMdUserGroup(search, 1, 5)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR GET USER GROUP",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
fmt.Println(dataUserGroup)
|
||||
return err
|
||||
}
|
||||
tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroup,
|
||||
tableID,
|
||||
"/dev/md/usergroupv2/openedit",
|
||||
"#"+dialogEditBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"/dev/md/usergroupv2/opendelete",
|
||||
"#"+dialogDeleteBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID")
|
||||
userGroupPaginationComponent := pagination.PaginationV3(
|
||||
totalpage,
|
||||
1,
|
||||
"/dev/md/usergroupv2/changepage",
|
||||
paginationID,
|
||||
"#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"#"+paginationID,
|
||||
"outerHTML", "", "",
|
||||
dev_mdusergroupview.BeforeRequestContent(),
|
||||
dev_mdusergroupview.AfterRequestContent(),
|
||||
)
|
||||
retval = append(retval, tableComponent)
|
||||
retval = append(retval, userGroupPaginationComponent)
|
||||
return utils.ViewMulti(c, retval)
|
||||
}
|
||||
func (lh *MdUserGroupHandler) HandleChangePageMdUserGroup(c echo.Context) error {
|
||||
search := c.QueryParam("search")
|
||||
pageparam := c.QueryParam("page")
|
||||
tableID := c.QueryParam("tableID")
|
||||
searchID := c.QueryParam("searchID")
|
||||
paginationID := c.QueryParam("paginationID")
|
||||
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
|
||||
dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID")
|
||||
var retval []templ.Component
|
||||
logger, _ := zap.NewProduction()
|
||||
page, err := strconv.Atoi(pageparam)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR CONVERT PAGE PARAM",
|
||||
zap.Any("page", page),
|
||||
zap.Any("error ", err),
|
||||
)
|
||||
return err
|
||||
}
|
||||
dataUserGroup, totalpage, err := lh.MdUserGroupServices.GetListMdUserGroup(search, page, 5)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR GET USER GROUP",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
fmt.Println(dataUserGroup)
|
||||
return err
|
||||
}
|
||||
tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroup,
|
||||
tableID,
|
||||
"/dev/md/usergroupv2/openedit",
|
||||
"#"+dialogEditBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"/dev/md/usergroupv2/opendelete",
|
||||
"#"+dialogDeleteBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
)
|
||||
userGroupPaginationComponent := pagination.PaginationV3(
|
||||
totalpage,
|
||||
page,
|
||||
"/dev/md/usergroupv2/changepage",
|
||||
paginationID,
|
||||
"#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"#"+paginationID,
|
||||
"outerHTML", "", "",
|
||||
dev_mdusergroupview.BeforeRequestContent(),
|
||||
dev_mdusergroupview.AfterRequestContent(),
|
||||
)
|
||||
retval = append(retval, tableComponent)
|
||||
retval = append(retval, userGroupPaginationComponent)
|
||||
return utils.ViewMulti(c, retval)
|
||||
}
|
||||
func (lh *MdUserGroupHandler) HandleCloseFormAdd(c echo.Context) error {
|
||||
dialogAddBodyID := c.FormValue("dialogAddBodyID")
|
||||
newForm := dev_mdusergroupview.BodyFormUserGroup(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupcode",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "text", ID: "usergroupinputname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama User Group",
|
||||
Name: "usergroupname",
|
||||
Placeholder: "Nama user group",
|
||||
Type: "text", ID: "usergroupinputname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupid",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "hidden", ID: "usergroupinputid"},
|
||||
dialogAddBodyID, dev_mdusergroupview.JsHideModal(""))
|
||||
return utils.View(c, newForm)
|
||||
}
|
||||
func (lh *MdUserGroupHandler) HandleAddUserGroup(c echo.Context) error {
|
||||
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
|
||||
//prm form addusergroup
|
||||
code := c.FormValue("usergroupcode")
|
||||
name := c.FormValue("usergroupname")
|
||||
tableID := c.FormValue("tableID")
|
||||
paginationID := c.FormValue("paginationID")
|
||||
searchID := c.FormValue("searchID")
|
||||
search := c.FormValue("search")
|
||||
currPagePrm := c.FormValue("currpage" + paginationID)
|
||||
dialogAddBodyID := c.FormValue("dialogAddBodyID")
|
||||
dialogAddID := c.FormValue("dialogAddID")
|
||||
dialogEditBodyID := c.FormValue("dialogEditBodyID")
|
||||
dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID")
|
||||
|
||||
currPage, err := strconv.Atoi(currPagePrm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
logger.Info("ADD USER GROUP PARAM",
|
||||
zap.Any("code", code),
|
||||
zap.Any("nama", name),
|
||||
zap.Any("tableid", tableID),
|
||||
zap.Any("search", search),
|
||||
zap.Any("currpage", currPage),
|
||||
)
|
||||
formValidation := ""
|
||||
codeValidation := ""
|
||||
nameValidation := ""
|
||||
if strings.TrimSpace(code) == "" {
|
||||
formValidation = "Code user group tidak boleh kosong"
|
||||
codeValidation = "Code user group tidak boleh kosong"
|
||||
nameValidation = ""
|
||||
}
|
||||
if strings.TrimSpace(name) == "" {
|
||||
formValidation = "Nama user group tidak boleh kosong"
|
||||
codeValidation = ""
|
||||
nameValidation = "Nama user group tidak boleh kosong"
|
||||
}
|
||||
if strings.TrimSpace(code) == "" && strings.TrimSpace(name) == "" {
|
||||
formValidation = "Code dan nama user group tidak boleh kosong"
|
||||
codeValidation = "Code user group tidak boleh kosong"
|
||||
nameValidation = "Nama user group tidak boleh kosong"
|
||||
|
||||
}
|
||||
|
||||
if formValidation != "" || codeValidation != "" || nameValidation != "" {
|
||||
newForm := dev_mdusergroupview.BodyFormUserGroup(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupcode",
|
||||
Placeholder: "Kode user group",
|
||||
ErrorMsg: codeValidation,
|
||||
Value: code,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama User Group",
|
||||
Name: "usergroupname",
|
||||
Placeholder: "Nama user group",
|
||||
ErrorMsg: nameValidation,
|
||||
Value: name,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupid",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "hidden", ID: "usergroupinputid"},
|
||||
dialogAddBodyID, dev_mdusergroupview.JsHideModal(""))
|
||||
return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Warning", formValidation, "warning"), newForm})
|
||||
}
|
||||
//Add user group service
|
||||
dataUserGroup, err := lh.MdUserGroupServices.AddMdUserGroup(code, name)
|
||||
if err != nil {
|
||||
logger.Info("Error",
|
||||
zap.Any("Error", err),
|
||||
zap.Any("code", code),
|
||||
zap.Any("name", name),
|
||||
)
|
||||
newForm := dev_mdusergroupview.BodyFormUserGroup(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupcode",
|
||||
Placeholder: "Kode user group",
|
||||
ErrorMsg: codeValidation,
|
||||
Value: code,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama User Group",
|
||||
Name: "usergroupname",
|
||||
Placeholder: "Nama user group",
|
||||
ErrorMsg: nameValidation,
|
||||
Value: name,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupid",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "hidden", ID: "usergroupinputid"},
|
||||
dialogAddBodyID, dev_mdusergroupview.JsHideModal(""))
|
||||
return utils.ViewMulti(c, []templ.Component{
|
||||
customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"),
|
||||
newForm})
|
||||
|
||||
}
|
||||
logger.Info("ADD USER GROUP",
|
||||
zap.Any("return", dataUserGroup),
|
||||
zap.Any("code", code),
|
||||
zap.Any("name", name),
|
||||
)
|
||||
//get list user group for table
|
||||
dataUserGroupList, totalPage, err := lh.MdUserGroupServices.GetListMdUserGroup(search, currPage, 5)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR GET USER GROUP",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
fmt.Println(dataUserGroup)
|
||||
return err
|
||||
}
|
||||
//table component
|
||||
tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroupList,
|
||||
tableID,
|
||||
"/dev/md/usergroupv2/openedit",
|
||||
"#"+dialogEditBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"/dev/md/usergroupv2/opendelete",
|
||||
"#"+dialogDeleteBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID")
|
||||
|
||||
//pagination component
|
||||
//Pagination
|
||||
userGroupPaginationComponent := pagination.PaginationV3(
|
||||
totalPage,
|
||||
currPage,
|
||||
"/dev/md/usergroupv2/changepage",
|
||||
paginationID,
|
||||
"#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"#"+paginationID,
|
||||
"outerHTML", "", "true",
|
||||
dev_mdusergroupview.BeforeRequestContent(),
|
||||
dev_mdusergroupview.AfterRequestContent(),
|
||||
)
|
||||
|
||||
newForm := dev_mdusergroupview.BodyFormUserGroup(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupcode",
|
||||
Placeholder: "Kode user group",
|
||||
ErrorMsg: codeValidation,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama User Group",
|
||||
Name: "usergroupname",
|
||||
Placeholder: "Nama user group",
|
||||
ErrorMsg: nameValidation,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupid",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "hidden", ID: "usergroupinputid"},
|
||||
dialogAddBodyID, dev_mdusergroupview.JsHideModal("#"+dialogAddID))
|
||||
toastSuccess := customtoastv2.CustomToastV2Show("Success", "Berhasil insert User group "+name, "success")
|
||||
|
||||
return utils.ViewMulti(c, []templ.Component{
|
||||
toastSuccess,
|
||||
tableComponent,
|
||||
userGroupPaginationComponent,
|
||||
newForm})
|
||||
}
|
||||
func (lh *MdUserGroupHandler) HandleOpenEditForm(c echo.Context) error {
|
||||
id := c.QueryParam("id")
|
||||
dialogEditID := c.QueryParam("dialogEditID")
|
||||
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
|
||||
|
||||
dataUserGroup, err := lh.MdUserGroupServices.GetMdUserGroupByID(id)
|
||||
if err != nil {
|
||||
newForm := dev_mdusergroupview.BodyFormUserGroup(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupcode",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "text", ID: "usergroupinputname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama User Group",
|
||||
Name: "usergroupname",
|
||||
Placeholder: "Nama user group",
|
||||
Type: "text", ID: "usergroupinputname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupid",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "hidden", ID: "usergroupinputid"},
|
||||
dialogEditBodyID, dev_mdusergroupview.JsHideModal(""))
|
||||
return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", "Get user group error", "danger"), newForm})
|
||||
}
|
||||
newForm := dev_mdusergroupview.BodyFormUserGroup(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupcode",
|
||||
Placeholder: "Kode user group",
|
||||
Value: dataUserGroup.M_UserGroupCode,
|
||||
Type: "text", ID: "usergroupinputname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama User Group",
|
||||
Name: "usergroupname",
|
||||
Placeholder: "Nama user group",
|
||||
Value: dataUserGroup.M_UserGroupName,
|
||||
Type: "text", ID: "usergroupinputname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupid",
|
||||
Placeholder: "Kode user group",
|
||||
Value: strconv.Itoa(dataUserGroup.M_UserGroupID),
|
||||
Type: "hidden", ID: "usergroupinputid"},
|
||||
|
||||
dialogEditBodyID, dev_mdusergroupview.JsShowModal("#"+dialogEditID))
|
||||
return utils.View(c, newForm)
|
||||
}
|
||||
func (lh *MdUserGroupHandler) HandleCloseFormEdit(c echo.Context) error {
|
||||
dialogEditBodyID := c.FormValue("dialogEditBodyID")
|
||||
newForm := dev_mdusergroupview.BodyFormUserGroup(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupcode",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "text", ID: "usergroupinputname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama User Group",
|
||||
Name: "usergroupname",
|
||||
Placeholder: "Nama user group",
|
||||
Type: "text", ID: "usergroupinputname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupid",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "hidden", ID: "usergroupinputid"},
|
||||
dialogEditBodyID, dev_mdusergroupview.JsHideModal(""))
|
||||
return utils.View(c, newForm)
|
||||
}
|
||||
func (lh *MdUserGroupHandler) HandleEditUserGroup(c echo.Context) error {
|
||||
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
|
||||
//prm form addusergroup
|
||||
code := c.FormValue("usergroupcode")
|
||||
name := c.FormValue("usergroupname")
|
||||
id := c.FormValue("usergroupid")
|
||||
tableID := c.FormValue("tableID")
|
||||
paginationID := c.FormValue("paginationID")
|
||||
searchID := c.FormValue("searchID")
|
||||
search := c.FormValue("search")
|
||||
currPagePrm := c.FormValue("currpage" + paginationID)
|
||||
// dialogAddBodyID := c.FormValue("dialogAddBodyID")
|
||||
dialogEditID := c.FormValue("dialogEditID")
|
||||
dialogEditBodyID := c.FormValue("dialogEditBodyID")
|
||||
dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID")
|
||||
|
||||
currPage, err := strconv.Atoi(currPagePrm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
logger.Info("ADD USER GROUP PARAM",
|
||||
zap.Any("code", code),
|
||||
zap.Any("nama", name),
|
||||
zap.Any("tableid", tableID),
|
||||
zap.Any("search", search),
|
||||
zap.Any("currpage", currPage),
|
||||
)
|
||||
formValidation := ""
|
||||
codeValidation := ""
|
||||
nameValidation := ""
|
||||
if strings.TrimSpace(code) == "" {
|
||||
formValidation = "Code user group tidak boleh kosong"
|
||||
codeValidation = "Code user group tidak boleh kosong"
|
||||
nameValidation = ""
|
||||
}
|
||||
if strings.TrimSpace(name) == "" {
|
||||
formValidation = "Nama user group tidak boleh kosong"
|
||||
codeValidation = ""
|
||||
nameValidation = "Nama user group tidak boleh kosong"
|
||||
}
|
||||
if strings.TrimSpace(code) == "" && strings.TrimSpace(name) == "" {
|
||||
formValidation = "Code dan nama user group tidak boleh kosong"
|
||||
codeValidation = "Code user group tidak boleh kosong"
|
||||
nameValidation = "Nama user group tidak boleh kosong"
|
||||
|
||||
}
|
||||
|
||||
if formValidation != "" || codeValidation != "" || nameValidation != "" {
|
||||
newForm := dev_mdusergroupview.BodyFormUserGroup(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupcode",
|
||||
Placeholder: "Kode user group",
|
||||
ErrorMsg: codeValidation,
|
||||
Value: code,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama User Group",
|
||||
Name: "usergroupname",
|
||||
Placeholder: "Nama user group",
|
||||
ErrorMsg: nameValidation,
|
||||
Value: name,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupid",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "hidden", ID: "usergroupinputid"},
|
||||
dialogEditBodyID, dev_mdusergroupview.JsHideModal(""))
|
||||
return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Warning", formValidation, "warning"), newForm})
|
||||
}
|
||||
//edit user group service
|
||||
dataUserGroup, err := lh.MdUserGroupServices.EditMdUsergroup(id, code, name)
|
||||
if err != nil {
|
||||
logger.Info("Error",
|
||||
zap.Any("Error", err),
|
||||
zap.Any("code", code),
|
||||
zap.Any("name", name),
|
||||
)
|
||||
newForm := dev_mdusergroupview.BodyFormUserGroup(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupcode",
|
||||
Placeholder: "Kode user group",
|
||||
ErrorMsg: codeValidation,
|
||||
Value: code,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama User Group",
|
||||
Name: "usergroupname",
|
||||
Placeholder: "Nama user group",
|
||||
ErrorMsg: nameValidation,
|
||||
Value: name,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupid",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "hidden", ID: "usergroupinputid"},
|
||||
dialogEditBodyID, dev_mdusergroupview.JsHideModal(""))
|
||||
return utils.ViewMulti(c, []templ.Component{
|
||||
customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"),
|
||||
newForm})
|
||||
|
||||
}
|
||||
logger.Info("ADD USER GROUP",
|
||||
zap.Any("return", dataUserGroup),
|
||||
zap.Any("code", code),
|
||||
zap.Any("name", name),
|
||||
)
|
||||
//get list user group for table
|
||||
dataUserGroupList, totalPage, err := lh.MdUserGroupServices.GetListMdUserGroup(search, currPage, 5)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR GET USER GROUP",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
fmt.Println(dataUserGroup)
|
||||
return err
|
||||
}
|
||||
//table component
|
||||
tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroupList,
|
||||
tableID,
|
||||
"/dev/md/usergroupv2/openedit",
|
||||
"#"+dialogEditBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"/dev/md/usergroupv2/opendelete",
|
||||
"#"+dialogDeleteBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID")
|
||||
|
||||
//pagination component
|
||||
//Pagination
|
||||
userGroupPaginationComponent := pagination.PaginationV3(
|
||||
totalPage,
|
||||
currPage,
|
||||
"/dev/md/usergroupv2/changepage",
|
||||
paginationID,
|
||||
"#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"#"+paginationID,
|
||||
"outerHTML", "", "true",
|
||||
dev_mdusergroupview.BeforeRequestContent(),
|
||||
dev_mdusergroupview.AfterRequestContent(),
|
||||
)
|
||||
var retVal []templ.Component
|
||||
newForm := dev_mdusergroupview.BodyFormUserGroup(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupcode",
|
||||
Placeholder: "Kode user group",
|
||||
ErrorMsg: codeValidation,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama User Group",
|
||||
Name: "usergroupname",
|
||||
Placeholder: "Nama user group",
|
||||
ErrorMsg: nameValidation,
|
||||
Type: "text"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Kode User Group",
|
||||
Name: "usergroupid",
|
||||
Placeholder: "Kode user group",
|
||||
Type: "hidden", ID: "usergroupinputid"},
|
||||
dialogEditBodyID, dev_mdusergroupview.JsHideModal("#"+dialogEditID))
|
||||
toastSuccess := customtoastv2.CustomToastV2Show("Success", "Berhasil edit User group "+name, "success")
|
||||
retVal = append(retVal, toastSuccess)
|
||||
retVal = append(retVal, tableComponent)
|
||||
retVal = append(retVal, userGroupPaginationComponent)
|
||||
retVal = append(retVal, newForm)
|
||||
return utils.ViewMulti(c, retVal)
|
||||
}
|
||||
func (lh *MdUserGroupHandler) HandleOpenDeleteForm(c echo.Context) error {
|
||||
id := c.QueryParam("id")
|
||||
dialogDeleteID := c.QueryParam("dialogDeleteID")
|
||||
dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID")
|
||||
|
||||
dataUserGroup, err := lh.MdUserGroupServices.GetMdUserGroupByID(id)
|
||||
if err != nil {
|
||||
newForm := dev_mdusergroupview.DeleteConfirmationBody(
|
||||
models.CustomTextFieldv2Prm{Name: "usergroupid", Type: "hidden", Value: strconv.Itoa(dataUserGroup.M_UserGroupID)},
|
||||
dialogDeleteBodyID,
|
||||
"Apakah anda yakin menghapus user group berikut ?",
|
||||
[]string{"Kode", "User Group"},
|
||||
[]string{"", ""},
|
||||
dev_mdusergroupview.JsShowModal(""))
|
||||
return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", "Get user group error", "danger"), newForm})
|
||||
}
|
||||
newForm := dev_mdusergroupview.DeleteConfirmationBody(
|
||||
models.CustomTextFieldv2Prm{Name: "usergroupid", Type: "hidden", Value: strconv.Itoa(dataUserGroup.M_UserGroupID)},
|
||||
dialogDeleteBodyID,
|
||||
"Apakah anda yakin menghapus user group berikut ?",
|
||||
[]string{"Kode", "User Group"},
|
||||
[]string{dataUserGroup.M_UserGroupCode, dataUserGroup.M_UserGroupName},
|
||||
dev_mdusergroupview.JsShowModal("#"+dialogDeleteID))
|
||||
return utils.View(c, newForm)
|
||||
}
|
||||
func (lh *MdUserGroupHandler) HandleCloseFormDelete(c echo.Context) error {
|
||||
dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID")
|
||||
newForm := dev_mdusergroupview.DeleteConfirmationBody(
|
||||
models.CustomTextFieldv2Prm{Name: "usergroupid", Type: "hidden", Value: ""},
|
||||
dialogDeleteBodyID,
|
||||
"Apakah anda yakin menghapus user group berikut ?",
|
||||
[]string{"Kode", "User Group"},
|
||||
[]string{"", ""},
|
||||
dev_mdusergroupview.JsShowModal(""))
|
||||
return utils.View(c, newForm)
|
||||
}
|
||||
func (lh *MdUserGroupHandler) HandleDeleteUserGroup(c echo.Context) error {
|
||||
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
|
||||
//prm form addusergroup
|
||||
|
||||
id := c.FormValue("usergroupid")
|
||||
tableID := c.FormValue("tableID")
|
||||
paginationID := c.FormValue("paginationID")
|
||||
searchID := c.FormValue("searchID")
|
||||
search := c.FormValue("search")
|
||||
currPagePrm := c.FormValue("currpage" + paginationID)
|
||||
// dialogAddBodyID := c.FormValue("dialogAddBodyID")
|
||||
dialogDeleteID := c.FormValue("dialogDeleteID")
|
||||
dialogEditBodyID := c.FormValue("dialogEditBodyID")
|
||||
dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID")
|
||||
|
||||
currPage, err := strconv.Atoi(currPagePrm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
logger.Info("ADD USER GROUP PARAM",
|
||||
|
||||
zap.Any("tableid", tableID),
|
||||
zap.Any("search", search),
|
||||
zap.Any("currpage", currPage),
|
||||
)
|
||||
|
||||
//edit user group service
|
||||
dataUserGroup, err := lh.MdUserGroupServices.DeleteMdUserGroup(id)
|
||||
if err != nil {
|
||||
logger.Info("Error",
|
||||
zap.Any("Error", err),
|
||||
)
|
||||
newForm := dev_mdusergroupview.DeleteConfirmationBody(
|
||||
models.CustomTextFieldv2Prm{Name: "usergroupid", Type: "hidden", Value: ""},
|
||||
dialogDeleteBodyID,
|
||||
"Apakah anda yakin menghapus user group berikut ?",
|
||||
[]string{"Kode", "User Group"},
|
||||
[]string{"", ""},
|
||||
dev_mdusergroupview.JsShowModal(""))
|
||||
return utils.ViewMulti(c, []templ.Component{
|
||||
customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"),
|
||||
newForm})
|
||||
|
||||
}
|
||||
logger.Info("ADD USER GROUP",
|
||||
zap.Any("return", dataUserGroup),
|
||||
)
|
||||
//get list user group for table
|
||||
dataUserGroupList, totalPage, err := lh.MdUserGroupServices.GetListMdUserGroup(search, currPage, 5)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR GET USER GROUP",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
fmt.Println(dataUserGroup)
|
||||
return err
|
||||
}
|
||||
if len(dataUserGroupList) == 0 && totalPage > 1 {
|
||||
currPage = currPage - 1
|
||||
dataUserGroupList, _, err = lh.MdUserGroupServices.GetListMdUserGroup(search, currPage, 5)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR GET USER GROUP",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
return err
|
||||
}
|
||||
}
|
||||
//table component
|
||||
tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroupList,
|
||||
tableID,
|
||||
"/dev/md/usergroupv2/openedit",
|
||||
"#"+dialogEditBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"/dev/md/usergroupv2/opendelete",
|
||||
"#"+dialogDeleteBodyID,
|
||||
"outerHTML",
|
||||
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID")
|
||||
|
||||
//pagination component
|
||||
//Pagination
|
||||
userGroupPaginationComponent := pagination.PaginationV3(
|
||||
totalPage,
|
||||
currPage,
|
||||
"/dev/md/usergroupv2/changepage",
|
||||
paginationID,
|
||||
"#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
|
||||
"#"+paginationID,
|
||||
"outerHTML", "", "true",
|
||||
dev_mdusergroupview.BeforeRequestContent(),
|
||||
dev_mdusergroupview.AfterRequestContent(),
|
||||
)
|
||||
var retVal []templ.Component
|
||||
newForm := dev_mdusergroupview.DeleteConfirmationBody(
|
||||
models.CustomTextFieldv2Prm{Name: "usergroupid", Type: "hidden", Value: ""},
|
||||
dialogDeleteBodyID,
|
||||
"Apakah anda yakin menghapus user group berikut ?",
|
||||
[]string{"Kode", "User Group"},
|
||||
[]string{"", ""},
|
||||
dev_mdusergroupview.JsHideModal("#"+dialogDeleteID))
|
||||
toastSuccess := customtoastv2.CustomToastV2Show("Success", "Berhasil delete User group ", "success")
|
||||
retVal = append(retVal, toastSuccess)
|
||||
retVal = append(retVal, tableComponent)
|
||||
retVal = append(retVal, userGroupPaginationComponent)
|
||||
retVal = append(retVal, newForm)
|
||||
return utils.ViewMulti(c, retVal)
|
||||
}
|
||||
@@ -1,254 +0,0 @@
|
||||
package dev_handlers
|
||||
|
||||
import (
|
||||
breadcrumadmin "cpone/component/breadcrumbadmin"
|
||||
customtextfieldsearch "cpone/component/customtextfieldsearch"
|
||||
navbarmenu "cpone/component/navbar"
|
||||
"cpone/component/pagination"
|
||||
sidebaruserprofile "cpone/component/sidebar_user_profile"
|
||||
"cpone/models"
|
||||
globalservices "cpone/services"
|
||||
"cpone/utils"
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
devmdpaket "cpone/views/dev/mdpaket"
|
||||
|
||||
"github.com/a-h/templ"
|
||||
"github.com/labstack/echo/v4"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type MasterDataPaketService interface {
|
||||
GetListBreadCrumb() (models.BreadCrumbV1, error)
|
||||
GetListMasterDataPaket(keyword string, currenPage int, rowPerPage int) ([]models.MDPaket, int, error)
|
||||
GetListItemPaket(keyword string, currenPage int, rowPerPage int) ([]models.MDPaketItem, int, error)
|
||||
}
|
||||
|
||||
func NewMasterDataPaketServiceHandler(us MasterDataPaketService) *MasterDataPaketHandler {
|
||||
return &MasterDataPaketHandler{
|
||||
MasterDataPaketService: us,
|
||||
}
|
||||
}
|
||||
|
||||
type MasterDataPaketHandler struct {
|
||||
MasterDataPaketService MasterDataPaketService
|
||||
}
|
||||
|
||||
func (usr *MasterDataPaketHandler) View(c echo.Context, cmp templ.Component) error {
|
||||
c.Response().Header().Set(echo.HeaderContentType, echo.MIMETextHTML)
|
||||
|
||||
return cmp.Render(c.Request().Context(), c.Response().Writer)
|
||||
}
|
||||
|
||||
func (mdp *MasterDataPaketHandler) HandlerShowMasterDataPaket(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
// get data from db
|
||||
dataMenu, err := globalservices.GetMenu()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
dataUser, err := globalservices.GetUserLogin()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
dataPaket, totalPage, err := mdp.MasterDataPaketService.GetListMasterDataPaket("", 1, 3)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR GET DATA PAKET",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
fmt.Println(dataPaket)
|
||||
return err
|
||||
}
|
||||
|
||||
dataPaketItem, totalItemPage, err := mdp.MasterDataPaketService.GetListItemPaket("", 1, 3)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR GET DATA ITEM",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
defer logger.Sync()
|
||||
|
||||
// navbar + header
|
||||
navbarmenuComponent := navbarmenu.NavbarMenu(dataMenu)
|
||||
navbaruserComponent := navbarmenu.Navbar(dataUser)
|
||||
sidebaruserprofileComponent := sidebaruserprofile.Navbaruserprofile(dataUser)
|
||||
|
||||
// content master data paket
|
||||
dataBreadCrumb, err := mdp.MasterDataPaketService.GetListBreadCrumb()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
tableID := utils.GenerateRandomID("tablebody")
|
||||
paginationID := utils.GenerateRandomID("paginationid")
|
||||
|
||||
contentTablePaket := devmdpaket.TablePaket(dataPaket, tableID)
|
||||
paginationPaket := pagination.PaginationV2(
|
||||
totalPage,
|
||||
1,
|
||||
"/dev/paketpagination",
|
||||
paginationID,
|
||||
"#tableID, #paginationID",
|
||||
"#"+paginationID,
|
||||
"outerHTML",
|
||||
"",
|
||||
"",
|
||||
)
|
||||
|
||||
// initialize modal tambah paket component
|
||||
kodeSearchID := utils.GenerateRandomID("kodesearchid")
|
||||
namaSearchID := utils.GenerateRandomID("namasearchid")
|
||||
itemTableID := utils.GenerateRandomID("itemtableid")
|
||||
itemPaginationID := utils.GenerateRandomID("itempaginationid")
|
||||
selectedTableID := utils.GenerateRandomID("selectedtableid")
|
||||
|
||||
filterKodePaket := customtextfieldsearch.MainCustomTextFieldSearchV2(kodeSearchID,
|
||||
"searchkode",
|
||||
"Cari Kode",
|
||||
"text",
|
||||
"/dev/searchtambahpaket",
|
||||
"input changed delay:500ms, search",
|
||||
"#"+paginationID, "", "", "outerHTML", "#itemTableID, #itemPaginationID",
|
||||
)
|
||||
|
||||
filterNamaPaket := customtextfieldsearch.MainCustomTextFieldSearchV2(namaSearchID,
|
||||
"searchnama",
|
||||
"Cari Nama",
|
||||
"text",
|
||||
"/dev/searchtambahpaket",
|
||||
"input changed delay:500ms, search",
|
||||
"#"+paginationID, "", "", "outerHTML", "#itemTableID, #itemPaginationID",
|
||||
)
|
||||
|
||||
itemTable := devmdpaket.TableItem(dataPaketItem, itemTableID)
|
||||
paginationItem := pagination.PaginationV2(
|
||||
totalItemPage,
|
||||
1,
|
||||
"/dev/paketitempagination",
|
||||
itemPaginationID,
|
||||
"#itemTableID, #itemPaginationID",
|
||||
"#"+itemPaginationID,
|
||||
"outerHTML",
|
||||
"",
|
||||
"",
|
||||
)
|
||||
|
||||
selectedTable := devmdpaket.TableItemSelected(dataPaketItem, selectedTableID)
|
||||
|
||||
// input the component
|
||||
cmp_mdp := devmdpaket.ShowMasterDataPaket(
|
||||
"Master Paket",
|
||||
devmdpaket.ContentMasterDataPaket(
|
||||
tableID,
|
||||
paginationID,
|
||||
breadcrumadmin.MainBreadcrumbAdminV1(dataBreadCrumb),
|
||||
contentTablePaket,
|
||||
paginationPaket,
|
||||
filterKodePaket,
|
||||
filterNamaPaket,
|
||||
itemTable,
|
||||
selectedTable,
|
||||
paginationItem,
|
||||
),
|
||||
devmdpaket.CSSMasterDataPaket(),
|
||||
devmdpaket.JsMasterDataPaket(),
|
||||
navbarmenuComponent,
|
||||
navbaruserComponent,
|
||||
sidebaruserprofileComponent,
|
||||
)
|
||||
|
||||
return utils.View(c, cmp_mdp)
|
||||
}
|
||||
|
||||
func (mdp *MasterDataPaketHandler) HandlerShowMasterDataPaketPagination(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
pageparam := c.QueryParam("page")
|
||||
tableID := c.QueryParam("tableID")
|
||||
paginationID := c.QueryParam("paginationID")
|
||||
page, err := strconv.Atoi(pageparam)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR CONVERT PAGE PARAM",
|
||||
zap.Any("page", page),
|
||||
zap.Any("error", err),
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
dataPaket, totalpage, err := mdp.MasterDataPaketService.GetListMasterDataPaket("", page, 3)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR GET DATA PAKET",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
contentDataPaketComp := devmdpaket.TablePaket(dataPaket, tableID)
|
||||
paginationDataPaketComp := pagination.PaginationV2(
|
||||
totalpage,
|
||||
page,
|
||||
"/dev/paketpagination",
|
||||
paginationID,
|
||||
"#tableID, #paginationID",
|
||||
"#"+paginationID,
|
||||
"outerHTML",
|
||||
"",
|
||||
"",
|
||||
)
|
||||
|
||||
swapTable := devmdpaket.SwapTablePaket(paginationDataPaketComp, contentDataPaketComp)
|
||||
|
||||
return utils.View(c, swapTable)
|
||||
}
|
||||
|
||||
func (mdp *MasterDataPaketHandler) HandlerPaginationItemTable(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
pageparam := c.QueryParam("page")
|
||||
itemTableID := c.QueryParam("itemTableID")
|
||||
itemPaginationID := c.QueryParam("itemPaginationID")
|
||||
page, err := strconv.Atoi(pageparam)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR CONVERT PAGE PARAM",
|
||||
zap.Any("page", page),
|
||||
zap.Any("error", err),
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
dataPaketItem, totalPage, err := mdp.MasterDataPaketService.GetListItemPaket("", page, 3)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR GET DATA PAKET",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
itemTableComp := devmdpaket.TableItem(dataPaketItem, itemTableID)
|
||||
paginationItemComp := pagination.PaginationV2(
|
||||
totalPage,
|
||||
page,
|
||||
"/dev/paketitempagination",
|
||||
itemPaginationID,
|
||||
"#itemTableID, #itemPaginationID",
|
||||
"#"+itemPaginationID,
|
||||
"outerHTML",
|
||||
"",
|
||||
"",
|
||||
)
|
||||
|
||||
swapTable := devmdpaket.SwapTablePaket(paginationItemComp, itemTableComp)
|
||||
return utils.View(c, swapTable)
|
||||
}
|
||||
118
handlers/public/kartukontrol.handlers.go
Normal file
118
handlers/public/kartukontrol.handlers.go
Normal file
@@ -0,0 +1,118 @@
|
||||
package public_handlers
|
||||
|
||||
import (
|
||||
"cpone/models"
|
||||
"cpone/utils"
|
||||
kartukontrol "cpone/views/public/kartukontrol"
|
||||
public_toast "cpone/views/public/toast"
|
||||
|
||||
"github.com/a-h/templ"
|
||||
"github.com/labstack/echo/v4"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type KartuKontrolService interface {
|
||||
GetkartuKontrolById(nomorRegistrasi string) ([]models.KartuKontrolModel, error)
|
||||
}
|
||||
|
||||
func NewKartuKontrolHandler(us KartuKontrolService) *KartuKontrolHandler {
|
||||
return &KartuKontrolHandler{
|
||||
KartuKontrolService: us,
|
||||
}
|
||||
}
|
||||
|
||||
type KartuKontrolHandler struct {
|
||||
KartuKontrolService KartuKontrolService
|
||||
}
|
||||
|
||||
func (lh *KartuKontrolHandler) HandlerHideToast(c echo.Context) error {
|
||||
toastComponent := public_toast.PublicToastV1KartuKontrolHide()
|
||||
|
||||
si := toastComponent
|
||||
|
||||
return utils.View(c, si)
|
||||
}
|
||||
|
||||
func (lh *KartuKontrolHandler) HandlerShowKartuKontrol(c echo.Context) error {
|
||||
|
||||
var flagxError bool = true
|
||||
var msgx string = ""
|
||||
|
||||
nomorRegistrasi := c.Param("nomorRegistrasi")
|
||||
|
||||
urlSurveyMcu := "redirectsurveymcu"
|
||||
|
||||
// urlSurveyMcu := "redirectsurveymcu"
|
||||
|
||||
// nomorRegistrasi := "1"
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
|
||||
dataKartuKontrol, err := lh.KartuKontrolService.GetkartuKontrolById(nomorRegistrasi)
|
||||
|
||||
if err != nil {
|
||||
logger.Info("Error",
|
||||
zap.Any("Error", err),
|
||||
zap.Any("prm", nomorRegistrasi),
|
||||
)
|
||||
// return err
|
||||
if flagxError {
|
||||
msgx = "Error Get Kartu Kontrol"
|
||||
si := public_toast.PublicToastV1KartuKontrolShow("Error", msgx, "danger")
|
||||
return utils.View(c, si)
|
||||
}
|
||||
}
|
||||
logger.Info("SHOW DATA KARTU KONTROL handler",
|
||||
zap.Any("return", dataKartuKontrol),
|
||||
zap.Any("prm", nomorRegistrasi),
|
||||
)
|
||||
|
||||
flagxError = false
|
||||
var si templ.Component
|
||||
var isShowSurveyMcu bool = true
|
||||
|
||||
if isShowSurveyMcu {
|
||||
si = kartukontrol.ShowKartuKontrol("Kartu Kontrol", kartukontrol.MainContentKartuKontrolLayout(dataKartuKontrol, "/modalsurveykartukontrol", "load delay:3s", "modalWordingSurveyMcu", urlSurveyMcu, nomorRegistrasi), kartukontrol.CssKartuKontrol(), kartukontrol.JsKartuKontrol())
|
||||
} else {
|
||||
si = kartukontrol.ShowKartuKontrol("Kartu Kontrol",
|
||||
kartukontrol.MainContentKartuKontrolLayout(dataKartuKontrol, "", "", "modalWordingSurveyMcu", urlSurveyMcu, nomorRegistrasi), kartukontrol.CssKartuKontrol(), kartukontrol.JsKartuKontrol())
|
||||
}
|
||||
|
||||
return utils.View(c, si)
|
||||
}
|
||||
|
||||
func (lh *KartuKontrolHandler) HandlerShowWordingModalSurveyMcu(c echo.Context) error {
|
||||
|
||||
stringUrlToSurveyMcu := c.QueryParam("urlSurveyMcu")
|
||||
|
||||
// var dataKartuKontrol []models.KartuKontrolModel
|
||||
si := kartukontrol.ShowKartuKontrol(
|
||||
"Kartu Kontrol",
|
||||
kartukontrol.ModalMcuWordingShow("modalWordingSurveyMcu", "Silahkan isi questioner untuk membantu peningkatan layanan kami. Terima kasih.", stringUrlToSurveyMcu), kartukontrol.CssKartuKontrol(), kartukontrol.JsKartuKontrol())
|
||||
|
||||
return utils.View(c, si)
|
||||
}
|
||||
|
||||
func (lh *KartuKontrolHandler) HandlerRedirectToSurveyMcu(c echo.Context) error {
|
||||
|
||||
nomorRegistrasi := c.QueryParam("nomorRegistrasi")
|
||||
stringUrlToSurveyMcu := "/surveymcu/" + nomorRegistrasi
|
||||
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
|
||||
if len(stringUrlToSurveyMcu) > 0 {
|
||||
// redirect ke kartu kontrol
|
||||
logger.Info("redirect SURVEY MCU",
|
||||
zap.Any("redirect SURVEY MCU", stringUrlToSurveyMcu),
|
||||
)
|
||||
c.Response().Header().Set("HX-Redirect", stringUrlToSurveyMcu)
|
||||
// return c.NoContent(http.StatusOK)
|
||||
}
|
||||
|
||||
si := kartukontrol.ShowKartuKontrol(
|
||||
"Kartu Kontrol",
|
||||
kartukontrol.ModalMcuWordingShow("modalWordingSurveyMcu", "Silahkan isi questioner untuk membantu peningkatan layanan kami. Terima kasih.", ""), kartukontrol.CssKartuKontrol(), kartukontrol.JsKartuKontrol())
|
||||
|
||||
return utils.View(c, si)
|
||||
}
|
||||
@@ -3,6 +3,7 @@ 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"
|
||||
@@ -56,7 +57,7 @@ func (uh *LandingPageHandler) ShowLandingPage(c echo.Context) error {
|
||||
)
|
||||
// fmt.Printf("%+v\n", udata)
|
||||
|
||||
helo := public_landingpage.ShowLandingPage("Hello World",
|
||||
helo := public_landingpage.ShowLandingPage("HOME",
|
||||
public_landingpage.MainLandingPage(public_landingpage.ListMedicalService(udata),
|
||||
public_landingpage.ListAdvantage(adData), public_landingpage.ListPromotion(lpData),
|
||||
public_landingpage.FooterSection(ftNav)),
|
||||
@@ -65,6 +66,12 @@ 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,13 +1,19 @@
|
||||
package public_handlers
|
||||
|
||||
import (
|
||||
"cpone/models"
|
||||
"cpone/utils"
|
||||
public_login "cpone/views/public/login"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type LoginService interface {
|
||||
Login(username string, password string) (models.ResponseApi, error)
|
||||
MultiSignIn(username string, password string) (models.Response, error)
|
||||
}
|
||||
|
||||
func NewLoginHandler(us LoginService) *LoginHandler {
|
||||
@@ -20,14 +26,135 @@ 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(), public_login.CssLogin(), public_login.JsLogin())
|
||||
|
||||
return utils.View(c, si)
|
||||
}
|
||||
|
||||
func (lh *LoginHandler) HandlerSignIn(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
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.Login(username, password)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("Error", zap.Error(err))
|
||||
|
||||
si := public_login.ShowLogin("Login ", public_login.MainLogin(), public_login.CssLogin(), public_login.JsLogin())
|
||||
return utils.View(c, si)
|
||||
}
|
||||
defer logger.Sync()
|
||||
|
||||
var url string
|
||||
switch resp.Data.Type {
|
||||
case "cpone":
|
||||
url = "/one-ui"
|
||||
case "pic":
|
||||
url = "/dashboard_pic"
|
||||
case "patient":
|
||||
url = "/home"
|
||||
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(), public_login.CssLogin(), public_login.JsLogin())
|
||||
return utils.View(c, si)
|
||||
}
|
||||
|
||||
userString := string(user)
|
||||
|
||||
storeLocal := `
|
||||
<script>
|
||||
console.log("store token");
|
||||
const token = "` + resp.Data.Token + `";
|
||||
const user = JSON.stringify(` + userString + `);
|
||||
localStorage.setItem("token", token);
|
||||
localStorage.setItem("user", user);
|
||||
|
||||
setTimeout(() => {
|
||||
window.location.href = "` + url + `";
|
||||
}, 100);
|
||||
</script>
|
||||
`
|
||||
|
||||
c.Response().Header().Set("HX-Trigger", "script")
|
||||
|
||||
return c.String(http.StatusOK, storeLocal)
|
||||
}
|
||||
|
||||
func (lh *LoginHandler) HandleSignIn(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
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.MultiSignIn(username, password)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("Error", zap.Error(err))
|
||||
|
||||
si := public_login.ShowLogin("Login ", public_login.MainLogin(), 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(), 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(), public_login.CssLogin(), public_login.JsLogin())
|
||||
return utils.View(c, si)
|
||||
}
|
||||
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);
|
||||
|
||||
setTimeout(() => {
|
||||
window.location.href = "` + url + `";
|
||||
}, 100);
|
||||
</script>
|
||||
`
|
||||
c.Response().Header().Set("HX-Trigger", "script")
|
||||
return c.String(http.StatusOK, store)
|
||||
}
|
||||
|
||||
194
handlers/public/surveymcu.handlers.go
Normal file
194
handlers/public/surveymcu.handlers.go
Normal file
@@ -0,0 +1,194 @@
|
||||
package public_handlers
|
||||
|
||||
import (
|
||||
"cpone/models"
|
||||
"cpone/utils"
|
||||
surveymcu "cpone/views/public/surveymcu"
|
||||
public_toast "cpone/views/public/toast"
|
||||
|
||||
"github.com/a-h/templ"
|
||||
"github.com/labstack/echo/v4"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type SurveyMcuService interface {
|
||||
GetSurveyMcuByNoreg(nomorRegistrasi string) ([]models.SurveyMcu, error)
|
||||
}
|
||||
|
||||
func NewSurveyMcuHandler(us SurveyMcuService) *SurveyMcuHandler {
|
||||
return &SurveyMcuHandler{
|
||||
SurveyMcuService: us,
|
||||
}
|
||||
}
|
||||
|
||||
type SurveyMcuHandler struct {
|
||||
SurveyMcuService SurveyMcuService
|
||||
}
|
||||
|
||||
func (lh *SurveyMcuHandler) HandlerShowSurveyMcu(c echo.Context) error {
|
||||
|
||||
var flagxError bool = true
|
||||
var msgx string = ""
|
||||
|
||||
nomorRegistrasi := c.Param("nomorRegistrasi")
|
||||
// nomorRegistrasi := "1"
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
|
||||
dataSurveyMcu, err := lh.SurveyMcuService.GetSurveyMcuByNoreg(nomorRegistrasi)
|
||||
|
||||
if err != nil {
|
||||
logger.Info("Error",
|
||||
zap.Any("Error", err),
|
||||
zap.Any("prm", nomorRegistrasi),
|
||||
)
|
||||
// return err
|
||||
if flagxError {
|
||||
msgx = "Error Get Survey MCU By No Reg"
|
||||
si := public_toast.PublicToastV1KartuKontrolShow("Error", msgx, "danger")
|
||||
return utils.View(c, si)
|
||||
}
|
||||
}
|
||||
|
||||
flagxError = false
|
||||
logger.Info("SHOW DATA SURVEY MCU handler",
|
||||
zap.Any("return", dataSurveyMcu),
|
||||
zap.Any("prm", nomorRegistrasi),
|
||||
)
|
||||
|
||||
stringUrl := "surveymcuproses/" + nomorRegistrasi
|
||||
var hxInclude string = ""
|
||||
var idClearMsg []models.IdClearErrorMessage
|
||||
|
||||
if len(dataSurveyMcu) > 0 {
|
||||
hxInclude = utils.ConcatHxIncludeSurveyMcu(dataSurveyMcu)
|
||||
}
|
||||
|
||||
si := surveymcu.ShowSurveyMcu("Survey Mcu",
|
||||
surveymcu.MainContentSurveyMcuLayout(dataSurveyMcu, stringUrl, surveymcu.ErrorMessageSurveyMcu("", "", idClearMsg, "alertSaranMcu", public_toast.PublicToastV1KartuKontrolHide()), hxInclude), surveymcu.CssSurveyMcu(), surveymcu.JsSurveyMcu())
|
||||
|
||||
return utils.View(c, si)
|
||||
}
|
||||
|
||||
func (lh *SurveyMcuHandler) HandlerProcessSurveyMcu(c echo.Context) error {
|
||||
|
||||
var flagxError bool = true
|
||||
var msgx string = ""
|
||||
|
||||
nomorRegistrasi := c.Param("nomorRegistrasi")
|
||||
stringUrlBackToKartuKontrol := "/kartukontrol/" + nomorRegistrasi
|
||||
// nomorRegistrasi := "1"
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
|
||||
dataSurveyMcu, err := lh.SurveyMcuService.GetSurveyMcuByNoreg(nomorRegistrasi)
|
||||
|
||||
if err != nil {
|
||||
logger.Info("Error",
|
||||
zap.Any("Error", err),
|
||||
zap.Any("prm", nomorRegistrasi),
|
||||
)
|
||||
// return err
|
||||
if flagxError {
|
||||
msgx = "Error Get Survey MCU By No Reg"
|
||||
si := public_toast.PublicToastV1KartuKontrolShow("Error", msgx, "danger")
|
||||
return utils.View(c, si)
|
||||
}
|
||||
}
|
||||
|
||||
logger.Info("SHOW DATA SURVEY MCU handler",
|
||||
zap.Any("return", dataSurveyMcu),
|
||||
zap.Any("prm", nomorRegistrasi),
|
||||
)
|
||||
|
||||
// form := c.Request().PostForm
|
||||
|
||||
// stringUrl := "surveymcuproses/" + nomorRegistrasi
|
||||
|
||||
logger.Info("CEK POST handler",
|
||||
zap.Any("c.FormValue Saran", c.FormValue("saranmcu-11")),
|
||||
)
|
||||
|
||||
// proses validasi
|
||||
|
||||
var si templ.Component
|
||||
var idFormKosong string = ""
|
||||
var stringMessage string = ""
|
||||
var isFormEmpty bool = false
|
||||
var idClearMsg []models.IdClearErrorMessage
|
||||
var idSaranMcuAlert string = ""
|
||||
// var idSaranMcuClear string = ""
|
||||
|
||||
hasError := false
|
||||
|
||||
if len(dataSurveyMcu) > 0 {
|
||||
for _, v := range dataSurveyMcu {
|
||||
// radio button
|
||||
if len(v.DataListItemSurveyMcu) > 0 {
|
||||
for _, x := range v.DataListItemSurveyMcu {
|
||||
|
||||
if len(c.FormValue("radio-"+x.IDItemSurvey)) > 0 {
|
||||
idClearMsg = append(idClearMsg, models.IdClearErrorMessage{IdItem: x.IDItemSurvey})
|
||||
}
|
||||
|
||||
if "default-"+x.NameRadioButton == c.FormValue("default-"+x.NameRadioButton) && len(c.FormValue("radio-"+x.IDItemSurvey)) == 0 {
|
||||
stringMessage = "Pertanyaan ke-" + x.IDItemSurvey + " wajib diisi"
|
||||
idFormKosong = utils.GetIdSurveyMcu(x.IDItemSurvey)
|
||||
isFormEmpty = true
|
||||
hasError = true
|
||||
flagxError = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if hasError {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// saran mcu
|
||||
if !hasError && len(dataSurveyMcu) > 0 {
|
||||
for _, v := range dataSurveyMcu {
|
||||
if len(v.DataListItemSurveyMcuSaran) > 0 {
|
||||
for _, x := range v.DataListItemSurveyMcuSaran {
|
||||
if len(c.FormValue("saranmcu-"+x.IDItemSurveyMcuSaran)) > 0 {
|
||||
idClearMsg = append(idClearMsg, models.IdClearErrorMessage{IdItem: x.IDItemSurveyMcuSaran})
|
||||
}
|
||||
|
||||
if "default-"+x.NameSurveyMcuSaran == c.FormValue("default-"+x.NameSurveyMcuSaran) && len(c.FormValue("saranmcu-"+x.IDItemSurveyMcuSaran)) == 0 {
|
||||
stringMessage = "Saran Wajib Diisi"
|
||||
idFormKosong = utils.GetIdSurveyMcu(x.IDItemSurveyMcuSaran)
|
||||
isFormEmpty = true
|
||||
hasError = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if hasError {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if isFormEmpty {
|
||||
// if flagxError {
|
||||
// msgx = "Error Get Survey MCU By No Reg"
|
||||
// si := public_toast.PublicToastV1KartuKontrolShow("Error", msgx, "danger")
|
||||
// return utils.View(c, si)
|
||||
// }
|
||||
si = surveymcu.ErrorMessageSurveyMcu(stringMessage, idFormKosong, idClearMsg, idSaranMcuAlert, public_toast.PublicToastV1KartuKontrolShow("Warning", stringMessage, "warning"))
|
||||
} else {
|
||||
flagxError = false
|
||||
si = surveymcu.ErrorMessageSurveyMcu("", "", idClearMsg, "", public_toast.PublicToastV1KartuKontrolHide())
|
||||
logger.Info("redirect",
|
||||
zap.Any("redirect", stringUrlBackToKartuKontrol),
|
||||
)
|
||||
|
||||
// redirect ke kartu kontrol
|
||||
c.Response().Header().Set("HX-Redirect", stringUrlBackToKartuKontrol)
|
||||
}
|
||||
|
||||
return utils.View(c, si)
|
||||
}
|
||||
@@ -54,7 +54,7 @@ func (lh *ToolsHandler) HandlerShowToast(c echo.Context) error {
|
||||
tabelusergroupComponent := tablecomponent.TableV2(
|
||||
[]string{"KODE", "USERGROUP", "AKSI"},
|
||||
[]string{"40%", "40%", "20%"},
|
||||
mastermenuusergroup.TableRowV1(dummyData),
|
||||
mastermenuusergroup.TableRowV1(dummyData, "", "", "", "", "", "", "", ""),
|
||||
pagination,
|
||||
"",
|
||||
inputansearchComponent,
|
||||
|
||||
@@ -3,10 +3,12 @@ package handlers
|
||||
import (
|
||||
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"
|
||||
|
||||
@@ -16,10 +18,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)
|
||||
|
||||
}
|
||||
|
||||
@@ -46,8 +48,6 @@ func SetupRoutesLandingPage(app *echo.Echo, h *dev_handlers.LandingPageHandler,
|
||||
// autocomplete.GET("/autocomplete", mastermenuusergroupHandler.HandlerListAutoComplete)
|
||||
// autocomplete.GET("/autoCompleteLoadMore/:pageOf/:searchParam/:limit", mastermenuusergroupHandler.HandlerListAutoCompleteLoadMore)
|
||||
// autocomplete.GET("/autoCompleteSetValue/:setvalue", mastermenuusergroupHandler.HandlerListAutoCompleteAfterSelected)
|
||||
clientgroup.GET("/usergroup/edit", mastermenuusergroupHandler.ChangeFormEdit)
|
||||
clientgroup.GET("/usergroup/pagination", mastermenuusergroupHandler.HandleChangePage)
|
||||
|
||||
}
|
||||
func SetupRoutesPieChart(app *echo.Echo, h *dev_handlers.PiechartHandler) {
|
||||
@@ -68,16 +68,70 @@ func SetupRoutesPublic(app *echo.Echo, appStore db.AppStore) {
|
||||
l := public_services.NewServicesLandingPage(public_services.LandingPage{}, appStore)
|
||||
lh := public_handlers.NewLandingPageHandler(l)
|
||||
public.GET("landingpage", lh.ShowLandingPage)
|
||||
loginHdr := public_handlers.NewLoginHandler(l)
|
||||
public.GET("login", loginHdr.HandlerShowLogin)
|
||||
public.GET("home", lh.ShowLandingPage)
|
||||
public.GET("home/login", lh.HandleBtnLogin)
|
||||
// loginHdr := public_handlers.NewLoginHandler(l)
|
||||
// public.GET("login", loginHdr.HandlerShowLogin)
|
||||
|
||||
loginServ := public_services.NewServicesLogin(appStore)
|
||||
loginHadlr := public_handlers.NewLoginHandler(loginServ)
|
||||
public.GET("login", loginHadlr.HandlerShowLogin)
|
||||
public.POST("login/signin", loginHadlr.HandleSignIn)
|
||||
|
||||
// kartu kontrol
|
||||
publicKartuKontrolServices := public_services.NewServicesKartuKontrol(appStore)
|
||||
publicKartuKontrolhandlers := public_handlers.NewKartuKontrolHandler(publicKartuKontrolServices)
|
||||
public.GET("kartukontrol/:nomorRegistrasi", publicKartuKontrolhandlers.HandlerShowKartuKontrol)
|
||||
public.GET("modalsurveykartukontrol", publicKartuKontrolhandlers.HandlerShowWordingModalSurveyMcu)
|
||||
|
||||
// survey mcu page (pertanyaan dan jawaban)
|
||||
publicSurveyMcuServices := public_services.NewServicesSurveyMcu(appStore)
|
||||
publicSurveyMcuhandlers := public_handlers.NewSurveyMcuHandler(publicSurveyMcuServices)
|
||||
public.GET("surveymcu/:nomorRegistrasi", publicSurveyMcuhandlers.HandlerShowSurveyMcu)
|
||||
|
||||
// hide toast
|
||||
public.GET("hidetoastkartukontrol", publicKartuKontrolhandlers.HandlerHideToast)
|
||||
|
||||
// surveymcuproses
|
||||
public.POST("surveymcuproses/:nomorRegistrasi", publicSurveyMcuhandlers.HandlerProcessSurveyMcu)
|
||||
|
||||
// redirect to survey mcu page
|
||||
public.GET("redirectsurveymcu", publicKartuKontrolhandlers.HandlerRedirectToSurveyMcu)
|
||||
}
|
||||
func SetupRoutesCorporate(app *echo.Echo, appStore db.AppStore) {
|
||||
public := app.Group("/corp")
|
||||
corp := app.Group("/corp")
|
||||
l := corporate_services.NewServicesCompany(appStore)
|
||||
lh := corporate_handlers.NewCompanyHandler(l)
|
||||
public.GET("/company", lh.ShowCompany)
|
||||
patientHandler := corporate_handlers.NewPatientHandler(l)
|
||||
public.GET("/patient", patientHandler.ShowPatient)
|
||||
corp.GET("/company", lh.ShowCompany)
|
||||
|
||||
// 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)
|
||||
|
||||
kesimpulanSrv := mcu_corporate_services.NewTabKesimpulanServices(appStore)
|
||||
kesimpulanHdr := mcu_corporate_handlers.NewTabKesimpulanHandler(kesimpulanSrv)
|
||||
corp.GET("/dashboard_pic/detail/:id/tabkesimpulan", kesimpulanHdr.HandleShowTabKesimpulanScreen)
|
||||
|
||||
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)
|
||||
|
||||
patienServices := corporate_services.NewPatientServices(appStore)
|
||||
patientHandler := corporate_handlers.NewPatientHandler(patienServices)
|
||||
corp.GET("/dashboard_pat", patientHandler.HandleShowPatient)
|
||||
corp.GET("/dashboard_pat/changepage", patientHandler.HandleChangePage)
|
||||
corp.GET("/dashboard_pat/open", patientHandler.HandleOpenReport)
|
||||
}
|
||||
|
||||
func SetupRoutesClient(app *echo.Echo, appStore db.AppStore) {
|
||||
@@ -187,17 +241,22 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) {
|
||||
//DEV USERGROUP
|
||||
devUGServices := dev_services.NewServicesMasterMenuUserGroup(appStore)
|
||||
devUGhandlers := dev_handlers.NewMasterMenuUserGroupHandler(devUGServices)
|
||||
dev.GET("/usergroup", devUGhandlers.HandlerShowMasterMenuUserGroup)
|
||||
dev.GET("/usergroup/pagination", devUGhandlers.HandleChangePage)
|
||||
// dev.GET("/usergroup", devUGhandlers.HandlerShowMasterMenuUserGroup)
|
||||
// dev.GET("/usergroup/pagination", devUGhandlers.HandleChangePage)
|
||||
dev.POST("/usergroup/add", devUGhandlers.AddUserGroup)
|
||||
dev.POST("/usergroup/edit", devUGhandlers.EditUserGroup)
|
||||
dev.GET("/usergroup/delete/:id", devUGhandlers.DeleteUserGroup)
|
||||
dev.POST("/usergroup/delete", devUGhandlers.DeleteUserGroup)
|
||||
|
||||
// try
|
||||
dev.GET("/usergroupv1", devUGhandlers.HandlerShowMasterMenuUserGroupV1)
|
||||
dev.GET("/breadcrumbv1", devUGhandlers.HandlerShowBreadCrumbV1)
|
||||
dev.GET("/searchusergroupv1", devUGhandlers.HandlerShowMasterMenuUserGroupSearchV1)
|
||||
dev.GET("/usergroupv1pagination", devUGhandlers.HandlerShowMasterMenuUserGroupPaginationV1)
|
||||
dev.POST("/usergrouphandlecloseform", devUGhandlers.HandleCloseForm)
|
||||
dev.POST("/usergrouphandlecloseformedit", devUGhandlers.HandleCloseFormEdit)
|
||||
dev.POST("/usergrouphandlecloseformdelete", devUGhandlers.HandleCloseFormDelete)
|
||||
dev.GET("/usergroupshoweditform", devUGhandlers.HandleEditForm)
|
||||
dev.GET("/usergroupshowdeleteform", devUGhandlers.HandleDeleteForm)
|
||||
|
||||
//ugcobanady
|
||||
dev.GET("/usergrouptryandy", devUGhandlers.HandlerShowMasterMenuUserGroupTryAndy)
|
||||
@@ -206,12 +265,118 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) {
|
||||
|
||||
dev.GET("/xtemplmulti", devUGhandlers.HandlerXTemplMulti)
|
||||
|
||||
devMDPServices := dev_services.NewServiceMasterDataPaket(appStore)
|
||||
devMDPHandlers := dev_handlers.NewMasterDataPaketServiceHandler(devMDPServices)
|
||||
dev.GET("/paket", devMDPHandlers.HandlerShowMasterDataPaket)
|
||||
dev.GET("/paketpagination", devMDPHandlers.HandlerShowMasterDataPaketPagination)
|
||||
dev.GET("/paketitempagination", devMDPHandlers.HandlerPaginationItemTable)
|
||||
|
||||
// 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)
|
||||
dev.GET("/groupresult", devGRhandlers.HandlerShowGroupResultV1)
|
||||
dev.GET("/searchgroupresultv1", devGRhandlers.HandlerShowGroupResultSearchV1)
|
||||
dev.GET("/groupresultv1pagination", devGRhandlers.HandlerShowGroupResultPaginationV1)
|
||||
dev.POST("/groupresulthandlecloseform", devGRhandlers.HandleCloseForm)
|
||||
dev.POST("/groupresulthandlecloseformedit", devGRhandlers.HandleCloseFormEdit)
|
||||
dev.GET("/groupresultshoweditform", devGRhandlers.HandleEditForm)
|
||||
dev.GET("/groupresultshowdeleteform", devGRhandlers.HandleDeleteForm)
|
||||
// dev.GET("/groupresultshowdeleteform", devGRhandlers.HandleDeleteForm)
|
||||
// form add
|
||||
dev.POST("/groupresult/add", devGRhandlers.AddGroupResult)
|
||||
dev.POST("/groupresult/edit", devGRhandlers.EditGroupResult)
|
||||
dev.POST("/groupresult/delete", devGRhandlers.DeleteGroupResult)
|
||||
|
||||
//New User Group
|
||||
devMdUserGroupServices := dev_services.NewMdUserGroupServices(appStore)
|
||||
devMdUserGroupHandlers := dev_handlers.NewMdUserGroupHandler(devMdUserGroupServices)
|
||||
dev.GET("/md/usergroupv2", devMdUserGroupHandlers.HandleShowMdUserGroupScreen)
|
||||
dev.GET("/md/usergroupv2/filter", devMdUserGroupHandlers.HandleFilterMdUserGroup)
|
||||
dev.GET("/md/usergroupv2/changepage", devMdUserGroupHandlers.HandleChangePageMdUserGroup)
|
||||
dev.POST("/md/usergroupv2/closeaddform", devMdUserGroupHandlers.HandleCloseFormAdd)
|
||||
dev.POST("/md/usergroupv2/add", devMdUserGroupHandlers.HandleAddUserGroup)
|
||||
dev.GET("/md/usergroupv2/openedit", devMdUserGroupHandlers.HandleOpenEditForm)
|
||||
dev.POST("/md/usergroupv2/closeeditform", devMdUserGroupHandlers.HandleCloseFormEdit)
|
||||
dev.POST("/md/usergroupv2/edit", devMdUserGroupHandlers.HandleEditUserGroup)
|
||||
dev.GET("/md/usergroupv2/opendelete", devMdUserGroupHandlers.HandleOpenDeleteForm)
|
||||
dev.POST("/md/usergroupv2/closedeleteform", devMdUserGroupHandlers.HandleCloseFormDelete)
|
||||
dev.POST("/md/usergroupv2/delete", devMdUserGroupHandlers.HandleDeleteUserGroup)
|
||||
|
||||
// md sample station
|
||||
devMDSampleStationServices := dev_services.NewMDSampleStationServices(appStore)
|
||||
devMDSampleStationHandlers := dev_handlers.NewMDSampleStationHandler(devMDSampleStationServices)
|
||||
dev.GET("/md/samplestation", devMDSampleStationHandlers.HandleShowMDSampleStationScreen)
|
||||
dev.GET("/md/samplestation/filter", devMDSampleStationHandlers.HandleFilterMDSS)
|
||||
dev.GET("/md/samplestation/changepage", devMDSampleStationHandlers.HandleChangePageSampleStation)
|
||||
dev.POST("/md/samplestation/add", devMDSampleStationHandlers.HandleAddMDSampleStation)
|
||||
dev.POST("/md/samplestation/closeaddform", devMDSampleStationHandlers.HandleCloseFormAdd)
|
||||
dev.GET("/md/samplestation/opendelete", devMDSampleStationHandlers.HandleOpenDeleteForm)
|
||||
dev.POST("/md/samplestation/closedeleteform", devMDSampleStationHandlers.HandleCloseFormDelete)
|
||||
dev.POST("/md/samplestation/delete", devMDSampleStationHandlers.HandleDeleteMDSS)
|
||||
dev.GET("/md/samplestation/openedit", devMDSampleStationHandlers.HandleOpenEditForm)
|
||||
dev.POST("/md/samplestation/edit", devMDSampleStationHandlers.HandleEditMDSS)
|
||||
dev.POST("/md/samplestation/closeeditform", devMDSampleStationHandlers.HandleCloseEditForm)
|
||||
|
||||
// masterdata nat unit
|
||||
devMdNatUnitServices := dev_services.NewMdNatUnitServices(appStore)
|
||||
devMdNatUnitHandlers := dev_handlers.NeWMdNatUnitHandler(devMdNatUnitServices)
|
||||
dev.GET("/md/natunit", devMdNatUnitHandlers.HandleShowMdNatUnitScreen)
|
||||
dev.GET("/md/natunit/filter", devMdNatUnitHandlers.HandleFilterMdNatUnit)
|
||||
dev.GET("/md/natunit/changepage", devMdNatUnitHandlers.HandlerChangePageMdNatUnit)
|
||||
dev.POST("/md/natunit/closeaddform", devMdNatUnitHandlers.HandlerCloseFormAdd)
|
||||
dev.POST("/md/natunit/add", devMdNatUnitHandlers.HandlerAddNatUnit)
|
||||
dev.GET("/md/natunit/openedit", devMdNatUnitHandlers.HandlerOpenEditForm)
|
||||
dev.POST("/md/natunit/closeeditform", devMdNatUnitHandlers.HandlerCloseFormEdit)
|
||||
dev.POST("/md/natunit/edit", devMdNatUnitHandlers.HandlerEditNatUnit)
|
||||
dev.GET("/md/natunit/opendelete", devMdNatUnitHandlers.HandlerOpenDeleteForm)
|
||||
dev.POST("/md/natunit/closedeleteform", devMdNatUnitHandlers.HandlerCloseFormDelete)
|
||||
dev.POST("/md/natunit/delete", devMdNatUnitHandlers.HandlerDeleteNatUnit)
|
||||
|
||||
// group result v2
|
||||
devMdGRServices := dev_services.NewServicesMdGroupResult(appStore)
|
||||
devMdGRhandlers := dev_handlers.NewMdGroupResultHandler(devMdGRServices)
|
||||
dev.GET("/md/groupresultv2", devMdGRhandlers.HandleShowMdGroupResultScreen)
|
||||
dev.GET("/md/groupresultv2/filter", devMdGRhandlers.HandleFilterMdGroupResult)
|
||||
dev.GET("/md/groupresultv2/changepage", devMdGRhandlers.HandleChangePageMdGroupResult)
|
||||
dev.POST("/md/groupresultv2/closeaddform", devMdGRhandlers.HandleCloseFormAdd)
|
||||
dev.POST("/md/groupresultv2/add", devMdGRhandlers.HandleAddGroupResult)
|
||||
dev.GET("/md/groupresultv2/openedit", devMdGRhandlers.HandleOpenEditForm)
|
||||
dev.POST("/md/groupresultv2/closeeditform", devMdGRhandlers.HandleCloseFormEdit)
|
||||
dev.POST("/md/groupresultv2/edit", devMdGRhandlers.HandleEditGroupResult)
|
||||
dev.GET("/md/groupresultv2/opendelete", devMdGRhandlers.HandleOpenDeleteForm)
|
||||
dev.POST("/md/groupresultv2/closedeleteform", devMdGRhandlers.HandleCloseFormDelete)
|
||||
dev.POST("/md/groupresultv2/delete", devMdGRhandlers.HandleDeleteUserGroup)
|
||||
//MD BAHAN
|
||||
devMdBahanServices := dev_services.NewMdBahanServices(appStore)
|
||||
devMdBahanHandlers := dev_handlers.NewMdBahanHandler(devMdBahanServices)
|
||||
dev.GET("/md/bahan", devMdBahanHandlers.HandleShowMdBahanScreen)
|
||||
dev.GET("/md/bahan/filter", devMdBahanHandlers.HandleFilterMdBahan)
|
||||
dev.GET("/md/bahan/pagination", devMdBahanHandlers.HandlePaginationMdBahan)
|
||||
dev.POST("/md/bahan/add", devMdBahanHandlers.HandleAddMdBahan)
|
||||
dev.POST("/md/bahan/closeaddform", devMdBahanHandlers.HandleCloseFormAddMdBahan)
|
||||
dev.GET("/md/bahan/openedit", devMdBahanHandlers.HandleOpenEditMdBahan)
|
||||
dev.POST("/md/bahan/closeeditform", devMdBahanHandlers.HandleCloseFormEditMdBahan)
|
||||
dev.POST("/md/bahan/edit", devMdBahanHandlers.HandleEditMdBahan)
|
||||
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)
|
||||
}
|
||||
|
||||
@@ -266,6 +266,8 @@ templ CorporateLayout(title string, css templ.Component, js templ.Component, nav
|
||||
<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>
|
||||
|
||||
@@ -78,7 +78,7 @@ func CorporateLayout(title string, css templ.Component, js templ.Component, navb
|
||||
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>")
|
||||
_, 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
|
||||
}
|
||||
|
||||
182
layout/layout_dashboard.templ
Normal file
182
layout/layout_dashboard.templ
Normal file
@@ -0,0 +1,182 @@
|
||||
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>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', (event) => {
|
||||
const storedToken = localStorage.getItem('token');
|
||||
if (!storedToken) {
|
||||
window.location.href = '/home';
|
||||
}
|
||||
});
|
||||
</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">
|
||||
{ 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>
|
||||
}
|
||||
94
layout/layout_dashboard_templ.go
Normal file
94
layout/layout_dashboard_templ.go
Normal file
@@ -0,0 +1,94 @@
|
||||
// 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><script>\r\n\t\t\t\tdocument.addEventListener('DOMContentLoaded', (event) => {\r\n\t\t\t\t\tconst storedToken = localStorage.getItem('token');\r\n\t\t\t\t\tif (!storedToken) {\r\n\t\t\t\t\t\twindow.location.href = '/home';\r\n\t\t\t\t\t}\r\n\t\t\t\t});\t\t\t\t\r\n\t\t\t</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\">")
|
||||
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,18 +3,6 @@ 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><!--\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 | ")
|
||||
_, 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\playground_layout.templ`, Line: 23, Col: 34}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `layout\playground_layout.templ`, Line: 11, Col: 34}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
|
||||
38
models/bahan.models.go
Normal file
38
models/bahan.models.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package models
|
||||
|
||||
import "github.com/a-h/templ"
|
||||
|
||||
type Bahan struct {
|
||||
T_BahanID int `db:"T_BahanID"`
|
||||
T_BahanT_SampleStationID int `db:"T_BahanT_SampleStationID"`
|
||||
T_SampleStationID int `db:"T_SampleStationID"`
|
||||
T_SampleStationName string `db:"T_SampleStationName"`
|
||||
T_BahanCode string `db:"T_BahanCode"`
|
||||
T_BahanName string `db:"T_BahanName"`
|
||||
T_BahanLangName string `db:"T_BahanLangName"`
|
||||
T_BahanIsActive string `db:"T_BahanIsActive"`
|
||||
T_BahanCreated string `db:"T_BahanCreated"`
|
||||
T_BahanCreatedUserID string `db:"T_BahanCreatedUserID"`
|
||||
T_BahanLastUpdated string `db:"T_BahanLastUpdated"`
|
||||
T_BahanLastUpdatedUserID string `db:"T_BahanLastUpdatedUserID"`
|
||||
T_BahanDeleted string `db:"T_BahanDeleted"`
|
||||
T_BahanDeletedUserID string `db:"T_BahanDeletedUserID"`
|
||||
}
|
||||
|
||||
type TmpSampleStation struct {
|
||||
T_SampleStationID int `db:"T_SampleStationID"`
|
||||
T_SampleStationName string `db:"T_SampleStationName"`
|
||||
}
|
||||
|
||||
type BahanFormComponent struct {
|
||||
IDComponent string
|
||||
Link string
|
||||
HxTarget string
|
||||
HxSwap string
|
||||
HxInclude string
|
||||
ModalID string
|
||||
ModalTitle string
|
||||
DialogBody templ.Component
|
||||
DialogAction templ.Component
|
||||
ButtonCLose templ.Component
|
||||
}
|
||||
18
models/customcheckbox.models.go
Normal file
18
models/customcheckbox.models.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package models
|
||||
|
||||
// name string, id string, hxTarget string, hxGet string, hxIndicator string, hxTrigger string, hxInclude string,
|
||||
|
||||
type CustomCheckboxv1Prm struct {
|
||||
HxTarget string `default:"hxTarget"`
|
||||
HxGet string `default:"hxGet"`
|
||||
HxIndicator string `default:"hxIndicator"`
|
||||
HxInclude string `default:"hxInclude"`
|
||||
HxTrigger string `default:"hxTrigger"`
|
||||
Label string `default:"Label"`
|
||||
Name string `default:"name"`
|
||||
Text string `default:"text"`
|
||||
// Type string `default:"text"`
|
||||
Value string `default:""`
|
||||
ErrorMsg string `default:""`
|
||||
ID string
|
||||
}
|
||||
36
models/customdropdown.models.go
Normal file
36
models/customdropdown.models.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package models
|
||||
|
||||
import "github.com/a-h/templ"
|
||||
|
||||
// name string, id string, hxTarget string, hxGet string, hxIndicator string, hxTrigger string, hxInclude string,
|
||||
|
||||
type CustomDropdownv1Prm struct {
|
||||
HxTarget string `default:"hxTarget"`
|
||||
HxGet string `default:"hxGet"`
|
||||
HxIndicator string `default:"hxIndicator"`
|
||||
HxInclude string `default:"hxInclude"`
|
||||
HxTrigger string `default:"hxTrigger"`
|
||||
Label string `default:"Label"`
|
||||
Name string `default:"name"`
|
||||
// Placeholder string `default:"Placeholder"`
|
||||
// Type string `default:"text"`
|
||||
// Value string `default:""`
|
||||
ErrorMsg string `default:""`
|
||||
ID string
|
||||
}
|
||||
type CustomDropdownV2Prm struct {
|
||||
HxTarget string `default:"hxTarget"`
|
||||
HxGet string `default:"hxGet"`
|
||||
HxIndicator string `default:"hxIndicator"`
|
||||
HxInclude string `default:"hxInclude"`
|
||||
HxTrigger string `default:"hxTrigger"`
|
||||
HxSwap string `default:"HxSwap"`
|
||||
Label string `default:"Label"`
|
||||
Name string `default:"name"`
|
||||
Placeholder string `default:"Placeholder"`
|
||||
// Type string `default:"text"`
|
||||
// Value string `default:""`
|
||||
ErrorMsg string `default:""`
|
||||
ID string
|
||||
ListItem templ.Component
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package models
|
||||
|
||||
type CustomRadioBtn struct {
|
||||
ID string
|
||||
Label string `default:"Label"`
|
||||
Type string `default:"radio"`
|
||||
Name string `default:"name"`
|
||||
Value string `default:""`
|
||||
ErrorMsg string `default:""`
|
||||
Item []Radio
|
||||
}
|
||||
|
||||
type Radio struct {
|
||||
ItemLabel string `default:"item"`
|
||||
ItemValue string `default:""`
|
||||
}
|
||||
16
models/customradiobutton.models.go
Normal file
16
models/customradiobutton.models.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package models
|
||||
|
||||
type CustomRadioButtonv1Prm struct {
|
||||
HxTarget string `default:"hxTarget"`
|
||||
HxGet string `default:"hxGet"`
|
||||
HxIndicator string `default:"hxIndicator"`
|
||||
HxInclude string `default:"hxInclude"`
|
||||
HxTrigger string `default:"hxTrigger"`
|
||||
Label string `default:"Label"`
|
||||
Name string `default:"name"`
|
||||
Text string `default:"text"`
|
||||
// Type string `default:"text"`
|
||||
Value string `default:""`
|
||||
ErrorMsg string `default:""`
|
||||
ID string
|
||||
}
|
||||
11
models/dashboardpatient.models.go
Normal file
11
models/dashboardpatient.models.go
Normal file
@@ -0,0 +1,11 @@
|
||||
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"`
|
||||
}
|
||||
15
models/employeeanalytic.models.go
Normal file
15
models/employeeanalytic.models.go
Normal file
@@ -0,0 +1,15 @@
|
||||
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"`
|
||||
}
|
||||
38
models/groupresult.models.go
Normal file
38
models/groupresult.models.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package models
|
||||
|
||||
import "github.com/a-h/templ"
|
||||
|
||||
type GroupResultResumeMcu struct {
|
||||
Text string `default:"text"`
|
||||
ID int `default:"id"`
|
||||
}
|
||||
|
||||
type GroupResult struct {
|
||||
Nomor string `db:"nomor"`
|
||||
Group_ResultID int `db:"Group_ResultID"`
|
||||
Group_ResultName string `db:"Group_ResultName"`
|
||||
Group_ResultFlagPerTest string `db:"Group_ResultFlagPerTest"`
|
||||
Group_ResultFlagNonLab string `db:"Group_ResultFlagNonLab"`
|
||||
Group_ResultResumeMcu string `db:"Group_ResultResumeMcu"`
|
||||
Group_ResultIsActive string `db:"Group_ResultIsActive"`
|
||||
}
|
||||
|
||||
// form component
|
||||
type GroupResultFormComponent struct {
|
||||
IDComponent string
|
||||
Link string
|
||||
HxTarget string
|
||||
HxSwap string
|
||||
HxInclude string
|
||||
ModalID string
|
||||
ModalTitle string
|
||||
InputGroupResultName CustomTextFieldv2Prm
|
||||
InputGroupResult CustomTextFieldv2Prm
|
||||
CheckboxGroupResultFlagPerTest CustomCheckboxv1Prm
|
||||
CheckboxGroupResultFlagNonLab CustomCheckboxv1Prm
|
||||
InputID CustomTextFieldv2Prm
|
||||
DropdownGroupResultResumeMcu CustomDropdownv1Prm
|
||||
DialogBody templ.Component
|
||||
DialogAction templ.Component
|
||||
ButtonCLose templ.Component
|
||||
}
|
||||
33
models/kartukontrol.models.go
Normal file
33
models/kartukontrol.models.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package models
|
||||
|
||||
type KartuKontrolModel struct {
|
||||
KartuKontrolDataPasienList []DataPasien `json:"kartuKontrolDataPasien"`
|
||||
KartuKontrolDataPemeriksaanList []DataPemeriksaanList `json:"kartuKontrolDataPemeriksaanList"`
|
||||
KartuKontrolDataPemeriksaanPengambilanSample []DataPemeriksaanPengambilanSample `json:"kartuKontrolDataPemeriksaanPengambilanSample"`
|
||||
}
|
||||
|
||||
type DataPasien struct {
|
||||
NomorRegistrasi string `json:"nomorRegistrasi"`
|
||||
NomorLab string `json:"nomorLab"`
|
||||
NamaPasien string `json:"namaPasien"`
|
||||
TanggalLahir string `json:"tanggalLahir"`
|
||||
Umur string `json:"umur"`
|
||||
JenisKelamin string `json:"jenisKelamin"`
|
||||
NamaDivisi string `json:"namaDivisi"`
|
||||
NamaCompany string `json:"namaCompany"`
|
||||
}
|
||||
|
||||
type DataPemeriksaanList struct {
|
||||
NamaPemeriksaanList string `json:"namaPemeriksaanList"`
|
||||
}
|
||||
|
||||
type SampleTypeList struct {
|
||||
SampleTypeName string `json:"sampleTypeName"`
|
||||
SampleTypeDateTime string `json:"sampleTypeDateTime"`
|
||||
SampleTypeStatus string `json:"sampleTypeStatus"`
|
||||
}
|
||||
|
||||
type DataPemeriksaanPengambilanSample struct {
|
||||
NamaPemeriksaanPengambilanSample string `json:"namaPemeriksaanPengambilanSample"`
|
||||
SampleTypeListData []SampleTypeList `json:"sampleTypeListData"`
|
||||
}
|
||||
7
models/kesimpulan.models.go
Normal file
7
models/kesimpulan.models.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package models
|
||||
|
||||
type ModelKesimpulanLab struct {
|
||||
Nomor string `db:"nomor"`
|
||||
Test string `db:"Test"`
|
||||
Total string `db:"total"`
|
||||
}
|
||||
89
models/login.models.go
Normal file
89
models/login.models.go
Normal file
@@ -0,0 +1,89 @@
|
||||
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"`
|
||||
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"`
|
||||
}
|
||||
15
models/mcudaftarpeserta.models.go
Normal file
15
models/mcudaftarpeserta.models.go
Normal file
@@ -0,0 +1,15 @@
|
||||
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"`
|
||||
}
|
||||
29
models/natunit.models.go
Normal file
29
models/natunit.models.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package models
|
||||
|
||||
import "github.com/a-h/templ"
|
||||
|
||||
type NatUnit struct {
|
||||
Nomor string `db:"nomor"`
|
||||
Nat_UnitID int `db:"Nat_UnitID"`
|
||||
Nat_UnitCode string `db:"Nat_UnitCode"`
|
||||
Nat_UnitName string `db:"Nat_UnitName"`
|
||||
Nat_UnitCreated string `db:"Nat_UnitCreated"`
|
||||
Nat_UnitLastUpdated string `db:"Nat_UnitLastUpdated"`
|
||||
Nat_UnitIsActive string `db:"Nat_UnitIsActive"`
|
||||
}
|
||||
|
||||
type NatUnitFormComponent struct {
|
||||
IDComponent string
|
||||
Link string
|
||||
HxTarget string
|
||||
HxSwap string
|
||||
HxInclude string
|
||||
ModalID string
|
||||
ModalTitle string
|
||||
InputName CustomTextFieldv2Prm
|
||||
InputCode CustomTextFieldv2Prm
|
||||
InputID CustomTextFieldv2Prm
|
||||
DialogBody templ.Component
|
||||
DialogAction templ.Component
|
||||
ButtonCLose templ.Component
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package models
|
||||
|
||||
type MDPaket struct {
|
||||
PaketID int `json:"paket_id"`
|
||||
PaketKode string `json:"paket_kode"`
|
||||
PaketJenis string `json:"paket_jenis"`
|
||||
PaketNama string `json:"paket_nama"`
|
||||
PaketIsActive string `json:"paket_is_active"`
|
||||
}
|
||||
|
||||
type MDPaketItem struct {
|
||||
ItemID int `json:"item_id"`
|
||||
ItemKode string `json:"item_kode"`
|
||||
ItemNama string `json:"item_nama"`
|
||||
HargaAwal string `json:"harga_awal"`
|
||||
HargaPaket string `json:"harga_paket"`
|
||||
ItemIsActive string `json:"item_is_active"`
|
||||
}
|
||||
47
models/samplestation.models.go
Normal file
47
models/samplestation.models.go
Normal file
@@ -0,0 +1,47 @@
|
||||
package models
|
||||
|
||||
import "github.com/a-h/templ"
|
||||
|
||||
type MDSampleStation struct {
|
||||
T_SampleStationID int `db:"T_SampleStationID"`
|
||||
T_SampleStationCode string `db:"T_SampleStationCode"`
|
||||
T_SampleStationName string `db:"T_SampleStationName"`
|
||||
T_SampleStationNat_GroupID string `db:"T_SampleStationNat_GroupID"`
|
||||
T_SampleStationIsNonLab string `db:"T_SampleStationIsNonLab"`
|
||||
T_SampleStationIsActive string `db:"T_SampleStationIsActive"`
|
||||
}
|
||||
|
||||
type MDSampleStationForm struct {
|
||||
IDComponent string
|
||||
Link string
|
||||
HxTarget string
|
||||
HxSwap string
|
||||
HxInclude string
|
||||
ModalID string
|
||||
ModalTitle string
|
||||
InputID CustomTextFieldv2Prm
|
||||
InputCode CustomTextFieldv2Prm
|
||||
InputName CustomTextFieldv2Prm
|
||||
InputGroup CustomDropdownv1Prm
|
||||
DialogBody templ.Component
|
||||
DialogAction templ.Component
|
||||
ButtonClose templ.Component
|
||||
}
|
||||
|
||||
type MDSampleStationConfirmation struct {
|
||||
IDComponent string
|
||||
Link string
|
||||
HxTarget string
|
||||
HxSwap string
|
||||
HxInclude string
|
||||
ModalID string
|
||||
ModalTitle string
|
||||
DialogBody templ.Component
|
||||
DialogAction templ.Component
|
||||
ButtonClose templ.Component
|
||||
}
|
||||
|
||||
type MDSampleStationGroup struct {
|
||||
ID int `default:"id"`
|
||||
Group string `default:"group"`
|
||||
}
|
||||
24
models/surveymcu.models.go
Normal file
24
models/surveymcu.models.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package models
|
||||
|
||||
type SurveyMcu struct {
|
||||
DataListItemSurveyMcu []ItemSurveyMcu `json:"dataListItemSurveyMcu"`
|
||||
DataListItemSurveyMcuSaran []ItemSurveyMcuSaran `json:"datalistitemsurveymcusaran"`
|
||||
}
|
||||
|
||||
type ItemSurveyMcu struct {
|
||||
IDItemSurvey string `json:"iditemsurvey"`
|
||||
Nomor string `json:"nomor"`
|
||||
Pertanyaan string `json:"pertanyaan"`
|
||||
NameRadioButton string `json:"nameradiobutton"`
|
||||
ErrorMessage string `json:"errorMessage"`
|
||||
}
|
||||
|
||||
type ItemSurveyMcuSaran struct {
|
||||
IDItemSurveyMcuSaran string `json:"iditemsurveymcusaran"`
|
||||
NameSurveyMcuSaran string `json:"namesurveymcusaran"`
|
||||
ErrorMessageSurveyMcuSaran string `json:"errormessagesurveymcusaran"`
|
||||
}
|
||||
|
||||
type IdClearErrorMessage struct {
|
||||
IdItem string `json:"iditem"`
|
||||
}
|
||||
29
models/terminology.models.go
Normal file
29
models/terminology.models.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package models
|
||||
|
||||
import "database/sql"
|
||||
|
||||
type TerminologyV0 struct {
|
||||
ResourceType string `db:"resource_type"`
|
||||
AttributePath string `db:"attribute_path"`
|
||||
Code string `db:"code"`
|
||||
ParentCode string `db:"parent_code"`
|
||||
Display string `db:"display"`
|
||||
DisplayEn string `db:"display_en"`
|
||||
CodeSystem string `db:"code_system"`
|
||||
OrderNo uint `db:"order_no"`
|
||||
FtIndex sql.NullString `db:"ft_index"`
|
||||
UseInd bool `db:"use_ind"`
|
||||
Description sql.NullString `db:"description"`
|
||||
StatusCd string `db:"status_cd"`
|
||||
CreatedDttm string `db:"created_dttm"`
|
||||
CreatedUserID uint `db:"created_user_id"`
|
||||
UpdatedDttm string `db:"updated_dttm"`
|
||||
UpdatedUserID uint `db:"updated_user_id"`
|
||||
NullifiedDttm string `db:"nullified_dttm"`
|
||||
NullifiedUserID uint `db:"nullified_user_id"`
|
||||
}
|
||||
|
||||
type TerminologyParamv0 struct {
|
||||
AttributePath string `json:"AttributePath"`
|
||||
CodeSystem string `json:"CodeSystem"`
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package models
|
||||
|
||||
import "github.com/a-h/templ"
|
||||
|
||||
type UserGroup struct {
|
||||
UserGroupID int `json:"user_group_id"`
|
||||
UserGroupKode string `json:"user_group_kode"`
|
||||
@@ -7,11 +9,43 @@ type UserGroup struct {
|
||||
}
|
||||
|
||||
type UserGroupV1 struct {
|
||||
Nomor string `db:"nomor"`
|
||||
M_UserGroupID int `db:"M_UserGroupID"`
|
||||
M_UserGroupCode string `db:"M_UserGroupCode"`
|
||||
M_UserGroupName string `db:"M_UserGroupName"`
|
||||
M_UserGroupCreated string `db:"M_UserGroupCreated"`
|
||||
M_UserGroupLastUpdated string `db:"M_UserGroupLastUpdated"`
|
||||
M_UserGroupIsActive string `db:"M_UserGroupIsActive"`
|
||||
Nomor string `db:"nomor"`
|
||||
M_UserGroupID int `db:"M_UserGroupID"`
|
||||
M_UserGroupCode string `db:"M_UserGroupCode"`
|
||||
M_UserGroupName string `db:"M_UserGroupName"`
|
||||
M_UserGroupCreated string `db:"M_UserGroupCreated"`
|
||||
M_UserGroupLastUpdated string `db:"M_UserGroupLastUpdated"`
|
||||
M_UserGroupIsActive string `db:"M_UserGroupIsActive"`
|
||||
M_UserGroupCreatedUserID string `db:"M_UserGroupCreatedUserID"`
|
||||
M_UserGroupLastUpdatedUserID string `db:"M_UserGroupLastUpdatedUserID"`
|
||||
M_UserGroupDeleted string `db:"M_UserGroupDeleted"`
|
||||
M_UserGroupDeletedUserID string `db:"M_UserGroupDeletedUserID"`
|
||||
}
|
||||
|
||||
type UserGroupFormComponent struct {
|
||||
IDComponent string
|
||||
Link string
|
||||
HxTarget string
|
||||
HxSwap string
|
||||
HxInclude string
|
||||
ModalID string
|
||||
ModalTitle string
|
||||
InputName CustomTextFieldv2Prm
|
||||
InputCode CustomTextFieldv2Prm
|
||||
InputID CustomTextFieldv2Prm
|
||||
DialogBody templ.Component
|
||||
DialogAction templ.Component
|
||||
ButtonCLose templ.Component
|
||||
}
|
||||
type UserGroupFormConfirmation struct {
|
||||
IDComponent string
|
||||
Link string
|
||||
HxTarget string
|
||||
HxSwap string
|
||||
HxInclude string
|
||||
ModalID string
|
||||
ModalTitle string
|
||||
DialogBody templ.Component
|
||||
DialogAction templ.Component
|
||||
ButtonCLose templ.Component
|
||||
}
|
||||
|
||||
@@ -16,6 +16,10 @@ 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") == "" {
|
||||
@@ -28,6 +32,15 @@ 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 {
|
||||
@@ -35,6 +48,16 @@ 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")
|
||||
@@ -50,6 +73,21 @@ 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)
|
||||
|
||||
@@ -59,6 +97,16 @@ 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,8 +1,14 @@
|
||||
package services
|
||||
|
||||
import "cpone/models"
|
||||
import (
|
||||
"cpone/models"
|
||||
dbx "cpone/package/database"
|
||||
"fmt"
|
||||
|
||||
//Func get menu sidebar
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// Func get menu sidebar
|
||||
func GetMenu() ([]models.Menu, error) {
|
||||
|
||||
// dummyBreadcrumb := []Breadcrumb{
|
||||
@@ -514,3 +520,31 @@ func GetUserLogin() (models.User, error) {
|
||||
}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
func GetTerminologyList(inp models.TerminologyParamv0) ([]models.TerminologyV0, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
|
||||
var term []models.TerminologyV0
|
||||
|
||||
query := `
|
||||
SELECT
|
||||
*
|
||||
FROM terminology
|
||||
WHERE status_cd = 'normal'
|
||||
AND code_system = ?
|
||||
AND attribute_path = ?
|
||||
`
|
||||
|
||||
logger.Info("QUERY SEARCH TERMINOLOGY",
|
||||
zap.String("query search", query),
|
||||
)
|
||||
|
||||
if err := dbx.Handlex.Select(&term, query,
|
||||
inp.CodeSystem,
|
||||
inp.AttributePath); err != nil {
|
||||
return nil, fmt.Errorf("error querying database terminology: %v", err)
|
||||
}
|
||||
|
||||
return term, nil
|
||||
}
|
||||
|
||||
128
services/corporate/dashboardpic.services.go
Normal file
128
services/corporate/dashboardpic.services.go
Normal file
@@ -0,0 +1,128 @@
|
||||
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: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
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) ListingDashboardPic(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
|
||||
}
|
||||
37
services/corporate/mcudetail.services.go
Normal file
37
services/corporate/mcudetail.services.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package corporate_services
|
||||
|
||||
import (
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
)
|
||||
|
||||
type McuDetailServices struct {
|
||||
McuDetailStore db.AppStore
|
||||
}
|
||||
|
||||
func NewMcuDetailServices(uStore db.AppStore) *McuDetailServices {
|
||||
return &McuDetailServices{
|
||||
McuDetailStore: uStore,
|
||||
}
|
||||
}
|
||||
|
||||
func (mcud *McuDetailServices) GetBreadcrumb(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: "/dev/employeeanalytic/",
|
||||
},
|
||||
{
|
||||
Item: title,
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
}
|
||||
return breadcrumb, nil
|
||||
}
|
||||
74
services/corporate/mcudetail/tabdaftarpeserta.services.go
Normal file
74
services/corporate/mcudetail/tabdaftarpeserta.services.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package mcu_corporate_services
|
||||
|
||||
import (
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
dbx "cpone/package/database"
|
||||
"fmt"
|
||||
"math"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type TabDaftarPesertaServices struct {
|
||||
TabDaftarPesertaStore db.AppStore
|
||||
}
|
||||
|
||||
func NewTabDaftarPesertaServices(uStore db.AppStore) *TabDaftarPesertaServices {
|
||||
return &TabDaftarPesertaServices{
|
||||
TabDaftarPesertaStore: uStore,
|
||||
}
|
||||
}
|
||||
|
||||
func (tdps *TabDaftarPesertaServices) 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
|
||||
}
|
||||
232
services/corporate/mcudetail/tabkesimpulan.services.go
Normal file
232
services/corporate/mcudetail/tabkesimpulan.services.go
Normal file
@@ -0,0 +1,232 @@
|
||||
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
|
||||
}
|
||||
@@ -1,15 +1,93 @@
|
||||
package corporate_services
|
||||
|
||||
import "cpone/db"
|
||||
import (
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
dbx "cpone/package/database"
|
||||
"fmt"
|
||||
"math"
|
||||
|
||||
type ServicesPatient struct {
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type PatientServices struct {
|
||||
PatientStore db.AppStore
|
||||
}
|
||||
|
||||
func NewServicesPatient(uStore db.AppStore) *ServicesPatient {
|
||||
func NewPatientServices(uStore db.AppStore) *PatientServices {
|
||||
|
||||
return &ServicesPatient{
|
||||
return &PatientServices{
|
||||
|
||||
PatientStore: uStore,
|
||||
}
|
||||
}
|
||||
|
||||
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) ListingData(search string, date string, patID string, corpId string, currentpage int, rowperpage int) ([]models.DashboardPatient, int, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var ret []models.DashboardPatient
|
||||
var totalData int
|
||||
|
||||
if len(date) == 0 {
|
||||
date = ""
|
||||
}
|
||||
|
||||
prmSearch := "%" + search + "%"
|
||||
offset := (currentpage - 1) * rowperpage
|
||||
q := `
|
||||
SELECT COUNT(*)
|
||||
FROM t_orderheader
|
||||
WHERE T_OrderHeaderIsActive = 'Y'
|
||||
AND T_OrderHeaderLabNumber LIKE ?
|
||||
AND T_OrderHeaderM_PatientID = ?
|
||||
AND T_OrderHeaderCorporateID = ?
|
||||
`
|
||||
if err := dbx.Handlex.Get(&totalData, q, prmSearch, patID, corpId); err != nil {
|
||||
return nil, 0, fmt.Errorf("error query get total data: %v", err)
|
||||
}
|
||||
|
||||
q = `
|
||||
SELECT
|
||||
T_OrderHeaderID,
|
||||
DATE_FORMAT(T_OrderHeaderDate, '%d/%m/%Y') AS T_OrderHeaderDate,
|
||||
T_OrderHeaderLabNumber,
|
||||
T_OrderHeaderM_PatientID,
|
||||
T_OrderHeaderCorporateID,
|
||||
T_OrderHeaderMgm_McuID,
|
||||
T_OrderHeaderIsActive
|
||||
FROM t_orderheader
|
||||
WHERE T_OrderHeaderIsActive = 'Y'
|
||||
AND T_OrderHeaderLabNumber LIKE ?
|
||||
AND T_OrderHeaderM_PatientID = ?
|
||||
AND T_OrderHeaderCorporateID = ?
|
||||
LIMIT ? OFFSET ?
|
||||
`
|
||||
if err := dbx.Handlex.Select(&ret, q, prmSearch, patID, corpId, rowperpage, offset); err != nil {
|
||||
return nil, 0, fmt.Errorf("error query get data: %v", err)
|
||||
}
|
||||
logger.Info("response", zap.Any("data", ret))
|
||||
|
||||
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
|
||||
return ret, totalPage, nil
|
||||
}
|
||||
|
||||
37
services/dev/detailmcu.services.go
Normal file
37
services/dev/detailmcu.services.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package dev_services
|
||||
|
||||
import (
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
)
|
||||
|
||||
type DetailMcuServices struct {
|
||||
DetailMcuStore db.AppStore
|
||||
}
|
||||
|
||||
func NewDetailMcuServices(uStore db.AppStore) *DetailMcuServices {
|
||||
return &DetailMcuServices{
|
||||
DetailMcuStore: uStore,
|
||||
}
|
||||
}
|
||||
|
||||
func (dmcu *DetailMcuServices) GetBreadcrumb(title string) (models.BreadCrumbV1, error) {
|
||||
breadcrumb := models.BreadCrumbV1{
|
||||
Title: title,
|
||||
Item: []models.ItemBreadCrumbV1{
|
||||
{
|
||||
Item: "Dashboard",
|
||||
Url: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
Item: "Employee Health Medical Analytic",
|
||||
Url: "/dev/employeeanalytic/",
|
||||
},
|
||||
{
|
||||
Item: title,
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
}
|
||||
return breadcrumb, nil
|
||||
}
|
||||
128
services/dev/employeeanalytic.services.go
Normal file
128
services/dev/employeeanalytic.services.go
Normal file
@@ -0,0 +1,128 @@
|
||||
package dev_services
|
||||
|
||||
import (
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
dbx "cpone/package/database"
|
||||
"fmt"
|
||||
"math"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type EmployeeAnalyticServices struct {
|
||||
EmployeeAnalyticStore db.AppStore
|
||||
}
|
||||
|
||||
func NewEmployeeAnalyticServices(uStore db.AppStore) *EmployeeAnalyticServices {
|
||||
return &EmployeeAnalyticServices{
|
||||
EmployeeAnalyticStore: uStore,
|
||||
}
|
||||
}
|
||||
|
||||
func (ea *EmployeeAnalyticServices) GetEmployeeAnalyticBreadcrumb(title string) (models.BreadCrumbV1, error) {
|
||||
breadcrumb := models.BreadCrumbV1{
|
||||
Title: title,
|
||||
Item: []models.ItemBreadCrumbV1{
|
||||
{
|
||||
Item: "Dashboard",
|
||||
Url: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
Item: "Employee Health Medical Analytic",
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
return breadcrumb, nil
|
||||
}
|
||||
|
||||
func (ea *EmployeeAnalyticServices) DummyDataTest() ([]models.DashboardPic, error) {
|
||||
employees := []models.DashboardPic{
|
||||
{
|
||||
Mgm_McuID: 1,
|
||||
Mgm_McuLabel: "Employee 1",
|
||||
Mgm_McuFlagRelasiBayarSendiri: "Yes",
|
||||
Mgm_McuBisaTambahPemeriksaan: "No",
|
||||
Mgm_McuCorporateID: 101,
|
||||
Mgm_McuNumber: "EMP001",
|
||||
Mgm_McuNumberNational: "NAT001",
|
||||
Mgm_McuNote: "Lorem ipsum dolor sit amet.",
|
||||
Mgm_McuStartDate: "2024-01-01",
|
||||
Mgm_McuEndDate: "2024-12-31",
|
||||
Mgm_McuIsActive: "Y",
|
||||
},
|
||||
{
|
||||
Mgm_McuID: 2,
|
||||
Mgm_McuLabel: "Employee 2",
|
||||
Mgm_McuFlagRelasiBayarSendiri: "No",
|
||||
Mgm_McuBisaTambahPemeriksaan: "Yes",
|
||||
Mgm_McuCorporateID: 102,
|
||||
Mgm_McuNumber: "EMP002",
|
||||
Mgm_McuNumberNational: "NAT002",
|
||||
Mgm_McuNote: "Lorem ipsum dolor sit amet consectetur.",
|
||||
Mgm_McuStartDate: "2024-02-15",
|
||||
Mgm_McuEndDate: "2024-11-30",
|
||||
Mgm_McuIsActive: "Y",
|
||||
},
|
||||
}
|
||||
|
||||
return employees, nil
|
||||
}
|
||||
|
||||
func (ea *EmployeeAnalyticServices) ListingEmployeeAnalytic(search string, startdate string, enddate string, currentpage int, rowperpage int) ([]models.DashboardPic, int, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var ret []models.DashboardPic
|
||||
var totalData int
|
||||
|
||||
if len(startdate) == 0 {
|
||||
startdate = "1900-01-01"
|
||||
}
|
||||
if len(enddate) == 0 {
|
||||
enddate = "9999-12-12"
|
||||
}
|
||||
|
||||
prmLabel := "%" + search + "%"
|
||||
offset := (currentpage - 1) * rowperpage
|
||||
q := `
|
||||
SELECT COUNT(*)
|
||||
FROM mgm_mcu
|
||||
WHERE Mgm_McuIsActive = 'Y'
|
||||
AND Mgm_McuLabel LIKE ?
|
||||
AND Mgm_McuStartDate >= ?
|
||||
AND Mgm_McuEndDate <= ?
|
||||
`
|
||||
if err := dbx.Handlex.Get(&totalData, q, prmLabel, startdate, enddate); err != nil {
|
||||
return nil, 0, fmt.Errorf("error query get total data: %v", err)
|
||||
}
|
||||
|
||||
q = `
|
||||
SELECT
|
||||
Mgm_McuID,
|
||||
Mgm_McuLabel,
|
||||
Mgm_McuFlagRelasiBayarSendiri,
|
||||
Mgm_McuBisaTambahPemeriksaan,
|
||||
Mgm_McuCorporateID,
|
||||
Mgm_McuNumber,
|
||||
Mgm_McuNumberNational,
|
||||
Mgm_McuNote,
|
||||
DATE_FORMAT(Mgm_McuStartDate, '%d-%m-%Y') AS Mgm_McuStartDate,
|
||||
DATE_FORMAT(Mgm_McuEndDate, '%d-%m-%Y') AS Mgm_McuEndDate,
|
||||
Mgm_McuIsActive
|
||||
FROM mgm_mcu
|
||||
WHERE Mgm_McuIsActive = 'Y'
|
||||
AND Mgm_McuLabel LIKE ?
|
||||
AND Mgm_McuStartDate >= ?
|
||||
AND Mgm_McuEndDate <= ?
|
||||
ORDER BY Mgm_McuID ASC
|
||||
LIMIT ? OFFSET ?
|
||||
`
|
||||
if err := dbx.Handlex.Select(&ret, q, prmLabel, startdate, enddate, rowperpage, offset); err != nil {
|
||||
return nil, 0, fmt.Errorf("error query get data: %v", err)
|
||||
}
|
||||
logger.Info("Resp", zap.Any("Respsone", ret))
|
||||
|
||||
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
|
||||
return ret, totalPage, nil
|
||||
}
|
||||
878
services/dev/groupresult.services.go
Normal file
878
services/dev/groupresult.services.go
Normal file
@@ -0,0 +1,878 @@
|
||||
package dev_services
|
||||
|
||||
import (
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
"fmt"
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
dbx "cpone/package/database"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func NewServicesGroupResult(uStore db.AppStore) *ServicesGroupResult {
|
||||
|
||||
return &ServicesGroupResult{
|
||||
GroupResultStore: uStore,
|
||||
}
|
||||
}
|
||||
|
||||
type ServicesGroupResult struct {
|
||||
GroupResultStore db.AppStore
|
||||
}
|
||||
|
||||
func (su *ServicesGroupResult) GetMasterMenus() ([]MasterMenu, error) {
|
||||
|
||||
// dummyBreadcrumb := []Breadcrumb{
|
||||
// {
|
||||
// Name: "Dashboard",
|
||||
// Url: "/client/dashboard",
|
||||
// },
|
||||
// {
|
||||
// Name: "Front Office",
|
||||
// Url: "/client/usermanagement",
|
||||
// },
|
||||
// }
|
||||
|
||||
dummyMenu := []MasterMenu{
|
||||
// 1. Dashboard
|
||||
{
|
||||
ID: "1",
|
||||
ParentMenuID: "0",
|
||||
ParentMenuName: "Dashboard",
|
||||
ParentUrl: "/client/md/dashboard",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
{
|
||||
ChildrenParentID: "1",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Master User",
|
||||
ChildrenMenuURL: "/client/md/user",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// 2. Front Office
|
||||
{
|
||||
ID: "2",
|
||||
ParentMenuID: "1",
|
||||
ParentMenuName: "Front Office",
|
||||
ParentUrl: "#",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
{
|
||||
ChildrenParentID: "1",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Registrasi",
|
||||
ChildrenMenuURL: "/fo/registrasi",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// 3. Station
|
||||
{
|
||||
ID: "3",
|
||||
ParentMenuID: "2",
|
||||
ParentMenuName: "Station",
|
||||
ParentUrl: "#",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
{
|
||||
ChildrenParentID: "2",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Sample Station",
|
||||
ChildrenMenuURL: "/station/sample",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// 4. Management MCU
|
||||
{
|
||||
ID: "4",
|
||||
ParentMenuID: "3",
|
||||
ParentMenuName: "Management MCU",
|
||||
ParentUrl: "#",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
{
|
||||
ChildrenParentID: "3",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Setup MCU",
|
||||
ChildrenMenuURL: "/mcu/setup",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
{
|
||||
ChildrenParentID: "3",
|
||||
ChildrenMenuID: "2",
|
||||
ChildrenMenuName: "Pre-Registrasi",
|
||||
ChildrenMenuURL: "/mcu/preregister",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// 5. Master Data
|
||||
{
|
||||
ID: "5",
|
||||
ParentMenuID: "4",
|
||||
ParentMenuName: "Master Data",
|
||||
ParentUrl: "#",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
// * Master User
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Master User",
|
||||
ChildrenMenuURL: "/client/md/user",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Master User Group
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "2",
|
||||
ChildrenMenuName: "Master User Group",
|
||||
ChildrenMenuURL: "/client/md/usergroup",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Master Corporate
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "3",
|
||||
ChildrenMenuName: "Corporate",
|
||||
ChildrenMenuURL: "/client/md/corp",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Test
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "4",
|
||||
ChildrenMenuName: "Test",
|
||||
ChildrenMenuURL: "/client/md/test",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Bahan
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "5",
|
||||
ChildrenMenuName: "Bahan",
|
||||
ChildrenMenuURL: "/client/md/bahan",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Sample Type
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "6",
|
||||
ChildrenMenuName: "Sample Type",
|
||||
ChildrenMenuURL: "/client/sample/type",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Sample Station
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "7",
|
||||
ChildrenMenuName: "Sample Station",
|
||||
ChildrenMenuURL: "/station/sample",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Result Non Lab
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "8",
|
||||
ChildrenMenuName: "Result Non Lab",
|
||||
ChildrenMenuURL: "/client/md/resultnonlab",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Template Fisik
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "9",
|
||||
ChildrenMenuName: "Template Fisik",
|
||||
ChildrenMenuURL: "/client/md/template-fisik",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Pasien
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "10",
|
||||
ChildrenMenuName: "Pasien",
|
||||
ChildrenMenuURL: "/client/md/pasien",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Dokter
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "11",
|
||||
ChildrenMenuName: "Dokter",
|
||||
ChildrenMenuURL: "/client/md/dokter",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Paket
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "12",
|
||||
ChildrenMenuName: "Paket",
|
||||
ChildrenMenuURL: "/client/md/paket",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Harga Single
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "13",
|
||||
ChildrenMenuName: "Harga Single",
|
||||
ChildrenMenuURL: "/client/md/hargasingle",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
return dummyMenu, nil
|
||||
}
|
||||
|
||||
func (ug *ServicesGroupResult) GetUserGroup() ([]models.UserGroup, error) {
|
||||
data := []models.UserGroup{
|
||||
{UserGroupID: 1, UserGroupKode: "A", UserGroupName: "UG1"},
|
||||
{UserGroupID: 2, UserGroupKode: "B", UserGroupName: "UG2"},
|
||||
{UserGroupID: 3, UserGroupKode: "C", UserGroupName: "UG3"},
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (su *ServicesGroupResult) GetListBreadCrumb(title string) (models.BreadCrumbV1, error) {
|
||||
var ret models.BreadCrumbV1
|
||||
|
||||
dummyBreadcrumb := []models.BreadCrumbV1{
|
||||
{
|
||||
Title: "Master User Group",
|
||||
Item: []models.ItemBreadCrumbV1{
|
||||
{
|
||||
Item: "Dashboard",
|
||||
Url: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
Item: "Master",
|
||||
Url: "/dev/master",
|
||||
},
|
||||
{
|
||||
Item: "User Group",
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
Title: "Master User",
|
||||
Item: []models.ItemBreadCrumbV1{
|
||||
{
|
||||
Item: "Dashboard",
|
||||
Url: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
Item: "Master",
|
||||
Url: "/dev/master",
|
||||
},
|
||||
{
|
||||
Item: "User",
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
Title: "Master Group Result",
|
||||
Item: []models.ItemBreadCrumbV1{
|
||||
{
|
||||
Item: "Dashboard",
|
||||
Url: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
Item: "Master",
|
||||
Url: "/dev/master",
|
||||
},
|
||||
{
|
||||
Item: "Group Result",
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, breadcrumb := range dummyBreadcrumb {
|
||||
// if utils.Contains(breadcrumb.Title, title) {
|
||||
// ret = breadcrumb
|
||||
// return ret, nil
|
||||
// }
|
||||
if breadcrumb.Title == title {
|
||||
ret = breadcrumb
|
||||
return ret, nil
|
||||
}
|
||||
}
|
||||
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
// (LAB, NONLAB, FISIK, DOCTOR)
|
||||
// hardcore group result resume mcu
|
||||
func (ug *ServicesGroupResult) GetGroupResultResumeMcu() ([]models.GroupResultResumeMcu, error) {
|
||||
data := []models.GroupResultResumeMcu{
|
||||
{
|
||||
ID: 1,
|
||||
Text: "LAB",
|
||||
},
|
||||
{
|
||||
ID: 2,
|
||||
Text: "NONLAB",
|
||||
},
|
||||
{
|
||||
ID: 3,
|
||||
Text: "FISIK",
|
||||
},
|
||||
{
|
||||
ID: 4,
|
||||
Text: "DOCTOR",
|
||||
},
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
// versi 2
|
||||
func (su *ServicesGroupResult) GetListGroupResult(search string, currentPage int, rowPerPage int) ([]models.GroupResult, int, error) {
|
||||
var groupresultList []models.GroupResult
|
||||
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
|
||||
var totalData int
|
||||
offset := (currentPage - 1) * rowPerPage
|
||||
|
||||
prm := "%" + strings.TrimSpace(search) + "%"
|
||||
querytotal := `
|
||||
SELECT COUNT(*)
|
||||
FROM group_result
|
||||
WHERE Group_ResultIsActive = 'Y'
|
||||
AND (Group_ResultName LIKE ? OR Group_ResultResumeMcu LIKE ?)
|
||||
`
|
||||
|
||||
logger.Info("QUERY SEARCH INITIAL TOTAL COUNT",
|
||||
zap.String("query search", querytotal),
|
||||
)
|
||||
|
||||
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
|
||||
query := `
|
||||
SELECT
|
||||
ROW_NUMBER() OVER () AS nomor,
|
||||
Group_ResultID,
|
||||
IFNULL(Group_ResultName, '') AS Group_ResultName,
|
||||
IFNULL(Group_ResultFlagPerTest, '') AS Group_ResultFlagPerTest,
|
||||
IFNULL(Group_ResultFlagNonLab, '') AS Group_ResultFlagNonLab,
|
||||
IFNULL(Group_ResultResumeMcu, '') AS Group_ResultResumeMcu,
|
||||
Group_ResultIsActive
|
||||
FROM group_result
|
||||
WHERE Group_ResultIsActive = 'Y'
|
||||
AND (Group_ResultName LIKE ? OR Group_ResultResumeMcu LIKE ?)
|
||||
ORDER BY Group_ResultID ASC
|
||||
LIMIT ? OFFSET ?
|
||||
`
|
||||
|
||||
logger.Info("QUERY SEARCH INITIAL",
|
||||
zap.String("query search", query),
|
||||
)
|
||||
|
||||
if err := dbx.Handlex.Select(&groupresultList, query, prm, prm, rowPerPage, offset); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
|
||||
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
|
||||
|
||||
return groupresultList, totalPage, nil
|
||||
}
|
||||
|
||||
// GET BY ID
|
||||
func (ug *ServicesGroupResult) GetGroupResultByIDV1(id string) (models.GroupResult, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
var data models.GroupResult
|
||||
err := dbx.Handlex.Get(&data, `SELECT
|
||||
Group_ResultID,
|
||||
Group_ResultName,
|
||||
CASE
|
||||
WHEN Group_ResultFlagPerTest = 'Y' THEN 'on'
|
||||
ELSE Group_ResultFlagPerTest
|
||||
END AS Group_ResultFlagPerTest,
|
||||
CASE
|
||||
WHEN Group_ResultFlagNonLab = 'Y' THEN 'on'
|
||||
ELSE Group_ResultFlagNonLab
|
||||
END AS Group_ResultFlagNonLab,
|
||||
Group_ResultResumeMcu,
|
||||
Group_ResultIsActive
|
||||
FROM group_result
|
||||
WHERE Group_ResultID = ?`, id)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get data gr by id vs",
|
||||
zap.String("ID", id),
|
||||
zap.Error(err),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
// ADD DATA
|
||||
func (ug *ServicesGroupResult) AddGroupResult(groupresultname string, groupresultflagpertest string, groupresultflagnonlab string, groupresultresumemcu string) (models.GroupResult, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var data models.GroupResult
|
||||
var datacek []models.GroupResult
|
||||
// var groupresultflagpertestConvert string = ""
|
||||
// var groupresultflagnonlabConvert string = ""
|
||||
// var groupresultresumemcuConvert string = ""
|
||||
|
||||
prm := "%" + strings.TrimSpace(groupresultname) + "%"
|
||||
qryCek := `SELECT Group_ResultName FROM group_result WHERE Group_ResultName LIKE ? AND Group_ResultIsActive = 'Y'`
|
||||
err := dbx.Handlex.Select(&datacek, qryCek, prm)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error cek data by groupresultname",
|
||||
zap.String("groupresultname", groupresultname),
|
||||
zap.Any("datacek", datacek),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
if len(datacek) > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("Group Result Name already taken by another data",
|
||||
zap.String("groupresultname", groupresultname),
|
||||
)
|
||||
return data, fmt.Errorf("group result name sudah dipakai")
|
||||
}
|
||||
qry := `INSERT INTO group_result
|
||||
(
|
||||
Group_ResultName,
|
||||
Group_ResultFlagPerTest,
|
||||
Group_ResultFlagNonLab,
|
||||
Group_ResultResumeMcu
|
||||
)
|
||||
VALUES (
|
||||
?,
|
||||
?,
|
||||
?,
|
||||
?
|
||||
);`
|
||||
// time.Sleep(5 * time.Second)
|
||||
rst := dbx.Handlex.MustExec(qry, groupresultname, groupresultflagpertest, groupresultflagnonlab, groupresultresumemcu)
|
||||
insertedID, err := rst.LastInsertId()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error Insert group result",
|
||||
zap.Any("groupresultname", groupresultname),
|
||||
zap.Any("groupresultflagpertest", groupresultflagpertest),
|
||||
zap.Any("groupresultflagnonlab", groupresultflagnonlab),
|
||||
zap.Any("groupresultresumemcu", groupresultresumemcu),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
s := strconv.Itoa(int(insertedID))
|
||||
data, err = ug.GetGroupResultByIDV1(s)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get usergroup by id",
|
||||
zap.Any("groupresultname", groupresultname),
|
||||
zap.Any("groupresultflagpertest", groupresultflagpertest),
|
||||
zap.Any("groupresultflagnonlab", groupresultflagnonlab),
|
||||
zap.Any("groupresultresumemcu", groupresultresumemcu),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
// EDIT DATA
|
||||
func (ug *ServicesGroupResult) EditGroupResult(id string, groupresultname string, groupresultflagpertest string, groupresultflagnonlab string, groupresultresumemcu string) (models.GroupResult, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var data models.GroupResult
|
||||
var datacek []models.GroupResult
|
||||
|
||||
prm := "%" + strings.TrimSpace(groupresultname) + "%"
|
||||
qryCek := `SELECT Group_ResultName FROM group_result WHERE Group_ResultName LIKE ? AND Group_ResultIsActive = 'Y' AND Group_ResultID <> ?`
|
||||
err := dbx.Handlex.Select(&datacek, qryCek, prm, id)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error cek data by code",
|
||||
zap.String("groupresultname", groupresultname),
|
||||
zap.Any("datacek", datacek),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
if len(datacek) > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("Code already taken by another data",
|
||||
zap.String("groupresultname", groupresultname),
|
||||
)
|
||||
return data, fmt.Errorf("group result name sudah dipakai")
|
||||
}
|
||||
|
||||
qry := `UPDATE group_result
|
||||
SET Group_ResultName = ?,
|
||||
Group_ResultFlagPerTest = ?,
|
||||
Group_ResultFlagNonLab = ?,
|
||||
Group_ResultResumeMcu = ?
|
||||
WHERE Group_ResultID = ?`
|
||||
// time.Sleep(5 * time.Second)
|
||||
rst := dbx.Handlex.MustExec(qry, groupresultname, groupresultflagpertest, groupresultflagnonlab, groupresultresumemcu, id)
|
||||
_, err = rst.RowsAffected()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error Update group result",
|
||||
zap.Any("groupresultname", groupresultname),
|
||||
zap.Any("groupresultflagpertest", groupresultflagpertest),
|
||||
zap.Any("groupresultflagnonlab", groupresultflagnonlab),
|
||||
zap.Any("groupresultresumemcu", groupresultresumemcu),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
data, err = ug.GetGroupResultByIDV1(id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get group result by id",
|
||||
zap.Any("groupresultname", groupresultname),
|
||||
zap.Any("groupresultflagpertest", groupresultflagpertest),
|
||||
zap.Any("groupresultflagnonlab", groupresultflagnonlab),
|
||||
zap.Any("groupresultresumemcu", groupresultresumemcu),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
// DELETE DATA
|
||||
func (ug *ServicesGroupResult) DeleteGroupResult(id string) (models.GroupResult, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var data models.GroupResult
|
||||
qry := `UPDATE group_result
|
||||
SET Group_ResultIsActive = 'N'
|
||||
WHERE Group_ResultID = ?;`
|
||||
// time.Sleep(5 * time.Second)
|
||||
rst := dbx.Handlex.MustExec(qry, id)
|
||||
_, err := rst.RowsAffected()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error delete group result",
|
||||
zap.String("id", id),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
data, err = ug.GetGroupResultByIDV1(id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get group result by id",
|
||||
zap.String("id", id),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
232
services/dev/kesimpulan.services.go
Normal file
232
services/dev/kesimpulan.services.go
Normal file
@@ -0,0 +1,232 @@
|
||||
package dev_services
|
||||
|
||||
import (
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
dbx "cpone/package/database"
|
||||
"fmt"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func NewServicesKesimpulan(uStore db.AppStore) *KesimpulanServices {
|
||||
return &KesimpulanServices{
|
||||
KesimpulanStore: uStore,
|
||||
}
|
||||
}
|
||||
|
||||
type KesimpulanServices struct {
|
||||
KesimpulanStore db.AppStore
|
||||
}
|
||||
|
||||
func (k *KesimpulanServices) GetListKesimpulanLab(id string) ([]models.ModelKesimpulanLab, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var listLab []models.ModelKesimpulanLab
|
||||
var dataTot []models.ModelKesimpulanLab
|
||||
|
||||
qryTot := `select '' as nomor,
|
||||
'' as Test, sum(total) as total
|
||||
from(
|
||||
select count(*) as total
|
||||
FROM mgm_header
|
||||
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
|
||||
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
|
||||
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
|
||||
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
|
||||
|
||||
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'L'
|
||||
and Mgm_HeaderIsNormal = 'N'
|
||||
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
|
||||
|
||||
err := dbx.Handlex.Select(&dataTot, qryTot, id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get total",
|
||||
zap.Any("id", id),
|
||||
zap.Any("total data", dataTot),
|
||||
)
|
||||
// return dataTot, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
// Extracting the Total value
|
||||
var totalLab string
|
||||
if len(dataTot) > 0 {
|
||||
totalLab = dataTot[0].Total
|
||||
}
|
||||
|
||||
logger.Info("data",
|
||||
zap.Any("id", id),
|
||||
zap.Any("cek total", totalLab),
|
||||
)
|
||||
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
|
||||
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
|
||||
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
|
||||
|
||||
FROM mgm_header
|
||||
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
|
||||
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
|
||||
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
|
||||
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
|
||||
|
||||
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'L'
|
||||
and Mgm_HeaderIsNormal = 'N'
|
||||
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
|
||||
LIMIT 3`
|
||||
|
||||
err = dbx.Handlex.Select(&listLab, query, totalLab, id)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get data lab",
|
||||
zap.Any("id", id),
|
||||
zap.Any("list data", listLab),
|
||||
)
|
||||
return listLab, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
logger.Info("data",
|
||||
zap.Any("id", id),
|
||||
zap.Any("cekkkk", listLab),
|
||||
)
|
||||
return listLab, nil
|
||||
}
|
||||
|
||||
func (k *KesimpulanServices) GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var listNonLab []models.ModelKesimpulanLab
|
||||
var dataTot []models.ModelKesimpulanLab
|
||||
|
||||
qryTot := `select '' as nomor,
|
||||
'' as Test, sum(total) as total
|
||||
from(
|
||||
select count(*) as total
|
||||
FROM mgm_header
|
||||
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
|
||||
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
|
||||
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
|
||||
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
|
||||
|
||||
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'NL'
|
||||
and Mgm_HeaderIsNormal = 'N'
|
||||
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
|
||||
|
||||
err := dbx.Handlex.Select(&dataTot, qryTot, id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get total",
|
||||
zap.Any("id", id),
|
||||
zap.Any("total data", dataTot),
|
||||
)
|
||||
// return dataTot, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
// Extracting the Total value
|
||||
var totalLab string
|
||||
if len(dataTot) > 0 {
|
||||
totalLab = dataTot[0].Total
|
||||
}
|
||||
|
||||
logger.Info("data",
|
||||
zap.Any("id", id),
|
||||
zap.Any("cek total", totalLab),
|
||||
)
|
||||
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
|
||||
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
|
||||
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
|
||||
|
||||
FROM mgm_header
|
||||
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
|
||||
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
|
||||
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
|
||||
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
|
||||
|
||||
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'NL'
|
||||
and Mgm_HeaderIsNormal = 'N'
|
||||
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
|
||||
LIMIT 3`
|
||||
|
||||
err = dbx.Handlex.Select(&listNonLab, query, totalLab, id)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get data NON lab",
|
||||
zap.Any("id", id),
|
||||
zap.Any("list data", listNonLab),
|
||||
)
|
||||
return listNonLab, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
logger.Info("data",
|
||||
zap.Any("id", id),
|
||||
zap.Any("cekkkk", listNonLab),
|
||||
)
|
||||
return listNonLab, nil
|
||||
}
|
||||
|
||||
func (k *KesimpulanServices) GetListKesimpulanFisik(id string) ([]models.ModelKesimpulanLab, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var listFisik []models.ModelKesimpulanLab
|
||||
var dataTot []models.ModelKesimpulanLab
|
||||
|
||||
qryTot := `select '' as nomor,
|
||||
'' as Test, sum(total) as total
|
||||
from(
|
||||
select count(*) as total
|
||||
FROM mgm_header
|
||||
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
|
||||
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
|
||||
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
|
||||
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
|
||||
|
||||
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'F'
|
||||
and Mgm_HeaderIsNormal = 'N'
|
||||
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x`
|
||||
|
||||
err := dbx.Handlex.Select(&dataTot, qryTot, id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get total",
|
||||
zap.Any("id", id),
|
||||
zap.Any("total data", dataTot),
|
||||
)
|
||||
// return dataTot, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
// Extracting the Total value
|
||||
var totalFisik string
|
||||
if len(dataTot) > 0 {
|
||||
totalFisik = dataTot[0].Total
|
||||
}
|
||||
|
||||
logger.Info("data",
|
||||
zap.Any("id", id),
|
||||
zap.Any("cek total", totalFisik),
|
||||
)
|
||||
query := `SELECT ROW_NUMBER() OVER (ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC) AS nomor,
|
||||
ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test,
|
||||
cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total
|
||||
|
||||
FROM mgm_header
|
||||
join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y'
|
||||
join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID
|
||||
join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
|
||||
left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode
|
||||
|
||||
where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'F'
|
||||
and Mgm_HeaderIsNormal = 'N'
|
||||
group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC
|
||||
LIMIT 3`
|
||||
|
||||
err = dbx.Handlex.Select(&listFisik, query, totalFisik, id)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get data fisik",
|
||||
zap.Any("id", id),
|
||||
zap.Any("list data", listFisik),
|
||||
)
|
||||
return listFisik, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
return listFisik, nil
|
||||
}
|
||||
@@ -54,508 +54,6 @@ type AutoComplete struct {
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
func (su *ServicesMasterMenuUserGroup) GetMasterMenus() ([]MasterMenu, error) {
|
||||
|
||||
// dummyBreadcrumb := []Breadcrumb{
|
||||
// {
|
||||
// Name: "Dashboard",
|
||||
// Url: "/client/dashboard",
|
||||
// },
|
||||
// {
|
||||
// Name: "Front Office",
|
||||
// Url: "/client/usermanagement",
|
||||
// },
|
||||
// }
|
||||
|
||||
dummyMenu := []MasterMenu{
|
||||
// 1. Dashboard
|
||||
{
|
||||
ID: "1",
|
||||
ParentMenuID: "0",
|
||||
ParentMenuName: "Dashboard",
|
||||
ParentUrl: "/client/md/dashboard",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
{
|
||||
ChildrenParentID: "1",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Master User",
|
||||
ChildrenMenuURL: "/client/md/user",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// 2. Front Office
|
||||
{
|
||||
ID: "2",
|
||||
ParentMenuID: "1",
|
||||
ParentMenuName: "Front Office",
|
||||
ParentUrl: "#",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
{
|
||||
ChildrenParentID: "1",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Registrasi",
|
||||
ChildrenMenuURL: "/fo/registrasi",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// 3. Station
|
||||
{
|
||||
ID: "3",
|
||||
ParentMenuID: "2",
|
||||
ParentMenuName: "Station",
|
||||
ParentUrl: "#",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
{
|
||||
ChildrenParentID: "2",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Sample Station",
|
||||
ChildrenMenuURL: "/station/sample",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// 4. Management MCU
|
||||
{
|
||||
ID: "4",
|
||||
ParentMenuID: "3",
|
||||
ParentMenuName: "Management MCU",
|
||||
ParentUrl: "#",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
{
|
||||
ChildrenParentID: "3",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Setup MCU",
|
||||
ChildrenMenuURL: "/mcu/setup",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
{
|
||||
ChildrenParentID: "3",
|
||||
ChildrenMenuID: "2",
|
||||
ChildrenMenuName: "Pre-Registrasi",
|
||||
ChildrenMenuURL: "/mcu/preregister",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// 5. Master Data
|
||||
{
|
||||
ID: "5",
|
||||
ParentMenuID: "4",
|
||||
ParentMenuName: "Master Data",
|
||||
ParentUrl: "#",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
// * Master User
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Master User",
|
||||
ChildrenMenuURL: "/client/md/user",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Master User Group
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "2",
|
||||
ChildrenMenuName: "Master User Group",
|
||||
ChildrenMenuURL: "/client/md/usergroup",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Master Corporate
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "3",
|
||||
ChildrenMenuName: "Corporate",
|
||||
ChildrenMenuURL: "/client/md/corp",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Test
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "4",
|
||||
ChildrenMenuName: "Test",
|
||||
ChildrenMenuURL: "/client/md/test",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Bahan
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "5",
|
||||
ChildrenMenuName: "Bahan",
|
||||
ChildrenMenuURL: "/client/md/bahan",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Sample Type
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "6",
|
||||
ChildrenMenuName: "Sample Type",
|
||||
ChildrenMenuURL: "/client/sample/type",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Sample Station
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "7",
|
||||
ChildrenMenuName: "Sample Station",
|
||||
ChildrenMenuURL: "/station/sample",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Result Non Lab
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "8",
|
||||
ChildrenMenuName: "Result Non Lab",
|
||||
ChildrenMenuURL: "/client/md/resultnonlab",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Template Fisik
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "9",
|
||||
ChildrenMenuName: "Template Fisik",
|
||||
ChildrenMenuURL: "/client/md/template-fisik",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Pasien
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "10",
|
||||
ChildrenMenuName: "Pasien",
|
||||
ChildrenMenuURL: "/client/md/pasien",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Dokter
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "11",
|
||||
ChildrenMenuName: "Dokter",
|
||||
ChildrenMenuURL: "/client/md/dokter",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Paket
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "12",
|
||||
ChildrenMenuName: "Paket",
|
||||
ChildrenMenuURL: "/client/md/paket",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Harga Single
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "13",
|
||||
ChildrenMenuName: "Harga Single",
|
||||
ChildrenMenuURL: "/client/md/hargasingle",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
return dummyMenu, nil
|
||||
}
|
||||
|
||||
func (ug *ServicesMasterMenuUserGroup) GetUserGroup() ([]models.UserGroup, error) {
|
||||
data := []models.UserGroup{
|
||||
{UserGroupID: 1, UserGroupKode: "A", UserGroupName: "UG1"},
|
||||
@@ -677,6 +175,7 @@ func (ug *ServicesMasterMenuUserGroup) GetUserGroupByIDV1(id string) (models.Use
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get data ug by id vs",
|
||||
zap.String("ID", id),
|
||||
zap.Error(err),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
@@ -735,13 +234,33 @@ func (ug *ServicesMasterMenuUserGroup) AddUserGroup(code string, name string) (m
|
||||
func (ug *ServicesMasterMenuUserGroup) EditUserGroup(id string, code string, name string) (models.UserGroupV1, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var data models.UserGroupV1
|
||||
var datacek []models.UserGroupV1
|
||||
|
||||
qryCek := `SELECT M_UserGroupCode FROM m_usergroup WHERE M_UserGroupCode = ? AND M_UserGroupIsActive = 'Y' AND M_UserGroupID <> ?`
|
||||
err := dbx.Handlex.Select(&datacek, qryCek, code, id)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error cek data by code",
|
||||
zap.String("code", code),
|
||||
zap.Any("datacek", datacek),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
if len(datacek) > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("Code already taken by another data",
|
||||
zap.String("code", code),
|
||||
)
|
||||
return data, fmt.Errorf("code sudah dipakai")
|
||||
}
|
||||
qry := `UPDATE m_usergroup
|
||||
SET M_UserGroupCode = ?,
|
||||
M_UserGroupName= ?
|
||||
WHERE M_UserGroupID = ?;`
|
||||
// time.Sleep(5 * time.Second)
|
||||
rst := dbx.Handlex.MustExec(qry, code, name, id)
|
||||
_, err := rst.RowsAffected()
|
||||
_, err = rst.RowsAffected()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error Update usergroup",
|
||||
@@ -791,131 +310,6 @@ func (ug *ServicesMasterMenuUserGroup) DeleteUserGroup(id string) (models.UserGr
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (su *ServicesMasterMenuUserGroup) GetListMasterUserGroupFilteredBySearch(search string) ([]models.UserGroupV1, error) {
|
||||
var userGroupList []models.UserGroupV1
|
||||
|
||||
query := `
|
||||
SELECT
|
||||
ROW_NUMBER() OVER () AS nomor,
|
||||
M_UserGroupID,
|
||||
M_UserGroupCode,
|
||||
M_UserGroupName,
|
||||
M_UserGroupCreated,
|
||||
M_UserGroupLastUpdated,
|
||||
M_UserGroupIsActive
|
||||
FROM m_usergroup
|
||||
WHERE M_UserGroupIsActive = 'Y'
|
||||
`
|
||||
|
||||
// check jika parameter search nya tidak kosong
|
||||
if search != "" {
|
||||
query += fmt.Sprintf(" AND (M_UserGroupName LIKE '%%%s%%' OR M_UserGroupCode LIKE '%%%s%%')", search, search)
|
||||
} else {
|
||||
search = "%%"
|
||||
}
|
||||
|
||||
// query += " ORDER BY M_UserGroupID ASC"
|
||||
query += fmt.Sprintf(" ORDER BY M_UserGroupID ASC")
|
||||
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
logger.Info("QUERY SEARCH ONlY FOR COUNT TOTAL PAGES PAGINATION",
|
||||
zap.String("query search", query),
|
||||
)
|
||||
|
||||
if err := dbx.Handlex.Select(&userGroupList, query); err != nil {
|
||||
return nil, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
|
||||
return userGroupList, nil
|
||||
}
|
||||
|
||||
func (su *ServicesMasterMenuUserGroup) GetListMasterUserGroupBySearch(search string) ([]models.UserGroupV1, error) {
|
||||
var userGroupList []models.UserGroupV1
|
||||
|
||||
query := `
|
||||
SELECT
|
||||
ROW_NUMBER() OVER () AS nomor,
|
||||
M_UserGroupID,
|
||||
M_UserGroupCode,
|
||||
M_UserGroupName,
|
||||
M_UserGroupCreated,
|
||||
M_UserGroupLastUpdated,
|
||||
M_UserGroupIsActive
|
||||
FROM m_usergroup
|
||||
WHERE M_UserGroupIsActive = 'Y'
|
||||
`
|
||||
|
||||
// fmt.Errorf(search)
|
||||
rowPerPage := 2
|
||||
offset := 0
|
||||
|
||||
// check jika parameter search nya tidak kosong
|
||||
if search != "" {
|
||||
query += fmt.Sprintf(" AND (M_UserGroupName LIKE '%%%s%%' OR M_UserGroupCode LIKE '%%%s%%')", search, search)
|
||||
} else {
|
||||
search = "%%"
|
||||
}
|
||||
|
||||
// query += " ORDER BY M_UserGroupID ASC"
|
||||
query += fmt.Sprintf(" ORDER BY M_UserGroupID ASC LIMIT %d OFFSET %d", rowPerPage, offset)
|
||||
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
logger.Info("QUERY SEARCH ONlY AND SETTING LIMIT",
|
||||
zap.String("query search", query),
|
||||
)
|
||||
|
||||
if err := dbx.Handlex.Select(&userGroupList, query); err != nil {
|
||||
return nil, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
|
||||
return userGroupList, nil
|
||||
}
|
||||
|
||||
func (su *ServicesMasterMenuUserGroup) GetListMasterUserGroupPagination(search string, currentPage int, rowPerPage int) ([]models.UserGroupV1, error) {
|
||||
var userGroupList []models.UserGroupV1
|
||||
|
||||
query := `
|
||||
SELECT
|
||||
ROW_NUMBER() OVER () AS nomor,
|
||||
M_UserGroupID,
|
||||
M_UserGroupCode,
|
||||
M_UserGroupName,
|
||||
M_UserGroupCreated,
|
||||
M_UserGroupLastUpdated,
|
||||
M_UserGroupIsActive
|
||||
FROM m_usergroup
|
||||
WHERE M_UserGroupIsActive = 'Y'
|
||||
`
|
||||
|
||||
// rmaxPerPage := 2
|
||||
// rpage := (currentPage - 1) * rmaxPerPage
|
||||
|
||||
offset := (currentPage - 1) * rowPerPage
|
||||
// offset := currentPage
|
||||
|
||||
if search != "" {
|
||||
query += fmt.Sprintf(" AND (M_UserGroupName LIKE '%%%s%%' OR M_UserGroupCode LIKE '%%%s%%')", search, search)
|
||||
} else {
|
||||
search = "%%"
|
||||
}
|
||||
|
||||
query += fmt.Sprintf(" ORDER BY M_UserGroupID ASC LIMIT %d OFFSET %d", rowPerPage, offset)
|
||||
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
logger.Info("QUERY SEARCH WITH PAGINATION",
|
||||
zap.String("query search", query),
|
||||
)
|
||||
|
||||
if err := dbx.Handlex.Select(&userGroupList, query); err != nil {
|
||||
return nil, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
|
||||
return userGroupList, nil
|
||||
}
|
||||
|
||||
func (su *ServicesMasterMenuUserGroup) GetListMasterUserGroupV2(search string, currentPage int, rowPerPage int) ([]models.UserGroupV1, int, error) {
|
||||
var userGroupList []models.UserGroupV1
|
||||
var totalData int
|
||||
|
||||
74
services/dev/mcudaftarpeserta.services.go
Normal file
74
services/dev/mcudaftarpeserta.services.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package dev_services
|
||||
|
||||
import (
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
dbx "cpone/package/database"
|
||||
"fmt"
|
||||
"math"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type McuDaftarPesertaServices struct {
|
||||
McuDaftarPesertaStore db.AppStore
|
||||
}
|
||||
|
||||
func NewMcuDaftarPesertaServices(uStore db.AppStore) *McuDaftarPesertaServices {
|
||||
return &McuDaftarPesertaServices{
|
||||
McuDaftarPesertaStore: uStore,
|
||||
}
|
||||
}
|
||||
|
||||
func (mdp *McuDaftarPesertaServices) GetListMcuDaftarPeserta(id string, currentPage int, rowPerPage int) ([]models.ModelMcuDaftarPeserta, int, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var listDaftarPeserta []models.ModelMcuDaftarPeserta
|
||||
var totalData int
|
||||
offset := (currentPage - 1) * rowPerPage
|
||||
|
||||
querytotal := `SELECT COUNT(*)
|
||||
FROM t_orderheader
|
||||
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
||||
AND M_PatientIsActive = 'Y'
|
||||
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ?`
|
||||
|
||||
if err := dbx.Handlex.Get(&totalData, querytotal, id); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
|
||||
query := `SELECT T_OrderHeaderID,
|
||||
T_OrderHeaderDate,
|
||||
T_OrderHeaderLabNumber,
|
||||
T_OrderHeaderM_PatientAge,
|
||||
M_PatientID,
|
||||
M_PatientNoReg,
|
||||
M_PatientName,
|
||||
M_PatientGender,
|
||||
CASE
|
||||
WHEN M_PatientGender = 'male' THEN 'Laki - Laki'
|
||||
WHEN M_PatientGender = 'female' THEN 'Perempuan'
|
||||
ELSE ' '
|
||||
END AS jenisKelamin,
|
||||
M_PatientDOB,
|
||||
FLOOR(DATEDIFF(CURDATE(), M_PatientDOB)/ 365.25) AS age
|
||||
FROM t_orderheader
|
||||
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
||||
AND M_PatientIsActive = 'Y'
|
||||
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ?
|
||||
ORDER BY M_PatientName ASC
|
||||
LIMIT ? OFFSET ?`
|
||||
|
||||
if err := dbx.Handlex.Select(&listDaftarPeserta, query, id, rowPerPage, offset); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
|
||||
|
||||
defer logger.Sync()
|
||||
logger.Info("GET DATA PESERTA",
|
||||
zap.Any("id", id),
|
||||
zap.Any("total data", totalData),
|
||||
zap.Any("peserta", listDaftarPeserta),
|
||||
)
|
||||
|
||||
return listDaftarPeserta, totalPage, nil
|
||||
}
|
||||
251
services/dev/md.bahan.services.go
Normal file
251
services/dev/md.bahan.services.go
Normal file
@@ -0,0 +1,251 @@
|
||||
package dev_services
|
||||
|
||||
import (
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
dbx "cpone/package/database"
|
||||
"fmt"
|
||||
"math"
|
||||
"strings"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func NewMdBahanServices(uStore db.AppStore) *MdBahanServices {
|
||||
|
||||
return &MdBahanServices{
|
||||
|
||||
MdBahanStore: uStore,
|
||||
}
|
||||
}
|
||||
|
||||
type MdBahanServices struct {
|
||||
MdBahanStore db.AppStore
|
||||
}
|
||||
|
||||
func (su *MdBahanServices) GetListMdBahan(
|
||||
search string,
|
||||
stationID string,
|
||||
currentPage int,
|
||||
rowPerPage int) ([]models.Bahan, int, error) {
|
||||
var bahanList []models.Bahan
|
||||
var totalData int
|
||||
offset := (currentPage - 1) * rowPerPage
|
||||
prm := "%" + strings.TrimSpace(search) + "%"
|
||||
filterStation := ""
|
||||
if stationID != "0" {
|
||||
filterStation = "AND T_BahanT_SampleStationID = " + stationID
|
||||
|
||||
}
|
||||
querytotal := `
|
||||
SELECT COUNT(*) FROM
|
||||
t_bahan
|
||||
JOIN
|
||||
t_samplestation
|
||||
ON T_BahanT_SampleStationID = T_SampleStationID
|
||||
AND T_BahanIsActive = 'Y'
|
||||
AND T_SampleStationIsActive = 'Y'
|
||||
WHERE (T_BahanName LIKE ? OR T_BahanCode LIKE ? )
|
||||
|
||||
` + filterStation
|
||||
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
query := `
|
||||
SELECT t_bahan.*,
|
||||
T_SampleStationName,
|
||||
T_SampleStationID FROM
|
||||
t_bahan
|
||||
JOIN
|
||||
t_samplestation
|
||||
ON T_BahanT_SampleStationID = T_SampleStationID
|
||||
AND T_BahanIsActive = 'Y'
|
||||
AND T_SampleStationIsActive = 'Y'
|
||||
WHERE (T_BahanName LIKE ? OR T_BahanCode LIKE ? )
|
||||
` + filterStation + `
|
||||
LIMIT ? OFFSET ?
|
||||
`
|
||||
|
||||
if err := dbx.Handlex.Select(&bahanList, query, prm, prm, rowPerPage, offset); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
|
||||
|
||||
return bahanList, totalPage, nil
|
||||
|
||||
}
|
||||
|
||||
func (su *MdBahanServices) GetMdBahanBreadCrumb(title string) (models.BreadCrumbV1, error) {
|
||||
|
||||
ret := models.BreadCrumbV1{
|
||||
Title: "Master Bahan",
|
||||
Item: []models.ItemBreadCrumbV1{
|
||||
{
|
||||
Item: "Dashboard",
|
||||
Url: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
Item: "Master",
|
||||
Url: "/dev/master",
|
||||
},
|
||||
{
|
||||
Item: "Bahan",
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
return ret, nil
|
||||
}
|
||||
func (su *MdBahanServices) GetListSampleStation(isFilter bool) ([]models.TmpSampleStation, error) {
|
||||
var stationList []models.TmpSampleStation
|
||||
query := `
|
||||
SELECT
|
||||
T_SampleStationID,
|
||||
T_SampleStationName
|
||||
FROM
|
||||
t_samplestation
|
||||
WHERE T_SampleStationIsActive = 'Y'
|
||||
`
|
||||
|
||||
if err := dbx.Handlex.Select(&stationList, query); err != nil {
|
||||
return nil, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
if isFilter {
|
||||
stationList = append(
|
||||
[]models.TmpSampleStation{{T_SampleStationID: 0, T_SampleStationName: "Semua"}}, stationList...)
|
||||
}
|
||||
|
||||
return stationList, nil
|
||||
}
|
||||
func (su *MdBahanServices) AddMdBahan(code string, name string, stationid string) (bool, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var datacek []models.Bahan
|
||||
qryCek := `SELECT T_BahanCode FROM t_bahan WHERE T_BahanCode = ? AND T_BahanIsActive = 'Y'`
|
||||
err := dbx.Handlex.Select(&datacek, qryCek, code)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error cek data by code",
|
||||
zap.String("code", code),
|
||||
zap.Any("datacek", datacek),
|
||||
)
|
||||
return false, fmt.Errorf("query cek failed")
|
||||
}
|
||||
if len(datacek) > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("Code already taken by another data",
|
||||
zap.String("code", code),
|
||||
)
|
||||
return false, fmt.Errorf("code sudah dipakai")
|
||||
}
|
||||
query := `
|
||||
INSERT INTO t_bahan(
|
||||
T_BahanT_SampleStationID,
|
||||
T_BahanCode,
|
||||
T_BahanName,
|
||||
T_BahanCreated,
|
||||
T_BahanCreatedUserID)
|
||||
VALUES(?,?,?, NOW(), 1)
|
||||
|
||||
`
|
||||
rst := dbx.Handlex.MustExec(query, stationid, code, name)
|
||||
_, err = rst.LastInsertId()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error Insert t bahan",
|
||||
zap.Any("code", err),
|
||||
)
|
||||
return false, fmt.Errorf("insert data failed")
|
||||
}
|
||||
|
||||
return true, nil
|
||||
}
|
||||
func (ug *MdBahanServices) GetMdBahanByID(id string) (models.Bahan, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
var data models.Bahan
|
||||
err := dbx.Handlex.Get(&data,
|
||||
`SELECT t_bahan.*,
|
||||
T_SampleStationID,
|
||||
T_SampleStationName
|
||||
FROM t_bahan
|
||||
JOIN
|
||||
t_samplestation
|
||||
ON T_BahanT_SampleStationID = T_SampleStationID
|
||||
AND T_BahanIsActive = 'Y'
|
||||
AND T_SampleStationIsActive = 'Y'
|
||||
WHERE T_BahanID = ? `, id)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get data bahan by id vs",
|
||||
zap.String("ID", id),
|
||||
zap.Error(err),
|
||||
)
|
||||
return data, fmt.Errorf("get bahan failed")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
func (su *MdBahanServices) EditMdBahan(id string, code string, name string, stationid string) (bool, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var datacek []models.Bahan
|
||||
qryCek := `SELECT T_BahanCode FROM t_bahan WHERE T_BahanCode = ? AND T_BahanIsActive = 'Y' AND T_BahanID <> ?`
|
||||
err := dbx.Handlex.Select(&datacek, qryCek, code, id)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error cek data by code",
|
||||
zap.String("code", code),
|
||||
zap.Any("datacek", datacek),
|
||||
)
|
||||
return false, fmt.Errorf("query cek failed")
|
||||
}
|
||||
if len(datacek) > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("Code already taken by another data",
|
||||
zap.String("code", code),
|
||||
)
|
||||
return false, fmt.Errorf("code sudah dipakai")
|
||||
}
|
||||
query := `
|
||||
UPDATE t_bahan SET
|
||||
T_BahanCode = ?,
|
||||
T_BahanName = ?,
|
||||
T_BahanT_SampleStationID = ?
|
||||
WHERE T_BahanID = ?
|
||||
`
|
||||
rst := dbx.Handlex.MustExec(query, code, name, stationid, id)
|
||||
_, err = rst.LastInsertId()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error edit t bahan",
|
||||
zap.Any("code", err),
|
||||
)
|
||||
return false, fmt.Errorf("edit data failed")
|
||||
}
|
||||
|
||||
return true, nil
|
||||
}
|
||||
func (su *MdBahanServices) DeleteMdBahan(id string) (bool, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
query := `
|
||||
UPDATE t_bahan
|
||||
SET T_BahanIsActive = 'N',
|
||||
T_BahanDeleted = NOW(),
|
||||
T_BahanDeletedUserID = '1'
|
||||
WHERE T_BahanID = ?
|
||||
`
|
||||
rst := dbx.Handlex.MustExec(query, id)
|
||||
_, err := rst.LastInsertId()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error edit t bahan",
|
||||
zap.Any("code", err),
|
||||
)
|
||||
return false, fmt.Errorf("edit data failed")
|
||||
}
|
||||
|
||||
return true, nil
|
||||
}
|
||||
878
services/dev/md.groupresult.services.go
Normal file
878
services/dev/md.groupresult.services.go
Normal file
@@ -0,0 +1,878 @@
|
||||
package dev_services
|
||||
|
||||
import (
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
"fmt"
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
dbx "cpone/package/database"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func NewServicesMdGroupResult(uStore db.AppStore) *ServicesMdGroupResult {
|
||||
|
||||
return &ServicesMdGroupResult{
|
||||
MdGroupResultStore: uStore,
|
||||
}
|
||||
}
|
||||
|
||||
type ServicesMdGroupResult struct {
|
||||
MdGroupResultStore db.AppStore
|
||||
}
|
||||
|
||||
func (su *ServicesMdGroupResult) GetMasterMenus() ([]MasterMenu, error) {
|
||||
|
||||
// dummyBreadcrumb := []Breadcrumb{
|
||||
// {
|
||||
// Name: "Dashboard",
|
||||
// Url: "/client/dashboard",
|
||||
// },
|
||||
// {
|
||||
// Name: "Front Office",
|
||||
// Url: "/client/usermanagement",
|
||||
// },
|
||||
// }
|
||||
|
||||
dummyMenu := []MasterMenu{
|
||||
// 1. Dashboard
|
||||
{
|
||||
ID: "1",
|
||||
ParentMenuID: "0",
|
||||
ParentMenuName: "Dashboard",
|
||||
ParentUrl: "/client/md/dashboard",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
{
|
||||
ChildrenParentID: "1",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Master User",
|
||||
ChildrenMenuURL: "/client/md/user",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// 2. Front Office
|
||||
{
|
||||
ID: "2",
|
||||
ParentMenuID: "1",
|
||||
ParentMenuName: "Front Office",
|
||||
ParentUrl: "#",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
{
|
||||
ChildrenParentID: "1",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Registrasi",
|
||||
ChildrenMenuURL: "/fo/registrasi",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// 3. Station
|
||||
{
|
||||
ID: "3",
|
||||
ParentMenuID: "2",
|
||||
ParentMenuName: "Station",
|
||||
ParentUrl: "#",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
{
|
||||
ChildrenParentID: "2",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Sample Station",
|
||||
ChildrenMenuURL: "/station/sample",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// 4. Management MCU
|
||||
{
|
||||
ID: "4",
|
||||
ParentMenuID: "3",
|
||||
ParentMenuName: "Management MCU",
|
||||
ParentUrl: "#",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
{
|
||||
ChildrenParentID: "3",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Setup MCU",
|
||||
ChildrenMenuURL: "/mcu/setup",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
{
|
||||
ChildrenParentID: "3",
|
||||
ChildrenMenuID: "2",
|
||||
ChildrenMenuName: "Pre-Registrasi",
|
||||
ChildrenMenuURL: "/mcu/preregister",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// 5. Master Data
|
||||
{
|
||||
ID: "5",
|
||||
ParentMenuID: "4",
|
||||
ParentMenuName: "Master Data",
|
||||
ParentUrl: "#",
|
||||
ParentIcon: "",
|
||||
Children: []ChildrenMenu{
|
||||
// * Master User
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "1",
|
||||
ChildrenMenuName: "Master User",
|
||||
ChildrenMenuURL: "/client/md/user",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Master User Group
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "2",
|
||||
ChildrenMenuName: "Master User Group",
|
||||
ChildrenMenuURL: "/client/md/usergroup",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Master Corporate
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "3",
|
||||
ChildrenMenuName: "Corporate",
|
||||
ChildrenMenuURL: "/client/md/corp",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Test
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "4",
|
||||
ChildrenMenuName: "Test",
|
||||
ChildrenMenuURL: "/client/md/test",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Bahan
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "5",
|
||||
ChildrenMenuName: "Bahan",
|
||||
ChildrenMenuURL: "/client/md/bahan",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Sample Type
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "6",
|
||||
ChildrenMenuName: "Sample Type",
|
||||
ChildrenMenuURL: "/client/sample/type",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Sample Station
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "7",
|
||||
ChildrenMenuName: "Sample Station",
|
||||
ChildrenMenuURL: "/station/sample",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Result Non Lab
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "8",
|
||||
ChildrenMenuName: "Result Non Lab",
|
||||
ChildrenMenuURL: "/client/md/resultnonlab",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Template Fisik
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "9",
|
||||
ChildrenMenuName: "Template Fisik",
|
||||
ChildrenMenuURL: "/client/md/template-fisik",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Pasien
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "10",
|
||||
ChildrenMenuName: "Pasien",
|
||||
ChildrenMenuURL: "/client/md/pasien",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Dokter
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "11",
|
||||
ChildrenMenuName: "Dokter",
|
||||
ChildrenMenuURL: "/client/md/dokter",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Paket
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "12",
|
||||
ChildrenMenuName: "Paket",
|
||||
ChildrenMenuURL: "/client/md/paket",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
|
||||
// * Harga Single
|
||||
{
|
||||
ChildrenParentID: "4",
|
||||
ChildrenMenuID: "13",
|
||||
ChildrenMenuName: "Harga Single",
|
||||
ChildrenMenuURL: "/client/md/hargasingle",
|
||||
// Breadcrumb: []Breadcrumb{
|
||||
// {
|
||||
// IDBreadcrumb: "1",
|
||||
// Title: "Dashboard",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "2",
|
||||
// Title: "Master",
|
||||
// IsActive: "N",
|
||||
// },
|
||||
// {
|
||||
// IDBreadcrumb: "3",
|
||||
// Title: "User Group",
|
||||
// IsActive: "Y",
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
return dummyMenu, nil
|
||||
}
|
||||
|
||||
func (ug *ServicesMdGroupResult) GetUserGroup() ([]models.UserGroup, error) {
|
||||
data := []models.UserGroup{
|
||||
{UserGroupID: 1, UserGroupKode: "A", UserGroupName: "UG1"},
|
||||
{UserGroupID: 2, UserGroupKode: "B", UserGroupName: "UG2"},
|
||||
{UserGroupID: 3, UserGroupKode: "C", UserGroupName: "UG3"},
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (su *ServicesMdGroupResult) GetMdGroupResultBreadcrumb(title string) (models.BreadCrumbV1, error) {
|
||||
var ret models.BreadCrumbV1
|
||||
|
||||
dummyBreadcrumb := []models.BreadCrumbV1{
|
||||
{
|
||||
Title: "Master User Group",
|
||||
Item: []models.ItemBreadCrumbV1{
|
||||
{
|
||||
Item: "Dashboard",
|
||||
Url: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
Item: "Master",
|
||||
Url: "/dev/master",
|
||||
},
|
||||
{
|
||||
Item: "User Group",
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
Title: "Master User",
|
||||
Item: []models.ItemBreadCrumbV1{
|
||||
{
|
||||
Item: "Dashboard",
|
||||
Url: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
Item: "Master",
|
||||
Url: "/dev/master",
|
||||
},
|
||||
{
|
||||
Item: "User",
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
Title: "Master Group Result",
|
||||
Item: []models.ItemBreadCrumbV1{
|
||||
{
|
||||
Item: "Dashboard",
|
||||
Url: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
Item: "Master",
|
||||
Url: "/dev/master",
|
||||
},
|
||||
{
|
||||
Item: "Group Result",
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, breadcrumb := range dummyBreadcrumb {
|
||||
// if utils.Contains(breadcrumb.Title, title) {
|
||||
// ret = breadcrumb
|
||||
// return ret, nil
|
||||
// }
|
||||
if breadcrumb.Title == title {
|
||||
ret = breadcrumb
|
||||
return ret, nil
|
||||
}
|
||||
}
|
||||
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
// (LAB, NONLAB, FISIK, DOCTOR)
|
||||
// hardcore group result resume mcu
|
||||
func (ug *ServicesMdGroupResult) GetMdGroupResultResumeMcu() ([]models.GroupResultResumeMcu, error) {
|
||||
data := []models.GroupResultResumeMcu{
|
||||
{
|
||||
ID: 1,
|
||||
Text: "LAB",
|
||||
},
|
||||
{
|
||||
ID: 2,
|
||||
Text: "NONLAB",
|
||||
},
|
||||
{
|
||||
ID: 3,
|
||||
Text: "FISIK",
|
||||
},
|
||||
{
|
||||
ID: 4,
|
||||
Text: "DOCTOR",
|
||||
},
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
// versi 2
|
||||
func (su *ServicesMdGroupResult) GetListMdGroupResult(search string, currentPage int, rowPerPage int) ([]models.GroupResult, int, error) {
|
||||
var groupresultList []models.GroupResult
|
||||
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
|
||||
var totalData int
|
||||
offset := (currentPage - 1) * rowPerPage
|
||||
|
||||
prm := "%" + strings.TrimSpace(search) + "%"
|
||||
querytotal := `
|
||||
SELECT COUNT(*)
|
||||
FROM group_result
|
||||
WHERE Group_ResultIsActive = 'Y'
|
||||
AND (Group_ResultName LIKE ? OR Group_ResultResumeMcu LIKE ?)
|
||||
`
|
||||
|
||||
logger.Info("QUERY SEARCH INITIAL TOTAL COUNT",
|
||||
zap.String("query search", querytotal),
|
||||
)
|
||||
|
||||
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
|
||||
query := `
|
||||
SELECT
|
||||
ROW_NUMBER() OVER () AS nomor,
|
||||
Group_ResultID,
|
||||
IFNULL(Group_ResultName, '') AS Group_ResultName,
|
||||
IFNULL(Group_ResultFlagPerTest, '') AS Group_ResultFlagPerTest,
|
||||
IFNULL(Group_ResultFlagNonLab, '') AS Group_ResultFlagNonLab,
|
||||
IFNULL(Group_ResultResumeMcu, '') AS Group_ResultResumeMcu,
|
||||
Group_ResultIsActive
|
||||
FROM group_result
|
||||
WHERE Group_ResultIsActive = 'Y'
|
||||
AND (Group_ResultName LIKE ? OR Group_ResultResumeMcu LIKE ?)
|
||||
ORDER BY Group_ResultID ASC
|
||||
LIMIT ? OFFSET ?
|
||||
`
|
||||
|
||||
logger.Info("QUERY SEARCH INITIAL",
|
||||
zap.String("query search", query),
|
||||
)
|
||||
|
||||
if err := dbx.Handlex.Select(&groupresultList, query, prm, prm, rowPerPage, offset); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
|
||||
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
|
||||
|
||||
return groupresultList, totalPage, nil
|
||||
}
|
||||
|
||||
// GET BY ID
|
||||
func (ug *ServicesMdGroupResult) GetMdGroupResultByID(id string) (models.GroupResult, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
var data models.GroupResult
|
||||
err := dbx.Handlex.Get(&data, `SELECT
|
||||
Group_ResultID,
|
||||
Group_ResultName,
|
||||
CASE
|
||||
WHEN Group_ResultFlagPerTest = 'Y' THEN 'on'
|
||||
ELSE Group_ResultFlagPerTest
|
||||
END AS Group_ResultFlagPerTest,
|
||||
CASE
|
||||
WHEN Group_ResultFlagNonLab = 'Y' THEN 'on'
|
||||
ELSE Group_ResultFlagNonLab
|
||||
END AS Group_ResultFlagNonLab,
|
||||
Group_ResultResumeMcu,
|
||||
Group_ResultIsActive
|
||||
FROM group_result
|
||||
WHERE Group_ResultID = ?`, id)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get data gr by id vs",
|
||||
zap.String("ID", id),
|
||||
zap.Error(err),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
// ADD DATA
|
||||
func (ug *ServicesMdGroupResult) AddMdGroupResult(groupresultname string, groupresultflagpertest string, groupresultflagnonlab string, groupresultresumemcu string) (models.GroupResult, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var data models.GroupResult
|
||||
var datacek []models.GroupResult
|
||||
// var groupresultflagpertestConvert string = ""
|
||||
// var groupresultflagnonlabConvert string = ""
|
||||
// var groupresultresumemcuConvert string = ""
|
||||
|
||||
prm := "%" + strings.TrimSpace(groupresultname) + "%"
|
||||
qryCek := `SELECT Group_ResultName FROM group_result WHERE Group_ResultName LIKE ? AND Group_ResultIsActive = 'Y'`
|
||||
err := dbx.Handlex.Select(&datacek, qryCek, prm)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error cek data by groupresultname",
|
||||
zap.String("groupresultname", groupresultname),
|
||||
zap.Any("datacek", datacek),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
if len(datacek) > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("Group Result Name already taken by another data",
|
||||
zap.String("groupresultname", groupresultname),
|
||||
)
|
||||
return data, fmt.Errorf("group result name sudah dipakai")
|
||||
}
|
||||
qry := `INSERT INTO group_result
|
||||
(
|
||||
Group_ResultName,
|
||||
Group_ResultFlagPerTest,
|
||||
Group_ResultFlagNonLab,
|
||||
Group_ResultResumeMcu
|
||||
)
|
||||
VALUES (
|
||||
?,
|
||||
?,
|
||||
?,
|
||||
?
|
||||
);`
|
||||
// time.Sleep(5 * time.Second)
|
||||
rst := dbx.Handlex.MustExec(qry, groupresultname, groupresultflagpertest, groupresultflagnonlab, groupresultresumemcu)
|
||||
insertedID, err := rst.LastInsertId()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error Insert group result",
|
||||
zap.Any("groupresultname", groupresultname),
|
||||
zap.Any("groupresultflagpertest", groupresultflagpertest),
|
||||
zap.Any("groupresultflagnonlab", groupresultflagnonlab),
|
||||
zap.Any("groupresultresumemcu", groupresultresumemcu),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
s := strconv.Itoa(int(insertedID))
|
||||
data, err = ug.GetMdGroupResultByID(s)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get usergroup by id",
|
||||
zap.Any("groupresultname", groupresultname),
|
||||
zap.Any("groupresultflagpertest", groupresultflagpertest),
|
||||
zap.Any("groupresultflagnonlab", groupresultflagnonlab),
|
||||
zap.Any("groupresultresumemcu", groupresultresumemcu),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
// EDIT DATA
|
||||
func (ug *ServicesMdGroupResult) EditMdGroupResult(id string, groupresultname string, groupresultflagpertest string, groupresultflagnonlab string, groupresultresumemcu string) (models.GroupResult, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var data models.GroupResult
|
||||
var datacek []models.GroupResult
|
||||
|
||||
prm := "%" + strings.TrimSpace(groupresultname) + "%"
|
||||
qryCek := `SELECT Group_ResultName FROM group_result WHERE Group_ResultName LIKE ? AND Group_ResultIsActive = 'Y' AND Group_ResultID <> ?`
|
||||
err := dbx.Handlex.Select(&datacek, qryCek, prm, id)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error cek data by code",
|
||||
zap.String("groupresultname", groupresultname),
|
||||
zap.Any("datacek", datacek),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
if len(datacek) > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("Code already taken by another data",
|
||||
zap.String("groupresultname", groupresultname),
|
||||
)
|
||||
return data, fmt.Errorf("group result name sudah dipakai")
|
||||
}
|
||||
|
||||
qry := `UPDATE group_result
|
||||
SET Group_ResultName = ?,
|
||||
Group_ResultFlagPerTest = ?,
|
||||
Group_ResultFlagNonLab = ?,
|
||||
Group_ResultResumeMcu = ?
|
||||
WHERE Group_ResultID = ?`
|
||||
// time.Sleep(5 * time.Second)
|
||||
rst := dbx.Handlex.MustExec(qry, groupresultname, groupresultflagpertest, groupresultflagnonlab, groupresultresumemcu, id)
|
||||
_, err = rst.RowsAffected()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error Update group result",
|
||||
zap.Any("groupresultname", groupresultname),
|
||||
zap.Any("groupresultflagpertest", groupresultflagpertest),
|
||||
zap.Any("groupresultflagnonlab", groupresultflagnonlab),
|
||||
zap.Any("groupresultresumemcu", groupresultresumemcu),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
data, err = ug.GetMdGroupResultByID(id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get group result by id",
|
||||
zap.Any("groupresultname", groupresultname),
|
||||
zap.Any("groupresultflagpertest", groupresultflagpertest),
|
||||
zap.Any("groupresultflagnonlab", groupresultflagnonlab),
|
||||
zap.Any("groupresultresumemcu", groupresultresumemcu),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
// DELETE DATA
|
||||
func (ug *ServicesMdGroupResult) DeleteMdGroupResult(id string) (models.GroupResult, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var data models.GroupResult
|
||||
qry := `UPDATE group_result
|
||||
SET Group_ResultIsActive = 'N'
|
||||
WHERE Group_ResultID = ?;`
|
||||
// time.Sleep(5 * time.Second)
|
||||
rst := dbx.Handlex.MustExec(qry, id)
|
||||
_, err := rst.RowsAffected()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error delete group result",
|
||||
zap.String("id", id),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
data, err = ug.GetMdGroupResultByID(id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get group result by id",
|
||||
zap.String("id", id),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
262
services/dev/md.natunit.services.go
Normal file
262
services/dev/md.natunit.services.go
Normal file
@@ -0,0 +1,262 @@
|
||||
package dev_services
|
||||
|
||||
import (
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
dbx "cpone/package/database"
|
||||
"fmt"
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func NewMdNatUnitServices(uStore db.AppStore) *MdNatUnitServices {
|
||||
return &MdNatUnitServices{
|
||||
MdNatUnitStore: uStore,
|
||||
}
|
||||
}
|
||||
|
||||
type MdNatUnitServices struct {
|
||||
MdNatUnitStore db.AppStore
|
||||
}
|
||||
|
||||
func (nu *MdNatUnitServices) GetListMdNatUnit(search string, currentPage int, rowPerPage int) ([]models.NatUnit, int, error) {
|
||||
var natUnitList []models.NatUnit
|
||||
var totalData int
|
||||
offset := (currentPage - 1) * rowPerPage
|
||||
prm := "%" + strings.TrimSpace(search) + "%"
|
||||
querytotal := `SELECT COUNT(*)
|
||||
FROM nat_unit
|
||||
WHERE Nat_UnitIsActive = 'Y'
|
||||
AND (Nat_UnitCode LIKE ? OR Nat_UnitName LIKE ?)`
|
||||
|
||||
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
|
||||
query := `SELECT ROW_NUMBER() OVER (ORDER BY Nat_UnitID DESC) AS nomor,
|
||||
Nat_UnitID,
|
||||
Nat_UnitCode,
|
||||
Nat_UnitName,
|
||||
Nat_UnitCreated,
|
||||
Nat_UnitLastUpdated,
|
||||
Nat_UnitIsActive
|
||||
FROM nat_unit
|
||||
WHERE Nat_UnitIsActive = 'Y'
|
||||
AND (Nat_UnitCode LIKE ? OR Nat_UnitName LIKE ?)
|
||||
ORDER BY Nat_UnitID DESC
|
||||
LIMIT ? OFFSET ?`
|
||||
|
||||
if err := dbx.Handlex.Select(&natUnitList, query, prm, prm, rowPerPage, offset); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
|
||||
|
||||
return natUnitList, totalPage, nil
|
||||
}
|
||||
|
||||
func (nu *MdNatUnitServices) GetMdNatUnitBreadCrumb(title string) (models.BreadCrumbV1, error) {
|
||||
var ret models.BreadCrumbV1
|
||||
|
||||
dummyBreadcrumb := []models.BreadCrumbV1{
|
||||
{
|
||||
Title: "Master Unit",
|
||||
Item: []models.ItemBreadCrumbV1{
|
||||
{
|
||||
Item: "Dashboard",
|
||||
Url: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
Item: "Master",
|
||||
Url: "/dev/master",
|
||||
},
|
||||
{
|
||||
Item: "Unit",
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
Title: "Master User",
|
||||
Item: []models.ItemBreadCrumbV1{
|
||||
{
|
||||
Item: "Dashboard",
|
||||
Url: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
Item: "Master",
|
||||
Url: "/dev/master",
|
||||
},
|
||||
{
|
||||
Item: "User",
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, breadcrumb := range dummyBreadcrumb {
|
||||
if breadcrumb.Title == title {
|
||||
ret = breadcrumb
|
||||
return ret, nil
|
||||
}
|
||||
}
|
||||
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (nu *MdNatUnitServices) GetMdNatUnitByID(id string) (models.NatUnit, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
var data models.NatUnit
|
||||
err := dbx.Handlex.Get(&data, `SELECT * FROM nat_unit
|
||||
WHERE Nat_UnitID = ?`, id)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get data unit by id",
|
||||
zap.String("ID", id),
|
||||
zap.Error(err),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (nu *MdNatUnitServices) AddMdNatUnit(code string, name string) (models.NatUnit, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var data models.NatUnit
|
||||
var datacek []models.NatUnit
|
||||
|
||||
qryCek := `SELECT Nat_UnitCode FROM nat_unit
|
||||
WHERE Nat_UnitCode = ? AND Nat_UnitIsActive = 'Y'`
|
||||
err := dbx.Handlex.Select(&datacek, qryCek, code)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error cek data by code",
|
||||
zap.String("code", code),
|
||||
zap.Any("datacek", datacek),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
if len(datacek) > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("Code already taken by another data",
|
||||
zap.String("code", code),
|
||||
)
|
||||
return data, fmt.Errorf("code sudah dipakai")
|
||||
}
|
||||
|
||||
qry := `INSERT INTO nat_unit
|
||||
(Nat_UnitCode,
|
||||
Nat_UnitName) VALUES(?,?)`
|
||||
rst := dbx.Handlex.MustExec(qry, code, name)
|
||||
insertedID, err := rst.LastInsertId()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error Insert natunit",
|
||||
zap.String("code", code),
|
||||
zap.String("name", name),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
s := strconv.Itoa(int(insertedID))
|
||||
data, err = nu.GetMdNatUnitByID(s)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get natunit by id",
|
||||
zap.String("code", code),
|
||||
zap.String("name", name),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (nu *MdNatUnitServices) EditMdNatUnit(id string, code string, name string) (models.NatUnit, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var data models.NatUnit
|
||||
var datacek []models.NatUnit
|
||||
|
||||
qryCek := `SELECT Nat_UnitCode FROM nat_unit
|
||||
WHERE Nat_UnitCode = ? AND Nat_UnitIsActive = 'Y' AND Nat_UnitID <> ?`
|
||||
err := dbx.Handlex.Select(&datacek, qryCek, code, id)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error cek data by code",
|
||||
zap.String("code", code),
|
||||
zap.Any("datacek", datacek),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
if len(datacek) > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("Code already taken by another data",
|
||||
zap.String("code", code),
|
||||
)
|
||||
return data, fmt.Errorf("code sudah dipakai")
|
||||
}
|
||||
|
||||
qry := `UPDATE nat_unit
|
||||
SET Nat_UnitCode = ?,
|
||||
Nat_UnitName = ?,
|
||||
Nat_UnitLastUpdated = NOW()
|
||||
WHERE Nat_UnitID = ?`
|
||||
rst := dbx.Handlex.MustExec(qry, code, name, id)
|
||||
_, err = rst.RowsAffected()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error Update natunit",
|
||||
zap.String("code", code),
|
||||
zap.String("name", name),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
data, err = nu.GetMdNatUnitByID(id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get natunit by id",
|
||||
zap.String("code", code),
|
||||
zap.String("name", name),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (nu *MdNatUnitServices) DeleteMdNatUnit(id string) (models.NatUnit, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var data models.NatUnit
|
||||
qry := `UPDATE nat_unit
|
||||
SET Nat_UnitLastUpdated = NOW(),
|
||||
Nat_UnitIsActive = 'N'
|
||||
WHERE Nat_UnitID = ?`
|
||||
rst := dbx.Handlex.MustExec(qry, id)
|
||||
_, err := rst.RowsAffected()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error delete nat unit",
|
||||
zap.String("id", id),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
data, err = nu.GetMdNatUnitByID(id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get nat unit by id",
|
||||
zap.String("id", id),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
277
services/dev/md.samplestation.services.go
Normal file
277
services/dev/md.samplestation.services.go
Normal file
@@ -0,0 +1,277 @@
|
||||
package dev_services
|
||||
|
||||
import (
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
dbx "cpone/package/database"
|
||||
"fmt"
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func NewMDSampleStationServices(uStore db.AppStore) *MDSampleStationServices {
|
||||
return &MDSampleStationServices{
|
||||
MDSampleStationStore: uStore,
|
||||
}
|
||||
}
|
||||
|
||||
type MDSampleStationServices struct {
|
||||
MDSampleStationStore db.AppStore
|
||||
}
|
||||
|
||||
func (ss *MDSampleStationServices) GetMDSampleStationBreadcrumb() (models.BreadCrumbV1, error) {
|
||||
var ret models.BreadCrumbV1
|
||||
|
||||
Breadcrumb := models.BreadCrumbV1{
|
||||
Title: "Master Sample Station",
|
||||
Item: []models.ItemBreadCrumbV1{
|
||||
{
|
||||
Item: "Dashboard",
|
||||
Url: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
Item: "Master",
|
||||
Url: "/dev/master",
|
||||
},
|
||||
{
|
||||
Item: "Sample Stasion",
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
ret = Breadcrumb
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (ss *MDSampleStationServices) GetListSampleStation(search string, currentPage int, rowPerPage int) ([]models.MDSampleStation, int, error) {
|
||||
var sampleStationList []models.MDSampleStation
|
||||
var totalData int
|
||||
|
||||
offset := (currentPage - 1) * rowPerPage
|
||||
prm := "%" + strings.TrimSpace(search) + "%"
|
||||
querytotal := `
|
||||
SELECT COUNT(*)
|
||||
FROM t_samplestation
|
||||
WHERE T_SampleStationIsActive = 'Y' AND (T_SampleStationCode LIKE ? OR T_SampleStationName LIKE ?)
|
||||
`
|
||||
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
|
||||
return nil, 0, fmt.Errorf("error query get total data: %v", err)
|
||||
}
|
||||
|
||||
query := `
|
||||
SELECT
|
||||
T_SampleStationID,
|
||||
T_SampleStationCode,
|
||||
T_SampleStationName,
|
||||
T_SampleStationNat_GroupID,
|
||||
T_SampleStationIsNonLab,
|
||||
T_SampleStationIsActive
|
||||
FROM t_samplestation
|
||||
WHERE T_SampleStationIsActive = 'Y'
|
||||
AND (T_SampleStationCode LIKE ? OR T_SampleStationName LIKE ?)
|
||||
ORDER BY T_SampleStationID ASC
|
||||
LIMIT ? OFFSET ?
|
||||
`
|
||||
if err := dbx.Handlex.Select(&sampleStationList, query, prm, prm, rowPerPage, offset); err != nil {
|
||||
return nil, 0, fmt.Errorf("error query database: %v", err)
|
||||
}
|
||||
|
||||
for i := range sampleStationList {
|
||||
if len(sampleStationList[i].T_SampleStationIsNonLab) == 0 {
|
||||
sampleStationList[i].T_SampleStationIsNonLab = "LAB"
|
||||
}
|
||||
}
|
||||
|
||||
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
|
||||
|
||||
return sampleStationList, totalPage, nil
|
||||
}
|
||||
|
||||
func (ss *MDSampleStationServices) GetMDSampleStationByID(id string) (models.MDSampleStation, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
var ret models.MDSampleStation
|
||||
q := `
|
||||
SELECT
|
||||
T_SampleStationID,
|
||||
T_SampleStationCode,
|
||||
T_SampleStationName,
|
||||
T_SampleStationNat_GroupID,
|
||||
T_SampleStationIsNonLab,
|
||||
T_SampleStationIsActive
|
||||
FROM t_samplestation
|
||||
WHERE T_SampleStationID = ?`
|
||||
|
||||
err := dbx.Handlex.Get(&ret, q, id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get data by ID", zap.String("ID", id), zap.Error(err))
|
||||
return ret, fmt.Errorf("query get data by id failed")
|
||||
}
|
||||
|
||||
if len(ret.T_SampleStationIsNonLab) == 0 {
|
||||
ret.T_SampleStationIsNonLab = "LAB"
|
||||
}
|
||||
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (ss *MDSampleStationServices) GetListGroupSampleStation() ([]models.MDSampleStationGroup, error) {
|
||||
data := []models.MDSampleStationGroup{
|
||||
{
|
||||
ID: 1,
|
||||
Group: "RADIODIAGNOSTIC",
|
||||
},
|
||||
{
|
||||
ID: 2,
|
||||
Group: "ELEKTROMEDIS",
|
||||
},
|
||||
{
|
||||
ID: 3,
|
||||
Group: "LAB",
|
||||
},
|
||||
{
|
||||
ID: 4,
|
||||
Group: "OTHERS",
|
||||
},
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (ss *MDSampleStationServices) AddMDSampleStation(code string, name string, group string) (models.MDSampleStation, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var data models.MDSampleStation
|
||||
|
||||
if strings.ToUpper(group) == "LAB" {
|
||||
group = " "
|
||||
}
|
||||
|
||||
// cek existing code & name
|
||||
var count int
|
||||
var prmCode = "%" + code + "%"
|
||||
var prmName = "%" + name + "%"
|
||||
q := `
|
||||
SELECT COUNT(*)
|
||||
FROM t_samplestation
|
||||
WHERE (T_SampleStationCode LIKE ? OR T_SampleStationName LIKE ?)
|
||||
AND T_SampleStationIsActive = 'Y'
|
||||
`
|
||||
err := dbx.Handlex.Get(&count, q, prmCode, prmName)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("cek duplicate", zap.Any("code", prmCode), zap.Any("name", prmName))
|
||||
return data, fmt.Errorf("query failed to cek duplicate")
|
||||
}
|
||||
if count > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("duplicate data", zap.Any("code", code), zap.Any("name", name))
|
||||
return data, fmt.Errorf("duplicate code or name")
|
||||
}
|
||||
|
||||
q = `
|
||||
INSERT INTO t_samplestation (
|
||||
T_SampleStationCode,
|
||||
T_SampleStationName,
|
||||
T_SampleStationIsNonLab,
|
||||
T_SampleStationCreated,
|
||||
T_SampleStationCreatedUserID
|
||||
) VALUES (?,?,?,NOW(),1);
|
||||
`
|
||||
rst := dbx.Handlex.MustExec(q, code, name, group)
|
||||
insertedID, err := rst.LastInsertId()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("error insert data", zap.Any("code", code), zap.Any("name", name), zap.Any("group", group))
|
||||
return data, fmt.Errorf("query failed insert data")
|
||||
}
|
||||
|
||||
s := strconv.Itoa(int(insertedID))
|
||||
|
||||
return ss.GetMDSampleStationByID(s)
|
||||
}
|
||||
|
||||
func (ss *MDSampleStationServices) EditMDSampleStation(id string, code string, name string, group string) (models.MDSampleStation, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var ret models.MDSampleStation
|
||||
|
||||
if strings.ToUpper(group) == "LAB" {
|
||||
group = " "
|
||||
}
|
||||
|
||||
// cek existeing code & name
|
||||
var count int
|
||||
var prmCode = "%" + code + "%"
|
||||
var prmName = "%" + name + "%"
|
||||
q := `
|
||||
SELECT COUNT(*)
|
||||
FROM t_samplestation
|
||||
WHERE (T_SampleStationCode LIKE ? OR T_SampleStationName LIKE ?)
|
||||
AND T_SampleStationIsActive = 'Y'
|
||||
AND T_SampleStationID <> ?
|
||||
`
|
||||
err := dbx.Handlex.Get(&count, q, prmCode, prmName, id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("cek duplicate", zap.Any("code", code), zap.Any("name", name))
|
||||
return ret, fmt.Errorf("query failed to cek duplicate")
|
||||
}
|
||||
if count > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("duplicate data", zap.Any("code", code), zap.Any("name", name))
|
||||
return ret, fmt.Errorf("duplicate code or name")
|
||||
}
|
||||
|
||||
// update data
|
||||
q = `
|
||||
UPDATE t_samplestation SET
|
||||
T_SampleStationCode = ?,
|
||||
T_SampleStationName = ?,
|
||||
T_SampleStationIsNonLab = ?,
|
||||
T_SampleStationLastUpdated = NOW(),
|
||||
T_SampleStationLastUpdatedUserID = 1
|
||||
WHERE T_SampleStationID = ?;
|
||||
`
|
||||
updt := dbx.Handlex.MustExec(q, code, name, group, id)
|
||||
_, err = updt.RowsAffected()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("error update data", zap.Any("code", code), zap.Any("name", name), zap.Any("group", group))
|
||||
return ret, fmt.Errorf("query failed to update data")
|
||||
}
|
||||
|
||||
return ss.GetMDSampleStationByID(id)
|
||||
}
|
||||
|
||||
func (ss *MDSampleStationServices) DeleteMDSampleStation(id string) (models.MDSampleStation, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var ret models.MDSampleStation
|
||||
|
||||
q := `
|
||||
UPDATE t_samplestation
|
||||
SET
|
||||
T_SampleStationIsActive = 'N',
|
||||
T_SampleStationDeleted = NOW(),
|
||||
T_SampleStationDeletedUserID = '1'
|
||||
WHERE T_SampleStationID = ?;
|
||||
`
|
||||
dlt := dbx.Handlex.MustExec(q, id)
|
||||
_, err := dlt.RowsAffected()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error delete sample station", zap.String("id", id))
|
||||
return ret, fmt.Errorf("query failed")
|
||||
}
|
||||
|
||||
ret, err = ss.GetMDSampleStationByID(id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get sample station id", zap.String("id", id))
|
||||
return ret, fmt.Errorf("query failed")
|
||||
}
|
||||
|
||||
return ret, nil
|
||||
}
|
||||
261
services/dev/md.usergroup.service.go
Normal file
261
services/dev/md.usergroup.service.go
Normal file
@@ -0,0 +1,261 @@
|
||||
package dev_services
|
||||
|
||||
import (
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
dbx "cpone/package/database"
|
||||
"fmt"
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func NewMdUserGroupServices(uStore db.AppStore) *MdUserGroupServices {
|
||||
|
||||
return &MdUserGroupServices{
|
||||
|
||||
MdUserGroupStore: uStore,
|
||||
}
|
||||
}
|
||||
|
||||
type MdUserGroupServices struct {
|
||||
MdUserGroupStore db.AppStore
|
||||
}
|
||||
|
||||
func (su *MdUserGroupServices) GetListMdUserGroup(search string, currentPage int, rowPerPage int) ([]models.UserGroupV1, int, error) {
|
||||
var userGroupList []models.UserGroupV1
|
||||
var totalData int
|
||||
offset := (currentPage - 1) * rowPerPage
|
||||
prm := "%" + strings.TrimSpace(search) + "%"
|
||||
querytotal := `
|
||||
SELECT COUNT(*)
|
||||
FROM m_usergroup
|
||||
WHERE M_UserGroupIsActive = 'Y'
|
||||
AND (M_UserGroupCode LIKE ? OR M_UserGroupName LIKE ?)
|
||||
`
|
||||
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
query := `
|
||||
SELECT
|
||||
ROW_NUMBER() OVER () AS nomor,
|
||||
M_UserGroupID,
|
||||
M_UserGroupCode,
|
||||
M_UserGroupName,
|
||||
M_UserGroupCreated,
|
||||
M_UserGroupLastUpdated,
|
||||
M_UserGroupIsActive
|
||||
FROM m_usergroup
|
||||
WHERE M_UserGroupIsActive = 'Y'
|
||||
AND (M_UserGroupCode LIKE ? OR M_UserGroupName LIKE ?)
|
||||
order by M_UserGroupID ASC
|
||||
LIMIT ? OFFSET ?
|
||||
`
|
||||
|
||||
if err := dbx.Handlex.Select(&userGroupList, query, prm, prm, rowPerPage, offset); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
|
||||
|
||||
return userGroupList, totalPage, nil
|
||||
}
|
||||
func (ug *MdUserGroupServices) GetMdUserGroupByID(id string) (models.UserGroupV1, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
|
||||
var data models.UserGroupV1
|
||||
err := dbx.Handlex.Get(&data, `SELECT * FROM m_usergroup
|
||||
WHERE M_UserGroupID = ?`, id)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get data ug by id vs",
|
||||
zap.String("ID", id),
|
||||
zap.Error(err),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (ug *MdUserGroupServices) AddMdUserGroup(code string, name string) (models.UserGroupV1, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var data models.UserGroupV1
|
||||
var datacek []models.UserGroupV1
|
||||
|
||||
qryCek := `SELECT M_UserGroupCode FROM m_usergroup WHERE M_UserGroupCode = ? AND M_UserGroupIsActive = 'Y'`
|
||||
err := dbx.Handlex.Select(&datacek, qryCek, code)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error cek data by code",
|
||||
zap.String("code", code),
|
||||
zap.Any("datacek", datacek),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
if len(datacek) > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("Code already taken by another data",
|
||||
zap.String("code", code),
|
||||
)
|
||||
return data, fmt.Errorf("code sudah dipakai")
|
||||
}
|
||||
qry := `INSERT INTO m_usergroup
|
||||
(M_UserGroupCode,
|
||||
M_UserGroupName)
|
||||
VALUES (?,?);`
|
||||
// time.Sleep(5 * time.Second)
|
||||
rst := dbx.Handlex.MustExec(qry, code, name)
|
||||
insertedID, err := rst.LastInsertId()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error Insert usergroup",
|
||||
zap.String("code", code),
|
||||
zap.String("name", name),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
s := strconv.Itoa(int(insertedID))
|
||||
data, err = ug.GetMdUserGroupByID(s)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get usergroup by id",
|
||||
zap.String("code", code),
|
||||
zap.String("name", name),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
func (ug *MdUserGroupServices) EditMdUsergroup(id string, code string, name string) (models.UserGroupV1, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var data models.UserGroupV1
|
||||
var datacek []models.UserGroupV1
|
||||
|
||||
qryCek := `SELECT M_UserGroupCode FROM m_usergroup WHERE M_UserGroupCode = ? AND M_UserGroupIsActive = 'Y' AND M_UserGroupID <> ?`
|
||||
err := dbx.Handlex.Select(&datacek, qryCek, code, id)
|
||||
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error cek data by code",
|
||||
zap.String("code", code),
|
||||
zap.Any("datacek", datacek),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
if len(datacek) > 0 {
|
||||
defer logger.Sync()
|
||||
logger.Error("Code already taken by another data",
|
||||
zap.String("code", code),
|
||||
)
|
||||
return data, fmt.Errorf("code sudah dipakai")
|
||||
}
|
||||
qry := `UPDATE m_usergroup
|
||||
SET M_UserGroupCode = ?,
|
||||
M_UserGroupName= ?
|
||||
WHERE M_UserGroupID = ?;`
|
||||
// time.Sleep(5 * time.Second)
|
||||
rst := dbx.Handlex.MustExec(qry, code, name, id)
|
||||
_, err = rst.RowsAffected()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error Update usergroup",
|
||||
zap.String("code", code),
|
||||
zap.String("name", name),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
data, err = ug.GetMdUserGroupByID(id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get usergroup by id",
|
||||
zap.String("code", code),
|
||||
zap.String("name", name),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (ug *MdUserGroupServices) DeleteMdUserGroup(id string) (models.UserGroupV1, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var data models.UserGroupV1
|
||||
qry := `UPDATE m_usergroup
|
||||
SET M_UserGroupIsActive = 'N',
|
||||
M_UserGroupDeleted = NOW(),
|
||||
M_UserGroupDeletedUserID = '1'
|
||||
WHERE M_UserGroupID = ?;`
|
||||
// time.Sleep(5 * time.Second)
|
||||
rst := dbx.Handlex.MustExec(qry, id)
|
||||
_, err := rst.RowsAffected()
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error delete usergroup",
|
||||
zap.String("id", id),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
|
||||
data, err = ug.GetMdUserGroupByID(id)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Error("Error get usergroup by id",
|
||||
zap.String("id", id),
|
||||
)
|
||||
return data, fmt.Errorf("QUERY_FAILED")
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
func (su *MdUserGroupServices) GetMdUserGroupBreadCrumb(title string) (models.BreadCrumbV1, error) {
|
||||
var ret models.BreadCrumbV1
|
||||
|
||||
dummyBreadcrumb := []models.BreadCrumbV1{
|
||||
{
|
||||
Title: "Master User Group",
|
||||
Item: []models.ItemBreadCrumbV1{
|
||||
{
|
||||
Item: "Dashboard",
|
||||
Url: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
Item: "Master",
|
||||
Url: "/dev/master",
|
||||
},
|
||||
{
|
||||
Item: "User Group",
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
Title: "Master User",
|
||||
Item: []models.ItemBreadCrumbV1{
|
||||
{
|
||||
Item: "Dashboard",
|
||||
Url: "/dev/dashboard",
|
||||
},
|
||||
{
|
||||
Item: "Master",
|
||||
Url: "/dev/master",
|
||||
},
|
||||
{
|
||||
Item: "User",
|
||||
Url: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, breadcrumb := range dummyBreadcrumb {
|
||||
if breadcrumb.Title == title {
|
||||
ret = breadcrumb
|
||||
return ret, nil
|
||||
}
|
||||
}
|
||||
|
||||
return ret, nil
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user