SharezoneApp / sharezone-app

Sharezone is a collaborative school organization app for iOS, Android, macOS and web with +500,000 downloads. Built with Flutter & Firebase.
https://sharezone.net
European Union Public License 1.2
279 stars 50 forks source link

Add support for the holiday countdown in other countries (e.g. Switzerland, Austria) #270

Open nilsreichardt opened 2 years ago

nilsreichardt commented 2 years ago

Description

At the moment, the holiday countdown is only available for Germany. However, we have a lot of users also in Switzerland and Austria (and in the future maybe also in other countries).

It would be great to be able to select other countries for the holiday countdown.

nilsreichardt commented 1 month ago

We can use the following API: https://www.openholidaysapi.org/en/#school-holidays. They provide data for multiple countries, e.g. Germany, Austria, Switzerland, etc.

In case the data are incorrect, we can also contribute to the repository: https://github.com/openpotato/openholidaysapi.data

nilsreichardt commented 1 month ago

UI

To keep it simple, I would still use the same drop down menu we use today, but with Austria and Switzerland. However, we should add category titles into the drop down, like:

🇩🇪 Deutschland:
- Baden-Württemberg
...
🇦🇹 Österreich:
- Burgenland
...
🇨🇭 Schweiz:
- Aargau
...

Database

To not break the state attribute in the user document, I would suggest that we just continue with the numbers:

0: "Baden-Württemberg"
1: "Bayern"
2: "Berlin"
3: "Brandenburg"
4: "Bremen"
5: "Hamburg"
6: "Hessen"
7: "Mecklenburg-Vorpommern"
8: "Niedersachsen"
9: "Nordrhein-Westfalen"
10: "Rheinland-Pfalz"
11: "Saarland"
12: "Sachsen"
13: "Sachsen-Anhalt"
14: "Schleswig-Holstein"
15: "Thüringen"
16: "Nicht aus Deutschland"
17: "Anonym bleiben"
18: "Nicht ausgewählt"
// Österreich
19: "Burgenland"
20: "Kärnten"
21: "Niederösterreich"
22: "Oberösterreich"
23: "Salzburg"
24: "Steiermark"
25: "Tirol"
26: "Vorarlberg"
27: "Wien"
// Schweiz
28: "Aargau"
29: "Appenzell Ausserrhoden"
30: "Appenzell Innerrhoden"
31: "Basel-Landschaft"
32: "Basel-Stadt"
33: "Bern"
34: "Freiburg"
35: "Genf"
36: "Glarus"
37: "Graubünden"
38: "Jura"
39: "Luzern"
40: "Neuenburg"
41: "Nidwalden"
42: "Obwalden"
43: "Schaffhausen"
44: "Schwyz"
45: "Solothurn"
46: "St. Gallen"
47: "Tessin"
48: "Thurgau"
49: "Uri"
50: "Waadt"
51: "Wallis"
52: "Zug"
53: "Zürich"

cc: @Jonas-Sander After my exam on 09.10. I can implement this