Skip to content

Commit

Permalink
Sort by varighet then startdate
Browse files Browse the repository at this point in the history
  • Loading branch information
andersrognstad committed Dec 18, 2023
1 parent 51b3494 commit c44dee8
Show file tree
Hide file tree
Showing 2 changed files with 135 additions and 11 deletions.
40 changes: 29 additions & 11 deletions src/utils/hendelseFilteringUtils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ export const getSortedEventsFromSortingType = (
return sortEventsOnVeileder(personregister, veiledere, type);
case 'UKE_ASC':
case 'UKE_DESC':
return sortEventsOnWeek(personregister, type);
return sortEventsOnTilfelleVarighetUker(personregister, type);
case 'DATO_ASC':
case 'DATO_DESC':
return sortEventsOnFrist(personregister, type);
Expand Down Expand Up @@ -289,27 +289,45 @@ const sortEventsOnName = (
: Object.fromEntries(sorted.reverse());
};

const sortEventsOnWeek = (
const sortEventsOnTilfelleVarighetUker = (
personregister: PersonregisterState,
order: SortingType
): PersonregisterState => {
const sorted = Object.entries(personregister).sort(
([, persondataA], [, persondataB]) => {
const startDateA =
persondataA.latestOppfolgingstilfelle?.oppfolgingstilfelleStart;
const startDateB =
persondataB.latestOppfolgingstilfelle?.oppfolgingstilfelleStart;
if (!startDateA) return order === 'UKE_ASC' ? -1 : 1;
if (!startDateB) return order === 'UKE_ASC' ? 1 : -1;
if (startDateA > startDateB) return order === 'UKE_ASC' ? -1 : 1;
if (startDateA < startDateB) return order === 'UKE_ASC' ? 1 : -1;
return 0;
const varighetUkerA = persondataA.latestOppfolgingstilfelle?.varighetUker;
const varighetUkerB = persondataB.latestOppfolgingstilfelle?.varighetUker;
if (!varighetUkerA) return order === 'UKE_ASC' ? -1 : 1;
if (!varighetUkerB) return order === 'UKE_ASC' ? 1 : -1;
const compareVarighet =
order === 'UKE_ASC'
? varighetUkerA - varighetUkerB
: varighetUkerB - varighetUkerA;
return compareVarighet === 0
? compareTilfelleStart(persondataA, persondataB, order)
: compareVarighet;
}
);

return Object.fromEntries(sorted);
};

const compareTilfelleStart = (
persondataA: PersonData,
persondataB: PersonData,
order: SortingType
) => {
const startDateA =
persondataA.latestOppfolgingstilfelle?.oppfolgingstilfelleStart;
const startDateB =
persondataB.latestOppfolgingstilfelle?.oppfolgingstilfelleStart;
if (!startDateA) return order === 'UKE_ASC' ? -1 : 1;
if (!startDateB) return order === 'UKE_ASC' ? 1 : -1;
if (startDateA > startDateB) return order === 'UKE_ASC' ? -1 : 1;
if (startDateA < startDateB) return order === 'UKE_ASC' ? 1 : -1;
return 0;
};

const sortEventsOnFrist = (
personregister: PersonregisterState,
order: 'DATO_ASC' | 'DATO_DESC'
Expand Down
106 changes: 106 additions & 0 deletions test/utils/hendelseFilteringUtilsTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,112 @@ describe('hendelseFilteringUtils', () => {
expect(Object.values(result)[1]?.navn).to.deep.equal('Bjarne Bjarne');
expect(Object.values(result)[2]?.navn).to.deep.equal('Agnes Agnes');
});

describe('sort by sykefravar varighet uker', () => {
const personWithLongestVarighet: PersonData = {
...createPersonDataWithName('Agnes Agnes'),
latestOppfolgingstilfelle: {
varighetUker: 10,
virksomhetList: [],
oppfolgingstilfelleStart: new Date('2023-01-01'),
oppfolgingstilfelleEnd: new Date('2023-03-15'),
},
};
const personWithShortestVarighet: PersonData = {
...createPersonDataWithName('Bjarne Bjarne'),
latestOppfolgingstilfelle: {
varighetUker: 4,
virksomhetList: [],
oppfolgingstilfelleStart: new Date('2023-02-01'),
oppfolgingstilfelleEnd: new Date('2023-02-28'),
},
};
const personWithEarliestTilfelleStart: PersonData = {
...createPersonDataWithName('Agnes Agnes'),
latestOppfolgingstilfelle: {
varighetUker: 8,
virksomhetList: [],
oppfolgingstilfelleStart: new Date('2023-01-01'),
oppfolgingstilfelleEnd: new Date('2023-03-01'),
},
};
const personWithLatestTilfelleStart: PersonData = {
...createPersonDataWithName('Bjarne Bjarne'),
latestOppfolgingstilfelle: {
varighetUker: 8,
virksomhetList: [],
oppfolgingstilfelleStart: new Date('2023-02-01'),
oppfolgingstilfelleEnd: new Date('2023-04-01'),
},
};

it('sorts by varighet uker ascending', () => {
const result = getSortedEventsFromSortingType(
{
'09128034883': personWithLongestVarighet,
'16624407794': personWithShortestVarighet,
},
[],
'UKE_ASC'
);
expect(Object.values(result)[0]?.navn).to.deep.equal(
personWithShortestVarighet.navn
);
expect(Object.values(result)[1]?.navn).to.deep.equal(
personWithLongestVarighet.navn
);
});

it('sorts by varighet uker descending', () => {
const result = getSortedEventsFromSortingType(
{
'09128034883': personWithLongestVarighet,
'16624407794': personWithShortestVarighet,
},
[],
'UKE_DESC'
);
expect(Object.values(result)[0]?.navn).to.deep.equal(
personWithLongestVarighet.navn
);
expect(Object.values(result)[1]?.navn).to.deep.equal(
personWithShortestVarighet.navn
);
});

it('sorts by tilfelle-start if equal varighet uker ascending', () => {
const result = getSortedEventsFromSortingType(
{
'09128034883': personWithEarliestTilfelleStart,
'16624407794': personWithLatestTilfelleStart,
},
[],
'UKE_ASC'
);
expect(Object.values(result)[0]?.navn).to.deep.equal(
personWithLatestTilfelleStart.navn
);
expect(Object.values(result)[1]?.navn).to.deep.equal(
personWithEarliestTilfelleStart.navn
);
});
it('sorts by tilfelle-start if equal varighet uker descending', () => {
const result = getSortedEventsFromSortingType(
{
'09128034883': personWithEarliestTilfelleStart,
'16624407794': personWithLatestTilfelleStart,
},
[],
'UKE_DESC'
);
expect(Object.values(result)[0]?.navn).to.deep.equal(
personWithEarliestTilfelleStart.navn
);
expect(Object.values(result)[1]?.navn).to.deep.equal(
personWithLatestTilfelleStart.navn
);
});
});
describe('sort by frist', () => {
it('Sorts by aktivitetskrav avventer-frist ascending', () => {
const personWithEarliestFrist: PersonData = {
Expand Down

0 comments on commit c44dee8

Please sign in to comment.