Vylepšení
This commit is contained in:
parent
b51c2c46aa
commit
15ffa9e9c6
4 changed files with 24 additions and 73 deletions
|
@ -1,2 +1,3 @@
|
||||||
.env
|
.env
|
||||||
test
|
test
|
||||||
|
*.test.dart
|
|
@ -1,3 +1,6 @@
|
||||||
|
## 0.1.0-alpha.13
|
||||||
|
- Další opravy
|
||||||
|
- Úprava metod `doBurzy` a `objednat`, aby opravdu mohly vracet aktualizované instance `Jidlo`
|
||||||
## 0.1.0-alpha.12
|
## 0.1.0-alpha.12
|
||||||
- Skutečná oprava
|
- Skutečná oprava
|
||||||
## 0.1.0-alpha.11
|
## 0.1.0-alpha.11
|
||||||
|
|
|
@ -334,7 +334,7 @@ class Canteen {
|
||||||
/// - `j` - Jídlo, které chceme objednat | [Jidlo]
|
/// - `j` - Jídlo, které chceme objednat | [Jidlo]
|
||||||
///
|
///
|
||||||
/// Výstup:
|
/// Výstup:
|
||||||
/// - Upravená instance [Jidlo] tohoto jídla
|
/// - Aktualizovaná instance [Jidlo] tohoto jídla
|
||||||
Future<Jidlo> objednat(Jidlo j) async {
|
Future<Jidlo> objednat(Jidlo j) async {
|
||||||
if (!prihlasen) {
|
if (!prihlasen) {
|
||||||
return Future.error("Uživatel není přihlášen");
|
return Future.error("Uživatel není přihlášen");
|
||||||
|
@ -353,41 +353,14 @@ class Canteen {
|
||||||
return Future.error("Uživatel není přihlášen");
|
return Future.error("Uživatel není přihlášen");
|
||||||
}
|
}
|
||||||
|
|
||||||
var novy = await _getRequest(
|
var novy = (await jidelnicekDen(den: j.den))
|
||||||
"/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í
|
.jidla
|
||||||
var lzeObjednat =
|
.where(
|
||||||
!(novy.contains("nelze zrušit") || novy.contains("nelze objednat"));
|
(element) => element.nazev == j.nazev,
|
||||||
String? orderUrl;
|
)
|
||||||
String? burzaUrl;
|
.toList()[0];
|
||||||
|
|
||||||
if (lzeObjednat) {
|
return novy; // vrátit novou instanci
|
||||||
// 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)|(z burzy)")
|
|
||||||
.firstMatch(novy);
|
|
||||||
if (match != null) {
|
|
||||||
burzaUrl = match.group(1)!.replaceAll("amp;", "");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Jidlo(
|
|
||||||
varianta: j.varianta,
|
|
||||||
nazev: j.nazev,
|
|
||||||
objednano: !j.objednano,
|
|
||||||
cena: j.cena,
|
|
||||||
lzeObjednat: j.lzeObjednat,
|
|
||||||
orderUrl: orderUrl,
|
|
||||||
den: j.den,
|
|
||||||
burzaUrl: burzaUrl,
|
|
||||||
naBurze: (burzaUrl == null)
|
|
||||||
? false
|
|
||||||
: !burzaUrl.contains("plusburza")); // vrátit upravenou instanci
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Uloží vaše jídlo z/do burzy
|
/// Uloží vaše jídlo z/do burzy
|
||||||
|
@ -396,7 +369,7 @@ class Canteen {
|
||||||
/// - `j` - Jídlo, které chceme dát/vzít do/z burzy | [Jidlo]
|
/// - `j` - Jídlo, které chceme dát/vzít do/z burzy | [Jidlo]
|
||||||
///
|
///
|
||||||
/// Výstup:
|
/// Výstup:
|
||||||
/// - Upravená instance [Jidlo] tohoto jídla
|
/// - Aktualizovaná instance [Jidlo] tohoto jídla NEBO [Future] jako chyba
|
||||||
Future<Jidlo> doBurzy(Jidlo j) async {
|
Future<Jidlo> doBurzy(Jidlo j) async {
|
||||||
if (!prihlasen) {
|
if (!prihlasen) {
|
||||||
return Future.error("Uživatel není přihlášen");
|
return Future.error("Uživatel není přihlášen");
|
||||||
|
@ -407,47 +380,20 @@ class Canteen {
|
||||||
}
|
}
|
||||||
var res =
|
var res =
|
||||||
await _getRequest("/faces/secured/" + j.burzaUrl!); // provést operaci
|
await _getRequest("/faces/secured/" + j.burzaUrl!); // provést operaci
|
||||||
if (res.contains("Chyba")) return j;
|
if (res.contains("Chyba")) return Future.error("Chyba při vykonávání");
|
||||||
if (res.contains("přihlášení uživatele")) {
|
if (res.contains("přihlášení uživatele")) {
|
||||||
prihlasen = false;
|
prihlasen = false;
|
||||||
return Future.error("Uživatel není přihlášen");
|
return Future.error("Uživatel není přihlášen");
|
||||||
}
|
}
|
||||||
|
|
||||||
var novy = await _getRequest(
|
var novy = (await jidelnicekDen(den: j.den))
|
||||||
"/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í
|
.jidla
|
||||||
var lzeObjednat =
|
.where(
|
||||||
!(novy.contains("nelze zrušit") || novy.contains("nelze objednat"));
|
(element) => element.nazev == j.nazev,
|
||||||
String? orderUrl;
|
)
|
||||||
String? burzaUrl;
|
.toList()[0];
|
||||||
|
|
||||||
if (lzeObjednat) {
|
return novy; // vrátit upravenou instanci
|
||||||
// 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)|(z burzy)")
|
|
||||||
.firstMatch(novy);
|
|
||||||
if (match != null) {
|
|
||||||
burzaUrl = match.group(1)!.replaceAll("amp;", "");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Jidlo(
|
|
||||||
varianta: j.varianta,
|
|
||||||
nazev: j.nazev,
|
|
||||||
objednano: !j.objednano,
|
|
||||||
cena: j.cena,
|
|
||||||
lzeObjednat: j.lzeObjednat,
|
|
||||||
orderUrl: orderUrl,
|
|
||||||
den: j.den,
|
|
||||||
burzaUrl: burzaUrl,
|
|
||||||
naBurze: (burzaUrl == null)
|
|
||||||
? false
|
|
||||||
: !burzaUrl.contains("plusburza")); // vrátit upravenou instanci
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Získá aktuální jídla v burze
|
/// Získá aktuální jídla v burze
|
||||||
|
@ -508,6 +454,7 @@ class Canteen {
|
||||||
/// Výstup:
|
/// Výstup:
|
||||||
/// - [bool], `true`, pokud bylo jídlo úspěšně objednáno z burzy, jinak `false`
|
/// - [bool], `true`, pokud bylo jídlo úspěšně objednáno z burzy, jinak `false`
|
||||||
Future<bool> objednatZBurzy(Burza b) async {
|
Future<bool> objednatZBurzy(Burza b) async {
|
||||||
|
if (!prihlasen) return Future.error("Uživatel není přihlášen");
|
||||||
var res = await _getRequest("/faces/secured/" + b.url!);
|
var res = await _getRequest("/faces/secured/" + b.url!);
|
||||||
if (res.contains("Chyba")) return false;
|
if (res.contains("Chyba")) return false;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name: canteenlib
|
name: canteenlib
|
||||||
description: Library for communication with the czech canteen food ordering system iCanteen
|
description: Library for communication with the czech canteen food ordering system iCanteen
|
||||||
version: 0.1.0-alpha.12
|
version: 0.1.0-alpha.13
|
||||||
repository: 'https://github.com/hernikplays/canteenlib'
|
repository: 'https://github.com/hernikplays/canteenlib'
|
||||||
issue_tracker: 'https://github.com/hernikplays/canteenlib/issues'
|
issue_tracker: 'https://github.com/hernikplays/canteenlib/issues'
|
||||||
documentation: 'https://docs.hernikplays.cz'
|
documentation: 'https://docs.hernikplays.cz'
|
||||||
|
|
Reference in a new issue