public static Dictionary<string, CheevoUser> LoadPoppedCheevos()
{
var dbCheevos = new Dictionary<string, CheevoUser>();
const string loadCheevos = "select Title,Description,Category,Points,AwardedTime,User,available_cheevos.ID " +
"from popped_cheevos inner join available_cheevos on available_cheevos.ID = popped_cheevos.ID where AwardedTime is not null";
bool dbOpened = false;
lock (Database.sqliteCon)
{
try
{
Database.sqliteCon.Open();
dbOpened = true;
using (SQLiteCommand selectCommand = new SQLiteCommand(loadCheevos, Database.sqliteCon))
using (SQLiteDataReader dataReader = selectCommand.ExecuteReader())
{
while (dataReader.HasRows && dataReader.Read())
{
var myDate = new DateTime(dataReader.GetInt64(4));
var user = new CheevoUser(dataReader.GetString(5));
if (!dbCheevos.ContainsKey(user.Username.ToLower()))
{
dbCheevos.Add(user.Username.ToLower(), user);
}
dbCheevos[user.Username.ToLower()].Add(
new Cheevo(
dataReader.GetString(0),
dataReader.GetString(1),
dataReader.GetString(2),
dataReader.GetInt32(3),
myDate,
dataReader.GetInt32(6)));
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message + " " + ex.StackTrace);
}
finally
{
if (dbOpened)
{
Database.sqliteCon.Close();
}
}
}
return dbCheevos;
}