writeAdd method

Future<RemoteDto> writeAdd()

Implementation

Future<RemoteDto> writeAdd() async {
  if (!initialized) throw ArgumentError(AbstractDao.C_MUST_INIT);
  int? id = null;
  bool success = false;

  try {
    id = await tableTransactions.add();
    success = true;
  } on SqlException catch (e) {
    if (e.sqlExceptionEnum == SqlExceptionEnum.JOIN_FAILURE) {
      waterLine.setWaterError(WaterError.JOIN_FAILURE);
      print("$C_CLASSNAME:writeAdd(JOIN_FAILURE):$e");
    } else if (e.sqlExceptionEnum == SqlExceptionEnum.DUPLICATE_ENTRY) {
      waterLine.setWaterError(WaterError.DUPLICATE_ENTRY);
      print("$C_CLASSNAME:writeAdd(DUPLICATE_ENTRY):$e");
      try {
        id = await tableTransactions.findId();
      } on SqlException catch (e) {
        if (e.sqlExceptionEnum == SqlExceptionEnum.ENTRY_NOT_FOUND) {
          print(e);
        }
      }
    } else if (e.sqlExceptionEnum == SqlExceptionEnum.PARTITION_NOT_FOUND) {
      waterLine.setWaterError(WaterError.PARTITION_NOT_FOUND);
      print("$C_CLASSNAME:writeAdd(PARTITION_NOT_FOUND):$e");
    } else if (e.sqlExceptionEnum == SqlExceptionEnum.INVALID_ENTRY) {
      waterLine.setWaterError(WaterError.INVALID_ENTRY);
      print("$C_CLASSNAME:writeAdd(INVALID_ENTRY):$e");
    } else if (e.sqlExceptionEnum == SqlExceptionEnum.ENTRY_NOT_FOUND) {
      waterLine.setWaterError(WaterError.ENTRY_NOT_FOUND);
      print("$C_CLASSNAME:writeAdd(ENTRY_NOT_FOUND):$e");
    } else {
      waterLine.setWaterError(WaterError.FAILED_UPDATE);
      print("$C_CLASSNAME:writeAdd(FAILED_UPDATE):$e");
    }
  }
  if (success) {
    tableTransactions.setId(id!);
    setStates();
    wroteDto = true;
  } else {
    if (id == null) id = await tableTransactions.nextId();
    tableTransactions.setId(id!);
  }
  RemoteDto remoteDto = await commitChanges(null);
  return remoteDto;
}