Burza
This commit is contained in:
parent
58880b9ab3
commit
8225abb0e2
2 changed files with 79 additions and 12 deletions
|
@ -18,7 +18,7 @@ class Canteen {
|
|||
|
||||
/// 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 {
|
||||
if (!prihlasen) return 0.0;
|
||||
var r = await _getRequest("/faces/secured/main.jsp");
|
||||
|
@ -224,12 +224,20 @@ class Canteen {
|
|||
.group(0)
|
||||
.toString();
|
||||
String? orderUrl;
|
||||
String? burzaUrl;
|
||||
if (lzeObjednat) {
|
||||
// pokud lze objednat, nastavíme adresu pro objednání
|
||||
orderUrl = RegExp(r"(?<=ajaxOrder\(this, ').+?(?=')")
|
||||
.firstMatch(o)!
|
||||
.group(0)!
|
||||
.replaceAll("amp;", "");
|
||||
var match = RegExp(r"(?<=ajaxOrder\(this, ').+?(?=')").firstMatch(o);
|
||||
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(o);
|
||||
if (match != null) {
|
||||
burzaUrl = match.group(1)!.replaceAll("amp;", "");
|
||||
}
|
||||
}
|
||||
jidla.add(Jidlo(
|
||||
nazev: jidlaProDen[1]
|
||||
|
@ -262,13 +270,22 @@ class Canteen {
|
|||
if (novy == null) return j;
|
||||
var lzeObjednat =
|
||||
!(novy.contains("nelze zrušit") || novy.contains("nelze objednat"));
|
||||
String orderUrl = "";
|
||||
String? orderUrl;
|
||||
String? burzaUrl;
|
||||
|
||||
if (lzeObjednat) {
|
||||
// pokud lze objednat, nastavíme adresu pro objednání
|
||||
orderUrl = RegExp(r"(?<=ajaxOrder\(this, ').+?(?=')")
|
||||
.firstMatch(novy)!
|
||||
.group(0)!
|
||||
.replaceAll("amp;", "");
|
||||
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(
|
||||
|
@ -278,6 +295,49 @@ class Canteen {
|
|||
cena: j.cena,
|
||||
lzeObjednat: j.lzeObjednat,
|
||||
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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,8 +15,14 @@ class Jidlo {
|
|||
///Lze objednat?
|
||||
bool lzeObjednat;
|
||||
|
||||
/// Den, který je jídlo vydáváno
|
||||
DateTime den;
|
||||
|
||||
/// URL pro požadavek na objednání jídla
|
||||
final String? orderUrl;
|
||||
|
||||
/// URL pro vložení jídla na burzu
|
||||
final String? burzaUrl;
|
||||
Jidlo(
|
||||
{required this.nazev,
|
||||
required this.objednano,
|
||||
|
@ -24,7 +30,8 @@ class Jidlo {
|
|||
required this.den,
|
||||
this.cena,
|
||||
required this.lzeObjednat,
|
||||
this.orderUrl});
|
||||
this.orderUrl,
|
||||
this.burzaUrl});
|
||||
}
|
||||
|
||||
/// Reprezentuje jídelníček pro jeden dan
|
||||
|
|
Reference in a new issue