public static User GetUserByAuthCode(string authcode) { User user = new User() { AuthCode = authcode }; if (SelectUser(ref user)) return user; else return null; }
private static bool SelectUser(ref User user) { try { SqlDatabase db = new SqlDatabase(Properties.Settings.Default.connString); using (DbCommand cmd = db.GetStoredProcCommand("SelectUser")) { db.AddInParameter(cmd, "authcode", DbType.String, user.AuthCode); using (IDataReader dr = db.ExecuteReader(cmd)) { bool first = true; while (dr.Read()) { if (first) { user.Age = dr["age"] as string; user.AuthCode = dr["authcode"] as string; user.Gender = dr["gender"] as string; first = false; } int? tid = dr["testid"] as int?; if (tid != null) { Test t = null; if (user.Tests.ContainsKey(tid.Value)) t = user.Tests[tid.Value]; else { t = new Test() { ID = tid.Value, TimeEst = (int)dr["timeest"], MaxArraySize = (int)dr["maxarraysize"], DelayPeriod = (int)dr["delayperiod"] }; user.Tests.Add(tid.Value, t); } t.ImageArrays.Add(new ImageArray() { Index = (int)dr["index"], ImagesDisplayed = (int)dr["imagesdisplayed"], UserInput = (int)dr["userinput"], ImageFile = (string)dr["imagefile"] }); } } } return true; } } catch { return false; } }
public string TakeTest(string authcode) { User u = Database.GetUserByAuthCode(authcode); User testuser = new User() { AuthCode = authcode, Gender = u.Gender, Age = u.Age }; int mid = Database.GetMaxTestID(); int tid = 1; while (u.Tests.ContainsKey(tid)) tid++; if (tid <= mid) { Test t = Database.GetTestByID(tid); t.GenerateArrays(); testuser.Tests.Add(t.ID, t); return JSON<User>.Parse(testuser); } else { return JSON<User>.Parse((User)null); } }
public static bool SaveUser(User user) => UpdateUser(ref user);
private static bool UpdateUser(ref User user) { try { SqlDatabase db = new SqlDatabase(Properties.Settings.Default.connString); using (DbCommand cmd = db.GetStoredProcCommand("UpdateUser")) { db.AddInParameter(cmd, "authcode", DbType.String, user.AuthCode); db.AddInParameter(cmd, "gender", DbType.String, user.Gender); db.AddInParameter(cmd, "age", DbType.String, user.Age); db.ExecuteNonQuery(cmd); bool res = true; foreach (Test test in user.TestResults) { foreach (ImageArray result in test.Arrays) { res = UpdateUserResult(user.AuthCode, test.ID, result, ref db) && res; } } return res; } } catch { return false; } }