Skip to content

Commit

Permalink
Fixed assistance level counting and changed stat day for yearly values
Browse files Browse the repository at this point in the history
  • Loading branch information
tmkrepo committed Feb 3, 2025
1 parent 9d783a6 commit 6db1a6a
Show file tree
Hide file tree
Showing 5 changed files with 356 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ interface ReportSelection {
const emptyReportSelection = {
monthlyStatistics: false,
ageStatistics: false,
yearlyStatistics: false,
yearlyStatistics: false
}

const emptyMonthlyValue: RegionalSurveyReportResult = {
Expand Down Expand Up @@ -345,28 +345,47 @@ export default React.memo(function TampereRegionalSurveyReport() {
key: 'club5YearOldCount'
},
{
label: t.yearlyStatisticsColumns.preschoolDaycareUnitCareCount,
label:
t.yearlyStatisticsColumns.preschoolDaycareUnitCareCount,
key: 'preschoolDaycareUnitCareCount'
},
{
label: t.yearlyStatisticsColumns.preschoolFamilyCareCount,
key: 'preschoolDaycareFamilyCareCount'
},
{
label: t.yearlyStatisticsColumns.generalAssistanceCount,
key: 'generalAssistanceCount'
label:
t.yearlyStatisticsColumns.voucherGeneralAssistanceCount,
key: 'voucherGeneralAssistanceCount'
},
{
label:
t.yearlyStatisticsColumns.voucherSpecialAssistanceCount,
key: 'voucherSpecialAssistanceCount'
},
{
label:
t.yearlyStatisticsColumns
.voucherEnhancedAssistanceCount,
key: 'voucherEnhancedAssistanceCount'
},
{
label:
t.yearlyStatisticsColumns
.municipalGeneralAssistanceCount,
key: 'municipalGeneralAssistanceCount'
},
{
label:
t.yearlyStatisticsColumns
.specialAssistanceCount,
key: 'specialAssistanceCount'
.municipalSpecialAssistanceCount,
key: 'municipalSpecialAssistanceCount'
},
{
label:
t.yearlyStatisticsColumns
.enhancedAssistanceCount,
key: 'enhancedAssistanceCount'
.municipalEnhancedAssistanceCount,
key: 'municipalEnhancedAssistanceCount'
}
]}
filename={`${t.reportLabel} ${selectedYear} - ${t.yearlyStatisticsReport}.csv`}
Expand Down
9 changes: 6 additions & 3 deletions frontend/src/lib-common/generated/api-types/reports.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1166,16 +1166,19 @@ export type VoucherReportRowType =
*/
export interface YearlyStatisticsResult {
club5YearOldCount: number
enhancedAssistanceCount: number
familyCare5YearOldCount: number
generalAssistanceCount: number
municipal5YearOldCount: number
municipalEnhancedAssistanceCount: number
municipalGeneralAssistanceCount: number
municipalSpecialAssistanceCount: number
preschoolDaycareFamilyCareCount: number
preschoolDaycareUnitCareCount: number
purchased5YearOldCount: number
specialAssistanceCount: number
voucher5YearOldCount: number
voucherAssistanceCount: number
voucherEnhancedAssistanceCount: number
voucherGeneralAssistanceCount: number
voucherSpecialAssistanceCount: number
voucherTotalCount: number
}

Expand Down
21 changes: 16 additions & 5 deletions frontend/src/lib-customizations/defaults/employee/i18n/fi.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4369,11 +4369,22 @@ export const fi = {
municipal5YearOldCount: '5-vuotiaat kunnallisissa yksiköissä',
familyCare5YearOldCount: '5-vuotiaat perhepäivähoidossa',
club5YearOldCount: '5-vuotiaat kerhossa',
preschoolDaycareUnitCareCount: 'Täydentävän varhaiskasvatuksen lapset yksiköissä',
preschoolFamilyCareCount: 'Täydentävän varhaiskasvatuksen lapset perhepäivähoidossa',
generalAssistanceCount: 'Yleisen tuen lapsimäärä',
specialAssistanceCount: 'Erityisen tuen lapsimäärä',
enhancedAssistanceCount: 'Tehostetun tuen lapsimäärä',
preschoolDaycareUnitCareCount:
'Täydentävän varhaiskasvatuksen lapset yksiköissä',
preschoolFamilyCareCount:
'Täydentävän varhaiskasvatuksen lapset perhepäivähoidossa',
voucherGeneralAssistanceCount:
'Yleisen tuen lapsimäärä (palveluseteli)',
voucherSpecialAssistanceCount:
'Erityisen tuen lapsimäärä (palveluseteli)',
voucherEnhancedAssistanceCount:
'Tehostetun tuen lapsimäärä (palveluseteli)',
municipalGeneralAssistanceCount:
'Yleisen tuen lapsimäärä (kunnallinen)',
municipalSpecialAssistanceCount:
'Erityisen tuen lapsimäärä (kunnallinen)',
municipalEnhancedAssistanceCount:
'Tehostetun tuen lapsimäärä (kunnallinen)'
}
}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package fi.espoo.evaka.reports

import fi.espoo.evaka.FullApplicationTest
import fi.espoo.evaka.absence.AbsenceCategory
import fi.espoo.evaka.assistance.DaycareAssistanceLevel
import fi.espoo.evaka.daycare.CareType
import fi.espoo.evaka.daycare.domain.ProviderType
import fi.espoo.evaka.placement.PlacementType
Expand Down Expand Up @@ -978,6 +979,266 @@ class TampereRegionalSurveyTest : FullApplicationTest(resetDbBeforeEach = true)
assertEquals(3, results.yearlyStatistics.first().voucherAssistanceCount)
}

@Test
fun `Municipal assistance level counts are correct`() {
val octFirst = LocalDate.of(2024, 10, 1)
val testUnitData = initTestUnitData(octFirst)
val defaultPlacementDuration =
FiniteDateRange(octFirst, octFirst.plusMonths(3).minusDays(1))

val childTestData =
initTestPlacementData(
start = octFirst,
daycareId = testUnitData[0],
defaultPlacementDuration = defaultPlacementDuration,
baseAge = 5,
)

db.transaction { tx ->
// add daycare assistance periods that should show up for Aapo, Bertil and Ville
tx.insert(
DevDaycareAssistance(
childId = childTestData[0].first.id,
validDuring =
FiniteDateRange(
defaultPlacementDuration.start,
defaultPlacementDuration.end,
),
level = DaycareAssistanceLevel.GENERAL_SUPPORT_WITH_DECISION
)
)

tx.insert(
DevDaycareAssistance(
childId = childTestData[1].first.id,
validDuring =
FiniteDateRange(
defaultPlacementDuration.start,
defaultPlacementDuration.end,
),
level = DaycareAssistanceLevel.INTENSIFIED_SUPPORT
)
)

tx.insert(
DevPlacement(
childId = childTestData[3].first.id,
type = PlacementType.PRESCHOOL_DAYCARE_ONLY,
unitId = testUnitData[0],
startDate = defaultPlacementDuration.start,
endDate = defaultPlacementDuration.end,
)
)
tx.insert(
DevDaycareAssistance(
childId = childTestData[3].first.id,
validDuring =
FiniteDateRange(
defaultPlacementDuration.start,
defaultPlacementDuration.end,
),
level = DaycareAssistanceLevel.SPECIAL_SUPPORT
)
)

// add a daycare assistance period that should not show up for family care Fabio
tx.insert(
DevPlacement(
childId = childTestData[4].first.id,
type = PlacementType.DAYCARE,
unitId = testUnitData[2],
startDate = defaultPlacementDuration.start,
endDate = defaultPlacementDuration.end,
)
)
tx.insert(
DevDaycareAssistance(
childId = childTestData[4].first.id,
validDuring =
FiniteDateRange(
defaultPlacementDuration.start,
defaultPlacementDuration.end,
),
level = DaycareAssistanceLevel.SPECIAL_SUPPORT
)
)

// add a voucher daycare assistance period that should not show up
val testChildKaarina =
DevPerson(
dateOfBirth = startDate.minusYears(2),
firstName = "Kaarina",
lastName = "Kunnallinen",
language = "fi",
)

tx.insert(testChildKaarina, DevPersonType.CHILD)
tx.insert(
DevPlacement(
childId = testChildKaarina.id,
type = PlacementType.DAYCARE,
unitId = testUnitData[3],
startDate = defaultPlacementDuration.start,
endDate = defaultPlacementDuration.end,
)
)
tx.insert(
DevDaycareAssistance(
childId = testChildKaarina.id,
validDuring =
FiniteDateRange(
defaultPlacementDuration.start,
defaultPlacementDuration.end,
),
level = DaycareAssistanceLevel.SPECIAL_SUPPORT
)
)
}

val results =
tampereRegionalSurvey.getTampereRegionalSurveyYearlyStatistics(
dbInstance(),
adminLoginUser,
mockClock,
year = startDate.year,
)

// Aapo (GENERAL), Bertil (INTENSIFIED), Ville (SPECIAL)
assertEquals(1, results.yearlyStatistics.first().municipalGeneralAssistanceCount)
assertEquals(1, results.yearlyStatistics.first().municipalSpecialAssistanceCount)
assertEquals(1, results.yearlyStatistics.first().municipalEnhancedAssistanceCount)
}

@Test
fun `Voucher assistance level counts are correct`() {
val octFirst = LocalDate.of(2024, 10, 1)
val testUnitData = initTestUnitData(octFirst)
val defaultPlacementDuration =
FiniteDateRange(octFirst, octFirst.plusMonths(3).minusDays(1))

val childTestData =
initTestPlacementData(
start = octFirst,
daycareId = testUnitData[3],
defaultPlacementDuration = defaultPlacementDuration,
baseAge = 5,
)

db.transaction { tx ->
// add daycare assistance periods that should show up for Aapo, Bertil and Ville
tx.insert(
DevDaycareAssistance(
childId = childTestData[0].first.id,
validDuring =
FiniteDateRange(
defaultPlacementDuration.start,
defaultPlacementDuration.end,
),
level = DaycareAssistanceLevel.GENERAL_SUPPORT_WITH_DECISION
)
)

tx.insert(
DevDaycareAssistance(
childId = childTestData[1].first.id,
validDuring =
FiniteDateRange(
defaultPlacementDuration.start,
defaultPlacementDuration.end,
),
level = DaycareAssistanceLevel.INTENSIFIED_SUPPORT
)
)

tx.insert(
DevPlacement(
childId = childTestData[3].first.id,
type = PlacementType.PRESCHOOL_DAYCARE_ONLY,
unitId = testUnitData[3],
startDate = defaultPlacementDuration.start,
endDate = defaultPlacementDuration.end,
)
)
tx.insert(
DevDaycareAssistance(
childId = childTestData[3].first.id,
validDuring =
FiniteDateRange(
defaultPlacementDuration.start,
defaultPlacementDuration.end,
),
level = DaycareAssistanceLevel.SPECIAL_SUPPORT
)
)

// add a daycare assistance period that should not show up for family care Fabio
tx.insert(
DevPlacement(
childId = childTestData[4].first.id,
type = PlacementType.DAYCARE,
unitId = testUnitData[2],
startDate = defaultPlacementDuration.start,
endDate = defaultPlacementDuration.end,
)
)
tx.insert(
DevDaycareAssistance(
childId = childTestData[4].first.id,
validDuring =
FiniteDateRange(
defaultPlacementDuration.start,
defaultPlacementDuration.end,
),
level = DaycareAssistanceLevel.SPECIAL_SUPPORT
)
)

// add a municipal daycare assistance period that should not show up
val testChildKaarina =
DevPerson(
dateOfBirth = startDate.minusYears(2),
firstName = "Kaarina",
lastName = "Kunnallinen",
language = "fi",
)

tx.insert(testChildKaarina, DevPersonType.CHILD)
tx.insert(
DevPlacement(
childId = testChildKaarina.id,
type = PlacementType.DAYCARE,
unitId = testUnitData[0],
startDate = defaultPlacementDuration.start,
endDate = defaultPlacementDuration.end,
)
)
tx.insert(
DevDaycareAssistance(
childId = testChildKaarina.id,
validDuring =
FiniteDateRange(
defaultPlacementDuration.start,
defaultPlacementDuration.end,
),
level = DaycareAssistanceLevel.SPECIAL_SUPPORT
)
)
}

val results =
tampereRegionalSurvey.getTampereRegionalSurveyYearlyStatistics(
dbInstance(),
adminLoginUser,
mockClock,
year = startDate.year,
)

// Aapo (GENERAL), Bertil (INTENSIFIED), Ville (SPECIAL)
assertEquals(1, results.yearlyStatistics.first().voucherGeneralAssistanceCount)
assertEquals(1, results.yearlyStatistics.first().voucherSpecialAssistanceCount)
assertEquals(1, results.yearlyStatistics.first().voucherEnhancedAssistanceCount)
}

private fun initTestUnitData(monday: LocalDate): List<DaycareId> {
return db.transaction { tx ->
val areaAId = tx.insert(DevCareArea(name = "Area A", shortName = "Area A"))
Expand Down
Loading

0 comments on commit 6db1a6a

Please sign in to comment.