From: root Date: Mon, 23 Jan 2017 09:37:18 +0000 Subject: more tables for categories X-Git-Url: http://maxious.lambdacomplex.org/git/?p=contractdashboard.git&a=commitdiff&h=634279e94621cf5cac3aa73c36938182db9d34aa --- more tables for categories --- --- a/displayAgency.php +++ b/displayAgency.php @@ -6,25 +6,64 @@ $agency = htmlentities(strip_tags($_REQUEST['agency'])); include_header($agency); echo '

'.$agency.'

'; - agencySuppliersGraph($agency); -// MethodCountGraph($agency); - // CnCGraph($agency); - // MethodValueGraph($agency); - /* biggest contracts - spending by year - spending by industry/category - spending by supplier + $query = 'SELECT category, min("categoryUNSPSC") AS "categoryUNSPSC", count(*) AS count, sum(value) AS value FROM contractnotice + WHERE "agencyName" like :agency AND '. " " . $standardQ . ' GROUP BY category order by count(*) desc limit 10'; + $query = $conn->prepare($query); + $query->bindParam(":agency", $agency); + $query->execute(); + databaseError($conn->errorInfo()); - spread procurement methods (stacked bar graph) - + percent consultancies + percent confidential (bar graph) - Average value by procurement type - - --- info - website, procurement plan, annual reports - Breakdown of divisions/branches - Breakdown percentage,number,value by procurement type - Histograph, overlaying number value reported per week over X years + echo "

Categories

+ + + + + + "; + foreach ($query->fetchAll() as $row) { + setlocale(LC_MONETARY, 'en_US'); + $value = number_format(doubleval($row['value']), 2); + $category = urlencode($row['category']); + echo(" + + + + "); + } + echo "
CategoryContracts CountTotal Contract Value
{$row['category']}{$row['count']}\$$value

"; + $query = 'SELECT SUM(value) as value, count(*), text_mode("supplierName") "supplierName", min("supplierABN") as "supplierABN", ( + case when "supplierABN" != 0 THEN "supplierABN"::text ELSE lower("supplierName") END) as "supplierID" FROM contractnotice +WHERE ' .$yearQ . " " . $standardQ . ' AND "agencyName" like :agency +GROUP BY "supplierID" ORDER BY "value" DESC'; + $query = $conn->prepare($query); + $query->bindParam(":agency", $agency); + $query->execute(); + databaseError($conn->errorInfo()); + echo "

Suppliers

+ + + + + + "; + foreach ($query->fetchAll() as $row) { + setlocale(LC_MONETARY, 'en_US'); + $value = number_format(doubleval($row['value']), 2); +$supplierID = $row['supplierABN'].'-'. urlencode($row['supplierName']); + echo(" + + + + "); + } + echo "
SupplierContracts CountTotal Contract Value
{$row['supplierName']}{$row['count']}\$$value

"; +/* + * Categories table + * SONs/Panels used table + * Replace pie chart with percent count/count/percent value/value table + * Procurement method in text, seperate Open via SON from Open + * Consultancies, Confidentialities percentage Compliance statistics: amendments, delay in reporting average and number completely late */ $query = 'SELECT "CNID", "description", "value", "agencyName", "category", @@ -37,7 +76,7 @@ $query->execute(); databaseError($conn->errorInfo()); - echo " + echo "

Contracts

--- a/displayConsultancies.php +++ b/displayConsultancies.php @@ -11,7 +11,7 @@ include_header("Consultancies"); $query = ' -SELECT SUM(value) as value, count(*), min("supplierName"), unnest(string_to_array("consultancyReason",\';\')) reason +SELECT SUM(value) as value, count(*), text_mode("supplierName"), unnest(string_to_array("consultancyReason",\';\')) reason FROM contractnotice where ' .$yearQ . ' "consultancy" = \'Yes\' and "childCN" is null GROUP BY "supplierABN",reason order by value desc '; --- a/displayContract.php +++ b/displayContract.php @@ -39,8 +39,6 @@ break; case "CNID": echo ''.$value.''; - break; - case "categoryUNSPSC": break; case "category": echo ''.$value.''; --- a/displaySON.gexf.php +++ b/displaySON.gexf.php @@ -51,7 +51,7 @@ ' . PHP_EOL; $query = ' -SELECT "supplierABN", min("supplierName") AS "supplierName", contractnotice."SONID", count(*), sum(value) AS value +SELECT "supplierABN", text_mode("supplierName") AS "supplierName", contractnotice."SONID", count(*), sum(value) AS value FROM contractnotice WHERE "childCN" IS NULL AND extract(year from "publishDate") = \'2016\' --- a/displaySON.php +++ b/displaySON.php @@ -1,52 +1,70 @@ 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 "

".$_REQUEST['SONID']." - ".$title."

"; - $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 "{$row['category']}  "; -} -echo "
"; - $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 "

" . $_REQUEST['SONID'] . " - " . $title . "

"; + + $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 "

Categories

Contract Notice Number Contract Description
+ + + + + + "; + foreach ($query->fetchAll() as $row) { + setlocale(LC_MONETARY, 'en_US'); + $value = number_format(doubleval($row['value']), 2); + $category = urlencode($row['category']); + echo(" + + + + "); + } + echo "
CategoryContracts CountTotal Contract Value
{$row['category']}{$row['count']}\$$value

"; + + $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 '
View original record @ tenders.gov.au
'; - echo " + echo "

Suppliers

"; -foreach ($query->fetchAll() as $row) { - setlocale(LC_MONETARY, 'en_US'); - $value = number_format(doubleval($row['value']) , 2); - $supplier = stripslashes($row['supplierABN'] . '-' . $row['supplierName']); - echo (" + foreach ($query->fetchAll() as $row) { + setlocale(LC_MONETARY, 'en_US'); + $value = number_format(doubleval($row['value']), 2); + $supplier = stripslashes($row['supplierABN'] . '-' . $row['supplierName']); + echo(""); - } - echo "
Supplier Contracts Count Total Contract Value
{$row['supplierName']} {$row['count']} \$$value
+ } + echo "

Contracts

@@ -56,52 +74,52 @@ "; - $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 (" + 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(""); - } - echo "
Contract Notice Number Contract DescriptionSupplier
{$row['CNID']} {$row['description']} \$$value{$row['agencyName']} {$row['contractStart']} {$row['supplierName']}
"; + } + echo ""; } 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 " + $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 "
"; - foreach ($query->fetchAll() as $row) { - setlocale(LC_MONETARY, 'en_US'); - $value = number_format(doubleval($row['sum']) , 2); - echo (""); -} -echo "
SONID Total Contracts Value Number of Contracts
{$row['title']}\$$value{$row['count']}
"; + foreach ($query->fetchAll() as $row) { + setlocale(LC_MONETARY, 'en_US'); + $value = number_format(doubleval($row['sum']), 2); + echo("{$row['title']}\$$value{$row['count']}"); + } + echo ""; } include_footer(); --- a/displaySupplier.php +++ b/displaySupplier.php @@ -1,58 +1,122 @@

'.str_replace("%","",$supplierName).'

'; - agenciesGraph(); - // MethodCountGraph($supplierS); - // CnCGraph($supplierS); - // MethodValueGraph($supplierS); - /* lobbyist ties - - links to ABR/ASIC/Google News/ASX/Court records - - total value to various agencies (bar graph) - - spread procurement methods + percent consultancies + percent confidential (bar graph) - - spread of contract values - - spread of industries (textual?) */ - // echo ''; - // echo ''; -$query = 'select contractnotice."SONID", min(title) as title, count(*), sum(value) as value from contractnotice inner join standingoffers on contractnotice."SONID" = standingoffers."SONID" WHERE ' .$yearQ . ' ' . - $supplierQ . ' ' . $standardQ - . ' and contractnotice."SONID" != \'\' group by contractnotice."SONID"'; -$query = $conn->prepare($query); + $title = $supplierName; + if ($supplierABN) { + $query = 'SELECT text_mode("supplierName") AS "supplierName" FROM contractnotice WHERE "supplierABN" = :supplierABN GROUP BY "supplierABN"'; + $query = $conn->prepare($query); + $query->bindParam(":supplierABN", $supplierABN); + $query->execute(); + databaseError($conn->errorInfo()); + $title = reset($query->fetchAll())['supplierName']; + } + include_header(str_replace("%", "", $title)); + echo '

' . str_replace("%", "", $title) . '

'; + /* + * Common names and uncommon names + * Procurement method in text, seperate Open via SON from Open + * Consultancies, Confidentialities percentage + */ + $query = 'SELECT category, min("categoryUNSPSC") AS "categoryUNSPSC", count(*) AS count, sum(value) AS value FROM contractnotice + WHERE ' . $supplierQ . " " . $standardQ . ' GROUP BY category ORDER BY count(*) DESC LIMIT 10'; + $query = $conn->prepare($query); + if ($supplierParts[0] > 0) { + $query->bindParam(":supplierABN", $supplierABN); + } else { + $query->bindParam(":supplierName", $supplierName); + } + $query->execute(); + databaseError($conn->errorInfo()); - if ($supplierParts[0] > 0) { - $query->bindParam(":supplierABN", $supplierABN); - } else { - $query->bindParam(":supplierName", $supplierName); - } + echo "

Categories

+ + + + + + "; + foreach ($query->fetchAll() as $row) { + setlocale(LC_MONETARY, 'en_US'); + $value = number_format(doubleval($row['value']), 2); + $category = urlencode($row['category']); + echo(" + + + + "); + } + echo "
CategoryContracts CountTotal Contract Value
{$row['category']}{$row['count']}\$$value

"; + + + $query = 'SELECT SUM("value") AS "value", count(*), MAX(contractnotice."agencyName") AS agencyname FROM contractnotice JOIN agency_nametoabn ON contractnotice."agencyName"=agency_nametoabn."agencyName" +WHERE ' . $yearQ . ' ' . $supplierQ . ' "childCN" IS NULL +GROUP BY abn ORDER BY SUM("value") DESC'; + $query = $conn->prepare($query); + if (count($supplierParts) > 0) { + if ($supplierParts[0] > 0) { + $query->bindParam(":supplierABN", $supplierABN); + } else { + $query->bindParam(":supplierName", $supplierName); + } + } $query->execute(); databaseError($conn->errorInfo()); -echo " + + echo "

Agencies

+ + + + + + "; + foreach ($query->fetchAll() as $row) { + setlocale(LC_MONETARY, 'en_US'); + $value = number_format(doubleval($row['value']), 2); + $agency =urlencode($row['agencyname']); + echo(" + + + + "); + } + echo "
AgencyContracts CountTotal Contract Value
{$row['agencyname']}{$row['count']}\$$value

"; + + $query = 'SELECT contractnotice."SONID", min(title) AS title, count(*), sum(value) AS value FROM contractnotice INNER JOIN standingoffers ON contractnotice."SONID" = standingoffers."SONID" WHERE ' . $yearQ . ' ' . + $supplierQ . ' ' . $standardQ + . ' AND contractnotice."SONID" != \'\' GROUP BY contractnotice."SONID"'; + $query = $conn->prepare($query); + + + if ($supplierParts[0] > 0) { + $query->bindParam(":supplierABN", $supplierABN); + } else { + $query->bindParam(":supplierName", $supplierName); + } + $query->execute(); + databaseError($conn->errorInfo()); +$sonrows = ""; + foreach ($query->fetchAll() as $row) { + setlocale(LC_MONETARY, 'en_US'); + $value = number_format(doubleval($row['value']), 2); + $sonrows .= " + {$row['title']} + {$row['count']} + \$$value + "; + } + if (strlen($sonrows) > 1) { + echo "

Standing Offers/Panels

- "; - foreach ($query->fetchAll() as $row) { - setlocale(LC_MONETARY, 'en_US'); - $value = number_format(doubleval($row['value']), 2); - echo (" - - - - "); + $sonrows
Standing Offer Contracts Count Total Contract Value
{$row['title']}{$row['count']}\$$value

"; } - echo " + echo "

Contracts

@@ -64,24 +128,24 @@ "; $query = 'SELECT "CNID", "description", "value", "agencyName", "category", "contractStart", "supplierName" - FROM contractnotice WHERE ' .$yearQ . ' ' . - $supplierQ . ' ' . $standardQ - . ' ORDER BY value DESC'; - + FROM contractnotice WHERE ' . $yearQ . ' ' . + $supplierQ . ' ' . $standardQ + . ' ORDER BY VALUE DESC'; + $query = $conn->prepare($query); - if ($supplierParts[0] > 0) { - $query->bindParam(":supplierABN", $supplierABN); - } else { - $query->bindParam(":supplierName", $supplierName); - } + if ($supplierParts[0] > 0) { + $query->bindParam(":supplierABN", $supplierABN); + } else { + $query->bindParam(":supplierName", $supplierName); + } $query->execute(); databaseError($conn->errorInfo()); foreach ($query->fetchAll() as $row) { setlocale(LC_MONETARY, 'en_US'); $value = number_format(doubleval($row['value']), 2); - echo (" + echo(" @@ -96,16 +160,16 @@ */ include_header("Suppliers"); suppliersGraph(); - $query = 'SELECT SUM("value") as val, mode("supplierName") as supplierName, "supplierABN",( - case when "supplierABN" != 0 THEN lower("supplierABN"::text) ELSE lower("supplierName") END) as supplierID + $query = 'SELECT SUM("value") AS val, text_mode("supplierName") AS supplierName, "supplierABN",( + CASE WHEN "supplierABN" != 0 THEN lower("supplierABN"::TEXT) ELSE lower("supplierName") END) AS supplierID FROM contractnotice -WHERE ' .$yearQ . ' "childCN" is null +WHERE ' . $yearQ . ' "childCN" IS NULL GROUP BY supplierID,"supplierABN" ORDER BY val DESC LIMIT 100'; $query = $conn->prepare($query); $query->execute(); - databaseError($conn->errorInfo()); + databaseError($conn->errorInfo()); echo "
Contract Notice Number Contract Description
{$row['CNID']} {$row['description']} \$$value{$row['agencyName']}
@@ -118,7 +182,7 @@ setlocale(LC_MONETARY, 'en_US'); $value = number_format(doubleval($row['val']), 2); $supplier = stripslashes($row['supplierABN'] . '-' . $row['suppliername']); - echo ("\n"); + echo("\n"); $i++; } echo "
Position
$i" . ucsmart($row['suppliername']) . "\$$value
$i" . ucsmart($row['suppliername']) . "\$$value
"; --- a/install.sql +++ b/install.sql @@ -11,10 +11,15 @@ LANGUAGE 'sql' IMMUTABLE; -- Tell Postgres how to use our aggregate -CREATE AGGREGATE mode(anyelement) ( +CREATE AGGREGATE text_mode(anyelement) ( SFUNC=array_append, --Function to call for each row. Just builds the array STYPE=anyarray, FINALFUNC=_final_mode, --Function to call after everything has been added to array INITCOND='{}' --Initialize an empty array when starting ); +CREATE VIEW suppliers AS + select distinct on ("supplierABN") "supplierABN", "supplierName", count("supplierName") from contractnotice + where "supplierABN" is not null + group by "supplierABN", "supplierName" + order by "supplierABN" asc, count("supplierName") desc; --- a/lib/common.inc.php +++ b/lib/common.inc.php @@ -4,7 +4,7 @@ error_reporting(E_ALL ^ E_NOTICE); -$conn = new PDO("pgsql:dbname=contractdashboard;user=postgres;password=snmc;host=localhost"); +$conn = new PDO("pgsql:dbname=contractdashboard;user=alex;host=localhost"); if (!$conn) { die("A database error occurred.\n"); @@ -14,7 +14,7 @@ if (strstr($_SERVER['PHP_SELF'], "labs/") || strstr($_SERVER['PHP_SELF'], "admin/") || strstr($_SERVER['PHP_SELF'], "heuristics/")) { $basePath = "../"; } -require ROOT . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'openid.php'; +/*require ROOT . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'openid.php'; require(ROOT.'/solarium/vendor/autoload.php'); require(ROOT.'/solarium/library/Solarium/Autoloader.php'); Solarium\Autoloader::register(); @@ -61,7 +61,7 @@ } else { login(); } -} +}*/ // $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); function databaseError($errMsg) { @@ -96,6 +96,7 @@ function array_sum_all($a) { if (!is_array($a)) return $a; + $totale = 0; foreach ($a as $key => $value) $totale += array_sum_all($value); return $totale; @@ -273,12 +274,12 @@
@@ -309,7 +310,7 @@ global $start; $end = (float) array_sum(explode(' ', microtime())); - echo '
Incorporates AusTender materials under a Creative Commons Attribution 3.0 Australia licence (CC BY 3.0 AU) https://creativecommons.org/licenses/by/3.0/au/
AusTender materials are released by the Department of Finance.
AusTender materials are subject to change and should be verified on the AusTender website to ensure the information is up to date and correct: www.tenders.gov.au.
' . "Processing time: " . sprintf("%.4f", ($end - $start)) . " seconds" . '
'; + echo '