#30660 fixed update widget without pb selected
[com.zyxware.civiwci.git] / CRM / Wci / BAO / ProgressBar.php
index f4674a9895c64caf1783a7367033b298be2eb4a0..92654f43062300d80b92cd608cb4b231d0eca8d8 100644 (file)
@@ -31,8 +31,9 @@
  * @copyright CiviCRM LLC (c) 2004-2013
  *
  */
+require_once 'CRM/Wci/DAO/ProgressBar.php';
 
-class CRM_WCI_BAO_ProgressBar extends CRM_WCI_DAO_ProgressBar {
+class CRM_Wci_BAO_ProgressBar extends CRM_Wci_DAO_ProgressBar {
 
   /**
    * class constructor
@@ -49,7 +50,7 @@ class CRM_WCI_BAO_ProgressBar extends CRM_WCI_DAO_ProgressBar {
    *
    * @param array   $params      (reference ) an assoc array of name/value pairs
    *
-   * @return object CRM_WCI_BAO_ProgressBar object
+   * @return object CRM_Wci_BAO_ProgressBar object
    * @access public
    * @static
    */
@@ -60,7 +61,7 @@ class CRM_WCI_BAO_ProgressBar extends CRM_WCI_DAO_ProgressBar {
       CRM_Core_Error::fatal('Not enough data to create a progress bar.');
     }
 
-    $progress_bar = new CRM_WCI_BAO_ProgressBar();
+    $progress_bar = new CRM_Wci_BAO_ProgressBar();
     $progress_bar->copyValues($params);
 
     $progress_bar->save();
@@ -73,12 +74,12 @@ class CRM_WCI_BAO_ProgressBar extends CRM_WCI_DAO_ProgressBar {
    * names of civicrm_wci_widget.
    *
    * @param array $params
-   * @return array of CRM_WCI_BAO_ProgressBar objects
+   * @return array of CRM_Wci_BAO_ProgressBar objects
    */
   static function retrieve(array $params) {
     $result = array();
 
-    $progress_bar = new CRM_WCI_BAO_ProgressBar();
+    $progress_bar = new CRM_Wci_BAO_ProgressBar();
     $progress_bar->copyValues($params);
     $progress_bar->find();
 
@@ -95,7 +96,7 @@ class CRM_WCI_BAO_ProgressBar extends CRM_WCI_DAO_ProgressBar {
    * Wrapper method for retrieve
    *
    * @param mixed $id Int or int-like string representing widget ID
-   * @return CRM_WCI_BAO_ProgressBar
+   * @return CRM_Wci_BAO_ProgressBar
    */
   static function retrieveByID($id) {
     if (!is_int($id) && !ctype_digit($id)) {
@@ -126,4 +127,74 @@ class CRM_WCI_BAO_ProgressBar extends CRM_WCI_DAO_ProgressBar {
     }
     return FALSE;
   }
+
+  /**
+   * Returns array of progressbars
+   * Fields : id, name, starting_amount, goal_amount
+   * @return progressbar array
+   * @access public
+   */  
+  public static function getProgressbarList() {
+    $query = "SELECT * FROM civicrm_wci_progress_bar";
+    $params = array();
+    $pbList = array();
+    
+    $dao = CRM_Core_DAO::executeQuery($query, $params, TRUE, 'CRM_Wci_DAO_ProgressBar');
+
+    while ($dao->fetch()) {
+      $pbList[$dao->id] = array();
+      CRM_Core_DAO::storeValues($dao, $pbList[$dao->id]);
+    }
+
+    return $pbList;
+  }
+  
+  /**
+   * Returns percentage value of a progressbar
+   *
+   * @param integer progressbar id
+   *
+   * @return decimal percentage value
+   * @access public
+   */  
+  public static function getProgressbarPercentage($idPB) {
+    $bp = 0;
+    $query = "SELECT * FROM civicrm_wci_progress_bar where id=" . $idPB;
+    $params = array();
+    $dao = CRM_Core_DAO::executeQuery($query, $params, TRUE, 'CRM_Wci_DAO_ProgressBar');
+
+    while ($dao->fetch()) {
+      $con_page[$dao->id] = array();
+      CRM_Core_DAO::storeValues($dao, $con_page[$dao->id]);
+      $con_page[$dao->id]['name'];
+      $sa = $con_page[$dao->id]['starting_amount'];
+      $ga = $con_page[$dao->id]['goal_amount'];
+    }
+    $query = "SELECT * FROM civicrm_wci_progress_bar_formula WHERE progress_bar_id =" . $idPB;
+    $params = array();
+
+    $daoPbf = CRM_Core_DAO::executeQuery($query, $params, TRUE, 'CRM_Wci_DAO_ProgressBarFormula');
+      while ($daoPbf->fetch()) {
+        $for_page[$daoPbf->id] = array();
+        CRM_Core_DAO::storeValues($daoPbf, $for_page[$daoPbf->id]);
+        $px = $for_page[$daoPbf->id]['percentage'];
+        
+        $query = "SELECT * FROM civicrm_contribution where contribution_page_id =" . $for_page[$daoPbf->id]['contribution_page_id'];
+        $params = array();
+
+        $daoCon = CRM_Core_DAO::executeQuery($query, $params, TRUE, 'CRM_Contribute_DAO_Contribution');
+
+        while ($daoCon->fetch()) {
+          $contributions[$daoCon->id] = array();
+          CRM_Core_DAO::storeValues($daoCon, $contributions[$daoCon->id]);
+          $bx = $contributions[$daoCon->id]['total_amount'];
+
+          $bp += $bx * $px / 100;
+        }
+     }
+     (0 == $ga) ? $perc = 0: $perc = (($sa + $bp) / $ga ) * 100;
+     
+     return $perc;
+  }
 }