From 12d959f791fc712225b2dfe726b85fef855bb8f9 Mon Sep 17 00:00:00 2001 From: konrad Date: Sat, 15 Mar 2008 22:00:43 +0000 Subject: [PATCH] rudimentary order per web git-svn-id: https://silmor.de/svn/softmagic/smoke/trunk@118 6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33 --- www/inc/classes/cart.php | 20 ++++++++++++++++++-- www/inc/classes/order.php | 11 ++++++++++- www/inc/rendering/submit.php | 19 ++++++++++++++++++- www/index.php | 1 + www/template/de/eventdetails.html | 2 +- 5 files changed, 48 insertions(+), 5 deletions(-) diff --git a/www/inc/classes/cart.php b/www/inc/classes/cart.php index df217e4..d69396f 100644 --- a/www/inc/classes/cart.php +++ b/www/inc/classes/cart.php @@ -102,6 +102,21 @@ class CartError if($this->eventid===false)return false; return new Event($this->eventid); } + + /**returns a nice printable string*/ + public function toString() + { + $ret="Error: "; + switch($this->etype){ + case CE_NOITEMS:$ret.="No items in cart.";break; + case CE_EVENTCANCELLED:$ret.="Event has been cancelled.";break; + case CE_EVENTNOTICKETS:$ret.="No more tickets available.";break; + case CE_EVENTUNKNOWN:$ret.="Unknown Event.";break; + case CE_EVENTOVER:$ret.="Cannot order tickets from past.";break; + case CE_INVALIDVOUCHER:$ret="Voucher is invalid.";break; + } + return $ret; + } }; /**this class represents a shopping cart*/ @@ -218,6 +233,7 @@ class Cart $ret=array(); //go through events global $db; + $itemcnt=0; $res=$db->select("cart_ticket","*","cartid=".$db->escapeString($this->cartid)); $orderstop=($db->getConfig("OrderStop")+0)*3600; if(count($res)>0) @@ -243,12 +259,12 @@ class Cart $res=$db->select("cart_voucher", "cvid,value", "cartid=".$db->escapeString($this->cartid)); foreach($res as $k=>$vc){ if(in_array("".$vc["value"],$validvouchers)) - $itmcnt++; + $itemcnt++; else $ret[]=new CartError(CE_INVALIDVOUCHER); } //check that we have something to order - if($itmcnt<=0) + if($itemcnt<=0) $ret[]=new CartError(CE_NOITEMS); //return... return $ret; diff --git a/www/inc/classes/order.php b/www/inc/classes/order.php index 6fed4e0..fc45456 100644 --- a/www/inc/classes/order.php +++ b/www/inc/classes/order.php @@ -94,6 +94,10 @@ class Order $this->newtickets[$eid]=$amt; } //TODO: get vouchers + + //get other fields + $this->deliveryaddress=$cart->getShippingAddress(); + $this->comment=$cart->getOrderComments(); return true; } @@ -116,7 +120,7 @@ class Order } /**sets the customer of this order; returns true on success, false on failure*/ - public function setCustomerid($cust) + public function setCustomerId($cust) { return $this->setCustomer(new Customer($cust)); } @@ -125,14 +129,17 @@ class Order public function placeOrder($isSale=false) { //sanity check + print(1); if(!$this->canChange())return false; if((count($this->newtickets)+count($this->newvouchers))==0)return false; + print("a"); global $db,$session; $db->beginTransaction(); if(!$this->validateOrder()){ $db->rollbackTransaction(); return false; } + print(2); //create order $this->status=ORDER_PLACED; if(isset($session))$usr=$session->getUser(); @@ -141,6 +148,7 @@ class Order $this->ordertime=time(); $this->amountpaid=0; $this->orderid=$db->insert("order",array("customerid"=>$this->customerid,"soldby"=>$usr,"deliveryaddress"=>$this->deliveryaddress,"status"=>$this->status,"ordertime"=>$this->ordertime,"comments"=>$this->comment,"amountpaid"=>0)); + print(3); //orderid ok? if($this->orderid===false){ $db->rollbackTransaction(); @@ -164,6 +172,7 @@ class Order $this->status=ORDER_SENT; $this->amountpaid=$totalprice; } + print(4); //end $db->commitTransaction(); return true; diff --git a/www/inc/rendering/submit.php b/www/inc/rendering/submit.php index 4197abf..06f7009 100644 --- a/www/inc/rendering/submit.php +++ b/www/inc/rendering/submit.php @@ -332,7 +332,24 @@ function orderTickets() $cart = new Cart($_COOKIE[COOKIE_CART]); if ($cart->isValid()) { - + $check=$cart->orderCheck(); + if(count($check)>0){ + //TODO: do something useful with that... + print("cart failed order check"); + foreach($check as $err) + print($err->toString()); + return; + } + $order=new Order; + $order->setCustomer($session->getCustomer()); + $order->emptyCart($cart); + $ret=$order->placeOrder(); + if($ret===false){ + //TODO: panic properly! + print("unable to order!"); + return; + } + //TODO: destroy cart } } } diff --git a/www/index.php b/www/index.php index dae6f40..d8ffbe5 100644 --- a/www/index.php +++ b/www/index.php @@ -41,6 +41,7 @@ switch($mode){ createCustomerRegistration(); break; case "orderOverview": + orderTickets(); createOrderOverview(); break; case "editShippingAddress": diff --git a/www/template/de/eventdetails.html b/www/template/de/eventdetails.html index 329cd7a..75e5c4d 100644 --- a/www/template/de/eventdetails.html +++ b/www/template/de/eventdetails.html @@ -36,7 +36,7 @@
- +
#endset -- 1.7.2.5