LAPTOP-V9RRD1TL\Michelle's Computer f8f8fcaf96 first commit
2025-07-21 21:38:17 +08:00

128 lines
5.7 KiB
PHP

<?php
$must_login = true ;
$require_path = '../../../' ;
$require_sub = '../../' ;
require( $require_sub.'header.php' ) ;
if ( $boolean_login ){
$status = '201' ;
// select all department
$department_list = [] ;
$select = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
WHERE a.deleted_at IS NULL AND b.lang = '".$array['lang']."'" ) ;
if ( $select->num_rows > 0 ){
while ( $row = $select->fetch_assoc() ){
$department_list[$row['department_id']] = $row['department_desc'] ;
}
}
// select all staff
$staff_list = [] ;
$select = $mysqli->query( "SELECT a.staff_id, a.staff_name, a.staff_shortname, a.staff_idno FROM staff a
WHERE a.deleted_at IS NULL" ) ;
if ( $select->num_rows > 0 ){
while ( $row = $select->fetch_assoc() ){
$staff_list[$row['staff_id']] = $row['staff_name'] . ' ( '.$row['staff_idno'].' )' ;
}
}
$search_query = '' ;
if ( $array['search'] != '' ){
$search_query .= " AND a.title LIKE '%".$array['search']."%'" ;
}
if ( $array['searchstatus'] != '' ){
// $search_query .= " AND a.status = '".$array['searchstatus']."'" ;
$search_status = [] ;
switch ( $array['searchstatus'] ){
case 'approved' :
$search_status = [ 'approved' ] ;
break ;
case 'rejected' :
$search_status = [ 'rejected' ] ;
break ;
default :
$search_status = [ 'pending', 'assigned', 'resubmit', 'progress', 'completed', 'confirmed' ] ;
}
$search_query .= " AND a.status IN ( '".implode("', '", $search_status)."' )" ;
}else{
$search_query .= " AND a.status != 'rejected'" ;
}
switch ( $array['searchincharge'] ){
case 'create' :
$search_query .= " AND a.created_by = '".$staff_info['staff_id']."'" ;
break ;
case 'assign' :
$search_query .= " AND a.assigned_by = '".$staff_info['staff_id']."'" ;
break ;
case 'execute' :
$search_query .= " AND EXISTS ( SELECT b.staff_id FROM task_joinstaff b WHERE a.task_id = b.task_id AND b.staff_id = '".$staff_info['staff_id']."' LIMIT 1 )" ;
break ;
}
$query = "SELECT a.task_id, a.task_type, a.title, a.department_id, a.created_by, a.assigned_by, a.difficulty, a.date_start, a.date_end, a.remark, a.todo_list, a.todo_done, a.status, a.created_at, a.updated_at FROM task a
WHERE a.deleted_at IS NULL AND ( a.created_branch_id = '".$array['branch_id']."' AND a.created_by = '".$staff_info['staff_id']."' OR a.assigned_by = '".$staff_info['staff_id']."' OR EXISTS ( SELECT b.staff_id FROM task_joinstaff b WHERE a.task_id = b.task_id AND b.staff_id = '".$staff_info['staff_id']."' LIMIT 1 ) ) " . $search_query ;
$mysqli_query = $mysqli->query( $query . " ORDER BY a.created_at DESC LIMIT " . getLimit( $current ) ) ;
if ( $mysqli_query->num_rows > 0 ){
$status = '200' ;
$list = [] ;
$task_ids = [] ;
while ( $row = $mysqli_query->fetch_assoc() ){
$task_type_name = '' ;
switch ( $row['task_type'] ){
case '1time' : $task_type_name = 'One Time Only' ; break ;
case 'daily' : $task_type_name = 'Daily Update' ; break ;
case 'weekly' : $task_type_name = 'Weekly Update' ; break ;
case 'monthly' : $task_type_name = 'Monthly Update' ; break ;
case 'yearly' : $task_type_name = 'Yearly Update' ; break ;
}
$row['title'] = dataFilter( $row['title'] ) ;
$row['task_type_name'] = $task_type_name ;
$row['expired'] = strtotime( $row['date_end'] ) ;
$row['is_warning'] = ( $row['date_end'] == TODAYDAY ? 'yes' : 'no' ) ;
$row['department'] = ( checkExists( $department_list[ $row['department_id'] ] ) ? $department_list[ $row['department_id'] ] : 'Cross Department' ) ;
$row['created_by_name'] = $staff_list[ $row['created_by'] ] ;
$row['assigned_by_name'] = checkExists( $staff_list[ $row['assigned_by'] ] ) ;
$row['progress'] = ( $row['todo_done'] > 0 ? ( numberFormat( ( $row['todo_done'] / $row['todo_list'] * 100 ), 2 ) + 0 ) : 0 ) ;
$list[$row['task_id']] = $row ;
$task_ids[] = $row['task_id'] ;
}
// join staff
$query_joinstaff = $mysqli->query( "SELECT * FROM task_joinstaff
WHERE task_id IN ( ".implode(', ', $task_ids)." )" ) ;
$joinstaffs = [] ;
if ( $query_joinstaff->num_rows > 0 ){
while ( $row_joinstaff = $query_joinstaff->fetch_assoc() ){
$joinstaffs[$row_joinstaff['task_id']][] = $staff_list[ $row_joinstaff['staff_id'] ] ;
}
}
// reset list
$new_list = [] ;
foreach ( $list as $k => $v ){
$assigned_by_name = ( checkExists( $joinstaffs[$v['task_id']] ) ? implode( ', ', $joinstaffs[$v['task_id']] ) : $v['assigned_by_name'] ) ;
$v['assigned_by_name'] = $assigned_by_name ;
$new_list[] = $v ;
}
$data['list'] = $new_list ;
}
}
require( $require_sub.'footer.php' ) ;
?>