simrsCore/Views/Shared/_Layout.cshtml
2025-12-08 00:09:09 +07:00

606 lines
26 KiB
Plaintext

@using Microsoft.EntityFrameworkCore
@using simrs.Models.simrs;
@using System.Data;
@using simrs.Scripts;
@inject simrscontext db
@{
var kodeLogin = User.Identity?.Name;
var logo = db.sys_app_inf.FirstOrDefault()?.sys_app_owner_logo;
var logoprint = db.sys_app_inf.FirstOrDefault()?.sys_app_owner_logo_print;
var owner = db.sys_app_inf.FirstOrDefault()?.sys_app_owner_infor;
var login = db.bil_login.Find(kodeLogin);
var empkd = login.bil_employee_kd;
var employee = db.bil_employee.Find(empkd);
employee.bil_biodata_kdNavigation = db.bil_biodata.Find(employee.bil_biodata_kd);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewBag.Title</title>
<!-- Favicons -->
<link href="@logoprint" rel="icon">
<link href="@logoprint" rel="apple-touch-icon">
<link rel="shortcut icon" type="image/x-icon" href="@logoprint">
<link rel="manifest" href="../../../assets/img/favicons/manifest.json">
<meta name="msapplication-TileImage" content="../../../assets/img/favicons/mstile-150x150.png">
<meta name="theme-color" content="#ffffff">
<!-- Google Fonts -->
<link href="https://fonts.gstatic.com" rel="preconnect">
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Nunito:300,300i,400,400i,600,600i,700,700i|Poppins:300,300i,400,400i,500,500i,600,600i,700,700i" rel="stylesheet">
<!-- Vendor CSS Files -->
<link href="~/assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="~/assets/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet">
<link href="~/assets/vendor/boxicons/css/boxicons.min.css" rel="stylesheet">
<link href="~/assets/vendor/quill/quill.snow.css" rel="stylesheet">
<link href="~/assets/vendor/quill/quill.bubble.css" rel="stylesheet">
<link href="~/assets/vendor/DataTables_2.3.1/datatables.css" rel="stylesheet" />
<link href="~/assets/vendor/jquery-ui-1.12.1/jquery-ui.css" rel="stylesheet" />
<script src="~/assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="~/assets/vendor/jquery 3.7.1/jquery-3.7.1.js"></script>
<script src="~/assets/vendor/DataTables_2.3.1/datatables.js"></script>
<script src="~/assets/vendor/jquery-ui-1.12.1/jquery-ui.js"></script>
<script src="~/assets/vendor/tinymce/tinymce.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<!-- Template Main CSS File -->
<link href="~/assets/css/style.css" rel="stylesheet" />
<!-- Template Main JS File -->
<script src="~/assets/js/globaljs.js"></script>
<style>
.UpPopWindow_loading {
width: 100%;
height: 100%;
position: fixed;
background: rgba(0,0,0,.7);
/*background-color:transparent;*/
top: 0;
left: 0;
z-index: 9999;
color: black;
}
.contentUpPopUpLoading {
width: 30%;
/*height: 100px;*/
background: #fff;
border-radius: 10px;
position: relative;
padding: 10px;
text-align: center;
margin: 15% auto;
color: black;
/*border:thin solid gray;*/
}
.close-button-loading {
color: #fff;
width: 20px;
height: 20px;
line-height: 19px;
background: #000;
border-radius: 50%;
border: 2px solid #fff;
display: block;
text-align: center;
text-decoration: none;
position: absolute;
top: -10px;
right: -10px;
cursor: pointer;
}
</style>
<!-- =======================================================
* Template Name: NiceAdmin
* Template URL: https://bootstrapmade.com/nice-admin-bootstrap-admin-html-template/
* Updated: Apr 20 2024 with Bootstrap v5.3.3
* Author: BootstrapMade.com
* License: https://bootstrapmade.com/license/
======================================================== -->
</head>
<body>
<!-- ======= Header ======= -->
<header id="header" class="header fixed-top d-flex align-items-center">
<div class="d-flex align-items-center justify-content-between">
<a href="/" class="logo d-flex align-items-center">
<img src="~/assets/img/logo-rsu-5.png" alt="" style="width:10rem;max-height:3rem !important">
<span class="d-none d-lg-block"></span>
</a>
<i class="bi bi-list toggle-sidebar-btn"></i>
</div><!-- End Logo -->
@*<div class="search-bar">
<form class="search-form d-flex align-items-center" method="POST" action="#">
<input type="text" name="query" placeholder="Search" title="Enter search keyword">
<button type="submit" title="Search"><i class="bi bi-search"></i></button>
</form>
</div>*@<!-- End Search Bar -->
<nav class="header-nav ms-auto">
<ul class="d-flex align-items-center">
<li class="nav-item d-block d-lg-none">
<a class="nav-link nav-icon search-bar-toggle " href="#">
<i class="bi bi-search"></i>
</a>
</li><!-- End Search Icon-->
<!--<li class="nav-item dropdown">
<a class="nav-link nav-icon" href="#" data-bs-toggle="dropdown">
<i class="bi bi-bell"></i>
<span class="badge bg-primary badge-number">4</span>
</a>-->
<!-- End Notification Icon -->
<!--<ul class="dropdown-menu dropdown-menu-end dropdown-menu-arrow notifications">
<li class="dropdown-header">
You have 4 new notifications
<a href="#"><span class="badge rounded-pill bg-primary p-2 ms-2">View all</span></a>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li class="notification-item">
<i class="bi bi-exclamation-circle text-warning"></i>
<div>
<h4>Lorem Ipsum</h4>
<p>Quae dolorem earum veritatis oditseno</p>
<p>30 min. ago</p>
</div>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li class="notification-item">
<i class="bi bi-x-circle text-danger"></i>
<div>
<h4>Atque rerum nesciunt</h4>
<p>Quae dolorem earum veritatis oditseno</p>
<p>1 hr. ago</p>
</div>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li class="notification-item">
<i class="bi bi-check-circle text-success"></i>
<div>
<h4>Sit rerum fuga</h4>
<p>Quae dolorem earum veritatis oditseno</p>
<p>2 hrs. ago</p>
</div>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li class="notification-item">
<i class="bi bi-info-circle text-primary"></i>
<div>
<h4>Dicta reprehenderit</h4>
<p>Quae dolorem earum veritatis oditseno</p>
<p>4 hrs. ago</p>
</div>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-footer">
<a href="#">Show all notifications</a>
</li>
</ul>-->
<!-- End Notification Dropdown Items -->
<!--</li>--><!-- End Notification Nav -->
<!--<li class="nav-item dropdown">
<a class="nav-link nav-icon" href="#" data-bs-toggle="dropdown">
<i class="bi bi-chat-left-text"></i>
<span class="badge bg-success badge-number">3</span>
</a>-->
<!-- End Messages Icon -->
<!--<ul class="dropdown-menu dropdown-menu-end dropdown-menu-arrow messages">
<li class="dropdown-header">
You have 3 new messages
<a href="#"><span class="badge rounded-pill bg-primary p-2 ms-2">View all</span></a>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li class="message-item">
<a href="#">
<img src="~/assets/img/messages-1.jpg" alt="" class="rounded-circle">
<div>
<h4>Maria Hudson</h4>
<p>Velit asperiores et ducimus soluta repudiandae labore officia est ut...</p>
<p>4 hrs. ago</p>
</div>
</a>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li class="message-item">
<a href="#">
<img src="~/assets/img/messages-2.jpg" alt="" class="rounded-circle">
<div>
<h4>Anna Nelson</h4>
<p>Velit asperiores et ducimus soluta repudiandae labore officia est ut...</p>
<p>6 hrs. ago</p>
</div>
</a>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li class="message-item">
<a href="#">
<img src="~/assets/img/messages-3.jpg" alt="" class="rounded-circle">
<div>
<h4>David Muldon</h4>
<p>Velit asperiores et ducimus soluta repudiandae labore officia est ut...</p>
<p>8 hrs. ago</p>
</div>
</a>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-footer">
<a href="#">Show all messages</a>
</li>
</ul>-->
<!-- End Messages Dropdown Items -->
<!--</li>--><!-- End Messages Nav -->
<li class="nav-item dropdown pe-3">
<a class="nav-link nav-profile d-flex align-items-center pe-0" href="#" data-bs-toggle="dropdown">
@{
if (login.bil_login_profile_picture != null)
{
var image = "data:" + login.bil_login_profile_picture_mime + ";base64," + Convert.ToBase64String(login.bil_login_profile_picture);
<img src="@image" alt="Profile" class="rounded-circle" id="imgHomeProfile" onclick="$('#modalViewPP').modal('show')" />
}
else if (!string.IsNullOrEmpty(employee.bil_employee_foto_path))
{
<img class="rounded-circle" alt="Profile" src="@employee.bil_employee_foto_path" onclick="$('#modalViewPP').modal('show')" id="imgHomeProfile" data-src="@employee.bil_employee_foto_path" />
}
else
{
<img src="~/assets/img/profile-img.jpg" alt="Profile" class="rounded-circle" id="imgHomeProfile">
}
}
<span class="d-none d-md-block dropdown-toggle ps-2">@employee?.bil_biodata_kdNavigation?.bil_biodata_nama</span>
</a><!-- End Profile Iamge Icon -->
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-arrow profile">
<li class="dropdown-header">
<h6>@employee.bil_biodata_kdNavigation.bil_biodata_nama</h6>
<span>@Html.DisplayFor(m => employee.hrd_profesi_kdNavigation.hrd_profesi_nama)</span>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li>
<a class="dropdown-item d-flex align-items-center" href="users-profile.html">
<i class="bi bi-person"></i>
<span>My Profile</span>
</a>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li>
<a class="dropdown-item d-flex align-items-center" href="users-profile.html">
<i class="bi bi-gear"></i>
<span>Account Settings</span>
</a>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li>
<a class="dropdown-item d-flex align-items-center" href="#!" onclick="fncChangePassword()">
<i class="bi bi-key"></i>
<span>Ganti Password</span>
</a>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li>
<a class="dropdown-item d-flex align-items-center" href="~/home/LogOff">
<i class="bi bi-box-arrow-right"></i>
<span>Sign Out</span>
</a>
</li>
</ul><!-- End Profile Dropdown Items -->
</li><!-- End Profile Nav -->
</ul>
</nav><!-- End Icons Navigation -->
</header><!-- End Header -->
<!-- ======= Sidebar ======= -->
@Html.Partial("_MainLeftMenu")
<!-- End Sidebar-->
<!-- ======= Main Content ======= -->
<main id="main" class="main">
<div class="pagetitle">
<h1>@ViewBag.header</h1>
</div><!-- End Page Title -->
<section class="section">
@RenderBody()
</section>
</main><!-- End #main -->
<!-- ======= Footer ======= -->
<footer id="footer" class="footer">
<div class="copyright">
&copy; Copyright <strong><span>@owner</span></strong>. All Rights Reserved
</div>
<div class="credits">
<!-- All the links in the footer should remain intact. -->
<!-- You can delete the links only if you purchased the pro version. -->
<!-- Licensing information: https://bootstrapmade.com/license/ -->
<!-- Purchase the pro version with working PHP/AJAX contact form: https://bootstrapmade.com/nice-admin-bootstrap-admin-html-template/ -->
Developed by IT @owner
</div>
</footer><!-- End Footer -->
<!-- Modal Toast Alert Syncronize-->
<div class="toast-container position-fixed top-0 end-0 p-3" style="z-index:9999;top:3.5rem !important" id="divContainerToast">
<div id="toastAlert" class="toast fade align-items-center text-white bg-primary border-0" role="alert" data-bs-autohide="true" aria-live="assertive" aria-atomic="true">
<div class="d-flex">
<div class="toast-body" id="noticeBody">
Hello, world! This is a toast message.
</div>
<button type="button" class="btn-close me-2 m-auto" style="color:white !important;" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
</div>
</div>
<!-- Loading -->
<div id="loading" class="UpPopWindow_loading">
<div id="contentUpPilihDokter" class="contentUpPopUpLoading" style="margin:15% auto !important">
<div id="loading_AS" class="close-button-loading">X</div>
<strong><label id="stage">SILAHKAN TUNGGU...</label> </strong>
<div id="contentUpPopUp-body_AS" style="height: auto;">
<!-- Growing Color spinnersr -->
<div class="spinner-grow text-primary" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<div class="spinner-grow text-secondary" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<div class="spinner-grow text-success" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<div class="spinner-grow text-danger" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<div class="spinner-grow text-warning" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<div class="spinner-grow text-info" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<div class="spinner-grow text-success" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<div class="spinner-grow text-dark" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<!-- End Growing Color spinners -->
<!-- Box Process Stage -->
<div class="row mt-2">
<div class="col-md-auto">
<label id="modallblstage"> </label>
</div>
<div class="col-md-auto">
<label id="modallblprocess"> </label>
</div>
<div class="col-md-auto">
<label id="modallblprocessmsg"></label>
</div>
<div class="col-md-12">
<div id="ProgressStripe" class="progress ">
<div id="modalProgressMessage" class="progress-bar progress-bar-striped bg-info progress-bar-animated" role="progressbar" style="width: 0%" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Modal ChangePassword -->
<div class="modal fade" id="modalChangePassword" data-bs-backdrop="static" tabindex="-1" role="dialog" aria-labelledby="modalChangePassword" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Ganti Password</h5>
<button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="input-group input-group-sm pb-1">
<span class="input-group-text ">Type New Password</span>
<input type="password" class="form-control" id="newPassword" data-newpass />
</div>
<div class="input-group input-group-sm pb-1">
<span class="input-group-text col-md-3">Re-Type</span>
<input type="password" class="form-control" id="RenewPassword" data-newpass />
</div>
</div>
</div>
<div class="modal-footer">
<div class="btn-group">
<button class="btn btn-primary" type="button" id="btnOkChgPass"><i class="bi bi-save"></i> Simpan</button>
<button class="btn btn-danger" type="button" data-bs-dismiss="modal" id="btnCloseChgPass"><i class="bi bi-x-lg"></i> Close</button>
</div>
</div>
</div>
</div>
</div>
<a href="#" class="back-to-top d-flex align-items-center justify-content-center"><i class="bi bi-arrow-up-short"></i></a>
<!-- Modal View Profile Picture -->
<div class="modal fade" id="modalViewPP" tabindex="-1" role="dialog" aria-labelledby="modalChangePassword" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-scrollable" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">View Profile</h5>
<button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<img src="" id="imgModalViewPP" style="max-width: 100%" />
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
<!-- Vendor JS Files -->
<script src="~/assets/vendor/quill/quill.js"></script>
<script src="~/assets/vendor/fontawesome-6.1.1/js/all.min.js"></script>
<!-- Template Main JS File -->
<script src="~/assets/js/main.js"></script>
<script>
$('#loading').hide();
$("#tglawal").datepicker({
dateFormat: "yy-mm-dd",
onSelect: function (date) {
$("#tglakhir").val("");
tglakhir.datepicker("option", "minDate", date);
}
});
var tglakhir = $("#tglakhir").datepicker({
dateFormat: "yy-mm-dd"
});
function addToast(type, body) {
let id = new Date().getTime();
var decoration = "";
if (type == 200) {
decoration = "bg-success text-light";
}
else if (type == 500) {
decoration = "bg-danger text-light";
}
else if (type == 404) {
decoration = "bg-warning"
}
else if (type == "error") {
decoration = "bg-danger text-light";
}
else if (type == "success") {
decoration = "bg-success text-light";
}
else {
decoration = "bg-warning"
}
let toast = '<div class="toast" data-bs-delay="3000" role="alert" aria-live="assertive" aria-atomic="true" data-dynamic-toast id=' + id + '>' +
'<div class="toast-header ' + decoration + '">' +
'<strong class="me-auto">' + type + '</strong>' +
'<small class="text-muted">just now</small>' +
'<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>' +
'</div>' +
'<div class="toast-body">' + body
'</div>' +
'</div>' +
'</div>';
let toastNode = document.createElement('div')
toastNode.setAttribute("name", id);
toastNode.setAttribute("class", "mt-2");
toastNode.innerHTML = toast
document.getElementById('divContainerToast').appendChild(toastNode);
$(`#${id}`).toast('show');
$(`#${id}`).on('hidden.bs.toast', function (e) {
$("div[name='" + id + "']").remove();
});
}
function fncChangePassword() {
$("#modalChangePassword").modal("show");
}
$("#RenewPassword").on('keypress keydown keyup change', function () {
if ($(this).val() != $("#newPassword").val()) {
$("#RenewPassword").attr("style", "background-color: pink;");
}
else {
$("#RenewPassword").attr("style", "background-color: unset;")
}
});
$("#btnOkChgPass").click(function () {
$.post("/bil_login/GantiPassword",
{
newPassword: $("#newPassword").val()
}, function (result) {
try {
var inString = jQuery.parseJSON(result);
addToast(inString.code, inString.message);
if (inString.code == 200) {
window.location.href = '/home/logoff';
}
}
catch (e) {
addToast("error", e);
}
}).done().fail(function (e) {
addToast("error", e.statusText);
});
})
$("#btnCloseChgPass").click(function () {
$("#newPassword").val("");
$("#RenewPassword").val("");
});
$('#modalViewPP').on('show.bs.modal', function (e) {
$("#imgModalViewPP").attr("src", $("#imgHomeProfile").attr("src"));
});
$('#modalViewPP').on('hide.bs.modal', function (e) {
$("#imgModalViewPP").removeAttr("src");
});
</script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>