more tables for categories
[contractdashboard.git] / displaySON.php
blob:a/displaySON.php -> blob:b/displaySON.php
--- a/displaySON.php
+++ b/displaySON.php
@@ -1,52 +1,70 @@
 <?php
-include_once ("./lib/common.inc.php");
+include_once("./lib/common.inc.php");
 if ($_REQUEST['SONID']) {
-  $query = 'SELECT title from standingoffers where "SONID" = :SONID';
-$query = $conn->prepare($query);
-$query->bindParam(":SONID", $_REQUEST['SONID']);
-	$query->execute();
-		databaseError($conn->errorInfo());
-	$title = reset($query->fetchAll())['title'];
+    $query = 'SELECT title FROM standingoffers WHERE "SONID" = :SONID';
+    $query = $conn->prepare($query);
+    $query->bindParam(":SONID", $_REQUEST['SONID']);
+    $query->execute();
+    databaseError($conn->errorInfo());
+    $title = reset($query->fetchAll())['title'];
     include_header($title);
-    echo "<center><h1>".$_REQUEST['SONID']." - ".$title."</h1></center>";
-  $query = 'select category, min("categoryUNSPSC") as "categoryUNSPSC" from contractnotice where "SONID" = :SONID group by category';
-$query = $conn->prepare($query);
-$query->bindParam(":SONID", $_REQUEST['SONID']);
-	$query->execute();
-		databaseError($conn->errorInfo());
-echo "Categories: ";
-foreach ($query->fetchAll() as $row) {
-echo "<span class='label label-warning'><a href='displayCategory.php?category={$row['category']}'>{$row['category']}</a></span>&nbsp; ";
-}
-echo "<br/>";
-  $query = 'select "supplierABN", min("supplierName") as "supplierName", count(*), sum(value) as value from contractnotice
- WHERE '.$yearQ.' "childCN" is null AND "SONID" = :SONID group by "supplierABN"
- union select abn as "supplierABN",name as "supplierName",0 as sum,0 as value from standingoffer_suppliers 
- where "SONID" = :SONID and abn not in (select distinct "supplierABN" as abn from contractnotice where "SONID" = :SONID)';
-$query = $conn->prepare($query);
-$query->bindParam(":SONID", $_REQUEST['SONID']);
-	$query->execute();
-		databaseError($conn->errorInfo());
+    echo "<center><h1>" . $_REQUEST['SONID'] . " - " . $title . "</h1></center>";
+
+    $query = 'SELECT category, min("categoryUNSPSC")  AS "categoryUNSPSC", count(*) AS count, sum(value) AS value 
+FROM contractnotice 
+WHERE "SONID" = :SONID 
+GROUP BY category';
+    $query = $conn->prepare($query);
+    $query->bindParam(":SONID", $_REQUEST['SONID']);
+    $query->execute();
+    databaseError($conn->errorInfo());
+    echo "<h3>Categories</h3><table>  <thead>
+    <tr>
+      <th>Category</th>
+      <th>Contracts Count</th>
+      <th>Total Contract Value</th>
+    </tr>
+  </thead>";
+    foreach ($query->fetchAll() as $row) {
+        setlocale(LC_MONETARY, 'en_US');
+        $value = number_format(doubleval($row['value']), 2);
+        $category = urlencode($row['category']);
+        echo("<tr>
+    <td><B><a href='displayCategory.php?category=$category'>{$row['category']}</a></b></td>
+    <td>{$row['count']}</td>
+    <td>\$$value</td>
+    </tr>");
+    }
+    echo "</table><br/>";
+
+    $query = 'SELECT "supplierABN", text_mode("supplierName") AS "supplierName", count(*), sum(value) AS value FROM contractnotice
+ WHERE ' . $yearQ . ' "childCN" IS NULL AND "SONID" = :SONID GROUP BY "supplierABN"
+ UNION SELECT abn AS "supplierABN",name AS "supplierName",0 AS sum,0 AS value FROM standingoffer_suppliers 
+ WHERE "SONID" = :SONID AND abn NOT IN (SELECT DISTINCT "supplierABN" AS abn FROM contractnotice WHERE "SONID" = :SONID)';
+    $query = $conn->prepare($query);
+    $query->bindParam(":SONID", $_REQUEST['SONID']);
+    $query->execute();
+    databaseError($conn->errorInfo());
     echo '<br><a href="https://www.tenders.gov.au/?event=public.advancedsearch.CNSONRedirect&type=sonSearchEvent&SONID=' . $_REQUEST['SONID'] . '"> View original record @ tenders.gov.au</a><br>';
 
-    echo "<table>  <thead>
+    echo "<h3>Suppliers</h3><table>  <thead>
     <tr>
       <th>Supplier</th>
       <th>Contracts Count</th>
       <th>Total Contract Value</th>
     </tr>
   </thead>";
-foreach ($query->fetchAll() as $row) {
-    setlocale(LC_MONETARY, 'en_US');
-    $value = number_format(doubleval($row['value']) , 2);
-    $supplier = stripslashes($row['supplierABN'] . '-' . $row['supplierName']);
-    echo ("<tr>
+    foreach ($query->fetchAll() as $row) {
+        setlocale(LC_MONETARY, 'en_US');
+        $value = number_format(doubleval($row['value']), 2);
+        $supplier = stripslashes($row['supplierABN'] . '-' . $row['supplierName']);
+        echo("<tr>
     <td><b><a href=\"displaySupplier.php?supplier={$supplier}\">{$row['supplierName']}</a></b></td>
     <td>{$row['count']}</td>
     <td>\$$value</td>
     </tr>");
-  }
-    echo "</table><table>  <thead>
+    }
+    echo "</table><br/><h3>Contracts</h3><table>  <thead>
     <tr>
       <th>Contract Notice Number</th>
       <th>Contract Description</th>
@@ -56,52 +74,52 @@
       <th>Supplier</th>
     </tr>
   </thead>";
-  $query = 'SELECT "CNID", description, value, "agencyName", contractnotice."SONID", "contractStart", "supplierName"
-    FROM contractnotice 
-    WHERE '.$yearQ.' "childCN" is null 
+    $query = 'SELECT "CNID", title, description, value, "agencyName", contractnotice."SONID", "contractStart", "supplierName"
+    FROM contractnotice INNER JOIN standingoffers ON contractnotice."SONID" = standingoffers."SONID"
+    WHERE ' . $yearQ . ' "childCN" IS NULL 
     AND contractnotice."SONID" = :SONID
-    ORDER BY value DESC';
-$query = $conn->prepare($query);
-$query->bindParam(":SONID", $_REQUEST['SONID']);
-	$query->execute();
-		databaseError($conn->errorInfo());
-  foreach ($query->fetchAll() as $row) {
-    setlocale(LC_MONETARY, 'en_US');
-    $value = number_format(doubleval($row['value']) , 2);
-    echo ("<tr>
+    ORDER BY VALUE DESC';
+    $query = $conn->prepare($query);
+    $query->bindParam(":SONID", $_REQUEST['SONID']);
+    $query->execute();
+    databaseError($conn->errorInfo());
+    foreach ($query->fetchAll() as $row) {
+        setlocale(LC_MONETARY, 'en_US');
+        $value = number_format(doubleval($row['value']), 2);
+        echo("<tr>
     <td><a href=\"displayContract.php?CNID={$row['CNID']}\">{$row['CNID']}</a></td>
     <td><b>{$row['description']}</b></a></td>
     <td>\$$value</td><td>{$row['agencyName']}</td>
     <td>{$row['contractStart']}</td>
     <td>{$row['supplierName']}</td>
     </tr>");
-  }
-  echo "</table>";
+    }
+    echo "</table>";
 } else {
     /*
      split by main categories
     */
     include_header("Standing Offers");
-$query = 'SELECT sum(value), count(*), contractnotice."SONID", min(title) as title
-FROM contractnotice inner join standingoffers on contractnotice."SONID" = standingoffers."SONID"
-WHERE '.$yearQ.' "childCN" is null and contractnotice."SONID" != \'\'
-GROUP BY contractnotice."SONID" ORDER BY sum(value) DESC ';
-$query = $conn->prepare($query);
-	$query->execute();
-		databaseError($conn->errorInfo());
-  echo "<table>  <thead>
+    $query = 'SELECT sum(value), count(*), contractnotice."SONID", min(title) AS title
+FROM contractnotice INNER JOIN standingoffers ON contractnotice."SONID" = standingoffers."SONID"
+WHERE ' . $yearQ . ' "childCN" IS NULL AND contractnotice."SONID" != \'\'
+GROUP BY contractnotice."SONID" ORDER BY sum(VALUE) DESC ';
+    $query = $conn->prepare($query);
+    $query->execute();
+    databaseError($conn->errorInfo());
+    echo "<table>  <thead>
     <tr>
       <th>SONID</th>
       <th>Total Contracts Value</th>
       <th>Number of Contracts</th>
     </tr>
   </thead>";
-  foreach ($query->fetchAll() as $row) {
-  setlocale(LC_MONETARY, 'en_US');
-  $value = number_format(doubleval($row['sum']) , 2);
-  echo ("<tr><td><A href=\"displaySON.php?SONID={$row['SONID']}\"><b>{$row['title']}</b></a></td><td>\$$value</td><td>{$row['count']}</td></tr>");
-}
-echo "</table>";
+    foreach ($query->fetchAll() as $row) {
+        setlocale(LC_MONETARY, 'en_US');
+        $value = number_format(doubleval($row['sum']), 2);
+        echo("<tr><td><A href=\"displaySON.php?SONID={$row['SONID']}\"><b>{$row['title']}</b></a></td><td>\$$value</td><td>{$row['count']}</td></tr>");
+    }
+    echo "</table>";
 }
 include_footer();