From: root Date: Thu, 26 Jan 2017 00:30:01 +0000 Subject: new stats box X-Git-Url: http://maxious.lambdacomplex.org/git/?p=contractdashboard.git&a=commitdiff&h=ec65262ca2bad59466701a43b1ce9438df218855 --- new stats box --- --- a/admin/import.php +++ b/admin/import.php @@ -109,13 +109,13 @@ if (in_array(($datamapping0712[$headers[$c]]), $contractNoticeFields)) { if (($datamapping0712[$headers[$c]]) == "parentCN" || ($datamapping0712[$headers[$c]]) == "CNID") { $data[$c] = substr($data[$c], 2); // take off the "CN" prefix - if ($data[$c] > 0 && $data[$c] != '0') { + if ($data[$c] > 0 && $data[$c] != '0' && $data[$c] != '') { $contractNoticeInsert[] = $data[$c]; } else { $contractNoticeInsert[] = null; } - } elseif (($datamapping0712[$headers[$c]]) == "supplierABN") { - if ($data[$c] > 0 && $data[$c] != '0') { + } elseif (($datamapping0712[$headers[$c]]) == "supplierABN" || ($datamapping0712[$headers[$c]]) == "SONID") { + if ($data[$c] > 0 && $data[$c] != '0' && $data[$c] != '') { $contractNoticeInsert[] = $data[$c]; } else { $contractNoticeInsert[] = null; @@ -191,10 +191,10 @@ // if ($success > 0) { $conn->exec("update datasets set \"lastUpdated\" = NOW() where title = 'Contract Notices'"); -/* echo "link amend
"; + echo "link amend
"; include ("linkAmendments.php"); echo "update UNSPSC
"; - include ("updateUNSPSC.php");*/ + include ("updateUNSPSC.php"); } // cn --- a/admin/importdatagov.php +++ b/admin/importdatagov.php @@ -1,7 +1,7 @@ prepare($contractNoticeInsertQ); +$contractNoticeUpdateQ = 'UPDATE contractnotice SET ("' . implode('" , "', $contractNoticeFields) . '") = ( '; +foreach ($contractNoticeFields as $key => $f) { + $contractNoticeUpdateQ.= ($key == 0 ? "" : ", ") . "?"; +} +$contractNoticeUpdateQ.= ') where "CNID" = ?;'; +$contractNoticeUpdateQ = $conn->prepare($contractNoticeUpdateQ); + function processFile($fpath) { - global $conn, $contractNoticeFields, $contractNoticeInsertQ; + global $conn, $contractNoticeFields, $contractNoticeInsertQ, $contractNoticeUpdateQ; $row = 1; $success = 0; ini_set('auto_detect_line_endings',TRUE); @@ -64,17 +72,18 @@ "Parent Contract ID" => "parentCN", "Contract ID" => "CNID", "Publish Date" => "publishDate", - "AmendmentDate" => "amendDate", + "Amendment Date" => "amendDate", "Start Date" => "contractStart", "End Date" => "contractEnd", "Value" => "value", "Description" => "description", "Agency Ref ID" => "agencyID", "UNSPSC Code" => "categoryUNSPSC", - "Title" => "category", + "UNSPSC Title" => "category", "Procurement Method" => "procurementMethod", - "TenderNumber" => "atmID", + "ATM ID" => "atmID", "SON ID" => "SONID", + "Panel Arrangement" => "SONPanelArrangement", "Confidentiality Contract Flag" => "confidentialityContract", "Confidentiality Contract Reason" => "confidentialityContractReason", "Confidentiality Outputs Flag" => "confidentialityOutputs", @@ -83,12 +92,12 @@ "Consultancy Reason" => "consultancyReason", "Amendment Reason" => "amendmentReason", "Supplier Name" => "supplierName", - "SupplierAddress" => "supplierAddress", - "SupplierSuburb" => "supplierCity", + "Supplier Address" => "supplierAddress", + "Supplier Suburb" => "supplierCity", "Supplier Postcode" => "supplierPostcode", "Supplier Country" => "supplierCountry", "Supplier ABN Exempt" => "supplierABNExempt", - "ABN" => "supplierABN", + "Supplier ABN" => "supplierABN", "Contact Name" => "", "Contact Phone" => "", "Branch" => "contactBranch", @@ -103,7 +112,7 @@ $num = count($data); if ($row == 1) { $headers = $data; - } elseif ($row > 1) { + } elseif ($row >30000 && $row < 59000) { if ($num > count($datamapping0712)) { die("Error in data import; data mapping fields out of bounds or changed $num > ".count($datamapping0712)."
" . $fpath . print_r($data)); } @@ -144,13 +153,13 @@ } flush(); // print_r($contractNoticeInsert); - $contractNoticeInsertQ->execute($contractNoticeInsert); + /* $contractNoticeInsertQ->execute($contractNoticeInsert); $errors = $conn->errorInfo(); if ($errors[1] == 7 && strpos($errors[2], "duplicate key")) { -// echo "dupe {$data[2]} row $row
\n"; + echo "dupe {$data[2]} row $row
\n"; } else { if ($errors[1] == 0) { - echo "success {$data[2]} row $row
\n"; + echo "success insert {$data[2]} row $row
\n"; $success++; } else { foreach ($contractNoticeFields as $key => $cnf) { @@ -158,8 +167,32 @@ } echo $data[2] . " failed CN insert.
" . print_r($errors, true) . "
row $row

\n"; } -} +}*/ + + + $contractNoticeUpdate = $contractNoticeInsert; + $contractNoticeUpdate[] = $data[2]; +#var_dump($contractNoticeUpdate); + /*$i =0; + while($i < 35) { + echo "{$contractNoticeFields[$i]} : {$contractNoticeUpdate[$i]}
"; + $i++; + }*/ + $contractNoticeUpdateQ->execute($contractNoticeUpdate); + $errors = $conn->errorInfo(); + + if ($errors[1] == 0) { + // echo "success update {$data[2]} row $row
\n"; + $success++; + } else { + foreach ($contractNoticeFields as $key => $cnf) { + echo var_dump($contractNoticeUpdate[$key]) . $cnf . "
"; + } + echo $data[2] . " failed CN update.
" . print_r($errors, true) . "
row $row

\n"; + } + flush(); + //die('endlol'); //echo "
\n"; } $row++; @@ -204,10 +237,10 @@ // if ($success > 0) { $conn->exec("update datasets set \"lastUpdated\" = NOW() where title = 'Contract Notices'"); - echo "link amend
"; + /*echo "link amend
"; include ("linkAmendments.php"); echo "update UNSPSC
"; - include ("updateUNSPSC.php"); + include ("updateUNSPSC.php");*/ } // cn --- a/admin/linkAmendments.php +++ b/admin/linkAmendments.php @@ -1,9 +1,6 @@ prepare($query); $query->execute(); --- a/displayAgency.php +++ b/displayAgency.php @@ -1,17 +1,35 @@

'.$agency.'

'; + echo '

' . $agency . '

'; $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'; + WHERE "agencyName" LIKE :agency AND ' . " " . $standardQ . ' ' . $yearQ . ' GROUP BY category ORDER BY count(*) DESC LIMIT 10'; $query = $conn->prepare($query); $query->bindParam(":agency", $agency); $query->execute(); databaseError($conn->errorInfo()); + + $query = ' + SELECT +sum((consultancy = \'Yes\')::int) AS consultancy, +sum(("confidentialityContract" = \'Yes\')::int) AS "confidentialityContract", +sum(("confidentialityOutputs" = \'Yes\')::int) AS "confidentialityOutputs", +sum((("procurementMethod" = \'Open\' OR "procurementMethod" = \'Open tender\') AND "SONID" IS null)::int) AS open, +sum((("procurementMethod" = \'Open\' OR "procurementMethod" = \'Open tender\') AND "SONID" IS NOT null)::int) AS "openSON", +sum(("procurementMethod" = \'Prequalified tender\' OR "procurementMethod" = \'Select\')::INT) AS prequalified, +sum(("procurementMethod" = \'Direct\' OR "procurementMethod" = \'Limited tender\')::int) AS limited, +COUNT(*) AS total +FROM contractnotice +WHERE "supplierABN" = \'51194660183\' + '; + /* + * Procurement method in text, seperate Open via SON from Open + * Consultancies, Confidentialities percentage + Compliance statistics: amendments, delay in reporting average and number completely late */ echo "

Categories

@@ -32,9 +50,36 @@ "); } echo "

"; - $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 + + $query = 'SELECT contractnotice."SONID", min(title) AS title, count(*), sum(value) AS value FROM contractnotice INNER JOIN standingoffers ON contractnotice."SONID" = standingoffers."SONID" +WHERE "agencyName" LIKE :agency AND ' . " " . $standardQ . ' ' . $yearQ . 'AND contractnotice."SONID" != \'\' GROUP BY contractnotice."SONID"'; + $query = $conn->prepare($query); + $query->bindParam(":agency", $agency); + $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

+ + + + + + $sonrows
Standing OfferContracts CountTotal Contract 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); @@ -50,7 +95,7 @@ foreach ($query->fetchAll() as $row) { setlocale(LC_MONETARY, 'en_US'); $value = number_format(doubleval($row['value']), 2); -$supplierID = $row['supplierABN'].'-'. urlencode($row['supplierName']); + $supplierID = $row['supplierABN'] . '-' . urlencode($row['supplierName']); echo(" {$row['supplierName']} {$row['count']} @@ -58,19 +103,12 @@ "); } echo "
"; -/* - * 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", "contractStart", "supplierName" FROM contractnotice - WHERE ' .$yearQ . ' "agencyName" like :agency and "childCN" is null - ORDER BY "value" DESC limit 100'; + WHERE ' . $yearQ . ' "agencyName" LIKE :agency AND "childCN" IS NULL + ORDER BY "value" DESC LIMIT 100'; $query = $conn->prepare($query); $query->bindParam(":agency", $agency); $query->execute(); @@ -89,7 +127,7 @@ foreach ($query->fetchAll() as $row) { setlocale(LC_MONETARY, 'en_US'); $value = number_format(doubleval($row['value']), 2); - echo (" + echo(" {$row['CNID']} {$row['description']} \$$value{$row['agencyName']} @@ -106,7 +144,7 @@ agenciesGraph(); $query = 'SELECT SUM("value"), "agencyName" FROM contractnotice -WHERE ' .$yearQ . ' "childCN" is null +WHERE ' . $yearQ . ' "childCN" IS NULL GROUP BY "agencyName" '; $query = $conn->prepare($query); $query->execute(); @@ -121,7 +159,7 @@ setlocale(LC_MONETARY, 'en_US'); $value = number_format(doubleval($row[0]), 2); $agency = stripslashes($row[1]); - echo ("{$agency}\$$value\n"); + echo("{$agency}\$$value\n"); } echo ""; } --- a/displaySON.php +++ b/displaySON.php @@ -9,7 +9,11 @@ $title = reset($query->fetchAll())['title']; include_header($title); echo "

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

"; - + echo '
View original record @ tenders.gov.au
'; + /* + * 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 "SONID" = :SONID @@ -45,7 +49,6 @@ $query->bindParam(":SONID", $_REQUEST['SONID']); $query->execute(); databaseError($conn->errorInfo()); - echo '
View original record @ tenders.gov.au
'; echo "

Suppliers

@@ -96,11 +99,9 @@ } echo "
"; } else { - /* - split by main categories - */ + include_header("Standing Offers"); - $query = 'SELECT sum(value), count(*), contractnotice."SONID", min(title) AS title + $query = 'SELECT sum(value), count(*), contractnotice."SONID", min(title) AS title, text_mode(category) as category 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 '; @@ -110,6 +111,7 @@ echo " + @@ -117,7 +119,9 @@ foreach ($query->fetchAll() as $row) { setlocale(LC_MONETARY, 'en_US'); $value = number_format(doubleval($row['sum']), 2); - echo(""); + $title = $row['SONID']; + if (strlen($row['title']) > 1) $title = $row['title']; + echo(""); } echo "
SONIDMain category Total Contracts Value Number of Contracts
{$row['title']}\$$value{$row['count']}
$title{$row['category']}\$$value{$row['count']}
"; } --- a/displaySupplier.php +++ b/displaySupplier.php @@ -14,11 +14,39 @@ } 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 - */ +if ($supplierABN) { + $query = 'SELECT distinct on (lower("supplierName")) "supplierName" from contractnotice where "supplierABN" = :supplierABN'; + $query = $conn->prepare($query); + $query->bindParam(":supplierABN", $supplierABN); + $query->execute(); + databaseError($conn->errorInfo()); + echo "Also known as: ".implode(', ', $query->fetchAll(PDO::FETCH_COLUMN, 0)); +} + + $query = ' + SELECT +sum((consultancy = \'Yes\')::int) AS consultancy, +sum(("confidentialityContract" = \'Yes\')::int) AS "confidentialityContract", +sum(("confidentialityOutputs" = \'Yes\')::int) AS "confidentialityOutputs", +sum((("procurementMethod" = \'Open\' OR "procurementMethod" = \'Open tender\') AND "SONID" IS null)::int) AS open, +sum((("procurementMethod" = \'Open\' OR "procurementMethod" = \'Open tender\') AND "SONID" IS NOT null)::int) AS "openSON", +sum(("procurementMethod" = \'Prequalified tender\' OR "procurementMethod" = \'Select\')::INT) AS prequalified, +sum(("procurementMethod" = \'Direct\' OR "procurementMethod" = \'Limited tender\')::int) AS limited, +COUNT(*) AS total +FROM contractnotice +WHERE' . $supplierQ . " " . $standardQ ; + $query = $conn->prepare($query); + if ($supplierParts[0] > 0) { + $query->bindParam(":supplierABN", $supplierABN); + } else { + $query->bindParam(":supplierName", $supplierName); + } + $query->execute(); + databaseError($conn->errorInfo()); + + $stats = reset($query->fetchAll()); + show_stats($stats); + $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); --- 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=alex;host=localhost"); +$conn = new PDO("pgsql:dbname=contractdashboard;user=postgres;password=snmc;host=localhost"); if (!$conn) { die("A database error occurred.\n");