|
1 | | -export const levelTitles = [ |
2 | | - { level: 0, title: "Diogenes" }, |
3 | | - { level: 1, title: "Pythagoras" }, |
4 | | - { level: 2, title: "Socrates" }, |
5 | | - { level: 3, title: "Plato" }, |
6 | | - { level: 4, title: "Aristotle" }, |
| 1 | +interface ILevelCriteria { |
| 2 | + level: number; |
| 3 | + title: string; |
| 4 | + minDisputes: number; |
| 5 | + minScore: number; |
| 6 | + maxScore: number; |
| 7 | +} |
| 8 | + |
| 9 | +const levelCriteria: ILevelCriteria[] = [ |
| 10 | + { level: 0, title: "Diogenes", minDisputes: 3, minScore: 0, maxScore: 49 }, |
| 11 | + { level: 1, title: "Pythagoras", minDisputes: 0, minScore: 0, maxScore: 70 }, |
| 12 | + { level: 2, title: "Socrates", minDisputes: 3, minScore: 71, maxScore: 80 }, |
| 13 | + { level: 3, title: "Plato", minDisputes: 7, minScore: 81, maxScore: 90 }, |
| 14 | + { level: 4, title: "Aristotle", minDisputes: 10, minScore: 91, maxScore: 100 }, |
7 | 15 | ]; |
8 | 16 |
|
9 | 17 | export const getUserLevelData = (coherencyScore: number, totalResolvedDisputes: number) => { |
10 | | - if (totalResolvedDisputes >= 3 && coherencyScore < 50) { |
11 | | - return levelTitles.find(({ level }) => level === 0); |
12 | | - } |
13 | | - |
14 | | - if (totalResolvedDisputes === 0 || (totalResolvedDisputes >= 1 && coherencyScore >= 0 && coherencyScore <= 70)) { |
15 | | - return levelTitles.find(({ level }) => level === 1); |
16 | | - } |
17 | | - |
18 | | - if (totalResolvedDisputes >= 3 && coherencyScore > 70 && coherencyScore <= 80) { |
19 | | - return levelTitles.find(({ level }) => level === 2); |
20 | | - } |
21 | | - |
22 | | - if (totalResolvedDisputes >= 7 && coherencyScore > 80 && coherencyScore <= 90) { |
23 | | - return levelTitles.find(({ level }) => level === 3); |
24 | | - } |
25 | | - |
26 | | - if (totalResolvedDisputes >= 10 && coherencyScore > 90) { |
27 | | - return levelTitles.find(({ level }) => level === 4); |
| 18 | + for (const criteria of levelCriteria) { |
| 19 | + if ( |
| 20 | + totalResolvedDisputes >= criteria.minDisputes && |
| 21 | + coherencyScore >= criteria.minScore && |
| 22 | + coherencyScore <= criteria.maxScore |
| 23 | + ) { |
| 24 | + return levelCriteria.find(({ level }) => level === criteria.level); |
| 25 | + } |
28 | 26 | } |
29 | 27 |
|
30 | | - return levelTitles.find(({ level }) => level === 1); |
| 28 | + return levelCriteria.find(({ level }) => level === 1); |
31 | 29 | }; |
0 commit comments