diff --git a/ajax/PointsCenter.php b/ajax/PointsCenter.php index ccdeee7..59d11f2 100644 --- a/ajax/PointsCenter.php +++ b/ajax/PointsCenter.php @@ -209,6 +209,8 @@ public function getDirectory() public function getSlivkans() { + $absentSlivkans = self::fetchAllQuery('SELECT nu_email FROM absences WHERE qtr=:qtr', PDO::FETCH_COLUMN); + $slivkans = self::fetchAllQuery( "SELECT CONCAT(first_name, ' ', last_name) AS full_name, slivkans.nu_email,gender,wildcard,committee,photo,suite,year @@ -216,6 +218,7 @@ public function getSlivkans() LEFT JOIN committees ON slivkans.nu_email=committees.nu_email AND committees.qtr=:qtr LEFT JOIN suites ON slivkans.nu_email=suites.nu_email AND suites.qtr=:qtr WHERE qtr_joined <= :qtr AND (qtr_final IS NULL OR qtr_final >= :qtr) + AND slivkans.nu_email NOT IN('" . implode("','", $absentSlivkans) . "') ORDER BY first_name,last_name" ); @@ -741,7 +744,7 @@ public function getMultipliers() { $slivkans = self::fetchAllQuery( "SELECT CONCAT(first_name,' ',last_name) AS full_name, - slivkans.nu_email,gender,qtr_joined,qtrs_away,qtr_final,year,suite + slivkans.nu_email,gender,qtr_joined,qtr_final,year,suite FROM slivkans LEFT JOIN suites ON slivkans.nu_email=suites.nu_email AND suites.qtr=:qtr WHERE qtr_final IS NULL OR qtr_final>=:qtr @@ -750,6 +753,8 @@ public function getMultipliers() $noShows = self::fetchAllQuery("SELECT nu_email, COUNT(nu_email) AS count FROM noshows", PDO::FETCH_KEY_PAIR); + $absences = self::fetchAllQuery("SELECT nu_email, COUNT(nu_email) AS count from absences GROUP BY nu_email", PDO::FETCH_KEY_PAIR); + $count = count($slivkans); $is_housing = self::$config['is_housing'] == 'true'; @@ -763,7 +768,12 @@ public function getMultipliers() $y_acc = ($y_this - $y_join) / 100; $q_acc = $q_this - $q_join; - $q_total = $q_acc + 3 * $y_acc - $slivkans[$s]['qtrs_away']; + $q_total = $q_acc + 3 * $y_acc; + + // Subtract from multiplier all quarters spent away + if (array_key_exists($slivkans[$s]['nu_email'], $absences)) { + $q_total -= $absences[$slivkans]; + } // give multiplier for current qtr if it isnt housing if (!$is_housing) { @@ -1065,6 +1075,33 @@ public function updateSuite($slivkans, $suite) return true; } + public function copySuites() + { + // figure out previous quarter + $y = round(self::$qtr, -2); + $q = self::$qtr - $y; + if ($q == 1) { + $qtrPrevious = ($y - 100) + 3; + } else { + $qtrPrevious = $y + ($q - 1); + } + + try { + $statement = self::$dbConn->prepare( + "INSERT INTO suites (nu_email,suite,qtr) + SELECT s.nu_email,s.suite,:qtr FROM suites AS s WHERE s.qtr=:qtrPrevious" + ); + $statement->bindValue(':qtr', self::$qtr); + $statement->bindValue(':qtrPrevious', $qtrPrevious); + $statement->execute(); + } catch (PDOException $e) { + echo "Error: " . $e->getMessage(); + die(); + } + + return true; + } + public function submitCommitteePoint($nu_email, $event_name, $points, $contributions, $comments) { if (($points == '0' || $points == '0.0') && $contributions == '' && $comments == '') { diff --git a/ajax/copySuites.php b/ajax/copySuites.php new file mode 100644 index 0000000..e6c1fbe --- /dev/null +++ b/ajax/copySuites.php @@ -0,0 +1,8 @@ +copySuites(); + +echo json_encode($response); diff --git a/js/pointsCenter.js b/js/pointsCenter.js index f7d36f5..93eeaa4 100644 --- a/js/pointsCenter.js +++ b/js/pointsCenter.js @@ -1811,6 +1811,20 @@ define(['jquery', 'moment', 'hogan'], function($, moment, Hogan){ $.getJSON(root + '/ajax/getCommitteeOrSuite.php', { suite: $('#edit-suite').val() }, admin.addSlivkans); }); + $('[data-copy-suites]').on('click', function(){ + if(window.confirm('Are you sure? This can only be done once per quarter.')){ + $.getJSON(root + '/ajax/copySuites.php', function(response){ + if(response == '1'){ + window.alert('Success!'); + }else{ + window.alert(response); + } + }); + } + + return false; + }); + $('#editCommitteeOrSuite form').on('submit', function(){ var i, name, pts, formData, entries = $('.slivkan-entry', '#slivkan-entry-tab'), diff --git a/spc-admin.php b/spc-admin.php index a0dc286..340b5c5 100644 --- a/spc-admin.php +++ b/spc-admin.php @@ -18,6 +18,8 @@ $date = \DateTime::createFromFormat('Y-m-d', $qtr_info['end_date']); $end_date = $date->format('m/d/Y'); +$q = $qtr_info['qtr'] - round($qtr_info['qtr'], -2); + function getSlivkanName($slivkans, $nu_email) { foreach ($slivkans as $s) { @@ -312,6 +314,13 @@ function getSlivkanName($slivkans, $nu_email) Edit + +
+
+ Copy Suites from Last Quarter +
+
+