summaryrefslogtreecommitdiffstats
path: root/src/web.vala
diff options
context:
space:
mode:
authorSebastian Reichel <sre@ring0.de>2012-11-04 09:39:08 +0100
committerSebastian Reichel <sre@ring0.de>2012-11-04 09:39:08 +0100
commit25f1132d4f004211adf39e3f373ec0498c0d0fc7 (patch)
treead1b4e1c34abb59393325aed4ec952aabf26f16f /src/web.vala
parent5be3749d4690220b7b12acde68e4de984dd8ebdf (diff)
downloadserial-barcode-scanner-25f1132d4f004211adf39e3f373ec0498c0d0fc7.tar.bz2
Web: add option for adding new selling price info
Diffstat (limited to 'src/web.vala')
-rw-r--r--src/web.vala49
1 files changed, 47 insertions, 2 deletions
diff --git a/src/web.vala b/src/web.vala
index 6722f17..2bb59f8 100644
--- a/src/web.vala
+++ b/src/web.vala
@@ -372,6 +372,9 @@ public class WebServer {
case "restock":
handler_product_restock(server, msg, path, query, client, id);
break;
+ case "newprice":
+ handler_product_newprice(server, msg, path, query, client, id);
+ break;
default:
handler_product_entry(server, msg, path, query, client, id);
break;
@@ -426,9 +429,9 @@ public class WebServer {
t.replace("AMOUNT", "%d".printf(db.get_product_amount(id)));
if(l.superuser)
- t.replace("RESTOCK", "block");
+ t.replace("ISADMIN", "block");
else
- t.replace("RESTOCK", "none");
+ t.replace("ISADMIN", "none");
/* prices */
string prices = "";
@@ -540,6 +543,48 @@ public class WebServer {
}
}
+ void handler_product_newprice(Soup.Server server, Soup.Message msg, string path, GLib.HashTable<string,string>? query, Soup.ClientContext client, uint64 id) {
+ try {
+ var session = new WebSession(server, msg, path, query, client);
+ int64 timestamp = (new DateTime.now_utc()).to_unix();
+
+ if(!session.superuser) {
+ handler_403(server, msg, path, query, client);
+ return;
+ }
+
+ var template = new WebTemplate("products/newprice.html", session);
+ template.replace("TITLE", "KtT Shop System: New Price for Product %llu".printf(id));
+ template.replace("NAME", db.get_product_name(id));
+ template.menu_set_active("products");
+
+ if(query != null && query.contains("guest") && query.contains("member")) {
+ Price member = Price.parse(query["member"]);
+ Price guest = Price.parse(query["guest"]);
+
+ if(guest >= 1 && member >= 1) {
+ if(db.new_price(id, timestamp, member, guest)) {
+ template.replace("GUEST", @"$guest");
+ template.replace("MEMBER", @"$guest");
+ template.replace("NEWPRICE.OK", "block");
+ template.replace("NEWPRICE.FAIL", "none");
+ msg.set_response("text/html", Soup.MemoryUse.COPY, template.data);
+ return;
+ }
+ }
+ }
+
+ template.replace("NEWPRICE.OK", "none");
+ template.replace("NEWPRICE.FAIL", "block");
+ msg.set_response("text/html", Soup.MemoryUse.COPY, template.data);
+ return;
+ } catch(TemplateError e) {
+ stderr.printf(e.message+"\n");
+ handler_404(server, msg, path, query, client);
+ }
+ }
+
+
void handler_stats(Soup.Server server, Soup.Message msg, string path, GLib.HashTable? query, Soup.ClientContext client) {
try {
var l = new WebSession(server, msg, path, query, client);