X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;ds=inline;f=lib%2Forder.php;h=928ca67efeafcb2bfc7448106970f8bd94257c6b;hb=dedb377e98ae2f222f4d8b5dacc175e4d4e73f4b;hp=40b645debb0375e522add4bbc49cf46d5d82d2dc;hpb=b0b9828b27e140f88fb0b7867388376b329959cc;p=readifood.git diff --git a/lib/order.php b/lib/order.php index 40b645d..928ca67 100644 --- a/lib/order.php +++ b/lib/order.php @@ -230,12 +230,15 @@ } function show_order_form($order = null, $area_id = null) { - global $states; + global $states, $parcel_sizes, $parcel_contents; if ($order) { $q = new OrderStateQuery; $order_state = $q->filterByOrderId($order->getId())->orderByUpdated('desc')->limit(1)->findOne(); - if ($order_state) $state = $order_state->getState(); + if ($order_state) { + $state = $order_state->getState(); + $driver_id = $order_state->getDriverId(); + } } else $order = new Order; @@ -244,7 +247,14 @@ echo "
No valid area for contact!
\n"; + return; + } + + $order = new Order; + $order->setBeneficiaryId($contact->getId()); + + echo "\n"; + } + function show_add_new_order_form() { if (! check_admin(1)) return; @@ -361,7 +425,7 @@ } function update_order(&$order, $new = false) { - global $user_id; + global $user_id, $parcel_sizes, $parcel_contents; #$date = ymd_to_iso8601("date"); $date = $_POST['date']; @@ -370,10 +434,19 @@ $hub_id = $_POST['hub_id']; $quantity = $_POST['quantity']; $driver_id = $_POST['driver_id']; + if (! $driver_id) $driver_id = null; $state = $_POST['state']; if (! $state) $state = $GLOBALS['STATE_PLACED']; + $parcel = $_POST['parcel_size']; + for ($i = count($parcel_sizes); $i < count($parcel_contents); $i++) { + if ($_POST['parcel_' . $i] == "on") $parcel |= (1 << $i); + } - if (! $date) $date = time(); + if ($date) { + list($y, $m, $d) = explode('-', $date); + $then = mktime(0, 0, 0, $m, $d, $y); + } + else $then = time(); /* XXX: check date */ $requester = get_contact_by_id($requester_id); @@ -395,34 +468,48 @@ return false; } } + else $hub_id = null; if (! is_numeric($quantity)) { echo "Invalid quantity!
\n"; return false; } - $order->setDate($date); - $order->setRequesterId($requester_id); - $order->setBeneficiaryId($beneficiary_id); - $order->setHubId($hub_id); - $order->setQuantity($quantity); + if ($new && isset($_POST['recurrence'])) $recurrence = $_POST['recurrence']; + if (! $recurrence) $recurrence = 0; - try { - $order->save(); + $now = time(); + for ($i = 0; $i <= $recurrence; $i++) { + if ($i) { + echo "Creating recurrence $i.
\n"; + $order = new Order; + } - $order_state = new OrderState; - $order_state->setUpdated(time()); - $order_state->setOrderId($order->getId()); - $order_state->setUserId($user_id); - $order_state->setDriverId($driver_id); - $order_state->setState($state); + $order->setDate($then + 7 * 86400 * $i); + $order->setRequesterId($requester_id); + $order->setBeneficiaryId($beneficiary_id); + $order->setHubId($hub_id); + $order->setParcel($parcel); - $order_state->save(); - } - catch (Exception $e) { - if ($new) echo "Error placing order.
\n"; - else echo "Error updating order.
\n"; - return false; + /* XXX: begin/commit */ + try { + $order->save(); + + $order_state = new OrderState; + $order_state->setUpdated($now); + $order_state->setOrderId($order->getId()); + $order_state->setUserId($user_id); + $order_state->setDriverId($driver_id); + $order_state->setState($state); + + $order_state->save(); + } + catch (Exception $e) { + if ($new) echo "Error placing order.
\n"; + else echo "Error updating order.
\n"; + echo "" . $e->getMessage() . "
\n"; + return false; + } } return true; @@ -475,6 +562,7 @@ $driver_id = $order_state->getDriverId(); if ($driver_id) $driver = get_contact_by_id($driver_id); + else $driver = null; /* XXX */ $state = $order_state->getState(); @@ -574,6 +662,15 @@ break; } } + else if ($parameters[0] == "place") { + if ($parameters[1] == "for") { + if ($parameters[2] == "beneficiary") { + if ($parameters[4]) $contact = get_contact_by_id($parameters[4]); + if (! $contact) $contact = get_contact_by_name(urldecode($parameters[3])); + if ($contact) show_contact_order_form($contact); + } + } + } } list($ignored, $id, $args) = parse_parameters($parameters); //echo "$name($id) " . print_r($args, true) . "
\n";