worknova.manus/page-dashboard-ckm.php
LAPTOP-V9RRD1TL\Michelle's Computer f8f8fcaf96 first commit
2025-07-21 21:38:17 +08:00

474 lines
16 KiB
PHP

<?php
include 'connect/cms-config.php' ;
include 'requires/function.php' ;
$user_permission_check = 'all-permission' ;
include 'requires/session.php' ;
// keep parameter in value
$page = escapeString($_GET['page']) ;
$type = escapeString($_GET['type']) ;
// active page
$active_main_menu = 'dashboard' ;
$active_menu = 'dashboard' ;
// check query exsits
$mysqli_page = $mysqli->query("SELECT post_id, post_title, post_content FROM system_post
WHERE post_type = 'page-dashboard' AND post_categories = 'page-dashboard' AND post_trash = '0' LIMIT 1") ;
// check if page exists
if ($mysqli_page->num_rows == 0){
// insert into database
$mysqli->query("INSERT INTO system_post
(post_type, post_categories, post_date, post_modified, post_trash) VALUES
('page-dashboard', 'page-dashboard', '".TODAYDATE."', '".TODAYDATE."', '0')") ;
// set page id in variable s
$page = $mysqli->insert_id ;
// refresh page
header("Location:page-dashboard.php?page=".$page."") ;
exit ;
}else{
// set query as array
$row_page = $mysqli_page->fetch_array(MYSQLI_ASSOC) ;
// set page id in variable
$page = $row_page['post_id'] ;
// update database
if ( $boolean_admin && isset($type) && $type == 'edit' && $_POST['hide'] == 1 ){
// keep value in variable
$page_title = escapeString($_POST['title']) ;
$page_title = ($page_title != '' ? $page_title : '') ;
$page_content = resetString(escapeString($_POST['content'])) ;
// check if name already exists.
$check_status = checkTitle($page_title, $page) ;
$title = $check_status['title'] ;
$status = $check_status['status'] ;
// update database
$mysqli->query("UPDATE system_post SET
post_title = '".$page_title."',
post_content = '".$page_content."',
post_status = '".$status."',
post_link = '".$title."',
post_modified = '".TODAYDATE."',
post_trash = '0'
WHERE post_id = '".$page."'") ;
// refresh page
$_SESSION['system_result'] = 'success-updated' ;
header("Location:page-dashboard.php?page_mode=edit&page=".$page."&success=1") ;
exit ;
}
}
// start header here
include 'requires/page_header.php' ;
include 'requires/page_top.php' ;
?>
<link rel="stylesheet" href="<?= $require_path ?>css/dashboard.css" />
<div class="warper container-fluid">
<div class="page-header"><h1><?= $lang['Dashboard'] ?> <small><?= $lang['page'] ?></small></h1></div>
<?php
if ($_SESSION['system_result'] != ''){
switch($_SESSION['system_result']){
case 'success-updated' :
echo '<div class="result_success">'.$lang['thank_you_your_dashboard_has_been_updated'].'</div>' ;
break ;
}
unset($_SESSION['system_result']) ;
}
?>
<?php if ( $_SESSION['system_permission'] == 'admin' ){
// all not yet assigned staff
$mysqli_staff_noassigned = $mysqli->query( "SELECT COUNT(staff_id) as total FROM staff
WHERE ( staff_date_resigned IS NULL || staff_date_resigned = '0000-00-00' || staff_date_resigned >= '".TODAYDATE."' ) AND deleted_at IS NULL AND branch_id = '0'" ) ;
$row_staff_noassigned = $mysqli_staff_noassigned->fetch_assoc() ;
$total_staff_noassigned = $row_staff_noassigned['total'] ;
// all active staff
$mysqli_staff = $mysqli->query( "SELECT COUNT(staff_id) as total FROM staff
WHERE ( staff_date_resigned IS NULL || staff_date_resigned = '0000-00-00' || staff_date_resigned >= '".TODAYDATE."' ) AND deleted_at IS NULL AND branch_id != '0'" ) ;
$row_staff = $mysqli_staff->fetch_assoc() ;
$total_staff = $row_staff['total'] ;
// total branch
$mysqli_branch = $mysqli->query( "SELECT COUNT(branch_id) as total FROM branch
WHERE deleted_at IS NULL " ) ;
$row_staff_noassigned = $mysqli_staff_noassigned->fetch_assoc() ;
$row_branch = $mysqli_branch->fetch_assoc() ;
$total_branch = $row_branch['total'] ;
// passport / permit expiry within 2 months
$date_startmonth = TODAYDAY . ' 00:00:00' ;
$date_endmonth = date( "Y-m-d", strtotime("+2 months") ) . ' 23:59:59' ;
$mysqli_passport = $mysqli->query( "SELECT COUNT(staff_id) as total FROM staff
WHERE ( staff_date_resigned IS NULL || staff_date_resigned = '0000-00-00' || staff_date_resigned >= '".TODAYDATE."' ) AND deleted_at IS NULL AND branch_id != '0' AND country_id != '1' AND ( staff_permit_end BETWEEN '".$date_startmonth."' AND '".$date_endmonth."' OR staff_passportexpired BETWEEN '".$date_startmonth."' AND '".$date_endmonth."' )" ) ;
$row_passport = $mysqli_passport->fetch_assoc() ;
$total_passport = $row_passport['total'] ;
$dashboards = [
[
'title' => 'Not Yet Assign Staff',
'value' => $total_staff_noassigned
],
[
'title' => 'Active Staff',
'value' => $total_staff
],
[
'title' => 'Total Branch',
'value' => $total_branch
],
[
'title' => 'Permit & Passport Within 2 Months',
'value' => $total_passport
]
] ;
?>
<ul class="dashboard-report-ul">
<?php foreach ( $dashboards as $k => $v ){ ?>
<li>
<div class="dashboard-report-div">
<div class="card border-3 border-top border-top-primary">
<div class="card-body">
<h5 class="text-muted"><?= $v['title'] ?></h5>
<div class="metric-value d-inline-block">
<h1 class="mb-1"><?= $v['value'] ?></h1>
</div>
<!-- <div class="metric-label d-inline-block float-right text-success font-weight-bold">
<span class="icon-circle-small icon-box-xs text-success bg-success-light">
<i class="fa fa-fw fa-arrow-up"></i>
</span>
<span class="ml-1">5.86%</span>
</div> -->
</div>
</div>
</div>
</li>
<?php } ?>
</ul>
<?php } ?>
<script>
window.onload = function() {
// pie chart
var piechart = new CanvasJS.Chart("piechartContainer", {
animationEnabled: true,
title: {
text: "Desktop Search Engine Market Share - 2016"
},
data: [{
type: "pie",
startAngle: 240,
yValueFormatString: "##0.00\"%\"",
indexLabel: "{label} {y}",
dataPoints: [
{y: 79.45, label: "Google"},
{y: 7.31, label: "Bing"},
{y: 7.06, label: "Baidu"},
{y: 4.91, label: "Yahoo"},
{y: 1.26, label: "Others"}
]
}]
});
piechart.render() ;
// bar chart
var barchart = new CanvasJS.Chart("barchartContainer", {
animationEnabled: true,
title:{
text: "Olympic Medals of all Times (till 2016 Olympics)"
},
axisY: {
title: "Medals",
includeZero: true
},
legend: {
cursor:"pointer",
itemclick : toggleDataSeries
},
toolTip: {
shared: true,
content: toolTipFormatter
},
data: [{
type: "bar",
showInLegend: true,
name: "Gold",
color: "gold",
dataPoints: [
{ y: 243, label: "Italy" },
{ y: 236, label: "China" },
{ y: 243, label: "France" },
{ y: 273, label: "Great Britain" },
{ y: 269, label: "Germany" },
{ y: 196, label: "Russia" },
{ y: 1118, label: "USA" }
]
},
{
type: "bar",
showInLegend: true,
name: "Silver",
color: "silver",
dataPoints: [
{ y: 212, label: "Italy" },
{ y: 186, label: "China" },
{ y: 272, label: "France" },
{ y: 299, label: "Great Britain" },
{ y: 270, label: "Germany" },
{ y: 165, label: "Russia" },
{ y: 896, label: "USA" }
]
},
{
type: "bar",
showInLegend: true,
name: "Bronze",
color: "#A57164",
dataPoints: [
{ y: 236, label: "Italy" },
{ y: 172, label: "China" },
{ y: 309, label: "France" },
{ y: 302, label: "Great Britain" },
{ y: 285, label: "Germany" },
{ y: 188, label: "Russia" },
{ y: 788, label: "USA" }
]
}]
});
barchart.render();
function toolTipFormatter(e) {
var str = "";
var total = 0 ;
var str3;
var str2 ;
for (var i = 0; i < e.entries.length; i++){
var str1 = "<span style= \"color:"+e.entries[i].dataSeries.color + "\">" + e.entries[i].dataSeries.name + "</span>: <strong>"+ e.entries[i].dataPoint.y + "</strong> <br/>" ;
total = e.entries[i].dataPoint.y + total;
str = str.concat(str1);
}
str2 = "<strong>" + e.entries[0].dataPoint.label + "</strong> <br/>";
str3 = "<span style = \"color:Tomato\">Total: </span><strong>" + total + "</strong><br/>";
return (str2.concat(str)).concat(str3);
}
function toggleDataSeries(e) {
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
e.dataSeries.visible = false;
}
else {
e.dataSeries.visible = true;
}
barchart.render();
}
}
</script>
<div class="dashboard_section">
<div class="row dashboard_chart">
<div class="col-sm-6">
<div id="piechartContainer" class="chart_div"></div>
</div>
<div class="col-sm-6">
<div id="barchartContainer" class="chart_div"></div>
</div>
</div>
</div>
<?php if ( permissionCheck($row_user, 'dashboard-view') ){ ?>
<div class="panel panel-default">
<div class="panel-heading">Monthly Achievement</div>
<div class="panel-body">
<iframe id="dashboard-iframe" src="page-dashboard-iframe.php" style="border:none; width: 100%;">
</iframe>
</div>
</div>
<?php
$array_table = [ [
'title' => 'TASK',
'query' => "SELECT task_id FROM task a
WHERE a.deleted_at IS NULL and a.status in ('pending', 'assigned', 'resubmit', 'progress') " . $user_branch_permission_sql_task,
'url' => "task.php?search_type%5B%5D=pending&search_type%5B%5D=assigned&search_type%5B%5D=resubmit&search_type%5B%5D=progress&page_mode=list"
], [
'title' => 'SUGGESTION',
'query' => "SELECT a.suggestion_id FROM suggestion a
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
WHERE a.deleted_at IS NULL and a.status IN ( 'pending' ) " . $user_branch_permission_sql_b,
'url' => "app-suggestion.php?page_mode=list&search_type=pending"
], [
'title' => 'REQUEST',
'query' => "SELECT a.request_id FROM request a
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
WHERE a.deleted_at IS NULL and a.status IN ('pending', 'awaiting-arrival', 'awaiting-collection') " . $user_branch_permission_sql_b,
'url' => "app-request.php?page_mode=list&search_type%5B%5D=pending&search_type%5B%5D=awaiting-arrival&search_type%5B%5D=awaiting-collection"
], [
'title' => 'GRIEVANCE',
'query' => "SELECT a.grievance_id FROM grievance a
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
WHERE a.deleted_at IS NULL and a.status IN ( 'pending' ) " . $user_branch_permission_sql_b,
'url' => "app-grievance.php?page_mode=list&search_type=pending"
], [
'title' => 'Redeem',
'query' => "SELECT a.redeem_id as item_file FROM staff_redeem a
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
WHERE a.deleted_at IS NULL and a.status IN ('pending', 'awaiting-arrival', 'awaiting-collection') " . $user_branch_permission_sql_b,
'url' => "app-redeem.php?page_mode=all&search_type%5B%5D=pending&search_type%5B%5D=awaiting-arrival&search_type%5B%5D=awaiting-collection"
], [
'title' => 'ASSOCIATION',
'query' => "SELECT a.view_id FROM staff_association a
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
WHERE a.deleted_at IS NULL and a.status IN ( 'pending' ) " . $user_branch_permission_sql_b,
'url' => "app-association.php?page_mode=view_all&search_type[]=pending"
], [
'title' => 'TRAINING',
'query' => "SELECT a.view_id FROM staff_training a
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
WHERE a.deleted_at IS NULL AND a.status IN ( 'pending' ) " .$user_branch_permission_sql_b,
'url' => "app-training.php?page_mode=view_all&search_type[]=pending"
], [
'title' => 'HEADCOUNT',
'query' => "SELECT a.formheadcount_id FROM formheadcount a
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
WHERE a.deleted_at IS NULL AND a.status IN ( 'pending' ) " . $user_branch_permission_sql_b,
'url' => "app-form-headcount.php?page_mode=list&search_type=pending"
], [
'title' => 'NOMINATION',
'query' => "SELECT a.formnomination_id FROM formnomination a
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
WHERE a.deleted_at IS NULL AND a.status IN ( 'pending' ) ".$user_branch_permission_sql_b,
'url' => "app-form-nomination.php?page_mode=list&search_type=pending"
], [
'title' => 'RESIGNATION',
'query' => "SELECT a.formresignation_id FROM formresignation a
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
WHERE a.deleted_at IS NULL AND a.status IN ( 'pending' ) ".$user_branch_permission_sql_b,
'url' => "app-form-resignation.php?page_mode=list&search_type=pending"
]
] ;
?>
<div class="panel panel-default">
<div class="panel-heading">Current Pending List</div>
<div class="panel-body" style="display: flex; flex-wrap: wrap;">
<?php foreach ( $array_table as $k_table => $v_table ) {
$select_table = $mysqli->query( $v_table['query'] ) ;
$count_table = $select_table->num_rows ;
?>
<table cellpadding="0" cellspacing="0" border="0" class="responsive table table-striped table-bordered dashboard-tab">
<thead>
<tr>
<th><?= $v_table['title'] ?></th>
</tr>
</thead>
<tbody>
<tr class="odd gradeX">
<td class="border_none">
<a target="_blank" href="<?= $v_table['url'] ?>" style="text-decoration:none;">
<div style="height: 100%;display: flex;position: relative;justify-content: center;align-items: center;">
<h1 style="font-size:70px;padding:0;margin:0;"><?= $count_table ?></h1>
</div>
</a>
</td>
</tr>
</tbody>
</table>
<?php } ?>
</div>
</div>
<?php } ?>
<?php if ( permissionCheck($row_user, 'dashboard-view') ){ ?>
<div class="panel panel-default">
<div class="panel-heading">Weekly Chart Report</div>
<div class="panel-body">
<iframe id="chart_iframe" src="chart_iframe.php" style="border:none; height: 100vh; width: 100%;"></iframe>
<script>
$(document).ready(function(){
$('#dashboard-iframe').load(function() {
setIframeHeight2('dashboard-iframe') ;
});
$('#chart_iframe').load(function() {
setIframeHeight('chart_iframe') ;
});
}) ;
</script>
</div>
</div>
<?php } ?>
<div class="panel panel-default">
<div class="panel-heading"></div>
<div class="panel-body">
<form method="post" class="form-horizontal" id="quotationForm" action="page-dashboard.php?page=<?= $page ?>&type=edit" novalidate="novalidate">
<div class="form-group">
<div class="col-sm-2 control-label">Title</div>
<div class="col-sm-7">
<input type="text" name="title" class="form-control ui-search-input" value="<?= dataFilter($row_page['post_title']) ?>" <?= ($boolean_admin ? '' : 'readonly') ?> placeholder="Title" />
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label"><?= $lang['Description'] ?></div>
<div class="col-sm-7">
<textarea name="content" class="content" id="editor1" <?= ( $boolean_admin ? '' : 'readonly' ) ?> rows="10" cols="80"><?= dataFilter($row_page['post_content']) ?></textarea>
<script> CKEDITOR.replace("editor1") ; </script>
</div>
</div>
<?php if ( $boolean_admin ){ ?>
<div class="form-group">
<div class="col-sm-2 control-label"></div>
<div class="col-sm-7">
<button type="submit" class="btn btn-purple" style="float:right">Submit</button>
<input type="hidden" name="page_status" value="edit">
<input type="hidden" name="hide" value="1">
</div>
</div>
<?php } ?>
</form>
</div>
</div>
</div>
<?php
// footer
include 'requires/page_footer.php' ;
?>