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