setCurrentUserDto method

Future<void> setCurrentUserDto(
  1. SchemaMetaData smd,
  2. DbTransaction transaction,
  3. UserDto userDto
)

Implementation

Future<void> setCurrentUserDto(
    SchemaMetaData smd, DbTransaction transaction, UserDto userDto) async {
  _currentUserDto = null;
  _currentUserId = null;
  UserDao userDao = UserDao(smd, transaction);
  await userDao.init(initTable: true);
  int? cuId = null;
  try {
    cuId = await getCurrentUserId(smd, transaction);
  } on SqlException catch (e) {
    if (e.sqlExceptionEnum == SqlExceptionEnum.ENTRY_NOT_FOUND)
      await setCurrentUserId(smd, transaction, userDto.id!);
  }
  if (cuId == null || cuId == userDto.id) {
    await userDao.setUserDto(userDto);
  } else {
    // User Id has been updated so remove old entry and rewrite
    try {
      await userDao.deleteUserById(cuId);
    } on SqlException catch (e) {
      if (e.sqlExceptionEnum == SqlExceptionEnum.ENTRY_NOT_FOUND) print("$e");
    }
    await setCurrentUserId(smd, transaction, userDto.id!);
    await userDao.setUserDto(userDto);
  }
}