fix user/check => totalDay ไม่ได้ครึ่งวันก่อนเข้าสมการตรวจสอบ
This commit is contained in:
parent
b0ae4863a9
commit
0a4f3c0d68
2 changed files with 107 additions and 11 deletions
|
|
@ -1053,6 +1053,16 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
public async Task<ActionResult<ResponseObject>> CheckUserLeaveAsync([FromBody] GetLeaveCheckDto req)
|
||||
{
|
||||
var totalDay = (double)req.StartLeaveDate.DiffDay(req.EndLeaveDate.Date);
|
||||
if (req.StartLeaveDate == req.EndLeaveDate)
|
||||
{
|
||||
if (req.LeaveRange != "ALL")
|
||||
totalDay -= 0.5;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(req.LeaveRangeEnd != "ALL")
|
||||
totalDay -= 0.5;
|
||||
}
|
||||
|
||||
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||
|
||||
|
|
@ -1306,25 +1316,25 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
isLeave = false;
|
||||
message = "ช่วงวันลาที่ระบุไม่ถูกต้อง";
|
||||
}
|
||||
|
||||
if (req.LeaveRange != "ALL")
|
||||
totalDay -= 0.5;
|
||||
|
||||
if (req.LeaveRangeEnd != "ALL")
|
||||
totalDay -= 0.5;
|
||||
|
||||
|
||||
// if (req.LeaveRange != "ALL")
|
||||
// totalDay -= 0.5;
|
||||
//
|
||||
// if (req.LeaveRangeEnd != "ALL")
|
||||
// totalDay -= 0.5;
|
||||
|
||||
}
|
||||
else if (totalDay == 1)
|
||||
{
|
||||
|
||||
|
||||
if (req.LeaveRange != req.LeaveRangeEnd)
|
||||
{
|
||||
isLeave = false;
|
||||
message = "ช่วงวันลาที่ระบุไม่ถูกต้อง";
|
||||
}
|
||||
if (req.LeaveRange != "ALL")
|
||||
totalDay -= 0.5;
|
||||
|
||||
// if (req.LeaveRange != "ALL")
|
||||
// totalDay -= 0.5;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
86
reprocess.sh
Normal file
86
reprocess.sh
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# เรียก Keycloak/OpenID Connect token endpoint เพื่อขอ access token
|
||||
# ผ่าน client_credentials grant type (form-urlencoded)
|
||||
#
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# ฟังก์ชันเขียน log พร้อม timestamp (YYYY-MM-DD HH:MM:SS)
|
||||
log() {
|
||||
printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$1"
|
||||
}
|
||||
# log ส่งออกไป stderr (เหมาะกับ error/เตือน)
|
||||
log_err() {
|
||||
printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$1" >&2
|
||||
}
|
||||
|
||||
# --- เขียน log ลงไฟล์ (แยกรายวัน) เก็บไว้แค่ 2 วัน ---
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
LOG_DIR="${SCRIPT_DIR}/logs"
|
||||
mkdir -p "${LOG_DIR}"
|
||||
# ลบ log เก่ากว่า 2 วัน
|
||||
find "${LOG_DIR}" -name 'reprocess_*.log' -type f -mtime +2 -delete
|
||||
LOG_FILE="${LOG_DIR}/reprocess_$(date '+%Y-%m-%d').log"
|
||||
if [[ -t 1 ]]; then
|
||||
# รันมือ (มี tty): แสดงบนหน้าจอ + เก็บลงไฟล์
|
||||
exec > >(tee -a "${LOG_FILE}") 2>&1
|
||||
else
|
||||
# รันผ่าน cron (ไม่มี tty): เก็บลงไฟล์อย่างเดียว เพื่อไม่ให้ซ้อนกับ redirect ของ cron
|
||||
exec >>"${LOG_FILE}" 2>&1
|
||||
fi
|
||||
|
||||
# --- ตรวจเวลาทำการ: ทำงานเฉพาะช่วง 07:00-09:59 และ 15:00-17:59 ของทุกวัน ---
|
||||
# (10#$H บังคับตีความเลขฐาน 10 ป้องกันปัญหา 08/09 ถูกอ่านเป็นเลขฐาน 8)
|
||||
CURRENT_HOUR=$(date '+%H')
|
||||
if (( 10#$CURRENT_HOUR >= 7 && 10#$CURRENT_HOUR < 10 )) || \
|
||||
(( 10#$CURRENT_HOUR >= 15 && 10#$CURRENT_HOUR < 18 )); then
|
||||
log "อยู่ในช่วงเวลาทำการ (hour=${CURRENT_HOUR}) — เริ่มทำงาน"
|
||||
else
|
||||
log "นอกช่วงเวลาทำการ (hour=${CURRENT_HOUR}) — ข้ามการทำงาน"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
TOKEN_URL="https://hrms-id.bangkok.go.th/realms/hrms/protocol/openid-connect/token"
|
||||
CLIENT_ID="gettoken"
|
||||
CLIENT_SECRET="obeDw3t3dsDkIkhqzszul6VybAaoRCjf"
|
||||
|
||||
response=$(curl -sS -X POST "${TOKEN_URL}" \
|
||||
-H "Content-Type: application/x-www-form-urlencoded" \
|
||||
--data-urlencode "client_id=${CLIENT_ID}" \
|
||||
--data-urlencode "client_secret=${CLIENT_SECRET}" \
|
||||
--data-urlencode "grant_type=client_credentials")
|
||||
|
||||
# ดึงเฉพาะ access_token ออกมาจาก JSON response
|
||||
access_token=$(printf '%s' "${response}" | python3 -c "import sys, json; print(json.load(sys.stdin).get('access_token', ''))")
|
||||
|
||||
if [[ -z "${access_token}" ]]; then
|
||||
log_err "ไม่สามารถดึง access_token ได้ — response:"
|
||||
printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "${response}" >&2
|
||||
exit 1
|
||||
fi
|
||||
log "ได้ access token แล้ว"
|
||||
|
||||
# --- เรียก API reprocess-stale-checkin-jobs โดยแนบ Bearer token ----------
|
||||
API_URL="https://hrms.bangkok.go.th/api/v1/leave/reprocess-stale-checkin-jobs?timeoutMinutes=15"
|
||||
|
||||
log "กำลังเรียก ${API_URL}"
|
||||
http_code=$(curl -sS -o /tmp/reprocess_response.txt -w "%{http_code}" \
|
||||
--max-time 600 \
|
||||
-X POST "${API_URL}" \
|
||||
-H "Authorization: Bearer ${access_token}" \
|
||||
-H "Content-Type: application/json")
|
||||
|
||||
log "HTTP status: ${http_code}"
|
||||
log "Response:"
|
||||
printf '[%s] ' "$(date '+%Y-%m-%d %H:%M:%S')"
|
||||
cat /tmp/reprocess_response.txt
|
||||
echo
|
||||
|
||||
if [[ "${http_code}" -ge 200 && "${http_code}" -lt 300 ]]; then
|
||||
log "สำเร็จ"
|
||||
exit 0
|
||||
else
|
||||
log_err "ล้มเหลว (HTTP ${http_code})"
|
||||
exit 1
|
||||
fi
|
||||
Loading…
Add table
Add a link
Reference in a new issue