Merge branch 'develop' into dev

* develop:
  update LeaveController to handle additional leave range options for check-in and check-out statuses
  update LeaveController to pass currentDate parameter to GetLastEffectRound method
  update LeaveReportController to pass date parameter to GetLastEffectRound method
  update GetLastEffectRound method to accept effectiveDate parameter and adjust usage in LeaveReportController
  add noti discord
  fix build report
  fix build report to v2 and add noti
  remove build forgejo, move to dev branch
This commit is contained in:
Warunee Tamkoo 2026-01-11 20:39:39 +07:00
commit d831b208de
21 changed files with 300 additions and 740 deletions

View file

@ -1,83 +0,0 @@
name: Build & Deploy Checkin Service
on:
push:
tags:
- "checkin-dev[0-9]+.[0-9]+.[0-9]+"
- "checkin-dev[0-9]+.[0-9]+.[0-9]+*"
workflow_dispatch:
env:
REGISTRY: ${{ vars.CONTAINER_REGISTRY }}
REGISTRY_USERNAME: ${{ vars.CONTAINER_REGISTRY_USERNAME }}
REGISTRY_PASSWORD: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }}
CONTAINER_IMAGE_NAME: ${{ vars.CONTAINER_REGISTRY }}/${{ vars.CONTAINER_IMAGE_OWNER }}
IMAGE_VERSION: latest
SERVICE_NAME: hrms-api-checkin
DISCORD_WEBHOOK: ${{ vars.DISCORD_WEBHOOK }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Tag Version
shell: bash
run: |
if [[ "${{ github.event_name }}" == "push" ]]; then
VERSION=$(echo "${{ github.ref_name }}" | sed 's/checkin-dev//g')
echo "IMAGE_VERSION=${VERSION}" >> $GITHUB_ENV
else
echo "IMAGE_VERSION=${{ env.IMAGE_VERSION }}-${{ github.run_number }}" >> $GITHUB_ENV
fi
- name: Login in to registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.REGISTRY_USERNAME }}
password: ${{ env.REGISTRY_PASSWORD }}
- name: Build and push docker image
uses: docker/build-push-action@v5
with:
platforms: linux/amd64
context: .
file: ./BMA.EHR.CheckInConsumer/Dockerfile
tags: ${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}:latest,${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}:${{ env.IMAGE_VERSION }}
push: true
- name: Remote Deploy
uses: appleboy/ssh-action@v1.2.1
with:
host: ${{ vars.SSH_DEPLOY_HOST }}
port: ${{ vars.SSH_DEPLOY_PORT }}
username: ${{ secrets.SSH_DEPLOY_USER }}
password: ${{ secrets.SSH_DEPLOY_PASSWORD }}
script: |
cd ~/repo
./replace-env.sh API_CHECKIN "${{ env.IMAGE_VERSION }}"
./deploy.sh ${{ env.SERVICE_NAME }}
- name: Discord Notification
if: always()
run: |
STATUS="${{ job.status == 'success' && '✅ Success' || '❌ Failed' }}"
COLOR="${{ job.status == 'success' && '3066993' || '15158332' }}"
TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ)
curl -H "Content-Type: application/json" \
-X POST \
-d "{
\"embeds\": [{
\"title\": \"$STATUS\",
\"description\": \"**Build & Deploy**\\n- Image: \`${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}\`\\n- Version: \`${{ env.IMAGE_VERSION }}\`\\n- By: \`${{ gitea.actor }}\`\",
\"color\": $COLOR,
\"footer\": {
\"text\": \"Release Notification\",
\"icon_url\": \"https://example.com/success-icon.png\"
},
\"timestamp\": \"$TIMESTAMP\"
}]
}" \
${{ env.DISCORD_WEBHOOK }}

View file

@ -1,61 +0,0 @@
# name: Build
# on:
# push:
# tags:
# - "command-dev[0-9]+.[0-9]+.[0-9]+"
# - "command-dev[0-9]+.[0-9]+.[0-9]+*"
# workflow_dispatch:
# env:
# REGISTRY: ${{ vars.CONTAINER_REGISTRY }}
# REGISTRY_USERNAME: ${{ vars.CONTAINER_REGISTRY_USERNAME }}
# REGISTRY_PASSWORD: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }}
# CONTAINER_IMAGE_NAME: ${{ vars.CONTAINER_REGISTRY }}/${{ vars.CONTAINER_IMAGE_OWNER }}
# IMAGE_VERSION: build
# DISCORD_WEBHOOK: ${{ vars.DISCORD_WEBHOOK }}
# jobs:
# build:
# runs-on: ubuntu-latest
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v2
# with:
# config-inline: |
# [registry."${{ env.REGISTRY }}"]
# ca=["/etc/ssl/certs/ca-certificates.crt"]
# - name: Tag Version
# run: |
# if [[ "${{ github.event_name }}" == "push" ]]; then
# echo "IMAGE_VERSION=${{ github.ref_name }}" | sed 's/command-dev//g' >> $GITHUB_ENV
# else
# echo "IMAGE_VERSION=${{ env.IMAGE_VERSION }}-${{ github.run_number }}" >> $GITHUB_ENV
# fi
# - name: Login in to registry
# uses: docker/login-action@v2
# with:
# registry: ${{ env.REGISTRY }}
# username: ${{ env.REGISTRY_USERNAME }}
# password: ${{ env.REGISTRY_PASSWORD }}
# - name: Build and push docker image
# uses: docker/build-push-action@v3
# with:
# platforms: linux/amd64
# context: .
# file: ./BMA.EHR.Command.Service/Dockerfile
# tags: ${{ env.CONTAINER_IMAGE_NAME }}/hrms-api-command:latest,${{ env.CONTAINER_IMAGE_NAME }}/hrms-api-command:${{ env.IMAGE_VERSION }}
# push: true
# - name: Remote Deploy
# uses: appleboy/ssh-action@v1.2.1
# with:
# host: ${{ vars.SSH_DEPLOY_HOST }}
# port: ${{ vars.SSH_DEPLOY_PORT }}
# username: ${{ secrets.SSH_DEPLOY_USER }}
# password: ${{ secrets.SSH_DEPLOY_PASSWORD }}
# script: |
# cd ~/repo
# ./replace-env.sh API_COMMAND "${{ env.IMAGE_VERSION }}"
# ./deploy.sh hrms-api-command

View file

@ -1,83 +0,0 @@
name: Build & Deploy Discipline Service
on:
push:
tags:
- "discipline-dev[0-9]+.[0-9]+.[0-9]+"
- "discipline-dev[0-9]+.[0-9]+.[0-9]+*"
workflow_dispatch:
env:
REGISTRY: ${{ vars.CONTAINER_REGISTRY }}
REGISTRY_USERNAME: ${{ vars.CONTAINER_REGISTRY_USERNAME }}
REGISTRY_PASSWORD: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }}
CONTAINER_IMAGE_NAME: ${{ vars.CONTAINER_REGISTRY }}/${{ vars.CONTAINER_IMAGE_OWNER }}
IMAGE_VERSION: latest
SERVICE_NAME: hrms-api-discipline
DISCORD_WEBHOOK: ${{ vars.DISCORD_WEBHOOK }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Tag Version
shell: bash
run: |
if [[ "${{ github.event_name }}" == "push" ]]; then
VERSION=$(echo "${{ github.ref_name }}" | sed 's/discipline-dev//g')
echo "IMAGE_VERSION=${VERSION}" >> $GITHUB_ENV
else
echo "IMAGE_VERSION=${{ env.IMAGE_VERSION }}-${{ github.run_number }}" >> $GITHUB_ENV
fi
- name: Login in to registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.REGISTRY_USERNAME }}
password: ${{ env.REGISTRY_PASSWORD }}
- name: Build and push docker image
uses: docker/build-push-action@v5
with:
platforms: linux/amd64
context: .
file: ./BMA.EHR.Discipline.Service/Dockerfile
tags: ${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}:latest,${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}:${{ env.IMAGE_VERSION }}
push: true
- name: Remote Deploy
uses: appleboy/ssh-action@v1.2.1
with:
host: ${{ vars.SSH_DEPLOY_HOST }}
port: ${{ vars.SSH_DEPLOY_PORT }}
username: ${{ secrets.SSH_DEPLOY_USER }}
password: ${{ secrets.SSH_DEPLOY_PASSWORD }}
script: |
cd ~/repo
./replace-env.sh API_DISCIPLINE "${{ env.IMAGE_VERSION }}"
./deploy.sh ${{ env.SERVICE_NAME }}
- name: Discord Notification
if: always()
run: |
STATUS="${{ job.status == 'success' && '✅ Success' || '❌ Failed' }}"
COLOR="${{ job.status == 'success' && '3066993' || '15158332' }}"
TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ)
curl -H "Content-Type: application/json" \
-X POST \
-d "{
\"embeds\": [{
\"title\": \"$STATUS\",
\"description\": \"**Build & Deploy**\\n- Image: \`${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}\`\\n- Version: \`${{ env.IMAGE_VERSION }}\`\\n- By: \`${{ gitea.actor }}\`\",
\"color\": $COLOR,
\"footer\": {
\"text\": \"Release Notification\",
\"icon_url\": \"https://example.com/success-icon.png\"
},
\"timestamp\": \"$TIMESTAMP\"
}]
}" \
${{ env.DISCORD_WEBHOOK }}

View file

@ -1,83 +0,0 @@
name: Build & Deploy Insignia Service
on:
push:
tags:
- "insignia-dev[0-9]+.[0-9]+.[0-9]+"
- "insignia-dev[0-9]+.[0-9]+.[0-9]+*"
workflow_dispatch:
env:
REGISTRY: ${{ vars.CONTAINER_REGISTRY }}
REGISTRY_USERNAME: ${{ vars.CONTAINER_REGISTRY_USERNAME }}
REGISTRY_PASSWORD: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }}
CONTAINER_IMAGE_NAME: ${{ vars.CONTAINER_REGISTRY }}/${{ vars.CONTAINER_IMAGE_OWNER }}
IMAGE_VERSION: latest
SERVICE_NAME: hrms-api-insignia
DISCORD_WEBHOOK: ${{ vars.DISCORD_WEBHOOK }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Tag Version
shell: bash
run: |
if [[ "${{ github.event_name }}" == "push" ]]; then
VERSION=$(echo "${{ github.ref_name }}" | sed 's/insignia-dev//g')
echo "IMAGE_VERSION=${VERSION}" >> $GITHUB_ENV
else
echo "IMAGE_VERSION=${{ env.IMAGE_VERSION }}-${{ github.run_number }}" >> $GITHUB_ENV
fi
- name: Login in to registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.REGISTRY_USERNAME }}
password: ${{ env.REGISTRY_PASSWORD }}
- name: Build and push docker image
uses: docker/build-push-action@v5
with:
platforms: linux/amd64
context: .
file: ./BMA.EHR.Insignia/Dockerfile
tags: ${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}:latest,${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}:${{ env.IMAGE_VERSION }}
push: true
- name: Remote Deploy
uses: appleboy/ssh-action@v1.2.1
with:
host: ${{ vars.SSH_DEPLOY_HOST }}
port: ${{ vars.SSH_DEPLOY_PORT }}
username: ${{ secrets.SSH_DEPLOY_USER }}
password: ${{ secrets.SSH_DEPLOY_PASSWORD }}
script: |
cd ~/repo
./replace-env.sh API_INSIGNIA "${{ env.IMAGE_VERSION }}"
./deploy.sh ${{ env.SERVICE_NAME }}
- name: Discord Notification
if: always()
run: |
STATUS="${{ job.status == 'success' && '✅ Success' || '❌ Failed' }}"
COLOR="${{ job.status == 'success' && '3066993' || '15158332' }}"
TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ)
curl -H "Content-Type: application/json" \
-X POST \
-d "{
\"embeds\": [{
\"title\": \"$STATUS\",
\"description\": \"**Build & Deploy**\\n- Image: \`${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}\`\\n- Version: \`${{ env.IMAGE_VERSION }}\`\\n- By: \`${{ gitea.actor }}\`\",
\"color\": $COLOR,
\"footer\": {
\"text\": \"Release Notification\",
\"icon_url\": \"https://example.com/success-icon.png\"
},
\"timestamp\": \"$TIMESTAMP\"
}]
}" \
${{ env.DISCORD_WEBHOOK }}

View file

@ -1,83 +0,0 @@
name: Build & Deploy Leave Service
on:
push:
tags:
- "leave-dev[0-9]+.[0-9]+.[0-9]+"
- "leave-dev[0-9]+.[0-9]+.[0-9]+*"
workflow_dispatch:
env:
REGISTRY: ${{ vars.CONTAINER_REGISTRY }}
REGISTRY_USERNAME: ${{ vars.CONTAINER_REGISTRY_USERNAME }}
REGISTRY_PASSWORD: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }}
CONTAINER_IMAGE_NAME: ${{ vars.CONTAINER_REGISTRY }}/${{ vars.CONTAINER_IMAGE_OWNER }}
IMAGE_VERSION: latest
SERVICE_NAME: hrms-api-leave
DISCORD_WEBHOOK: ${{ vars.DISCORD_WEBHOOK }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Tag Version
shell: bash
run: |
if [[ "${{ github.event_name }}" == "push" ]]; then
VERSION=$(echo "${{ github.ref_name }}" | sed 's/leave-dev//g')
echo "IMAGE_VERSION=${VERSION}" >> $GITHUB_ENV
else
echo "IMAGE_VERSION=${{ env.IMAGE_VERSION }}-${{ github.run_number }}" >> $GITHUB_ENV
fi
- name: Login in to registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.REGISTRY_USERNAME }}
password: ${{ env.REGISTRY_PASSWORD }}
- name: Build and push docker image
uses: docker/build-push-action@v5
with:
platforms: linux/amd64
context: .
file: ./BMA.EHR.Leave/Dockerfile
tags: ${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}:latest,${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}:${{ env.IMAGE_VERSION }}
push: true
- name: Remote Deploy
uses: appleboy/ssh-action@v1.2.1
with:
host: ${{ vars.SSH_DEPLOY_HOST }}
port: ${{ vars.SSH_DEPLOY_PORT }}
username: ${{ secrets.SSH_DEPLOY_USER }}
password: ${{ secrets.SSH_DEPLOY_PASSWORD }}
script: |
cd ~/repo
./replace-env.sh API_LEAVE "${{ env.IMAGE_VERSION }}"
./deploy.sh ${{ env.SERVICE_NAME }}
- name: Discord Notification
if: always()
run: |
STATUS="${{ job.status == 'success' && '✅ Success' || '❌ Failed' }}"
COLOR="${{ job.status == 'success' && '3066993' || '15158332' }}"
TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ)
curl -H "Content-Type: application/json" \
-X POST \
-d "{
\"embeds\": [{
\"title\": \"$STATUS\",
\"description\": \"**Build & Deploy**\\n- Image: \`${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}\`\\n- Version: \`${{ env.IMAGE_VERSION }}\`\\n- By: \`${{ gitea.actor }}\`\",
\"color\": $COLOR,
\"footer\": {
\"text\": \"Release Notification\",
\"icon_url\": \"https://example.com/success-icon.png\"
},
\"timestamp\": \"$TIMESTAMP\"
}]
}" \
${{ env.DISCORD_WEBHOOK }}

View file

@ -1,83 +0,0 @@
name: Build & Deploy Placement Service
on:
push:
tags:
- "placement-dev[0-9]+.[0-9]+.[0-9]+"
- "placement-dev[0-9]+.[0-9]+.[0-9]+*"
workflow_dispatch:
env:
REGISTRY: ${{ vars.CONTAINER_REGISTRY }}
REGISTRY_USERNAME: ${{ vars.CONTAINER_REGISTRY_USERNAME }}
REGISTRY_PASSWORD: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }}
CONTAINER_IMAGE_NAME: ${{ vars.CONTAINER_REGISTRY }}/${{ vars.CONTAINER_IMAGE_OWNER }}
IMAGE_VERSION: latest
SERVICE_NAME: hrms-api-placement
DISCORD_WEBHOOK: ${{ vars.DISCORD_WEBHOOK }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Tag Version
shell: bash
run: |
if [[ "${{ github.event_name }}" == "push" ]]; then
VERSION=$(echo "${{ github.ref_name }}" | sed 's/placement-dev//g')
echo "IMAGE_VERSION=${VERSION}" >> $GITHUB_ENV
else
echo "IMAGE_VERSION=${{ env.IMAGE_VERSION }}-${{ github.run_number }}" >> $GITHUB_ENV
fi
- name: Login in to registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.REGISTRY_USERNAME }}
password: ${{ env.REGISTRY_PASSWORD }}
- name: Build and push docker image
uses: docker/build-push-action@v5
with:
platforms: linux/amd64
context: .
file: ./BMA.EHR.Placement.Service/Dockerfile
tags: ${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}:latest,${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}:${{ env.IMAGE_VERSION }}
push: true
- name: Remote Deploy
uses: appleboy/ssh-action@v1.2.1
with:
host: ${{ vars.SSH_DEPLOY_HOST }}
port: ${{ vars.SSH_DEPLOY_PORT }}
username: ${{ secrets.SSH_DEPLOY_USER }}
password: ${{ secrets.SSH_DEPLOY_PASSWORD }}
script: |
cd ~/repo
./replace-env.sh API_PLACEMENT "${{ env.IMAGE_VERSION }}"
./deploy.sh ${{ env.SERVICE_NAME }}
- name: Discord Notification
if: always()
run: |
STATUS="${{ job.status == 'success' && '✅ Success' || '❌ Failed' }}"
COLOR="${{ job.status == 'success' && '3066993' || '15158332' }}"
TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ)
curl -H "Content-Type: application/json" \
-X POST \
-d "{
\"embeds\": [{
\"title\": \"$STATUS\",
\"description\": \"**Build & Deploy**\\n- Image: \`${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}\`\\n- Version: \`${{ env.IMAGE_VERSION }}\`\\n- By: \`${{ gitea.actor }}\`\",
\"color\": $COLOR,
\"footer\": {
\"text\": \"Release Notification\",
\"icon_url\": \"https://example.com/success-icon.png\"
},
\"timestamp\": \"$TIMESTAMP\"
}]
}" \
${{ env.DISCORD_WEBHOOK }}

View file

@ -1,84 +0,0 @@
# name: Build
# on:
# push:
# tags:
# - "report-dev[0-9]+.[0-9]+.[0-9]+"
# - "report-dev[0-9]+.[0-9]+.[0-9]+*"
# workflow_dispatch:
# env:
# REGISTRY: ${{ vars.CONTAINER_REGISTRY }}
# REGISTRY_USERNAME: ${{ vars.CONTAINER_REGISTRY_USERNAME }}
# REGISTRY_PASSWORD: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }}
# CONTAINER_IMAGE_NAME: ${{ vars.CONTAINER_REGISTRY }}/${{ vars.CONTAINER_IMAGE_OWNER }}
# SERVICE_NAME: hrms-api-report
# IMAGE_VERSION: build
# DISCORD_WEBHOOK: ${{ vars.DISCORD_WEBHOOK }}
# jobs:
# build:
# runs-on: ubuntu-latest
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v2
# with:
# config-inline: |
# [registry."${{ env.REGISTRY }}"]
# ca=["/etc/ssl/certs/ca-certificates.crt"]
# - name: Tag Version
# run: |
# if [[ "${{ github.event_name }}" == "push" ]]; then
# echo "IMAGE_VERSION=${{ github.ref_name }}" | sed 's/report-dev//g' >> $GITHUB_ENV
# else
# echo "IMAGE_VERSION=${{ env.IMAGE_VERSION }}-${{ github.run_number }}" >> $GITHUB_ENV
# fi
# - name: Login in to registry
# uses: docker/login-action@v2
# with:
# registry: ${{ env.REGISTRY }}
# username: ${{ env.REGISTRY_USERNAME }}
# password: ${{ env.REGISTRY_PASSWORD }}
# - name: Build and push docker image
# uses: docker/build-push-action@v3
# with:
# platforms: linux/amd64
# context: .
# file: ./BMA.EHR.Report.Service/Dockerfile
# tags: ${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}:latest,${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}:${{ env.IMAGE_VERSION }}
# push: true
# - name: Remote Deploy
# uses: appleboy/ssh-action@v1.2.1
# with:
# host: ${{ vars.SSH_DEPLOY_HOST }}
# port: ${{ vars.SSH_DEPLOY_PORT }}
# username: ${{ secrets.SSH_DEPLOY_USER }}
# password: ${{ secrets.SSH_DEPLOY_PASSWORD }}
# script: |
# cd ~/repo
# ./replace-env.sh API_REPORT "${{ env.IMAGE_VERSION }}"
# ./deploy.sh ${{ env.SERVICE_NAME }}
# - name: Discord Notification
# if: always()
# run: |
# STATUS="${{ job.status == 'success' && '✅ Success' || '❌ Failed' }}"
# COLOR="${{ job.status == 'success' && '3066993' || '15158332' }}"
# TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ)
# curl -H "Content-Type: application/json" \
# -X POST \
# -d "{
# \"embeds\": [{
# \"title\": \"$STATUS\",
# \"description\": \"**Build & Deploy**\\n- Image: \`${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}\`\\n- Version: \`${{ env.IMAGE_VERSION }}\`\\n- By: \`${{ github.actor }}\`\",
# \"color\": $COLOR,
# \"footer\": {
# \"text\": \"Release Notification\",
# \"icon_url\": \"https://example.com/success-icon.png\"
# },
# \"timestamp\": \"$TIMESTAMP\"
# }]
# }" \
# ${{ env.DISCORD_WEBHOOK }}

View file

@ -1,83 +0,0 @@
name: Build & Deploy Retirement Service
on:
push:
tags:
- "retirement-dev[0-9]+.[0-9]+.[0-9]+"
- "retirement-dev[0-9]+.[0-9]+.[0-9]+*"
workflow_dispatch:
env:
REGISTRY: ${{ vars.CONTAINER_REGISTRY }}
REGISTRY_USERNAME: ${{ vars.CONTAINER_REGISTRY_USERNAME }}
REGISTRY_PASSWORD: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }}
CONTAINER_IMAGE_NAME: ${{ vars.CONTAINER_REGISTRY }}/${{ vars.CONTAINER_IMAGE_OWNER }}
IMAGE_VERSION: latest
SERVICE_NAME: hrms-api-retirement
DISCORD_WEBHOOK: ${{ vars.DISCORD_WEBHOOK }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Tag Version
shell: bash
run: |
if [[ "${{ github.event_name }}" == "push" ]]; then
VERSION=$(echo "${{ github.ref_name }}" | sed 's/retirement-dev//g')
echo "IMAGE_VERSION=${VERSION}" >> $GITHUB_ENV
else
echo "IMAGE_VERSION=${{ env.IMAGE_VERSION }}-${{ github.run_number }}" >> $GITHUB_ENV
fi
- name: Login in to registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.REGISTRY_USERNAME }}
password: ${{ env.REGISTRY_PASSWORD }}
- name: Build and push docker image
uses: docker/build-push-action@v5
with:
platforms: linux/amd64
context: .
file: ./BMA.EHR.Retirement.Service/Dockerfile
tags: ${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}:latest,${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}:${{ env.IMAGE_VERSION }}
push: true
- name: Remote Deploy
uses: appleboy/ssh-action@v1.2.1
with:
host: ${{ vars.SSH_DEPLOY_HOST }}
port: ${{ vars.SSH_DEPLOY_PORT }}
username: ${{ secrets.SSH_DEPLOY_USER }}
password: ${{ secrets.SSH_DEPLOY_PASSWORD }}
script: |
cd ~/repo
./replace-env.sh API_RETIREMENT "${{ env.IMAGE_VERSION }}"
./deploy.sh ${{ env.SERVICE_NAME }}
- name: Discord Notification
if: always()
run: |
STATUS="${{ job.status == 'success' && '✅ Success' || '❌ Failed' }}"
COLOR="${{ job.status == 'success' && '3066993' || '15158332' }}"
TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ)
curl -H "Content-Type: application/json" \
-X POST \
-d "{
\"embeds\": [{
\"title\": \"$STATUS\",
\"description\": \"**Build & Deploy**\\n- Image: \`${{ env.CONTAINER_IMAGE_NAME }}/${{ env.SERVICE_NAME }}\`\\n- Version: \`${{ env.IMAGE_VERSION }}\`\\n- By: \`${{ gitea.actor }}\`\",
\"color\": $COLOR,
\"footer\": {
\"text\": \"Release Notification\",
\"icon_url\": \"https://example.com/success-icon.png\"
},
\"timestamp\": \"$TIMESTAMP\"
}]
}" \
${{ env.DISCORD_WEBHOOK }}

View file

@ -1,49 +0,0 @@
name: Build
on:
push:
tags:
- "leave[0-9]+.[0-9]+.[0-9]+"
- "leave[0-9]+.[0-9]+.[0-9]+*"
workflow_dispatch:
env:
REGISTRY: ${{ vars.CONTAINER_REGISTRY }}
REGISTRY_USERNAME: ${{ vars.CONTAINER_REGISTRY_USERNAME }}
REGISTRY_PASSWORD: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }}
CONTAINER_IMAGE_NAME: ${{ vars.CONTAINER_REGISTRY }}/${{ vars.CONTAINER_IMAGE_OWNER }}
IMAGE_VERSION: build
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
config-inline: |
[registry."${{ env.REGISTRY }}"]
ca=["/etc/ssl/certs/ca-certificates.crt"]
- name: Tag Version
run: |
if [[ "${{ github.event_name }}" == "push" ]]; then
echo "IMAGE_VERSION=${{ github.ref_name }}" | sed 's/leave//g' >> $GITHUB_ENV
else
echo "IMAGE_VERSION=${{ env.IMAGE_VERSION }}-${{ github.run_number }}" >> $GITHUB_ENV
fi
- name: Login in to registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.REGISTRY_USERNAME }}
password: ${{ env.REGISTRY_PASSWORD }}
- name: Build and push docker image
uses: docker/build-push-action@v3
with:
platforms: linux/amd64
context: .
file: ./BMA.EHR.Leave/Dockerfile
tags: ${{ env.CONTAINER_IMAGE_NAME }}/hrms-leave:latest,${{ env.CONTAINER_IMAGE_NAME }}/hrms-leave:${{ env.IMAGE_VERSION }}
push: true

View file

@ -1,29 +0,0 @@
name: Build
on:
workflow_dispatch:
inputs:
version:
description: "Version to deploy"
type: string
required: false
default: "latest"
env:
IMAGE_VERSION: build
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Remote Deploy
uses: appleboy/ssh-action@v1.2.1
with:
host: ${{ vars.SSH_DEPLOY_HOST }}
port: ${{ vars.SSH_DEPLOY_PORT }}
username: ${{ secrets.SSH_DEPLOY_USER }}
password: ${{ secrets.SSH_DEPLOY_PASSWORD }}
script: |
cd ~/repo
./replace-env.sh API_LEAVE "${{ inputs.version }}"
./deploy.sh hrms-api-leave

View file

@ -14,6 +14,7 @@ on:
env: env:
DOCKERHUB_REGISTRY: docker.io DOCKERHUB_REGISTRY: docker.io
IMAGE_NAME: hrms-api-checkin IMAGE_NAME: hrms-api-checkin
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
jobs: jobs:
release-to-dockerhub: release-to-dockerhub:
@ -70,3 +71,31 @@ jobs:
org.opencontainers.image.description=HRMS CheckIn Consumer Service org.opencontainers.image.description=HRMS CheckIn Consumer Service
cache-from: type=gha cache-from: type=gha
cache-to: type=gha,mode=max cache-to: type=gha,mode=max
- name: Notify Discord on success
if: success()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="✅ DockerHub release succeeded\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"
- name: Notify Discord on failure
if: failure()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="❌ DockerHub release failed\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"

View file

@ -14,6 +14,7 @@ on:
env: env:
DOCKERHUB_REGISTRY: docker.io DOCKERHUB_REGISTRY: docker.io
IMAGE_NAME: hrms-api-command IMAGE_NAME: hrms-api-command
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
jobs: jobs:
release-to-dockerhub: release-to-dockerhub:
@ -70,3 +71,31 @@ jobs:
org.opencontainers.image.description=HRMS Command API Service org.opencontainers.image.description=HRMS Command API Service
cache-from: type=gha cache-from: type=gha
cache-to: type=gha,mode=max cache-to: type=gha,mode=max
- name: Notify Discord on success
if: success()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="✅ DockerHub release succeeded\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"
- name: Notify Discord on failure
if: failure()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="❌ DockerHub release failed\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"

View file

@ -14,6 +14,7 @@ on:
env: env:
DOCKERHUB_REGISTRY: docker.io DOCKERHUB_REGISTRY: docker.io
IMAGE_NAME: hrms-api-discipline IMAGE_NAME: hrms-api-discipline
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
jobs: jobs:
release-to-dockerhub: release-to-dockerhub:
@ -70,3 +71,31 @@ jobs:
org.opencontainers.image.description=HRMS Discipline API Service org.opencontainers.image.description=HRMS Discipline API Service
cache-from: type=gha cache-from: type=gha
cache-to: type=gha,mode=max cache-to: type=gha,mode=max
- name: Notify Discord on success
if: success()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="✅ DockerHub release succeeded\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"
- name: Notify Discord on failure
if: failure()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="❌ DockerHub release failed\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"

View file

@ -14,6 +14,7 @@ on:
env: env:
DOCKERHUB_REGISTRY: docker.io DOCKERHUB_REGISTRY: docker.io
IMAGE_NAME: hrms-api-insignia IMAGE_NAME: hrms-api-insignia
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
jobs: jobs:
release-to-dockerhub: release-to-dockerhub:
@ -70,3 +71,31 @@ jobs:
org.opencontainers.image.description=HRMS Insignia API Service org.opencontainers.image.description=HRMS Insignia API Service
cache-from: type=gha cache-from: type=gha
cache-to: type=gha,mode=max cache-to: type=gha,mode=max
- name: Notify Discord on success
if: success()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="✅ DockerHub release succeeded\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"
- name: Notify Discord on failure
if: failure()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="❌ DockerHub release failed\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"

View file

@ -17,6 +17,7 @@ on:
env: env:
DOCKERHUB_REGISTRY: docker.io DOCKERHUB_REGISTRY: docker.io
IMAGE_NAME: hrms-api-leave IMAGE_NAME: hrms-api-leave
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
jobs: jobs:
release-to-dockerhub: release-to-dockerhub:
@ -88,3 +89,31 @@ jobs:
- name: Image digest - name: Image digest
run: echo "Image pushed with digest ${{ steps.build.outputs.digest }}" run: echo "Image pushed with digest ${{ steps.build.outputs.digest }}"
- name: Notify Discord on success
if: success()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="✅ DockerHub release succeeded\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"
- name: Notify Discord on failure
if: failure()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="❌ DockerHub release failed\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"

View file

@ -14,6 +14,7 @@ on:
env: env:
DOCKERHUB_REGISTRY: docker.io DOCKERHUB_REGISTRY: docker.io
IMAGE_NAME: hrms-api-placement IMAGE_NAME: hrms-api-placement
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
jobs: jobs:
release-to-dockerhub: release-to-dockerhub:
@ -70,3 +71,31 @@ jobs:
org.opencontainers.image.description=HRMS Placement API Service org.opencontainers.image.description=HRMS Placement API Service
cache-from: type=gha cache-from: type=gha
cache-to: type=gha,mode=max cache-to: type=gha,mode=max
- name: Notify Discord on success
if: success()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="✅ DockerHub release succeeded\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"
- name: Notify Discord on failure
if: failure()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="❌ DockerHub release failed\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"

View file

@ -3,7 +3,7 @@ run-name: DockerHub Release - Report Service by ${{ github.actor }}
on: on:
push: push:
tags: tags:
- "report-[0-9]+.[0-9]+.[0-9]+" - "reportv2-[0-9]+.[0-9]+.[0-9]+"
workflow_dispatch: workflow_dispatch:
inputs: inputs:
IMAGE_VER: IMAGE_VER:
@ -13,7 +13,8 @@ on:
env: env:
DOCKERHUB_REGISTRY: docker.io DOCKERHUB_REGISTRY: docker.io
IMAGE_NAME: hrms-api-report IMAGE_NAME: hrms-api-reportv2
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
jobs: jobs:
release-to-dockerhub: release-to-dockerhub:
@ -70,3 +71,31 @@ jobs:
org.opencontainers.image.description=HRMS Report API Service org.opencontainers.image.description=HRMS Report API Service
cache-from: type=gha cache-from: type=gha
cache-to: type=gha,mode=max cache-to: type=gha,mode=max
- name: Notify Discord on success
if: success()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="✅ DockerHub release succeeded\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"
- name: Notify Discord on failure
if: failure()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="❌ DockerHub release failed\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"

View file

@ -14,6 +14,7 @@ on:
env: env:
DOCKERHUB_REGISTRY: docker.io DOCKERHUB_REGISTRY: docker.io
IMAGE_NAME: hrms-api-retirement IMAGE_NAME: hrms-api-retirement
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
jobs: jobs:
release-to-dockerhub: release-to-dockerhub:
@ -70,3 +71,31 @@ jobs:
org.opencontainers.image.description=HRMS Retirement API Service org.opencontainers.image.description=HRMS Retirement API Service
cache-from: type=gha cache-from: type=gha
cache-to: type=gha,mode=max cache-to: type=gha,mode=max
- name: Notify Discord on success
if: success()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="✅ DockerHub release succeeded\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"
- name: Notify Discord on failure
if: failure()
env:
IMAGE_VER: ${{ steps.gen_ver.outputs.image_ver }}
run: |
TAG_INFO="Tag: ${IMAGE_VER:-unknown}"
REF_INFO="Ref: ${GITHUB_REF}"
ACTOR_INFO="Actor: ${GITHUB_ACTOR}"
MSG="❌ DockerHub release failed\n${TAG_INFO}\n${REF_INFO}\n${ACTOR_INFO}"
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"${MSG}\"}" \
"$DISCORD_WEBHOOK"

View file

@ -101,12 +101,12 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
return data; return data;
} }
public async Task<UserDutyTime?> GetLastEffectRound(Guid profileId) public async Task<UserDutyTime?> GetLastEffectRound(Guid profileId, DateTime? effectiveDate = null)
{ {
effectiveDate ??= DateTime.Now;
var data = await _dbContext.Set<UserDutyTime>() var data = await _dbContext.Set<UserDutyTime>()
.Where(x => x.ProfileId == profileId) .Where(x => x.ProfileId == profileId)
.Where(x => x.IsProcess) .Where(x => x.EffectiveDate.Value.Date <= effectiveDate.Value.Date)
.Where(x => x.EffectiveDate.Value.Date <= DateTime.Now.Date)
.OrderByDescending(x => x.EffectiveDate) .OrderByDescending(x => x.EffectiveDate)
.FirstOrDefaultAsync(); .FirstOrDefaultAsync();

View file

@ -812,7 +812,7 @@ namespace BMA.EHR.Leave.Service.Controllers
return Error("ไม่พบรอบการลงเวลาทำงาน Default", StatusCodes.Status404NotFound); return Error("ไม่พบรอบการลงเวลาทำงาน Default", StatusCodes.Status404NotFound);
} }
var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(profile.Id); var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(profile.Id, currentDate);
var roundId = effectiveDate != null ? effectiveDate.DutyTimeId : Guid.Empty; var roundId = effectiveDate != null ? effectiveDate.DutyTimeId : Guid.Empty;
var userRound = await _dutyTimeRepository.GetByIdAsync(roundId); var userRound = await _dutyTimeRepository.GetByIdAsync(roundId);
@ -877,7 +877,28 @@ namespace BMA.EHR.Leave.Service.Controllers
else else
startTime = duty.StartTimeMorning; startTime = duty.StartTimeMorning;
var checkInStatus = DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) > string checkInStatus = "NORMAL";
var leaveReq = await _leaveRequestRepository.GetLeavePeriodAsync(userId, currentDate.Date);
if (leaveReq != null)
{
var leaveRange = leaveReq.LeaveRange == null ? "" : leaveReq.LeaveRange.ToUpper();
if (leaveRange == "MORNING" || leaveRange == "ALL")
checkInStatus = "NORMAL";
else
{
checkInStatus = DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) >
DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {startTime}") ?
DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) >
DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {duty.EndTimeMorning}") ?
"ABSENT" :
"LATE" :
"NORMAL";
}
}
else
{
checkInStatus = DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) >
DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {startTime}") ? DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {startTime}") ?
DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) > DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) >
@ -885,6 +906,8 @@ namespace BMA.EHR.Leave.Service.Controllers
"ABSENT" : "ABSENT" :
"LATE" : "LATE" :
"NORMAL"; "NORMAL";
}
// process - รอทำใน queue // process - รอทำใน queue
var checkin_process = new ProcessUserTimeStamp var checkin_process = new ProcessUserTimeStamp
@ -959,16 +982,41 @@ namespace BMA.EHR.Leave.Service.Controllers
{ {
return Error(new Exception(GlobalMessages.DataNotFound), StatusCodes.Status404NotFound); return Error(new Exception(GlobalMessages.DataNotFound), StatusCodes.Status404NotFound);
} }
// fix issue : SIT ระบบบันทึกเวลาปฏิบัติงาน>>ลงเวลาเข้า-ออกงาน (กรณีลงเวลาออกอีกวัน) #921
var checkOutStatus = DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) < string checkOutStatus = "NORMAL";
DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {duty.EndTimeAfternoon}") ? var leaveReq = await _leaveRequestRepository.GetLeavePeriodAsync(userId, currentDate.Date);
// "ABSENT" : if (leaveReq != null)
checkout.CheckIn.Date < currentDate.Date ? "NORMAL" : {
"ABSENT" : var leaveRange = leaveReq.LeaveRangeEnd == null ? "" : leaveReq.LeaveRangeEnd.ToUpper();
DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) < if (leaveRange == "AFTERNOON" || leaveRange == "ALL")
DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {duty.EndTimeMorning}") ? checkOutStatus = "NORMAL";
"ABSENT" : else
"NORMAL"; {
// fix issue : SIT ระบบบันทึกเวลาปฏิบัติงาน>>ลงเวลาเข้า-ออกงาน (กรณีลงเวลาออกอีกวัน) #921
checkOutStatus = DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) <
DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {duty.EndTimeAfternoon}") ?
// "ABSENT" :
checkout.CheckIn.Date < currentDate.Date ? "NORMAL" :
"ABSENT" :
DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) <
DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {duty.EndTimeMorning}") ?
"ABSENT" :
"NORMAL";
}
}
else
{
// fix issue : SIT ระบบบันทึกเวลาปฏิบัติงาน>>ลงเวลาเข้า-ออกงาน (กรณีลงเวลาออกอีกวัน) #921
checkOutStatus = DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) <
DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {duty.EndTimeAfternoon}") ?
// "ABSENT" :
checkout.CheckIn.Date < currentDate.Date ? "NORMAL" :
"ABSENT" :
DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) <
DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {duty.EndTimeMorning}") ?
"ABSENT" :
"NORMAL";
}
if (checkout_process != null) if (checkout_process != null)
{ {

View file

@ -1768,7 +1768,8 @@ namespace BMA.EHR.Leave.Service.Controllers
// return Error("ไม่พบรอบการลงเวลา Default", StatusCodes.Status404NotFound); // return Error("ไม่พบรอบการลงเวลา Default", StatusCodes.Status404NotFound);
//} //}
var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(p.Id); // ให้ใช้วันที่จาก loop date แทน
var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(p.Id, dd.date);
var roundId = effectiveDate != null ? effectiveDate.DutyTimeId : Guid.Empty; var roundId = effectiveDate != null ? effectiveDate.DutyTimeId : Guid.Empty;
var userRound = await _dutyTimeRepository.GetByIdAsync(roundId); var userRound = await _dutyTimeRepository.GetByIdAsync(roundId);
@ -2098,7 +2099,7 @@ namespace BMA.EHR.Leave.Service.Controllers
var fullName = $"{p.Prefix}{p.FirstName} {p.LastName}"; var fullName = $"{p.Prefix}{p.FirstName} {p.LastName}";
var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(p.Id); var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(p.Id, dd.date);
var roundId = effectiveDate != null ? effectiveDate.DutyTimeId : Guid.Empty; var roundId = effectiveDate != null ? effectiveDate.DutyTimeId : Guid.Empty;
var userRound = await _dutyTimeRepository.GetByIdAsync(roundId); var userRound = await _dutyTimeRepository.GetByIdAsync(roundId);