From e8f1f18725d92d3e025f7f22aa1748c1d7435d1a Mon Sep 17 00:00:00 2001 From: checkedear <271323618+checkedear@users.noreply.github.com> Date: Fri, 15 May 2026 13:59:46 +0200 Subject: [PATCH] feat: `from`, `to` params --- kreta_api/lib/src/endpoints.dart | 51 +++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/kreta_api/lib/src/endpoints.dart b/kreta_api/lib/src/endpoints.dart index e474786..250e320 100644 --- a/kreta_api/lib/src/endpoints.dart +++ b/kreta_api/lib/src/endpoints.dart @@ -1,7 +1,10 @@ +import 'package:intl/intl.dart'; + /// URL builders for Kreta ellenorzo API that depend only on [iss]. /// Auth-related URLs (login, token) and Constants stay in the app (firka). class KretaEndpoints { static const String kretaBase = "e-kreta.hu"; + static DateFormat dateTimeFormat = DateFormat('yyyy-MM-dd'); static String kreta(String iss) { if (iss == "firka-test") { @@ -11,20 +14,40 @@ class KretaEndpoints { } } + static String dateQuery(DateTime? from, DateTime? to) { + StringBuffer buffer = StringBuffer(); + + if (from == null) { + if (to == null) { + return buffer.toString(); + } + throw Exception("'from' is required to use 'to'"); + } + + buffer.write("?datumTol="); + buffer.write(dateTimeFormat.format(from)); + + if (to != null) { + buffer.write("&datumIg="); + buffer.write(dateTimeFormat.format(to)); + } + return buffer.toString(); + } + static String getStudentUrl(String iss) => "${kreta(iss)}/ellenorzo/v3/sajat/TanuloAdatlap"; static String getClassGroups(String iss) => "${kreta(iss)}/ellenorzo/v3/sajat/OsztalyCsoportok"; - static String getNoticeBoard(String iss) => - "${kreta(iss)}/ellenorzo/v3/sajat/FaliujsagElemek"; + static String getNoticeBoard(String iss, [DateTime? from, DateTime? to]) => + "${kreta(iss)}/ellenorzo/v3/sajat/FaliujsagElemek${dateQuery(from, to)}"; - static String getInfoBoard(String iss) => - "${kreta(iss)}/ellenorzo/v3/sajat/Feljegyzesek"; + static String getInfoBoard(String iss, [DateTime? from, DateTime? to]) => + "${kreta(iss)}/ellenorzo/v3/sajat/Feljegyzesek${dateQuery(from, to)}"; - static String getGrades(String iss) => - "${kreta(iss)}/ellenorzo/v3/sajat/Ertekelesek"; + static String getGrades(String iss, [DateTime? from, DateTime? to]) => + "${kreta(iss)}/ellenorzo/v3/sajat/Ertekelesek${dateQuery(from, to)}"; static String getSubjectAvg(String iss, String studyGroupId) => "${kreta(iss)}/ellenorzo/v3/sajat/Ertekelesek/Atlagok/TantargyiAtlagok?oktatasiNevelesiFeladatUid=$studyGroupId&oktatasiNevelesiFeladatUid=$studyGroupId"; @@ -32,17 +55,17 @@ class KretaEndpoints { static String getClassGroupAvg(String iss, String studyGroupId) => "${kreta(iss)}/ellenorzo/v3/sajat/Ertekelesek/Atlagok/OsztalyAtlagok?oktatasiNevelesiFeladatUid=$studyGroupId&oktatasiNevelesiFeladatUid=$studyGroupId"; - static String getTimeTable(String iss) => - "${kreta(iss)}/ellenorzo/v3/sajat/OrarendElemek"; + static String getTimeTable(String iss, [DateTime? from, DateTime? to]) => + "${kreta(iss)}/ellenorzo/v3/sajat/OrarendElemek${dateQuery(from, to)}"; - static String getOmissions(String iss) => - "${kreta(iss)}/ellenorzo/v3/sajat/Mulasztasok"; + static String getOmissions(String iss, [DateTime? from, DateTime? to]) => + "${kreta(iss)}/ellenorzo/v3/sajat/Mulasztasok${dateQuery(from, to)}"; - static String getHomework(String iss) => - "${kreta(iss)}/ellenorzo/v3/sajat/HaziFeladatok"; + static String getHomework(String iss, [DateTime? from, DateTime? to]) => + "${kreta(iss)}/ellenorzo/v3/sajat/HaziFeladatok${dateQuery(from, to)}"; - static String getTests(String iss) => - "${kreta(iss)}/ellenorzo/v3/sajat/BejelentettSzamonkeresek"; + static String getTests(String iss, [DateTime? from, DateTime? to]) => + "${kreta(iss)}/ellenorzo/v3/sajat/BejelentettSzamonkeresek${dateQuery(from, to)}"; static String getLessons(String iss) => "${kreta(iss)}/dktapi/intezmenyek/munkaterek/tanulok";