_.each(results, function(compare) { if(compare.get('main') && compare.get('community_name') === deal.get('community_name')){ var dayStart = moment(compare.get('deal_start_date')).startOf('day'); var dayEnd = moment(compare.get('deal_start_date')).endOf('day'); if(moment(deal.get('deal_start_date')).isBetween(dayStart,dayEnd)){ conflict = true; } } });
Parse.Cloud.beforeSave("Deal", function(request, response) { var user = request.user; if(user && (user.get('Role').id == "MkaiYN8pDC" || user.get('Role').id == "uGBZhZM8LM")){ var dayStart = moment(request.object.get('deal_start_date')).startOf('day'); var dayEnd = moment(request.object.get('deal_start_date')).endOf('day'); var err = {happened: false, message: ''}; request.object.set('start_utc', parseInt(moment(request.object.get('deal_start_date')).format('x'))); request.object.set('end_utc', parseInt(moment(request.object.get('deal_end_date')).format('x'))); var Deal = Parse.Object.extend("Deal"); var sameDay = new Parse.Query(Deal); sameDay.greaterThanOrEqualTo("deal_start_date", dayStart.toDate()); sameDay.lessThanOrEqualTo("deal_start_date", dayEnd.toDate()); sameDay.equalTo('venue',request.object.get('venue')); sameDay.equalTo('venue',request.object.get('venue')); sameDay.notEqualTo('objectId',request.object.get('objectId')); var sameMain = new Parse.Query(Deal); sameMain.greaterThanOrEqualTo("deal_start_date", dayStart.toDate()); sameMain.lessThanOrEqualTo("deal_start_date", dayEnd.toDate()); sameMain.equalTo('main',true); sameMain.notEqualTo('objectId',request.object.get('objectId')); var query = null; if(request.object.get('main')){ query = Parse.Query.or(sameMain,sameDay); } else { query = sameDay; } query.find({ success: function(results){ if(!err.happened){ if(results.length > 0){ err.happened = true; err.message = "Error: another deal is scheduled for that day at this venue" } if(!err.happened){ response.success(); } else { response.error(err.message); } } else { response.error(err.message); } }, error: function(error){ response.error("Error: " + error.code + " " + error.message); } }); } else { response.success(); } });
roleQuery.get(user.get('Role').id, function(userRole){ var query = new Parse.Query(Deal); query.greaterThanOrEqualTo("deal_start_date", moment().endOf('day').toDate()); query.find({ success: function(results){ var out = []; _.each(results, function(deal) { if(!deal.get('main')){ var conflict = false; _.each(results, function(compare) { if(compare.get('main') && compare.get('community_name') === deal.get('community_name')){ var dayStart = moment(compare.get('deal_start_date')).startOf('day'); var dayEnd = moment(compare.get('deal_start_date')).endOf('day'); if(moment(deal.get('deal_start_date')).isBetween(dayStart,dayEnd)){ conflict = true; } } }); if(!conflict){ deal.set('eligible_main', true) } else { deal.set('eligible_main', false) } deal.save() } if(deal.getACL().getRoleReadAccess(userRole) || deal.getACL().getReadAccess(user.id)){ out.push(deal) } }); return response.success(out); }, error: function(error){ response.error("Error: " + error.code + " " + error.message); } }); });