This commit is contained in:
Matyáš Caras 2022-03-24 15:42:04 +01:00
parent 58880b9ab3
commit 8225abb0e2
2 changed files with 79 additions and 12 deletions

View file

@ -18,7 +18,7 @@ class Canteen {
/// Vrátí aktuální kredit ze serveru jako [double]. Jelikož je async, nejdřív [Future] /// Vrátí aktuální kredit ze serveru jako [double]. Jelikož je async, nejdřív [Future]
/// ///
/// Nastane-li chyba, vrací [Null] /// Nastane-li chyba, vrací 0
Future<double> ziskejKredit() async { Future<double> ziskejKredit() async {
if (!prihlasen) return 0.0; if (!prihlasen) return 0.0;
var r = await _getRequest("/faces/secured/main.jsp"); var r = await _getRequest("/faces/secured/main.jsp");
@ -224,12 +224,20 @@ class Canteen {
.group(0) .group(0)
.toString(); .toString();
String? orderUrl; String? orderUrl;
String? burzaUrl;
if (lzeObjednat) { if (lzeObjednat) {
// pokud lze objednat, nastavíme adresu pro objednání // pokud lze objednat, nastavíme adresu pro objednání
orderUrl = RegExp(r"(?<=ajaxOrder\(this, ').+?(?=')") var match = RegExp(r"(?<=ajaxOrder\(this, ').+?(?=')").firstMatch(o);
.firstMatch(o)! if (match != null) {
.group(0)! orderUrl = match.group(0)!.replaceAll("amp;", "");
.replaceAll("amp;", ""); }
} else {
// jinak nastavíme URL pro burzu
var match = RegExp(r"(?<=ajaxOrder\(this, ')(.+?)(?=').+?do burzy")
.firstMatch(o);
if (match != null) {
burzaUrl = match.group(1)!.replaceAll("amp;", "");
}
} }
jidla.add(Jidlo( jidla.add(Jidlo(
nazev: jidlaProDen[1] nazev: jidlaProDen[1]
@ -262,13 +270,22 @@ class Canteen {
if (novy == null) return j; if (novy == null) return j;
var lzeObjednat = var lzeObjednat =
!(novy.contains("nelze zrušit") || novy.contains("nelze objednat")); !(novy.contains("nelze zrušit") || novy.contains("nelze objednat"));
String orderUrl = ""; String? orderUrl;
String? burzaUrl;
if (lzeObjednat) { if (lzeObjednat) {
// pokud lze objednat, nastavíme adresu pro objednání // pokud lze objednat, nastavíme adresu pro objednání
orderUrl = RegExp(r"(?<=ajaxOrder\(this, ').+?(?=')") var match = RegExp(r"(?<=ajaxOrder\(this, ').+?(?=')").firstMatch(novy);
.firstMatch(novy)! if (match != null) {
.group(0)! orderUrl = match.group(0)!.replaceAll("amp;", "");
.replaceAll("amp;", ""); }
} else {
// jinak nastavíme URL pro burzu
var match = RegExp(r"(?<=ajaxOrder\(this, ')(.+?)(?=').+?do burzy")
.firstMatch(novy);
if (match != null) {
burzaUrl = match.group(1)!.replaceAll("amp;", "");
}
} }
return Jidlo( return Jidlo(
@ -278,6 +295,49 @@ class Canteen {
cena: j.cena, cena: j.cena,
lzeObjednat: j.lzeObjednat, lzeObjednat: j.lzeObjednat,
orderUrl: orderUrl, orderUrl: orderUrl,
den: j.den); // vrátit upravenou instanci den: j.den,
burzaUrl: burzaUrl); // vrátit upravenou instanci
}
Future<Jidlo> doBurzy(Jidlo j) async {
//TODO
if (j.burzaUrl == null || j.burzaUrl!.isEmpty) {
return j;
}
var res =
await _getRequest("/faces/secured/" + j.burzaUrl!); // provést operaci
if (res == null || res.contains("Chyba")) return j;
var novy = await _getRequest(
"/faces/secured/db/dbJidelnicekOnDayView.jsp?day=${j.den.year}-${(j.den.month < 10) ? "0" + j.den.month.toString() : j.den.month}-${(j.den.day < 10) ? "0" + j.den.day.toString() : j.den.day}&terminal=false&rating=null&printer=false&keyboard=false"); // získat novou URL pro objednávání
if (novy == null) return j;
var lzeObjednat =
!(novy.contains("nelze zrušit") || novy.contains("nelze objednat"));
String? orderUrl;
String? burzaUrl;
if (lzeObjednat) {
// pokud lze objednat, nastavíme adresu pro objednání
var match = RegExp(r"(?<=ajaxOrder\(this, ').+?(?=')").firstMatch(novy);
if (match != null) {
orderUrl = match.group(0)!.replaceAll("amp;", "");
}
} else {
// jinak nastavíme URL pro burzu
var match = RegExp(r"(?<=ajaxOrder\(this, ')(.+?)(?=').+?do burzy")
.firstMatch(novy);
if (match != null) {
burzaUrl = match.group(1)!.replaceAll("amp;", "");
}
}
return Jidlo(
cislo: j.cislo,
nazev: j.nazev,
objednano: !j.objednano,
cena: j.cena,
lzeObjednat: j.lzeObjednat,
orderUrl: orderUrl,
den: j.den,
burzaUrl: burzaUrl); // vrátit upravenou instanci
} }
} }

View file

@ -15,8 +15,14 @@ class Jidlo {
///Lze objednat? ///Lze objednat?
bool lzeObjednat; bool lzeObjednat;
/// Den, který je jídlo vydáváno
DateTime den; DateTime den;
/// URL pro požadavek na objednání jídla
final String? orderUrl; final String? orderUrl;
/// URL pro vložení jídla na burzu
final String? burzaUrl;
Jidlo( Jidlo(
{required this.nazev, {required this.nazev,
required this.objednano, required this.objednano,
@ -24,7 +30,8 @@ class Jidlo {
required this.den, required this.den,
this.cena, this.cena,
required this.lzeObjednat, required this.lzeObjednat,
this.orderUrl}); this.orderUrl,
this.burzaUrl});
} }
/// Reprezentuje jídelníček pro jeden dan /// Reprezentuje jídelníček pro jeden dan