초기 커밋: 5130 레거시 시스템
- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경 - DB 연결 하드코딩 → .env 기반으로 변경 - MySQL strict mode DATE 오류 수정
This commit is contained in:
130
eworks/load_eworkslist.php
Normal file
130
eworks/load_eworkslist.php
Normal file
@@ -0,0 +1,130 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
|
||||
$pdo = db_connect();
|
||||
|
||||
// 결재라인을 설정하기 위해 사용자 정보를 배열에 저장
|
||||
$eworks_lv_arr = array();
|
||||
$part_arr = array();
|
||||
$position_arr = array();
|
||||
$name_arr = array();
|
||||
$id_arr = array();
|
||||
|
||||
if(!empty($DB))
|
||||
{
|
||||
try{
|
||||
$sql="select * from $DB.member WHERE division IS NOT NULL ";
|
||||
$stmh=$pdo->prepare($sql);
|
||||
$stmh->execute();
|
||||
|
||||
while($row = $stmh->fetch(PDO::FETCH_ASSOC)) {
|
||||
array_push($name_arr, $row["name"]);
|
||||
array_push($id_arr, $row["id"]);
|
||||
array_push($eworks_lv_arr, $row["eworks_lv"]);
|
||||
array_push($part_arr, $row["division"]);
|
||||
array_push($position_arr, $row["position"]);
|
||||
}
|
||||
} catch (PDOException $Exception) {
|
||||
print "오류: ".$Exception->getMessage();
|
||||
}
|
||||
|
||||
// 결재권자 여부를 확인
|
||||
$workLevel = 0; // 1차 결재권자 여부
|
||||
|
||||
$firstStep = array();
|
||||
$firstStepID = array();
|
||||
for($i = 0; $i < count($eworks_lv_arr); $i++) {
|
||||
if((int)$eworks_lv_arr[$i] == 2 or (int)$eworks_lv_arr[$i] == 1) {
|
||||
array_push($firstStep, $name_arr[$i] . " " . $position_arr[$i]);
|
||||
array_push($firstStepID, $id_arr[$i]);
|
||||
if ($user_id === $id_arr[$i]) {
|
||||
$workLevel = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 각 상태별 문서 개수를 카운트하는 함수
|
||||
function countEworksStatus($pdo, $user_id, $status, $workLevel) {
|
||||
|
||||
if(isset($_SESSION["DB"]))
|
||||
$DB = $_SESSION["DB"] ;
|
||||
else
|
||||
$DB = 'chandj' ;
|
||||
|
||||
// view 설정
|
||||
$viewcon = " AND CONCAT('!', e_viewexcept_id, '!') NOT LIKE '%!{$user_id}!%' ";
|
||||
$viewconNone = " AND CONCAT('!', e_viewexcept_id, '!') LIKE '%!{$user_id}!%' ";
|
||||
|
||||
$count = 0;
|
||||
$sql = "";
|
||||
|
||||
if (!$workLevel) { // 일반 사용자의 경우 자신이 작성한 문서만 카운트
|
||||
$sql = "SELECT COUNT(*) FROM " . $DB . ".eworks WHERE author_id = '$user_id' AND status = '$status' AND is_deleted IS NULL " . $viewcon;
|
||||
} else { // 결재권자의 경우 다양한 상태의 문서를 카운트
|
||||
switch ($status) {
|
||||
case 'draft':
|
||||
$sql = "SELECT COUNT(*) FROM " . $DB . ".eworks WHERE author_id = '$user_id' AND status = 'draft' AND is_deleted IS NULL" . $viewcon;
|
||||
break;
|
||||
case 'send':
|
||||
$sql = "SELECT COUNT(*) FROM " . $DB . ".eworks WHERE author_id = '$user_id' AND CONCAT('!', e_line_id, '!') LIKE '%!{$user_id}!%' AND status = 'send' AND is_deleted IS NULL" . $viewcon;
|
||||
break;
|
||||
case 'noend':
|
||||
// '미결' 상태: 사용자가 결재해야 하는 문서 카운트
|
||||
// 첫 번째 결재권자에 대해 '상신' 상태를 '미결'로 처리
|
||||
// 그리고 나머지 결재권자에 대해서는 다음 결재자가 되는 경우를 처리
|
||||
$sql = "SELECT COUNT(*) FROM " . $DB . ".eworks WHERE CONCAT('!', e_line_id, '!') LIKE '%!{$user_id}!%' " .
|
||||
"AND ( " .
|
||||
" (CONCAT('!', e_confirm_id, '!') = '!!' AND LOCATE('{$user_id}', e_line_id) = 1 AND status = 'send') " .
|
||||
" OR " .
|
||||
" (CONCAT('!', e_confirm_id, '!') NOT LIKE '%!{$user_id}!%' AND INSTR(CONCAT('!', e_line_id, '!'), CONCAT('!', SUBSTRING_INDEX(e_confirm_id, '!', -1), '!', '{$user_id}', '!')) > 0 AND status IN ('send', 'noend', 'ing')) " .
|
||||
") AND is_deleted IS NULL" . $viewcon;
|
||||
break;
|
||||
|
||||
case 'ing':
|
||||
// '진행중' 상태: 사용자가 결재 중인 문서 카운트
|
||||
$sql = "SELECT COUNT(*) FROM " . $DB . ".eworks WHERE CONCAT('!', e_line_id, '!') LIKE '%!{$user_id}!%' AND CONCAT('!', e_confirm_id, '!') LIKE '%!{$user_id}!%' AND status IN ('send', 'ing') AND is_deleted IS NULL" . $viewcon;
|
||||
break;
|
||||
case 'end':
|
||||
$sql = "SELECT COUNT(*) FROM " . $DB . ".eworks WHERE CONCAT('!', e_line_id, '!') LIKE '%!{$user_id}!%' AND status = 'end' AND is_deleted IS NULL" . $viewcon;
|
||||
break;
|
||||
case 'reject':
|
||||
$sql = "SELECT COUNT(*) FROM " . $DB . ".eworks WHERE CONCAT('!', e_line_id, '!') LIKE '%!{$user_id}!%' AND status = 'reject' AND is_deleted IS NULL" . $viewcon;
|
||||
break;
|
||||
case 'wait':
|
||||
$sql = "SELECT COUNT(*) FROM " . $DB . ".eworks WHERE CONCAT('!', e_line_id, '!') LIKE '%!{$user_id}!%' AND status = 'wait' AND is_deleted IS NULL" . $viewcon;
|
||||
break;
|
||||
case 'refer':
|
||||
$sql = "SELECT COUNT(*) FROM " . $DB . ".eworks WHERE CONCAT('!', e_line_id, '!') LIKE '%!{$user_id}!%' AND status = 'refer' AND is_deleted IS NULL" . $viewcon;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$stmh = $pdo->query($sql);
|
||||
$count = $stmh->fetchColumn();
|
||||
} catch (PDOException $Exception) {
|
||||
print "오류: " . $Exception->getMessage();
|
||||
}
|
||||
|
||||
if($status!=='sql')
|
||||
return $count;
|
||||
else
|
||||
return $sql;
|
||||
}
|
||||
|
||||
// 각 상태별 문서 개수 카운트
|
||||
// $statuses = ['draft', 'send', 'noend', 'ing', 'end', 'reject', 'wait', 'refer', 'sql'];
|
||||
$statuses = ['draft', 'send', 'noend', 'ing', 'end', 'reject', 'wait', 'refer'];
|
||||
$data = [] ;
|
||||
$data['workLevel'] = $workLevel ;
|
||||
|
||||
foreach ($statuses as $status) {
|
||||
$data['val'.array_search($status, $statuses)] = countEworksStatus($pdo, $user_id, $status, $workLevel);
|
||||
}
|
||||
|
||||
//json 출력
|
||||
echo(json_encode($data, JSON_UNESCAPED_UNICODE));
|
||||
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user