.
*/
/**
* CIA Database Access Object. This class provides functionality to
* load and save CIA sentences.
*/
require_once(FILESYSTEMROOTPATH."include/classes/IDao.php");
require_once(FILESYSTEMROOTPATH."jc/include/model/Proposals_management.php");
class Proposals_managementDao implements IDao {
/** MySQL object */
private $mysql;
/*TODO*/
/*load by latest agora!*/
/**
* Default constructor
*/
public function __construct(MySQL $mysql) {
$this->mysql = $mysql;
}
/**
* Load CIA sentence by id
*
* @param id
* @return
*/
public function load($id) {
$query = "SELECT * FROM proposals_management WHERE `id`='".$id."'";
if( $this->mysql->query($query) ) {
return new Proposals_management ($this->mysql->fetchArray());
}else {
return array();
}
}
public function loadByPID($pid, $session) {
$query = "SELECT * FROM proposals_management WHERE `proposal_id`='".$pid."' AND `session_type`='".$session."'";
if( $this->mysql->query($query) ) {
if ($data = $this->mysql->fetchArray()){
return new Proposals_management($data);
}
}
return NULL;
}
/**
* Load all Proposals_management
*
* @return array of sentences
*/
public function loadAll() {
$query = "SELECT * FROM proposals_management";
if( $this->mysql->query($query) ) {
$ret = array();
while( $row = $this->mysql->fetchArray() ) {
$ret[ $row['id'] ] = new Proposals_management($row);
}
return $ret;
}else {
return array();
}
}
public function loadVote($agora_id){
$query = 'SELECT pm.* , p.title FROM `proposals_management` AS `pm` , proposals AS `p` WHERE p.id = pm.proposal_id AND p.status >= 8 AND pm.session_type = "Plenary" AND p.agora_id='.$agora_id; //8=Plenary
if( $this->mysql->query($query) ) {
$ret = array();
while( $row = $this->mysql->fetchArray() ) {
$row['manage']='Manage';
$row['percentage'] = 0;
$row['results']='Results';
$ret[ $row['id'] ] = $row;
}
//cannot be done inside above loop, includes mysql query
$vService = $GLOBALS['ClassFactory']->getVotesService();
foreach ($ret as $id => $row){
$already_cast = $vService->votes_cast($ret[$id]['proposal_id'],'proposal');
$votes_available = $vService->votes_to_be_cast();
$percentage = sprintf("%.2f",100*$already_cast/$votes_available);
$ret[$id]['percentage']=$percentage;
}
return $ret;
}else {
return array();
}
}
public function getResults($agora_id, $hide) {
$query = 'SELECT pm.* , p.title FROM proposals_management AS pm, proposals AS p WHERE pm.proposal_id=p.id AND p.agora_id='.$agora_id.' AND pm.session_type="Plenary" AND pm.close < NOW()'; // AND pm.result IS NOT NULL
if($hide){
$query .= ' AND pm.published=1';
}
if( $this->mysql->query($query) ) {
$results = array();
while ($row = $this->mysql->fetchArray()){
if ($hide){
if ($row['result'] == 'Agora Accepted'){
$row['result'] = 'Accepted';
}
elseif($row['result'] == 'Agora Rejected'){
$row['result'] = 'Rejected';
}
else{
continue;
}
}
$row['view'] = 'view';
$row['votes_cast'] = $row['votes_in_favour'] + $row['votes_against'] + $row['votes_abstention'];
if ($row['votes_cast'] == 0){
$row['p1'] = "0.00";
$row['p2'] = "0.00";
$row['p3'] = "0.00";
$row['p4'] = "0.00";
}else{
$row['p1'] = sprintf("%.2f",100*$row['votes_in_favour'] / $row['votes_cast']);
$row['p2'] = sprintf("%.2f",100*$row['votes_against'] / $row['votes_cast']);
$row['p3'] = sprintf("%.2f",100*$row['votes_abstention'] / $row['votes_cast']);
$row['p4'] = sprintf("%.2f",100*$row['votes_cast'] / $row['votes_available']);
}
if($row['bodies_available'] == 0){
$row['p5'] = "0.00";
}
else{
$row['p5'] = sprintf("%.2f",100*$row['bodies_present'] / $row['bodies_available']);
}
$row['detail'] = 'Votes';
$results[$row['id']] = $row;
}
return $results;
}
return NULL;
}
/**
* Save or update Proposals_management:
* @param Proposals_management object with the data
* @return boolean true in case of success, false otherwise
*/
public function saveOrUpdate(IModel $proposals_management) {
$query="";
$recordID=$proposals_management->getId();
if($recordID==NULL)
{
$query.="INSERT INTO `proposals_management` SET ";
}
else
{
$query.="UPDATE `proposals_management` SET ";
}
$query .="`proposal_id` = '".$this->mysql->escape($proposals_management->getProposal_id())."', ";
$query .="`chairman_uid` = '".$this->mysql->escape($proposals_management->getChairman_uid())."', ";
$query .="`jc_member_uid` = '".$this->mysql->escape($proposals_management->getJc_member_uid())."', ";
$query .="`session_type` = '".$this->mysql->escape($proposals_management->getSession_type())."', ";
$query .="`session_info` = '".$this->mysql->escape($proposals_management->getSession_info())."', ";
$query .="`result` = '".$this->mysql->escape($proposals_management->getResult())."', ";
$query .="`bodies_available` = '".$this->mysql->escape($proposals_management->getBodies_available())."', ";
$query .="`bodies_present` = '".$this->mysql->escape($proposals_management->getBodies_present())."', ";
$query .="`votes_available` = '".$this->mysql->escape($proposals_management->getVotes_available())."', ";
$query .="`votes_in_favour` = '".$this->mysql->escape($proposals_management->getVotes_in_favour())."', ";
$query .="`votes_against` = '".$this->mysql->escape($proposals_management->getVotes_against())."', ";
$query .="`votes_abstention` = '".$this->mysql->escape($proposals_management->getVotes_abstention())."', ";
$query .="`open` = '".$this->mysql->escape($proposals_management->getOpen())."', ";
$query .="`close` = '".$this->mysql->escape($proposals_management->getClose())."', ";
$query .="`majority` = '".$this->mysql->escape($proposals_management->getMajority())."', ";
$query .="`published` = '".$this->mysql->escape($proposals_management->getPublished())."', ";
$query .="`summary` = '".$this->mysql->escape($proposals_management->getSummary())."'";
if($recordID!=NULL)
{
$query.=" where `id` = ".$recordID;
}
//echo $query;
return $this->mysql->query($query);
}
}
?>