autoOperation static method

Future<Map<String, dynamic>> autoOperation(
  1. SimpleWebRR webRR
)

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;
}