Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trycf/956dcfedfd71feb2f794e06f658e0f4f to your computer and use it in GitHub Desktop.
Save trycf/956dcfedfd71feb2f794e06f658e0f4f to your computer and use it in GitHub Desktop.
TryCF Gist
<cfscript>
date = now();
date = dateAdd('d', 100, date)
writedump(date)
writedump(DatePart('y', date))
lastScheduled = now();
currentDate = now();
scheduleType = 'd';
coupon = {
"scheduled" = true,
"scheduledType" = "d",
"schedulerLastExecuted" = ""
};
runScheduler= runSchedulerForCoupon(coupon=coupon);
writedump(runScheduler)
</cfscript>
<cffunction name="runSchedulerForCoupon" returnType="boolean">
<cfargument name="coupon" type="struct" required="true">
<cfscript>
var dateNow = now();
if(NOT arguments.coupon.scheduled){
return false;
}
if(NOT isDefinied("arguments.coupon.schedulerLastExecuted") OR arguments.coupon.schedulerLastExecuted EQ ""){
return true;
}
switch(arguments.coupon.scheduledType){
case "d":
return DatePart('y', dateNow) GT DatePart('y', arguments.coupon.schedulerLastExecuted);
case "w":
return DatePart('y', arguments.coupon.schedulerLastExecuted) - DatePart('y', dateNow) GTE 7;
case "m":
var isNextMonth = DatePart('m', dateNow) GT DatePart('m', arguments.coupon.schedulerLastExecuted);
var daysInMonth = DaysInMonth(dateNow);
return isNextMonth AND (DatePart('d', dateNow) GTE DatePart('d', arguments.coupon.schedulerLastExecuted) OR DatePart('d', dateNow) GTE daysInMonth);
case "y":
var isNextYear = DatePart('yyyy', dateNow) GT DatePart('yyyy', arguments.coupon.schedulerLastExecuted);
return isNextYear AND (DatePart('y', arguments.coupon.schedulerLastExecuted) EQ DatePart('y', dateNow) OR (DatePart('y', dateNow) - DatePart('y', arguments.coupon.schedulerLastExecuted) GT 365);
default:
return false;
}
</cfscript>
</cffunction>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment