167 lines
6.1 KiB
PHP
167 lines
6.1 KiB
PHP
<?php
|
|
//=========================
|
|
// 헤더 진도율 초기데이터
|
|
// - 마이클래스 / 온보딩 / 법정교육
|
|
// - 현재년도 기준
|
|
// - 마이페이지 "나의 학습 활동"과 동일한 시간기준 진도율 사용
|
|
//=========================
|
|
require_once __DIR__ . '/../bbs/db_conn.php';
|
|
|
|
// 세션 시작
|
|
if (session_status() === PHP_SESSION_NONE) {
|
|
session_start();
|
|
}
|
|
|
|
// TODO: 실제 로그인 세션 연동 후 교체
|
|
$memberId = $_SESSION['member_id'] ?? '';
|
|
$sysCompCode = $_SESSION['sys_comp_code'] ?? '';
|
|
// $memberId = 'U001';
|
|
// $sysCompCode = 'COMP01';
|
|
|
|
|
|
/*
|
|
// ---------------------------------------------------------
|
|
// 헤더에서 바로 사용할 기본 변수
|
|
// ---------------------------------------------------------
|
|
$header_myclass_percent = 0;
|
|
$header_onboarding_percent = 0;
|
|
$header_legal_percent = 0;
|
|
*/
|
|
// ---------------------------------------------------------
|
|
// 세션값이 없으면 기본값 0으로 종료
|
|
// ---------------------------------------------------------
|
|
if ($memberId === '' || $sysCompCode === '') {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
$pdo = db_conn();
|
|
$pdo->exec("SET NAMES 'utf8mb4'");
|
|
|
|
// 현재년도
|
|
$currentYear = (int)date('Y');
|
|
// 현재 분기코드 (CA200Q01 ~ CA200Q04)
|
|
$currentQuarterNum = (int)ceil((int)date('m') / 3);
|
|
$currentQuarterCode = sprintf('CA200Q%02d', $currentQuarterNum);
|
|
|
|
// ---------------------------------------------------------
|
|
// 1. 마이클래스(CA10001) 진도율
|
|
// - 마이페이지와 동일 기준:
|
|
// percent = SUM(watch_tm) / SUM(content_tm) * 100
|
|
// - 현재년도 기준: YEAR(last_viewed_at) = 현재년도
|
|
// ---------------------------------------------------------
|
|
$stmtMyclass = $pdo->prepare("
|
|
SELECT fn_get_progress_rate(:sys_comp_code,:current_year,:member_id,'CA10001',:quarter_code) AS percent ;
|
|
");
|
|
// $stmtMyclass = $pdo->prepare("
|
|
// SELECT
|
|
// CASE
|
|
// WHEN COALESCE(SUM(lh.content_tm), 0) > 0
|
|
// THEN ROUND(COALESCE(SUM(lh.watch_tm), 0) / SUM(lh.content_tm) * 100)
|
|
// ELSE 0
|
|
// END AS percent
|
|
// FROM edu_learning_histories lh
|
|
// INNER JOIN edu_contents c
|
|
// ON c.content_id = lh.content_id
|
|
// WHERE lh.member_id = :member_id
|
|
// AND lh.sys_comp_code = :sys_comp_code
|
|
// AND c.category_code = 'CA10001'
|
|
// AND YEAR(lh.last_viewed_at) = :current_year
|
|
// ");
|
|
$stmtMyclass->execute([
|
|
':member_id' => $memberId,
|
|
':sys_comp_code' => $sysCompCode,
|
|
':current_year' => $currentYear,
|
|
':quarter_code' => $currentQuarterCode,
|
|
]);
|
|
$header_myclass_percent = (int)$stmtMyclass->fetchColumn();
|
|
|
|
// ---------------------------------------------------------
|
|
// 2. 온보딩(CA10002) 진도율
|
|
// - 마이페이지와 동일 기준:
|
|
// percent = SUM(watch_tm) / SUM(content_tm) * 100
|
|
// - 현재년도 기준: YEAR(last_viewed_at) = 현재년도
|
|
// ---------------------------------------------------------
|
|
$stmtOnboarding = $pdo->prepare("
|
|
SELECT fn_get_progress_rate(:sys_comp_code,:current_year,:member_id,'CA10002','') AS percent ;
|
|
");
|
|
// $stmtOnboarding = $pdo->prepare("
|
|
// SELECT
|
|
// CASE
|
|
// WHEN COALESCE(SUM(lh.content_tm), 0) > 0
|
|
// THEN ROUND(COALESCE(SUM(lh.watch_tm), 0) / SUM(lh.content_tm) * 100)
|
|
// ELSE 0
|
|
// END AS percent
|
|
// FROM edu_learning_histories lh
|
|
// INNER JOIN edu_contents c
|
|
// ON c.content_id = lh.content_id
|
|
// WHERE lh.member_id = :member_id
|
|
// AND lh.sys_comp_code = :sys_comp_code
|
|
// AND c.category_code = 'CA10002'
|
|
// AND YEAR(lh.last_viewed_at) = :current_year
|
|
// ");
|
|
$stmtOnboarding->execute([
|
|
':member_id' => $memberId,
|
|
':sys_comp_code' => $sysCompCode,
|
|
':current_year' => $currentYear,
|
|
]);
|
|
$header_onboarding_percent = (int)$stmtOnboarding->fetchColumn();
|
|
|
|
// ---------------------------------------------------------
|
|
// 3. 법정교육(CA10003) 진도율
|
|
// - 마이페이지와 동일 기준:
|
|
// percent = SUM(watch_tm) / SUM(content_tm) * 100
|
|
// - 현재년도 기준: YEAR(last_viewed_at) = 현재년도
|
|
// ---------------------------------------------------------
|
|
$stmtLegal = $pdo->prepare("
|
|
SELECT fn_get_progress_rate(:sys_comp_code,:current_year,:member_id,'CA10003','') AS percent ;
|
|
");
|
|
// $stmtLegal = $pdo->prepare("
|
|
// SELECT
|
|
// CASE
|
|
// WHEN COALESCE(SUM(lh.content_tm), 0) > 0
|
|
// THEN ROUND(COALESCE(SUM(lh.watch_tm), 0) / SUM(lh.content_tm) * 100)
|
|
// ELSE 0
|
|
// END AS percent
|
|
// FROM edu_learning_histories lh
|
|
// INNER JOIN edu_contents c
|
|
// ON c.content_id = lh.content_id
|
|
// WHERE lh.member_id = :member_id
|
|
// AND lh.sys_comp_code = :sys_comp_code
|
|
// AND c.category_code = 'CA10003'
|
|
// AND YEAR(lh.last_viewed_at) = :current_year
|
|
// ");
|
|
$stmtLegal->execute([
|
|
':member_id' => $memberId,
|
|
':sys_comp_code' => $sysCompCode,
|
|
':current_year' => $currentYear,
|
|
]);
|
|
$header_legal_percent = (int)$stmtLegal->fetchColumn();
|
|
|
|
// ---------------------------------------------------------
|
|
// 예외 방어: 0~100 범위 보정
|
|
// ---------------------------------------------------------
|
|
$header_myclass_percent = max(0, min(100, $header_myclass_percent));
|
|
$header_onboarding_percent = max(0, min(100, $header_onboarding_percent));
|
|
$header_legal_percent = max(0, min(100, $header_legal_percent));
|
|
|
|
if($memberId=="M21420" ){
|
|
//echo "test=".$memberId.":".$header_myclass_percent;
|
|
//echo "test=".$memberId.":".$header_onboarding_percent;
|
|
//echo "test=".$memberId.":".$header_legal_percent;
|
|
|
|
//exit;
|
|
}
|
|
|
|
} catch (Throwable $e) {
|
|
// 헤더는 페이지 공통영역이므로, 오류가 나더라도 전체 화면이 죽지 않게
|
|
// 기본값 0 유지
|
|
$header_myclass_percent = 0;
|
|
$header_onboarding_percent = 0;
|
|
$header_legal_percent = 0;
|
|
|
|
//echo "test 11=".$memberId.":".$header_myclass_percent;
|
|
|
|
// 필요시 개발단계에서만 로그 확인
|
|
// error_log('[init_data_for_header.php] ' . $e->getMessage());
|
|
} |