Skip to content

Instantly share code, notes, and snippets.

@tommyready
Last active December 9, 2016 16:14
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 tommyready/3e90b5bea8781634c7e3b9b0dea27211 to your computer and use it in GitHub Desktop.
Save tommyready/3e90b5bea8781634c7e3b9b0dea27211 to your computer and use it in GitHub Desktop.
Coldfusion Test Range Script
<cfscript>
writeDump( getCurrentFboRates() );
LOCAL.aircraftTypeId = 1440;
LOCAL.startRange = 1;
LOCAL.endRange = 99;
writeDump( validateRange(aircraftTypeId,startRange,endRange) );
private boolean function inRange(required numeric n, required numeric startRange, required numeric endRange) {
if(arguments.n GTE arguments.startRange && arguments.n LTE arguments.endRange) return true;
return false;
}
private boolean function hasGap(required numeric n, required numeric minMaxNumber) {
if(Abs(arguments.n - arguments.minMaxNumber) > 1) return true;
return false;
}
private boolean function validateRange(required numeric aircraftTypeId, required numeric gallonsMin, required numeric gallonsMax) {
var currentFboRates = getCurrentFboRates();
var checkQry = new query();
checkQry.setDbType('query');
checkQry.setAttributes(rs=currentFboRates);
checkQry.addParam(name="aircrafttypeid",cfsqltype="cf_sql_integer",value="#arguments.aircraftTypeId#");
checkQry.setSQL("SELECT GallonsMin, GallonsMax FROM rs WHERE AirCraftTypeId = :aircrafttypeid Order By GallonsMin");
var checkResults = checkQry.Execute().getResult();
writeDump(arguments);
// Min Should Not Equal Max
if(arguments.gallonsMin >= arguments.gallonsMax) return false;
if(checkResults.recordCount == 0) // No AircraftTypes
if(arguments.gallonsMin == 1) // If GallonsMin equals 1 range is Valid
return true;
if(checkResults.recordCount == 0) // No AircraftTypes
if(arguments.gallonsMin != 1) // If GallonsMin does not equal 1 range is inValid
return false;
var startRanges = ListSort(valueList(checkResults.GallonsMin),'numeric');
var endRanges = ListSort(valueList(checkResults.GallonsMax),'numeric');
for(row in checkResults) {
if(!inRange(arguments.gallonsMin,row.GallonsMin,row.GallonsMax))
if(!inRange(arguments.gallonsMax,row.GallonsMin,row.GallonsMax))
continue;
return false;
}
// If Arguments.GallonsMin is Greater Than the Highest GallonsMax
if(arguments.gallonsMin > ListLast(endRanges))
if(hasGap(arguments.gallonsMin,ListLast(endRanges)))
return false;
// If Arguments.GallonsMax is Less Than the Lowest GallonsMin
if(arguments.gallonsMax < ListFirst(startRanges))
if(hasGap(arguments.gallonsMax,ListFirst(startRanges)))
return false;
return true;
}
private query function getCurrentFboRates() {
var fboRateQuery = QueryNew('FboAirCraftTypeId,AirCraftTypeId,GallonsMin,GallonsMax,Rate','Integer,Integer,Integer,Integer,Double');
// Add 3 Rows
QueryAddRow(fboRateQuery,3);
// Row One
QuerySetCell(fboRateQuery,'FboAirCraftTypeId',1000,1);
QuerySetCell(fboRateQuery,'AirCraftTypeId',1440,1);
QuerySetCell(fboRateQuery,'GallonsMin',100,1);
QuerySetCell(fboRateQuery,'GallonsMax',499,1);
QuerySetCell(fboRateQuery,'Rate',1.9,1);
// Row Two
QuerySetCell(fboRateQuery,'FboAirCraftTypeId',1004,2);
QuerySetCell(fboRateQuery,'AirCraftTypeId',1440,2);
QuerySetCell(fboRateQuery,'GallonsMin',500,2);
QuerySetCell(fboRateQuery,'GallonsMax',999,2);
QuerySetCell(fboRateQuery,'Rate',1.8,2);
// Row Three
QuerySetCell(fboRateQuery,'FboAirCraftTypeId',1005,3);
QuerySetCell(fboRateQuery,'AirCraftTypeId',1440,3);
QuerySetCell(fboRateQuery,'GallonsMin',1000,3);
QuerySetCell(fboRateQuery,'GallonsMax',1999,3);
QuerySetCell(fboRateQuery,'Rate',1.8,3);
return fboRateQuery;
}
</cfscript>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment