feat: 연차 관리 기능 추가 (AnnualLeave 엔티티, DAO, Repository)
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -57,4 +57,47 @@ class ShiftRepository(private val context: Context) {
|
||||
suspend fun clearAllCustomAlarms() = withContext(Dispatchers.IO) {
|
||||
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
|
||||
}
|
||||
|
||||
suspend fun getAnnualLeave(): AnnualLeave? = withContext(Dispatchers.IO) {
|
||||
dao.getAnnualLeave()
|
||||
}
|
||||
|
||||
suspend fun recalculateAndSaveAnnualLeave(totalDays: Float) {
|
||||
val usedDays = calculateUsedAnnualLeave()
|
||||
val remainingDays = totalDays - usedDays
|
||||
|
||||
dao.insertAnnualLeave(AnnualLeave(
|
||||
id = 1,
|
||||
totalDays = totalDays,
|
||||
remainingDays = remainingDays
|
||||
))
|
||||
}
|
||||
|
||||
suspend fun updateRemainingAnnualLeave() {
|
||||
val annualLeave = dao.getAnnualLeave()
|
||||
annualLeave?.let {
|
||||
val usedDays = calculateUsedAnnualLeave()
|
||||
val remainingDays = it.totalDays - usedDays
|
||||
dao.insertAnnualLeave(it.copy(remainingDays = remainingDays))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user