Vylepšení

This commit is contained in:
Matyáš Caras 2022-04-05 18:45:47 +02:00
parent b51c2c46aa
commit 15ffa9e9c6
4 changed files with 24 additions and 73 deletions

View file

@ -1,2 +1,3 @@
.env .env
test test
*.test.dart

View file

@ -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

View file

@ -334,7 +334,7 @@ class Canteen {
/// - `j` - Jídlo, které chceme objednat | [Jidlo] /// - `j` - Jídlo, které chceme objednat | [Jidlo]
/// ///
/// Výstup: /// Výstup:
/// - Upraveinstance [Jidlo] tohoto jídla /// - Aktualizovainstance [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:
/// - Upraveinstance [Jidlo] tohoto jídla /// - Aktualizovainstance [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;

View file

@ -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'