From ae4d31dafebbaa076a1af6953718488651627ac8 Mon Sep 17 00:00:00 2001 From: sanjeok77 Date: Fri, 13 Mar 2026 03:34:23 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=86=A0=EC=9A=94=EC=9D=BC=20=EC=97=B0?= =?UTF-8?q?=EC=9E=A5=EA=B7=BC=EB=AC=B4=20=EA=B3=84=EC=82=B0=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ShiftRepository에 getSaturdayOvertimeHours() 메소드 추가 - FragmentSettingsLab에 토요일 연장근무 시간 표시 카드 추가 - 토요일 수 * 2시간 계산 로직 구현 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus --- .../example/shiftalarm/FragmentSettingsLab.kt | 9 +++ .../com/example/shiftalarm/ShiftRepository.kt | 15 +++++ .../main/res/layout/fragment_settings_lab.xml | 60 +++++++++++++++++-- 3 files changed, 79 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt b/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt index 67942b8..e36592f 100644 --- a/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt +++ b/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt @@ -31,6 +31,7 @@ class FragmentSettingsLab : Fragment() { setupSpinner() loadAnnualLeave() + loadSaturdayOvertime() } private fun setupSpinner() { @@ -106,6 +107,14 @@ class FragmentSettingsLab : Fragment() { } } + private fun loadSaturdayOvertime() { + lifecycleScope.launch { + val repo = ShiftRepository(requireContext()) + val overtimeHours = repo.getSaturdayOvertimeHours() + binding.tvSaturdayOvertime.text = "$overtimeHours" + } + } + override fun onDestroyView() { super.onDestroyView() _binding = null diff --git a/app/src/main/java/com/example/shiftalarm/ShiftRepository.kt b/app/src/main/java/com/example/shiftalarm/ShiftRepository.kt index b7f1511..fd2aabb 100644 --- a/app/src/main/java/com/example/shiftalarm/ShiftRepository.kt +++ b/app/src/main/java/com/example/shiftalarm/ShiftRepository.kt @@ -108,4 +108,19 @@ class ShiftRepository(private val context: Context) { )) } } + + suspend fun getSaturdayOvertimeHours(): Int = withContext(Dispatchers.IO) { + val currentYear = LocalDate.now().year + val allOverrides = dao.getAllOverrides() + + val saturdayWorkDays = allOverrides.filter { override -> + val date = LocalDate.parse(override.date) + date.year == currentYear && + date.dayOfWeek == java.time.DayOfWeek.SATURDAY && + override.shift != "휴무" && + override.shift != "휴가" + } + + saturdayWorkDays.size * 2 + } } diff --git a/app/src/main/res/layout/fragment_settings_lab.xml b/app/src/main/res/layout/fragment_settings_lab.xml index e0a12ae..7a21ddf 100644 --- a/app/src/main/res/layout/fragment_settings_lab.xml +++ b/app/src/main/res/layout/fragment_settings_lab.xml @@ -123,14 +123,64 @@ android:layout_marginBottom="8dp" android:gravity="center"/> - + + + + + + + + + + + + + + + + +