autoOperation static method
Implementation
static Future<Map<String,dynamic>> autoOperation(SimpleWebRR webRR) async {
Map<String,dynamic> result={"status":"failure","message":"nothing executed"};
try{
if(webRR.hasVariable("pojo_class")&&webRR.hasVariable("pojo_record")&&webRR.hasVariable("operation")){
Map<String,dynamic> response= new Map();
Map<String,dynamic >operationParams=new Map();
String pojoClass=webRR.variableString("pojo_class");
String operation=webRR.variableString("operation");
BasePojo record= webRR.variable("pojo_record") as BasePojo;
Map<String,dynamic >primaryKeyField=record.getField(name: "id").cast<String,dynamic>();
String requestVariable=Simplify.lcFirst(pojoClass);
if(operation.equalsIgnoreCase("DELETE")||operation.equalsIgnoreCase("SELECT")){
requestVariable=primaryKeyField[BasePojo.fieldName];
}
if(operation.equalsIgnoreCase("INSERT")||operation.equalsIgnoreCase("UPDATE")||operation.equalsIgnoreCase("DELETE")||operation.equalsIgnoreCase("SAVE")) {
if (webRR.hasRequest(requestVariable)) {
if(operation.equalsIgnoreCase("DELETE")){
record.setFieldValue(requestVariable,webRR.request(requestVariable));
}
else{
record.setObjectValues(webRR.requestMap(requestVariable));
}
if(webRR.hasVariable("modify_defaults")){
record.setObjectValues(webRR.variableMap("modify_defaults"));
}
webRR.addVariable("operation",operation);
webRR.addVariable("pojo_record",record);
response=await performAction(webRR);
}
else {
result["message"]="auto modify parameter $requestVariable missing";
}
}
else if(operation.equalsIgnoreCase("SELECT")){
Map<String,dynamic> selectBasicResponse=selectBasic(webRR);
operationParams=selectBasicResponse;
if(selectBasicResponse.getString("status").equalsIgnoreCase("success")){
String condition="1=1";
String limitCondition=selectBasicResponse["limit_condition"];
String fetchMode=selectBasicResponse["fetch_mode"];
if(webRR.hasVariable("condition")){
condition=webRR.variableString("condition");
}
if(webRR.hasRequest(requestVariable)){
condition=condition+" AND "+requestVariable+"="+webRR.request(requestVariable);
}
if(webRR.hasVariable("select_condition")){
condition=condition+" "+webRR.variableString("select_condition");
}
if(webRR.hasRequest("select_condition")){
condition=condition+" "+webRR.requestString("select_condition");
}
String distinctField="";
if(webRR.hasRequest("select_distinct_field")){
distinctField=webRR.requestString("select_distinct_field");
condition+=" AND trim("+distinctField+")!=\"\"";
if(!webRR.hasRequest("order_by")){
limitCondition=" ORDER BY "+distinctField+" "+limitCondition;
}
if(webRR.hasRequest("query")){
condition+=" AND "+distinctField+" LIKE \"%"+webRR.requestString("query")+"%\"";
}
if(webRR.hasRequest(distinctField)){
condition+=" AND "+distinctField+"= \""+webRR.requestString(distinctField)+"\"";
}
}
condition=condition+limitCondition;
if(webRR.hasRequest("select_distinct_field")){
response=await record.fetchDistinctRecords(condition: condition,fetchMode: fetchMode,distinctField: distinctField);
}
else{
response=await record.fetchRecords(condition: condition,fetchMode: fetchMode);
}
}
else{
result["message"]=selectBasicResponse["message"];
}
}
webRR.addVariable("response",response);
webRR.addVariable("result",result);
webRR.addVariable("operation_params",operationParams);
result=getResponse(webRR);
}
else{
result["message"]="auto parameters missing";
webRR.addMapResult(result);
}
}
catch (ex,stack) {
result["message"]=Simplify.getExceptionMessage(ex,stack: stack);
}
return result;
}