updateRecord method

Future<Map<String, dynamic>> updateRecord(
  1. Map<String, dynamic> data
)

Implementation

Future<Map<String,dynamic>> updateRecord(Map<String, dynamic> data) async {
  Map<String,dynamic> result = {"status": "failure","message": "nothing executed","operation": "UPDATE"};
  Map<String,dynamic> callbackData={"table":table,"data":data};
  try {
    String primaryKeyField = "";
    dynamic primaryKeyValue;
    formatValues();
    String validateStatus = validateValues();
    if (validateStatus == "success") {
      Map<String,dynamic> values = Map();
      Map<String,dynamic> userDefinedFunctions = new Map();
      String uniqueCondition = "";
      data.forEach((field, value) {
        if(fields.containsKey(field)){
          if (fields[field][fieldAttributes]
              .contains(attributePrimaryKey)) {
            primaryKeyField = fields[field][fieldName];
            primaryKeyValue = value;
            result[attributePrimaryKey] = primaryKeyField;
          }
          values[field] = value;
        }
      });
      if(values.isNotEmpty){
        uniqueCondition = "$primaryKeyField=$primaryKeyValue";
        callbackData["values"]=values;
        Map response = await dbHandler.updateConditionedRecords(table: table,values: values,userDefinedFunctions: userDefinedFunctions,condition: uniqueCondition);
        if (response.getString("status").equalsIgnoreCase("success")) {
          result["status"] = "success";
          result["message"] = " record inserted successfully";
          callbackData[resultPrimaryKeyField]=primaryKeyField;
          callbackData[resultPrimaryKeyValue]=primaryKeyValue;
          if (primaryKeyField != "") {
            result[resultPrimaryKeyValue] = primaryKeyValue;
            Map fetchResponse = await fetchRecords(condition: "$primaryKeyField=$primaryKeyValue");
            result["fetchResponse"] = fetchResponse;
            if (fetchResponse.getString("status").equalsIgnoreCase("success")) {
              List records = fetchResponse["records"];
              if (records.isNotEmpty) {
                result["record"] = records.first;
              } else {
                result["message"] = "fetch count 0";
              }
            } else {
              result["fetch-response"] = fetchResponse;
              result["message"] = fetchResponse["message"];
            }
          }
          callbackData["result"]=result;
          await Simplify.executeFunctions("update",_functions,callbackData);
        } else {
          result["message"] = response["message"];
        }
      }
      else{
        result["fields"]=fields;
        result["message"]="no valid field to update";
      }
    } else {
      result["message"] = validateStatus;
    }
  } catch (ex, stack) {
    result["message"] = Simplify.getExceptionMessage(ex, stack: stack);
  }
  callbackData["result"]=result;
  await Simplify.executeFunctions("update",_functions,callbackData);
  return result;
}