writeNewUser method
Implementation
Future<UserChangeEnum?> writeNewUser(UserDto userDto) async {
UserChangeEnum? userChangeEnum;
userTools.clearUserCache();
// Read the latest user entry with newly assigned id
UserDto? currentUserDto =
await userTools.getCurrentUserDto(smd, transaction);
int? newId = userDto.id;
if (currentUserDto!.id != newId) {
// rewrite the Ids
UserStoreDto? userStoreDto =
await userTools.getCurrentUserStoreDto(smd, transaction);
int? userStoreId = userStoreDto!.id;
// Modify user_store entry id
try {
UserStoreTrDao userStoreTrDao = UserStoreTrDao(smdSys, transaction);
await userStoreTrDao.init();
await userStoreTrDao.modifyField(userStoreId!, newId!, 'id');
} on SqlException catch (e) {
if (e.sqlExceptionEnum == SqlExceptionEnum.ENTRY_NOT_FOUND ||
e.sqlExceptionEnum == SqlExceptionEnum.PARTITION_NOT_FOUND)
print(e.cause);
}
try {
UserStoreDao userStoreDao = UserStoreDao(smd, transaction);
await userStoreDao.init();
await userStoreDao.modifyId(userStoreId!, newId!);
} on SqlException catch (e) {
if (e.sqlExceptionEnum == SqlExceptionEnum.ENTRY_NOT_FOUND ||
e.sqlExceptionEnum == SqlExceptionEnum.PARTITION_NOT_FOUND)
print(e.cause);
}
userChangeEnum = UserChangeEnum.USER_ID;
}
if (userDto.warden != currentUserDto.warden) {
userChangeEnum = UserChangeEnum.WARDEN;
}
if (userDto.pass_key == null) {
userDto.pass_key = currentUserDto.pass_key;
userChangeEnum = UserChangeEnum.PASS_KEY;
}
await userTools.setCurrentUserDto(smd, transaction, userDto);
return userChangeEnum;
}