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

176 lines
8.9 KiB
PHP

<?php
$must_login = true ;
$require_path = '../../../' ;
$require_sub = '../../' ;
require( $require_sub.'header.php' ) ;
if ( $boolean_login ){
$status = '303' ;
$boolean_permission = false ;
if ( $staff_info['staff_tier_is_task'] == 'yes' ){
$boolean_permission = true ;
}
if ( $boolean_permission ){
$status = '300' ;
$push_staffid = [] ;
$is_updated = false ;
$task_id = $array['task_id'] ;
$joinstaffs = ( checkExists( $array['joinstaffs'] ) ? $array['joinstaffs'] : [] ) ;
if ( $array['task_type'] != '' && $array['title'] != '' && $array['difficulty'] != '' && $array['department_id'] != '' && $array['date_start'] != '' && $array['date_end'] != '' ){
$status = '260' ;
if ( $array['assigned_by'] > 0 || count( $joinstaffs ) > 0 ){
$status = '303' ;
$staff_tier = [] ;
$staff_tier = getRelatedTierID( 'no', $staff_info['staff_tier_level'] ) ;
$related_staffs = [] ;
if ( $array['assigned_by'] > 0 ){
$related_staffs[$array['assigned_by']] = $array['assigned_by'] ;
}
if ( count( $joinstaffs ) > 0 ){
foreach ( $joinstaffs as $k => $v ){
$related_staffs[$v['id']] = $v['id'] ;
}
}
$select_staff = $mysqli->query( "SELECT a.staff_id, a.staff_idno, a.staff_name, a.staff_shortname, a.staff_tier FROM staff a
WHERE a.deleted_at IS NULL AND ( a.staff_date_resigned >= '".date("Y-m-d",time())."' OR a.staff_date_resigned = '0000-00-00' OR a.staff_date_resigned IS NULL ) AND staff_id IN ( '".implode("', '", $related_staffs)."' ) AND staff_tier IN ( '".implode("', '", $staff_tier)."' )" ) ;
if ( $select_staff->num_rows == count( $related_staffs ) ){
$status = '201' ;
$count_todo_list = 0 ;
$count_todo_done = 0 ;
if ( checkExists($array['todo_list']) ){
if ( count($array['todo_list']) > 0 ){
foreach ( $array['todo_list'] as $k => $v ){
if ( $v['is_delete'] == 'no' ){
$count_todo_list++ ;
if ( $v['is_done'] == 'yes' ){
$count_todo_done++ ;
}
}
}
}
}
// check update status
$task_status = 'pending' ;
if ( $array['assigned_by'] > 0 && count( $joinstaffs ) > 0 ){
$task_status = 'assigned' ;
}
// check if task id exsits
$boolean_submit = false ;
if ( $task_id > 0 ){
$select = $mysqli->query( "SELECT * FROM task
WHERE deleted_at IS NULL AND task_id = '".$task_id."' AND created_by = '".$staff_info['staff_id']."' AND status IN ( 'pending', 'assigned', 'resubmit', 'progress', 'completed', 'confirmed' ) LIMIT 1" ) ;
if ( $select->num_rows > 0 ){
$status = '202' ;
$row = $select->fetch_assoc() ;
if ( $mysqli->query( "UPDATE task SET
task_type = '".$array['task_type']."',
title = '".$array['title']."',
department_id = '".$array['department_id']."',
assigned_by = '".$array['assigned_by']."',
difficulty = '".$array['difficulty']."',
date_start = '".$array['date_start']."',
date_end = '".$array['date_end']."',
remark = '".$array['remark']."',
incentive = '".$array['incentive']."',
todo_list = '".$count_todo_list."',
todo_done = '".$count_todo_done."'
WHERE task_id = '".$task_id."'" ) ) {
$boolean_submit = true ;
$is_updated = true ;
$push_staffid[$array['assigned_by']] = $array['assigned_by'] ;
}
}
}else{
$status = '203' ;
if ( $mysqli->query( "INSERT INTO task
( `task_type`, `title`, `department_id`, `created_branch_id`, `created_by`, `assigned_by`, `difficulty`, `date_start`, `date_end`, `remark`, `incentive`, `todo_list`, `todo_done`, `status` ) VALUES
( '".$array['task_type']."', '".$array['title']."', '".$array['department_id']."', '".$array['branch_id']."', '".$staff_info['staff_id']."', '".$array['assigned_by']."', '".$array['difficulty']."', '".$array['date_start']."', '".$array['date_end']."', '".$array['remark']."', '".$array['incentive']."', '".$count_todo_list."', '".$count_todo_done."', '".$task_status."' )" ) ){
$boolean_submit = true ;
$task_id = $mysqli->insert_id ;
$task_so = 'PT'.strPad( 6, $task_id ) ;
$mysqli->query( "UPDATE task SET
task_so = '".$task_so."'
WHERE task_id = '".$task_id."'" ) ;
$push_staffid[$staff_info['staff_id']] = $staff_info['staff_id'] ;
$push_staffid[$array['assigned_by']] = $array['assigned_by'] ;
}
}
if ( $boolean_submit ){
$status = '203' ;
// deleted all related staff
$mysqli->query( "DELETE FROM `task_joinstaff` WHERE task_id = '".$task_id."'" ) ;
if ( checkExists($joinstaffs) ){
foreach ( $joinstaffs as $k => $v ){
$mysqli->query( "INSERT INTO `task_joinstaff` ( `task_id`, `staff_id` ) VALUES ( '".$task_id."', '".$v['id']."' )" ) ;
$push_staffid[$v['id']] = $v['id'] ;
}
}
if ( checkExists($array['todo_list']) ){
if ( count($array['todo_list']) > 0 ){
foreach ( $array['todo_list'] as $k => $v ){
if ( $v['is_delete'] == 'no' ){
if ( $v['id'] > 0 ){
$mysqli->query( "UPDATE task_todo SET title = '".$v['title']."' WHERE todo_id = '".$v['id']."'" ) ;
}else{
$mysqli->query( "INSERT INTO task_todo ( `task_id`, `title`, `sortable` ) VALUES ( '".$task_id."', '".$v['title']."', '9999' )" ) ;
}
}else{
if ( $v['id'] > 0 ){
$mysqli->query( "UPDATE task_todo SET deleted_at = '".TODAYDATE."' WHERE todo_id = '".$v['id']."'" ) ;
}
}
}
}
}
$status = '200' ;
// push to notification
foreach ( $push_staffid as $k => $v ){
if ( $is_updated ){
pushToUserCron( 'task', $task_id, $v, 'Task Updated', 'Task ( '.$row['task_so'].' ) has been updated' ) ;
}else{
pushToUserCron( 'task', $task_id, $v, 'Task Created', 'New task ( '.$task_so.' ) appoint to you' ) ;
}
}
}
}
}
}
}
}
require( $require_sub.'footer.php' ) ;
?>