최초 커밋
This commit is contained in:
@@ -0,0 +1,189 @@
|
||||
<?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;
|
||||
?>
|
||||
Reference in New Issue
Block a user