package command; import openfl.utils.Object; import t9.util.ColorTraces; import openfl.Vector; import vo.RiderVO; import feathers.data.ArrayCollection; import openfl.Lib; import haxe.DynamicAccess; import business.LoadRidersDelegate; import com.adobe.cairngorm.commands.ICommand; import com.adobe.cairngorm.control.CairngormEvent; import feathers.rpc.IResponder; import feathers.rpc.events.ResultEvent; import haxe.Json; import model.AppModelLocator; import t9.util.ColorTraces.*; class LoadRidersCommand implements ICommand implements IResponder { private var model = AppModelLocator.getInstance(); public function execute(cgEvent:CairngormEvent):Void { // create a worker who will go get some data and pass it a reference to this command so the delegate knows where to return the data var delegate = new LoadRidersDelegate(this); // make the delegate do some work delegate.loadRidersService(); } // this is called when the delegate receives a result from the service public function result(rpcEvent:Dynamic):Void { // populate the riders DP in the model locator with the JSON results from the service call /*var riders:Array = cast(rpcEvent, ResultEvent).result; model.ridersListDP = new ArrayCollection(riders);*/ //trace(model.ridersListDP.get(5).firstName); //traceGreen("ridersListDP.length --> " + model.ridersListDP.length); var data:Array = cast(rpcEvent, ResultEvent).result; var riders:Array = []; //var arr:Array = [for (n in data) cast(n, RiderVO)]; /*for(v in data){ //var rider:RiderVO = new RiderVO(); //var id:Int = Std.parseInt(); traceCyan(v[]); }*/ var riders:Array = []; for (i in 0...data.length) { var r:Object = data[i]; var id:Int = Std.parseInt(r.id); var name:String = r.name; var firstName:String = r.firstName; var age:Int = Std.parseInt(r.age); var lastLessonDate:Int = Std.parseInt(r.lastLessonDate); var level:Int = Std.parseInt(r.level); var credit:Int = Std.parseInt(r.credit); var address:String = r.address; var notes:String = r.notes; var ffeLicence:Bool = stringToBool(r.ffeLicence); var ffeLicenceValidityYear:Int = Std.parseInt(r.ffeLicenceValidityYear); var ffeLicenceNumber:String = r.ffeLicenceNumber; var legalGuardianName:String = r.legalGuardianName; var legalGuardianFirstName:String = r.legalGuardianFirstName; var legalGuardianRole:String = r.legalGuardianRole; var legalGuardianPhoneNumber:String = r.legalGuardianPhoneNumber; var legalGuardianEmail:String = r.legalGuardianEmail; var rider:RiderVO = new RiderVO(id, name, firstName, age, lastLessonDate, level, credit, address, notes, ffeLicence, ffeLicenceValidityYear, ffeLicenceNumber, legalGuardianName, legalGuardianFirstName, legalGuardianRole, legalGuardianPhoneNumber, legalGuardianEmail ); riders.push(rider); } model.ridersListDP = new ArrayCollection(riders); /*for (key => value in riders){ //ConfigValues.data[key] = value; traceMagenta(key + " / " + riders[key]); }*/ /*var rac:ArrayCollection = new ArrayCollection(); for (v in riders) { //var rider:RiderVO = cast v; rac.add(v); } model.ridersListDP = rac;*/ /* var data:DynamicAccess = Json.parse(cast(rpcEvent, ResultEvent).result); var riders:Array = cast(rpcEvent, ResultEvent).result; var data:DynamicAccess = Json.parse(e.target.data); for (key => value in data){ ConfigValues.data[key] = value; } */ } private function stringToBool(str) { var boolValue:Bool = (str == "true") ? true : false; return boolValue; } // this is called when the delegate receives a fault from the service public function fault(rpcEvent:Dynamic):Void { // store an error message in the model locator // labels, alerts, etc can bind to this to notify the user of errors model.errorStatus = "Fault occured in LoadEmployeesCommand."; } }