Tidy up forms.
[readifood.git] / lib / order.php
index 20e5719..38a235a 100644 (file)
 
   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);
     $orders = $q->orderByDate()->find();
     if (count($orders)) {
       foreach ($orders as $order) {
-        echo "<br>\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 "<br>\n" . get_order_summary($order) . "<br>\n";
       }
     }
     else echo " none";
   }
 
   function show_order_forms($city_id, $state_mask) {
-    echo "<form method=\"POST\" action=\"" . $_SERVER['REQUEST_URI'] . "\">\n";
+    form("noprint standout");
     show_order_state_form($state_mask);
     show_order_areas_form($city_id);
     show_order_cities_form($city_id);
-    echo "</form>\n";
+    end_form();
   }
 
   function show_order_form($order = null, $area_id = null) {
     echo "</select></td>\n";
     echo "</tr>\n";
 
-    /* Quantity. */
-    echo "<tr>\n";
-    echo "  <td>Quantity (kg)</td>\n";
-    echo "  <td>"; input("quantity", sprintf("%0.2f", $order->getQuantity() / 1000)); echo "</td>\n";
-    echo "</tr>\n";
-
     /* Parcel type. */
     echo "<tr>\n";
     echo "  <td>Parcel size</td>\n";
     echo "  <td><select name=\"parcel_size\">\n";
-    $mask = 1 << (count($parcel_sizes) + 1);
+    $mask = 1 << count($parcel_sizes);
     for ($i = 0; $i < count($parcel_sizes); $i++) {
-      option("parcel_size", $i << 1, $parcel_sizes[$i], $order->getParcel() % $mask);
+      option("parcel_size", 1 << $i, $parcel_sizes[$i], $order->getParcel() % $mask);
     }
     echo "</select></td>\n";
     echo "</tr>\n";
       return;
     }
 
-    echo "<form method=\"POST\" action=\"" . $_SERVER['REQUEST_URI'] . "\">\n";
+    form("noprint");
     echo "<p>Place an order:</p>\n";
 
     echo "<table>\n";
     echo "  <td colspan=2>"; submit("add_order", "Order"); echo "</td></tr>\n";
     echo "</tr>\n";
     echo "</table>\n";
-    echo "</form>\n";
+    end_form();
   }
 
   function show_contact_order_form($contact) {
     $order = new Order;
     $order->setBeneficiaryId($contact->getId());
 
-    echo "<form method=\"POST\" action=\"" . $_SERVER['REQUEST_URI'] . "\">\n";
-    echo "<p>Place an order:</p>\n";
+    form("standout");
+    echo "<p>Placing order for " . $contact->getStrongLink() . ".";
+    $parcel = $contact->getParcel();
+    if ($parcel) {
+      echo "  Suggested parcel type is <span class=\"strong\">" .  get_contact_parcel_string($contact) . "</span>";
+      $order->setParcel($parcel);
+    }
+    echo "</p>\n";
 
     echo "<table>\n";
     show_order_form($order, $area_id);
     echo "  <td colspan=2>"; submit("add_order", "Order"); echo "</td></tr>\n";
     echo "</tr>\n";
     echo "</table>\n";
-    echo "</form>\n";
+    end_form();
   }
 
   function show_add_new_order_form() {
       return;
     }
 
-    echo "<form method=\"POST\" action=\"" . $_SERVER['REQUEST_URI'] . "\">\n";
+    form("noprint standout");
     echo "<p>Place an order in <select name=\"area_id\">\n";
     foreach ($areas as $area) {
       option("area_id", $area->getId(), get_area_displayname($area));
     echo "</select>";
     submit("show_add_order", "Proceed");
     echo "</p>\n";
-    echo "</form>\n";
+    end_form();
   }
 
   function update_order(&$order, $new = false) {
     $requester_id = $_POST['requester_id'];
     $beneficiary_id = $_POST['beneficiary_id'];
     $hub_id = $_POST['hub_id'];
-    $quantity = $_POST['quantity'];
     $driver_id = $_POST['driver_id'];
     if (! $driver_id) $driver_id = null;
     $state = $_POST['state'];
     }
     else $hub_id = null;
 
-    if (! is_numeric($quantity)) {
-      echo "<p>Invalid quantity!</p>\n";
-      return false;
-    }
-
     if ($new && isset($_POST['recurrence'])) $recurrence = $_POST['recurrence'];
     if (! $recurrence) $recurrence = 0;
 
       $order->setRequesterId($requester_id);
       $order->setBeneficiaryId($beneficiary_id);
       $order->setHubId($hub_id);
-      $order->setQuantity($quantity * 1000);
       $order->setParcel($parcel);
 
       /* XXX: begin/commit */
     if (isset($id)) $order = get_order_by_id($id);
     if (! $order) return;
 
-    echo "<form method=\"POST\" action=\"" . $_SERVER['REQUEST_URI'] . "\">\n";
+    form();
     echo "<p>Order: <span class=\"strong\">" . $order->getId() . "</span>";
     if (check_admin(1)) {
       echo " " . $order->getDeleteLink();
     }
 
     echo "</table>\n";
-    echo "</form>\n";
+    end_form();
 
     show_order_history($order->getId());
   }
   }
   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);
 
 
 ?>