Files
memory-infrastructure-palace/docs/projects/memorypalace/Apple Notes/REV PAYOUTS ROUTER.md

4 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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*));