示例#1
0
 public static User GetUserByAuthCode(string authcode)
 {
     User user = new User() { AuthCode = authcode };
     if (SelectUser(ref user))
         return user;
     else
         return null;
 }
示例#2
0
 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;
     }
 }
示例#3
0
 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);
     }
 }
示例#4
0
 public static bool SaveUser(User user) => UpdateUser(ref user);
示例#5
0
 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;
     }
 }