Files
egbim_homepage/egbim/bbs/sales_schedules.php
T
2026-07-23 16:15:57 +09:00

190 lines
4.7 KiB
PHP

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
header("Content-Type: application/json; charset=utf-8");
try {
$pdo = new PDO(
"mysql:host=localhost;dbname=egbim;charset=utf8mb4",
"egbim",
"baron3840!!",
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]
);
} catch(Exception $e) {
echo json_encode(["status"=>"error","message"=>"DB 연결 실패"]);
exit;
}
$action = $_POST['action'] ?? $_GET['action'] ?? "";
/* ===========================
1) 전체 일정 + 직원 목록
=========================== */
if ($action === "month") {
$year = $_GET['year'] ?? date("Y");
$month = $_GET['month'] ?? date("m");
// 직원 목록
$employees = $pdo->query("
SELECT emp_no, emp_name
FROM sales_members
ORDER BY emp_name ASC
")->fetchAll();
// 해당 월 전체 일정
$stmt = $pdo->prepare("
SELECT
s.seq_no,
s.schedule_date,
s.time_period,
s.client_code,
c.client_name,
s.emp_no,
s.content,
s.status
FROM sales_schedules s
LEFT JOIN sales_clients c ON s.client_code = c.client_code
WHERE DATE_FORMAT(s.schedule_date, '%Y-%m') = ?
ORDER BY s.schedule_date ASC
");
$stmt->execute([ "$year-$month" ]);
$schedules = $stmt->fetchAll();
echo json_encode([
"status" => "ok",
"employees" => $employees,
"schedules" => $schedules
]);
exit;
}
/* ===========================
2) INSERT
=========================== */
if ($action === "insert") {
$seq = $pdo->query("SELECT IFNULL(MAX(seq_no), 0) + 1 AS next_no FROM sales_schedules")
->fetch()['next_no'];
$stmt = $pdo->prepare("
INSERT INTO sales_schedules (seq_no, schedule_date, client_code, emp_no, content, status)
VALUES (?, ?, ?, ?, ?, ?)
");
$stmt->execute([
$seq,
$_POST['schedule_date'],
$_POST['client_code'],
$_POST['emp_no'],
$_POST['content'],
$_POST['status']
]);
echo json_encode(["status" => "ok"]);
exit;
}
/* ===========================
3) UPDATE
=========================== */
if ($action === "update") {
// 🔥 emp_no 필수 확인
if (empty($_POST['emp_no'])) {
echo json_encode([
"status" => "fail",
"message" => "emp_no missing in update"
]);
exit;
}
$stmt = $pdo->prepare("
UPDATE sales_schedules
SET schedule_date=?, time_period=?, client_code=?, emp_no=?, content=?, status=?, updated_at=NOW()
WHERE seq_no=?
");
$stmt->execute([
$_POST['schedule_date'],
$_POST['time_period'],
$_POST['client_code'],
$_POST['emp_no'],
$_POST['content'],
$_POST['status'],
$_POST['seq_no']
]);
echo json_encode(["status" => "ok"]);
exit;
}
/* ===========================
4) DELETE
=========================== */
if ($action === "delete") {
$stmt = $pdo->prepare("DELETE FROM sales_schedules WHERE seq_no=?");
$stmt->execute([ $_POST['seq_no'] ]);
echo json_encode(["status"=>"ok"]);
exit;
}
//대시보드 캘린더 요청 API
if ($action === "calendar") {
$year = $_GET['year'] ?? date("Y");
$month = $_GET['month'] ?? date("m");
$ym = "$year-$month";
$stmt = $pdo->prepare("
SELECT
s.schedule_date,
s.time_period,
s.content,
s.status,
m.emp_name,
c.client_name
FROM sales_schedules s
LEFT JOIN sales_members m ON s.emp_no = m.emp_no
LEFT JOIN sales_clients c ON s.client_code = c.client_code
WHERE DATE_FORMAT(s.schedule_date,'%Y-%m') = ?
ORDER BY s.schedule_date, s.time_period
");
$stmt->execute([$ym]);
$rows = $stmt->fetchAll();
$result = [];
foreach ($rows as $r) {
$date = $r['schedule_date'];
// 담당자 첫글자 → 기존 UI에서 color tag 로 사용
$tag = mb_substr($r['emp_name'], 0, 1);
$result[$date][] = [
"title" => $r['client_name'] ?: '',
"desc" => $r['content'],
"time" => $r['time_period'],
"status" => $r['status'],
"tags" => [$tag]
];
}
echo json_encode(["status" => "ok", "events" => $result]);
exit;
}
echo json_encode(["status"=>"fail","message"=>"잘못된 요청"]);
exit;
?>