ReportsController.*getRevenuePayouts* = {
 *validateClaims*:{"Subscriptions":["Staff"]},
 handler: function(req, res, next) {
 var connection = mysql.createConnection(config.*DATABASE*.CORE_READS("bmn_users"));
 connection.query(
 "SELECT\
 mr.VenueUserGUID,\
 a.user AS `User`,\
 DATE_ADD(DATE_ADD(mr.DatePlayed, INTERVAL mr.LocalTimeOffset MINUTE), INTERVAL -5 HOUR) AS `DatePlayed`,\
 COUNT(*) as `PaidPlays`,\
 IFNULL(IF(COUNT(*) >= 75, COUNT(*) * 0.55*0.75*(mt.Price/mt.NumCredits), COUNT(*) * 0.55*0.50*(mt.Price/mt.NumCredits)),0) as `RevenuePayout`\
 FROM bmn_users.mobile_requests mr\
 JOIN bmn_users.mobile_credits mc\
 ON mc.MobileRequestID = mr.ID\
 JOIN bmn_users.mobile_transactions mt\
 ON mt.ID = mc.MobilePaymentID\
 JOIN bmn_users.accounts a\
 ON a.UserGUID = mr.VenueUserGUID\
 AND mr.DatePlayed IS NOT NULL\
 AND DatePlayed >= DATE_SUB(DATE_ADD('2015-04-01:05:00:00', INTERVAL 5 HOUR), INTERVAL mr.LocalTimeOffset MINUTE)\
 AND mt.Price > 0\
 GROUP BY\
 mr.VenueUserGUID,\
 DATE_ADD(DATE_ADD(mr.DatePlayed, INTERVAL mr.LocalTimeOffset MINUTE), INTERVAL -5 HOUR)\
 ORDER BY a.user, mr.DatePlayed ASC",
 function(err, results) {
 connection.end();
 if (err) {
 return next(new restify.InternalServerError(err));
 }

 var quarterlyPayouts = [];

 //Get the first venue guid in the list, since the results are grouped by venue guid,
 // we can process each record and discard it after use to avoid traversing the account list everytime
 *console*.log(results);
 for (var venueReportRecord = results[0]; venueReportRecord ; venueReportRecord = results[0]) {
 var startRange = moment("04-01-2015", "MM-DD-YYYY");
 var endRange = moment(startRange).add(3, "months");
 var now = moment();
 var lastQuarterPayout = 0;

 while (startRange.isBefore(now)) {
 var quarterRecord = {};
 quarterRecord.*VenueUserGUID* = venueReportRecord.*VenueUserGUID*;
 quarterRecord.*User* = venueReportRecord.*User*;
 var numPaidRequests = 0;
 var revenuePayout = 0;

 //If we made less than 50, then that carries over to the next quarter
 if (lastQuarterPayout < 50) {
 revenuePayout += lastQuarterPayout;
 }

 results.slice().forEach(function(record, index, array){
 if (moment(record.DatePlayed).isSameOrAfter(startRange) && moment(record.DatePlayed).isBefore(endRange) && record.*VenueUserGUID* == venueReportRecord.*VenueUserGUID*) {
 revenuePayout += record.*RevenuePayout*;
 numPaidRequests += record.*PaidPlays*;
 results.splice(results.indexOf(record), 1);
 }
 });

 quarterRecord.*NumPaidRequests* = numPaidRequests;
 quarterRecord.*QuarterStart* = startRange;
 quarterRecord.*RevenuePayout* = 0;
 //Only add revenue payout if they made 50 dollars or more that quarter
 if (revenuePayout >= 50) {
 quarterRecord.*RevenuePayout* = revenuePayout;
 }

 lastQuarterPayout = revenuePayout;
 startRange = moment(endRange);
 endRange.add(3,"months");
 quarterlyPayouts.push(quarterRecord);
 }
 }
 res.send(quarterlyPayouts);
 return next();
 });
 }
}; this.server.*get*("/reports/:id/profitshare", lumen.illuminate(ReportsController.*getProfitShare*));