99 lines
2.8 KiB
PHP
99 lines
2.8 KiB
PHP
<?php
|
|
//=========================
|
|
// 컨텐츠 제안하기 기본값 + 제안현황
|
|
//=========================
|
|
require_once __DIR__ . '/db_conn.php';
|
|
|
|
// TODO: 실제 로그인 세션 연동 후 교체
|
|
$memberId = 'U001';
|
|
$sysCompCode = 'COMP01';
|
|
|
|
$offerDefaultTypeCode = 'OF10001'; // 제안
|
|
$offerDefaultStatusCode = 'OF10002'; // 검토중
|
|
|
|
$offerStatusMap = [
|
|
'OF10001' => '제안',
|
|
'OF10002' => '검토중',
|
|
'OF10003' => '게시완료',
|
|
'OF10004' => '게시불가',
|
|
];
|
|
|
|
$offerHistory = [];
|
|
|
|
try {
|
|
$pdo = db_conn();
|
|
$pdo->exec("SET NAMES 'utf8mb4'");
|
|
|
|
// 상태 코드맵 동적 조회 (기본값 fallback 유지)
|
|
$stmtCode = $pdo->prepare("
|
|
SELECT base_code, code_name
|
|
FROM edu_codes
|
|
WHERE group_code = 'OF100'
|
|
AND is_active = '1'
|
|
ORDER BY code
|
|
");
|
|
$stmtCode->execute();
|
|
|
|
foreach ($stmtCode->fetchAll(PDO::FETCH_ASSOC) as $codeRow) {
|
|
$offerStatusMap[$codeRow['base_code']] = $codeRow['code_name'];
|
|
}
|
|
|
|
// 제안 이력 조회
|
|
// 정렬 우선순위:
|
|
// 1) 검토중(OF10002) 최상단
|
|
// 2) 그 외 상태는 코드 우선순위대로
|
|
// 3) 같은 상태 안에서는 최신순
|
|
$stmt = $pdo->prepare("
|
|
SELECT
|
|
co.offer_id,
|
|
co.type_code,
|
|
co.title,
|
|
co.reference_url,
|
|
co.reason,
|
|
co.status_code,
|
|
co.created_at,
|
|
co.updated_at
|
|
FROM edu_content_offer co
|
|
WHERE co.member_id = :member_id
|
|
AND co.sys_comp_code = :sys_comp_code
|
|
ORDER BY
|
|
CASE co.status_code
|
|
WHEN 'OF10002' THEN 0 -- 검토중
|
|
WHEN 'OF10001' THEN 1 -- 제안
|
|
WHEN 'OF10003' THEN 2 -- 게시완료
|
|
WHEN 'OF10004' THEN 3 -- 게시불가
|
|
ELSE 9
|
|
END,
|
|
co.created_at DESC,
|
|
co.offer_id DESC
|
|
LIMIT 20
|
|
");
|
|
|
|
$stmt->execute([
|
|
':member_id' => $memberId,
|
|
':sys_comp_code' => $sysCompCode,
|
|
]);
|
|
|
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
foreach ($rows as $row) {
|
|
$statusCode = trim((string)($row['status_code'] ?? ''));
|
|
|
|
$offerHistory[] = [
|
|
'offer_id' => $row['offer_id'] ?? '',
|
|
'type_code' => $row['type_code'] ?? '',
|
|
'title' => $row['title'] ?? '',
|
|
'reference_url' => $row['reference_url'] ?? '',
|
|
'reason' => $row['reason'] ?? '',
|
|
'status_code' => $statusCode,
|
|
'status_name' => $offerStatusMap[$statusCode] ?? $statusCode,
|
|
'created_at' => $row['created_at'] ?? '',
|
|
'updated_at' => $row['updated_at'] ?? '',
|
|
'created_at_dot' => !empty($row['created_at']) ? date('y.m.d', strtotime($row['created_at'])) : '',
|
|
'is_consider' => ($statusCode === 'OF10002'),
|
|
];
|
|
}
|
|
} catch (Throwable $e) {
|
|
// 운영 시 로깅 권장
|
|
// error_log($e->getMessage());
|
|
} |