updateAuction: function(req, models, cb) { var auction = models.auction; var bids = models.bids; // validate bids regions (need in the api call) if (req.body.regions) { // get all region names from bids var bidRegions = []; bids.forEach(function(bid) { bidRegions.push(bid.region); return; }); bidRegions = _.uniq(bidRegions); // get existing regions with bids var regionsWithBids = []; auction.regions.forEach(function(region) { if (_.contains(bidRegions, region.name)) { regionsWithBids.push(region); } }); // make sure regions in regionsWithBids are in the req.body.regions var reqRegionNames = _.pluck(req.body.regions, 'name'); regionsWithBids.forEach(function(region) { if (!_.contains(reqRegionNames, region.name)) { delete region.winningBids; delete region.primarySlots; delete region.secondarySlots; req.body.regions.push(region); } }); } if (req.body.start) { auction.start = req.body.start; } if (req.body.end) { auction.end = req.body.end; } if (req.body.adsStart) { auction.adsStart = req.body.adsStart; } if (req.body.adsEnd) { auction.adsEnd = req.body.adsEnd; } if (req.body.enabled) { auction.enabled = req.body.enabled; } if (req.body.description) { auction.description = req.body.description; } if (req.body.regions) { auction.regions = req.body.regions; } db.updateAuction(auction, function(err, body) { if (err) { console.log(err); } if (body) { // update air object var air = { auctionId: auction._id, adsStart: Number(auction.adsStart), adsEnd: Number(auction.adsEnd) }; db.getAdsInRotation(auction._id + '-air', function(err, result) { if (result) { db.upsertAdsInRotation(air, function(err) { if (err) { console.log(err); cb(err); } var message = 'Updated AIR object for auction: '; message += auction._id; console.log(message); }); } }); } return cb(err, body); }); },
setAuctionEnabled: function(enabled, models, cb) { // enable auction models.auction.enabled = enabled; // save auction db.updateAuction(models.auction, cb); },