From 5a0f6de646afa3f6198bb73f38dd1a22cccbef05 Mon Sep 17 00:00:00 2001 From: sanjeok77 Date: Thu, 12 Mar 2026 22:46:05 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=97=B0=EC=B0=A8=20=EC=A0=80=EC=9E=A5?= =?UTF-8?q?=20=EB=B0=8F=20=EA=B3=84=EC=82=B0=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - calculateUsedAnnualLeave()에서 Seoul 타임존 명시 - FragmentSettingsLab 토스트를 커스텀 토스트로 변경 - 연차 저장 시 남은 연차 자동 계산 로직 개선 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus --- .../example/shiftalarm/FragmentSettingsLab.kt | 34 +++++++++--------- .../com/example/shiftalarm/ShiftRepository.kt | 36 +++++++++---------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt b/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt index d427e35..03ab9da 100644 --- a/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt +++ b/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt @@ -55,23 +55,23 @@ class FragmentSettingsLab : Fragment() { } } - private fun setupSaveButton() { - binding.btnSaveAnnualLeave.setOnClickListener { - val totalDays = binding.npTotalDays.value.toFloat() - - lifecycleScope.launch { - val repo = ShiftRepository(requireContext()) - - repo.recalculateAndSaveAnnualLeave(totalDays) - - val updated = repo.getAnnualLeave() - updated?.let { - binding.tvRemainingDays.text = String.format("%.1f", it.remainingDays) - Toast.makeText(requireContext(), "연차가 저장되었습니다. (남은 연차: ${String.format("%.1f", it.remainingDays)}일)", Toast.LENGTH_SHORT).show() - } - } - } - } + private fun setupSaveButton() { + binding.btnSaveAnnualLeave.setOnClickListener { + val totalDays = binding.npTotalDays.value.toFloat() + + lifecycleScope.launch { + val repo = ShiftRepository(requireContext()) + + repo.recalculateAndSaveAnnualLeave(totalDays) + + val updated = repo.getAnnualLeave() + updated?.let { + binding.tvRemainingDays.text = String.format("%.1f", it.remainingDays) + showCustomToast(requireContext(), "연차가 저장되었습니다. (남은 연차: ${String.format("%.1f", it.remainingDays)}일)") + } + } + } + } override fun onDestroyView() { super.onDestroyView() diff --git a/app/src/main/java/com/example/shiftalarm/ShiftRepository.kt b/app/src/main/java/com/example/shiftalarm/ShiftRepository.kt index 12c29a0..e401d88 100644 --- a/app/src/main/java/com/example/shiftalarm/ShiftRepository.kt +++ b/app/src/main/java/com/example/shiftalarm/ShiftRepository.kt @@ -58,24 +58,24 @@ class ShiftRepository(private val context: Context) { dao.clearCustomAlarms() } - // Annual Leave - suspend fun calculateUsedAnnualLeave(): Float = withContext(Dispatchers.IO) { - val currentYear = java.time.Year.now().toString() - val overrides = dao.getAllOverrides() - - var usedDays = 0f - - for (override in overrides) { - if (override.date.startsWith(currentYear)) { - when (override.shift) { - "연차" -> usedDays += 1f - "반년" -> usedDays += 0.5f - } - } - } - - usedDays - } + // Annual Leave + suspend fun calculateUsedAnnualLeave(): Float = withContext(Dispatchers.IO) { + val currentYear = java.time.Year.now(java.time.ZoneId.of("Asia/Seoul")).toString() + val overrides = dao.getAllOverrides() + + var usedDays = 0f + + for (override in overrides) { + if (override.date.startsWith(currentYear)) { + when (override.shift) { + "연차" -> usedDays += 1f + "반년" -> usedDays += 0.5f + } + } + } + + usedDays + } suspend fun getAnnualLeave(): AnnualLeave? = withContext(Dispatchers.IO) { dao.getAnnualLeave()