rudimentary order per web
authorkonrad <konrad@6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33>
Sat, 15 Mar 2008 22:00:43 +0000 (22:00 +0000)
committerkonrad <konrad@6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33>
Sat, 15 Mar 2008 22:00:43 +0000 (22:00 +0000)
git-svn-id: https://silmor.de/svn/softmagic/smoke/trunk@118 6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33

www/inc/classes/cart.php
www/inc/classes/order.php
www/inc/rendering/submit.php
www/index.php
www/template/de/eventdetails.html

index df217e4..d69396f 100644 (file)
@@ -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;
index 6fed4e0..fc45456 100644 (file)
@@ -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;
index 4197abf..06f7009 100644 (file)
@@ -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
                }
        }
 }
index dae6f40..d8ffbe5 100644 (file)
@@ -41,6 +41,7 @@ switch($mode){
                createCustomerRegistration();
                break;
        case "orderOverview":
+               orderTickets();
                createOrderOverview();
                break;
        case "editShippingAddress":
index 329cd7a..75e5c4d 100644 (file)
@@ -36,7 +36,7 @@
 </div>
 <div class="ms_FormRow">
 <label for="ms_textfield_amount">Kartenanzahl:</label>
-<input type="text" id="ms_textfield_amount" name="@fieldAMOUNT@" size="2" maxlength="2"/>
+<input type="text" id="ms_textfield_amount" name="@fieldAMOUNT@" size="2" maxlength="2" value="1"/>
 </div>
 </fieldset>
 #endset