X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;ds=sidebyside;f=lib%2Forder.php;h=95d96bb859e0db9a908779aafd3b5fe9aae8a6a8;hb=46a6490756496e873962e54db2ad1b68921cd3c8;hp=8b1bbcd1c68137911260d69ba75a413d13d36acc;hpb=6fdbfe32798452ec1c0fdbda57edabb892518409;p=readifood.git
diff --git a/lib/order.php b/lib/order.php
index 8b1bbcd..95d96bb 100644
--- a/lib/order.php
+++ b/lib/order.php
@@ -40,14 +40,7 @@
function show_orders($offset, $per_page, $requester_ids = null, $beneficiary_ids = null, $state_mask = null) {
/* XXX: Use Propel methods. */
- if (isset($state_mask)) {
- $order_ids = array();
- $dbh = Propel::getConnection();
- $sth = $dbh->prepare("select * from OrderState o where updated=(select max(updated) from OrderState where order_id=o.order_id) and state & $state_mask");
- $sth->execute();
- $order_states = OrderStatePeer::populateObjects($sth);
- foreach ($order_states as $order_state) $order_ids[] = $order_state->getOrderId();
- }
+ if (isset($state_mask)) $order_ids = get_order_ids_by_state($state_mask);
$q = new OrderQuery;
if (isset($requester_ids)) $q->filterByRequesterId($requester_ids);
if (isset($beneficiary_ids)) $q->filterByBeneficiaryId($beneficiary_ids);
@@ -57,27 +50,7 @@
$orders = $q->orderByDate()->find();
if (count($orders)) {
foreach ($orders as $order) {
- echo "
\nOrder " . $order->getStrongLink($order->getId()) . ": " . get_order_displayname($order);
- if (check_admin(1)) {
- echo " " . $order->getDeleteLink();
- }
-
- /* XXX: Should pull from query. */
- $q = new ContactQuery;
- $contact = $q->findOneById($order->getBeneficiaryId());
- if ($contact) {
- echo " for " . $contact->getLink();
- $area = get_contact_area($contact);
- if ($area) echo " in " . $area->getLink();
- }
-
- if ($order->getHubId()) {
- $q = new HubQuery;
- $hub = $q->findOneById($order->getHubId());
- if ($hub) echo " to hub " . $hub->getLink();
- $area = get_hub_area($hub);
- if ($area) echo " in " . $area->getLink();
- }
+ echo "
\n" . get_order_summary($order) . "
\n";
}
}
else echo " none";
@@ -101,7 +74,7 @@
if (isset($contact_id)) $contact = get_contact_by_id($contact_id);
else if ($contact_name) $contact = get_contact_by_name($contact_name);
if ($contact) {
- echo "
Orders from requester " . $contact->getLink() . ":"; + echo "
Orders from referrer " . $contact->getLink() . ":"; return show_orders($offset, $per_page, $contact->getId(), null, $state_mask); } else echo "
No such contact!
\n"; @@ -222,20 +195,23 @@ } function show_order_forms($city_id, $state_mask) { - echo "\n"; + end_form(); } 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,19 +220,29 @@ echo "No valid area for contact!
\n"; + return; + } + + $order = new Order; + $order->setBeneficiaryId($contact->getId()); + + form("standout"); + echo "Placing order for " . $contact->getStrongLink() . "."; + $parcel = $contact->getParcel(); + if ($parcel) { + echo " Suggested parcel type is " . get_contact_parcel_string($contact) . ""; + $order->setParcel($parcel); + } + echo "
\n"; + + echo ""; submit("add_order", "Order"); echo " |
Invalid requester!
\n"; + echo "Invalid referrer!
\n"; return false; } @@ -395,34 +452,43 @@ return false; } } + else $hub_id = null; - if (! is_numeric($quantity)) { - echo "Invalid quantity!
\n"; - return false; - } + if ($new && isset($_POST['recurrence'])) $recurrence = $_POST['recurrence']; + if (! $recurrence) $recurrence = 0; - $order->setDate($date); - $order->setRequesterId($requester_id); - $order->setBeneficiaryId($beneficiary_id); - $order->setHubId($hub_id); - $order->setQuantity($quantity); + $now = time(); + for ($i = 0; $i <= $recurrence; $i++) { + if ($i) { + echo "Creating recurrence $i.
\n"; + $order = new Order; + } - try { - $order->save(); + $order->setDate($then + 7 * 86400 * $i); + $order->setRequesterId($requester_id); + $order->setBeneficiaryId($beneficiary_id); + $order->setHubId($hub_id); + $order->setParcel($parcel); - $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); + /* XXX: begin/commit */ + try { + $order->save(); - $order_state->save(); - } - catch (Exception $e) { - if ($new) echo "Error placing order.
\n"; - else echo "Error updating order.
\n"; - return false; + $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; @@ -466,6 +532,7 @@ if (! count($order_states)) return; echo "\n"; foreach ($order_states as $order_state) { $date = $order_state->getUpdated(); @@ -475,6 +542,7 @@ $driver_id = $order_state->getDriverId(); if ($driver_id) $driver = get_contact_by_id($driver_id); + else $driver = null; /* XXX */ $state = $order_state->getState(); @@ -485,17 +553,18 @@ } } #$state = $states[$order_state->getState()]; - echo "
$username changed order to state $state"; + echo "$username changed order to state $state"; if ($driver) echo " for driver " . $driver->getDisplayname(); - echo " on $date.
\n"; + echo " on $date.$name($id) " . print_r($args, true) . "
\n"; @@ -586,15 +664,9 @@ } else if (isset($id)) show_order($id); else if ($state_mask) show_orders(0, 10, null, null, $state_mask); - else { - /* XXX: Shown after adding. */ - show_order_forms($city_id, $state_mask); - show_add_new_order_form($city_id); - } - if (count($parameters)) { - show_order_forms($city_id, $state_mask); - } + show_order_forms($city_id, $state_mask); + show_add_new_order_form($city_id); ?>