changes method

bool changes(
  1. dynamic x
)
override

obtiene los cambios realizados

Implementation

bool changes(x) {
  //  consigue los campos
  var rfields = {};
  for (var member in fieldList) {
    //
    if (member.no_update) {
      continue;
    }

    if (state == TableState.inserted ||
        member.type == DataType.list ||
        member.type == DataType.listMap) {
      //

      rfields[member.name] = member.get();

      // if (member.type == DataType.list) {
      //   rfields[member.name] =
      //       '{${(rfields[member.name] as List).map((e) => '$e').join(',')}}';
      // }

      // if (member.type == DataType.listMap) {
      //   rfields[member.name] = jsonEncode(rfields[member.name]);
      // }
    } else {
      member.changes(rfields);
    }
  }

  //  los detalles
  var rdetail = {};
  for (var detail in detailList) {
    detail.changes(rdetail);
  }

  if (rdetail.isNotEmpty) {
    rfields['detail'] = rdetail;
  }

  //  si hay cambios asigna action y key
  if (rfields.isNotEmpty) {
    if (state == TableState.inserted) {
      rfields['action'] = 'insert';
    } else {
      rfields['action'] = 'update';
      rfields['key'] = id.original;
    }
    for (var key in rfields.keys) {
      x[key] = rfields[key];
    }
  }

  return rfields.isNotEmpty;
}