private List <string> getmd5list(string user_id) { List <string> retValue = new List <string>(); user_id = user_id.ToUpper(); StringBuilder sb = new StringBuilder(); sb.Append("select u.pk1 as id, u.firstname, u.lastname,u.user_id as username,s.timestamp,s.md5 "); sb.Append(" from sessions s "); sb.Append(" inner join users u on u.user_id = s.user_id "); sb.Append(" where upper(s.user_id) = '" + user_id + "'"); sb.Append(" order by s.timestamp desc"); RequesterAsync rr = new RequesterAsync(sb.ToString(), BbQuery.BbUrl, BbQuery.BbToken, true); Debug.WriteLine(sb.ToString()); DataTable md5 = rr.execute(); if (md5 != null && md5.Rows.Count > 0 && !md5.TableName.Equals("error")) { foreach (DataRow dr in md5.Rows) { retValue.Add(dr["md5"].ToString()); } } return(retValue); }
private string getUser(string username) { Debug.WriteLine("AT getUser check with " + username); string retvalue = ""; string sql = "select u.passwd from users u where u.user_id = '" + username + "'"; RequesterAsync rr = new RequesterAsync(sql, BbQuery.BbUrl, BbQuery.BbToken, true); DataTable user = rr.execute(); if (user != null && user.Rows.Count > 0 && !user.TableName.Equals("error")) { retvalue = user.Rows[0]["passwd"].ToString(); } Debug.WriteLine("AT getUser check with password " + retvalue); return(retvalue); }
public static void Modify(string BbUrl, string token, int qdpk1) { // get students - active StringBuilder sql = new StringBuilder(); sql.Append("select u.firstname,u.lastname,u.user_id,cu.users_pk1 "); sql.Append("from qti_asi_data qd "); sql.Append(" inner join course_users cu on cu.crsmain_pk1 = qd.crsmain_pk1 "); sql.Append(" inner join users u on u.pk1 = cu.users_pk1 "); sql.Append(" where cu.role='S' and cu.available_ind = 'Y' and cu.row_status = 0 "); sql.Append(" and qd.pk1 = " + qdpk1.ToString()); sql.Append(" order by u.lastname, u.firstname "); RequesterAsync rr = new RequesterAsync(sql.ToString(), BbUrl, token, true); students = rr.execute(); multipleChoiceItem m = fromExisting(BbUrl, token, qdpk1, students); return; }
/*if (ds.Tables.Count > 0) * { * string name = ""; * string firstname = ""; * string lastname = ""; * string username = ""; * if (ds.Tables.Contains("user")) * { * DataTable user = ds.Tables["user"]; * id = Convert.ToInt32(user.Rows[0]["id"]); * firstname = user.Rows[0]["firstname"].ToString(); * lastname = user.Rows[0]["lastname"].ToString(); * name = user.Rows[0]["firstname"].ToString() + " " + user.Rows[0]["lastname"]; * username = user.Rows[0]["username"].ToString(); * * } * if (!firstname.Equals("") && !lastname.Equals("") * && (!lastname.ToUpper().Equals("GUEST")) && (!username.ToUpper().Equals("GUEST"))) * { * * retValue = true; * BbQuery.BbLoginString = name + " logged in."; * BbQuery.BbLoggedInName = name; * BbQuery.BbloggedIn = true; * BbQuery.BbInstructor_id = id; * BbQuery.BbUsername = username; * } * }*/ private bool Check(string user_id, string session_id) { bool retValue = false; BbQuery.getBbParams(); user_id = user_id.ToUpper(); StringBuilder sb = new StringBuilder(); sb.Append("select u.pk1 as id, u.firstname, u.lastname,u.user_id as username "); sb.Append(" from sessions s "); sb.Append(" inner join users u on u.user_id = s.user_id "); sb.Append(" where upper(s.user_id) = '" + user_id + "' and s.md5 = '" + session_id + "' "); RequesterAsync rr = new RequesterAsync(sb.ToString(), BbQuery.BbUrl, BbQuery.BbToken, true); DataTable user = rr.execute(); if (user != null && user.Rows.Count > 0) { string name = ""; string firstname = ""; string lastname = ""; string username = ""; id = Convert.ToInt32(user.Rows[0]["id"]); firstname = user.Rows[0]["firstname"].ToString(); lastname = user.Rows[0]["lastname"].ToString(); name = user.Rows[0]["firstname"].ToString() + " " + user.Rows[0]["lastname"]; username = user.Rows[0]["username"].ToString(); if (!firstname.Equals("") && !lastname.Equals("") && (!lastname.ToUpper().Equals("GUEST")) && (!username.ToUpper().Equals("GUEST"))) { retValue = true; BbQuery.BbLoginString = name + " logged in."; BbQuery.BbLoggedInName = name; BbQuery.BbloggedIn = true; BbQuery.BbInstructor_id = id; BbQuery.BbUsername = username; } } return(retValue); }
private void btnGo_Click(object sender, EventArgs e) { XElement[] rows = schools.Elements("schools").ToArray(); for (int i = 0; i < rows.Length; i++) { tbMemo.AppendText(rows[i].Element("schoolname").Value + Environment.NewLine); // get urls scheme = "http"; port = 80; if (rows[i].Element("port").Value.Equals("81")) { port = 81; } host = rows[i].Element("host").Value; pluginStem = rows[i].Element("pluginstem").Value; initBbUrl(); tbMemo.AppendText(BbUrl + Environment.NewLine); token = getToken(checkUrl); tbMemo.AppendText(token + Environment.NewLine); if (!token.Equals("EAC")) { RequesterAsync rr = new RequesterAsync(userSql, BbUrl, token, true); DataTable dt = rr.execute(); if (dt != null && dt.Rows.Count > 0 && !dt.TableName.Equals("error")) { string user_id = dt.Rows[0]["user_id"].ToString(); string passwd = dt.Rows[0]["passwd"].ToString(); tbMemo.AppendText(user_id + " " + passwd + Environment.NewLine); cc = new CookieContainer(); for (int j = 0; j < 4; j++) { tbMemo.AppendText(Login(user_id, passwd, j) + Environment.NewLine); } } } // get username & password // try login & out } }
private bool Check(string user_id, string session_id, bool special) { bool retValue = false; string currentUrl = null; if (!special) { // DateTime current = DateTime.Now.Add(BbQuery.BbServerTimeSpan); Debug.WriteLine("At CHECK"); Debug.WriteLine("session_id at check = " + session_id); user_id = user_id.ToUpper(); StringBuilder sb = new StringBuilder(); if (false && BbQuery.BbUrl.Contains("rccc")) { sb.Append("select u.pk1 as id, u.firstname, u.lastname,'" + currentUrl + "' as url,u.user_id as username,s.timestamp,s.md5 "); } else { sb.Append("select u.pk1 as id, u.firstname, u.lastname,u.user_id as username,s.timestamp,s.md5 "); } sb.Append(" from sessions s "); sb.Append(" inner join users u on u.user_id = s.user_id "); if (!(BbQuery.BbUrl.Contains("cuny") || BbQuery.BbUrl.Contains("gtc"))) { sb.Append(" where upper(s.user_id) = '" + user_id + "'"); } else { sb.Append(" where md5 = '" + session_id + "'"); } sb.Append(" order by s.timestamp desc"); RequesterAsync rr = new RequesterAsync(sb.ToString(), BbQuery.BbUrl, BbQuery.BbToken, true); Debug.WriteLine(sb.ToString()); DataTable user = rr.execute(); if (user != null && user.Rows.Count > 0 && !user.TableName.Equals("error")) { bool timeok = false; DataRow lr = null; foreach (DataRow dr in user.Rows) { timeok = false; DateTime lg = Convert.ToDateTime(user.Rows[0]["timestamp"]); DateTime current = DateTime.Now.Add(BbQuery.BbServerTimeSpan); Debug.WriteLine("Login time: " + lg.ToLongTimeString()); Debug.WriteLine("Current: " + current.ToLongTimeString()); Debug.WriteLine("BbQuery.TimeSpan: " + BbQuery.BbServerTimeSpan.TotalSeconds.ToString()); Debug.WriteLine("session_id passes = " + session_id + " md5 found = " + dr["md5"].ToString()); TimeSpan diff = new TimeSpan(current.Ticks - lg.Ticks); Debug.WriteLine("diff.TotalSeconds: " + diff.TotalSeconds.ToString()); double difference = 90.0F; if (diff.TotalSeconds < difference || -diff.TotalSeconds > -difference) { timeok = true; lr = dr; break; } else { if (BbQuery.BbUrl.Contains("rccc")) { // wb.Url = new Uri(currentUrl); //inCheck = false; //return retValue; } Cookie c = new Cookie("session_id", dr["md5"].ToString()); BbQuery.cc = new CookieContainer(); BbQuery.cc.Add(new Uri(authUrl), c); } } //TimeSpan diff = TimeSpan. if (timeok) { string name = ""; string firstname = ""; string lastname = ""; string username = ""; id = Convert.ToInt32(lr["id"]); firstname = lr["firstname"].ToString(); lastname = lr["lastname"].ToString(); name = lr["firstname"].ToString() + " " + lr["lastname"]; username = lr["username"].ToString(); if (!firstname.Equals("") && !lastname.Equals("") && (!lastname.ToUpper().Equals("GUEST")) && (!username.ToUpper().Equals("GUEST"))) { retValue = true; wb.Stop(); BbQuery.BbLoginString = name + " logged in."; Debug.WriteLine(BbQuery.BbLoginString); BbQuery.BbLoggedInName = name; BbQuery.BbloggedIn = true; BbQuery.BbInstructor_id = id; BbQuery.BbUsername = username; Cookie c = null; if (BbQuery.BbUrl.Contains("rccc")) { c = new Cookie("session_id", lr["md5"].ToString()); } else { c = new Cookie("session_id", lr["md5"].ToString()); } BbQuery.cc = new CookieContainer(); BbQuery.cc.Add(new Uri(authUrl), c); Debug.WriteLine("LoginXP session cookie = " + BbQuery.cc.GetCookieHeader(new Uri(authUrl))); } } } } else { DateTime current = DateTime.Now.Add(BbQuery.BbServerTimeSpan); Debug.WriteLine("At Special CHECK"); // Debug.WriteLine("session_id at check = " + session_id); StringBuilder sb = new StringBuilder(); sb.Append("select u.pk1 as id, u.firstname, u.lastname,u.user_id as username "); sb.Append(" from users u "); sb.Append(" where u.user_id = '" + user_id + "'"); RequesterAsync rr = new RequesterAsync(sb.ToString(), BbQuery.BbUrl, BbQuery.BbToken, true); Debug.WriteLine(sb.ToString()); DataTable user = rr.execute(); if (user != null && user.Rows.Count > 0 && !user.TableName.Equals("error")) { foreach (DataRow dr in user.Rows) { string name = ""; string firstname = ""; string lastname = ""; string username = ""; id = Convert.ToInt32(dr["id"]); firstname = dr["firstname"].ToString(); lastname = dr["lastname"].ToString(); name = dr["firstname"].ToString() + " " + dr["lastname"]; username = dr["username"].ToString(); if (!firstname.Equals("") && !lastname.Equals("") && (!lastname.ToUpper().Equals("GUEST")) && (!username.ToUpper().Equals("GUEST"))) { retValue = true; BbQuery.BbLoginString = name + " logged in."; Debug.WriteLine(BbQuery.BbLoginString); BbQuery.BbLoggedInName = name; BbQuery.BbloggedIn = true; BbQuery.BbInstructor_id = id; BbQuery.BbUsername = username; Cookie c = null; } } } } return(retValue); }
private void getSession_id(string username) { Debug.WriteLine("at getSession_id with clicked = " + clicked.ToString()); int retValue = 0; string sql = "select s.session_id from sessions s where upper(s.user_id) = '" + username.ToUpper() + "' order by session_id desc"; RequesterAsync rr = new RequesterAsync(sql, BbQuery.BbUrl, BbQuery.BbToken, true); DataTable sess = rr.execute(); if (sess != null && sess.Rows.Count > 0 && !sess.TableName.Equals("error")) { retValue = Convert.ToInt32(sess.Rows[0]["session_id"]); } if (retValue != session_id && clicked == 0) { session_id = retValue; } else { StringBuilder sb = new StringBuilder(); sb.Append("select u.pk1 as id, u.firstname, u.lastname,u.user_id as username,s.timestamp,s.md5 "); sb.Append(" from sessions s "); sb.Append(" inner join users u on u.user_id = s.user_id "); sb.Append(" where session_id =" + retValue.ToString()); rr = new RequesterAsync(sb.ToString(), BbQuery.BbUrl, BbQuery.BbToken, true); Debug.WriteLine(sb.ToString()); DataTable user = rr.execute(); if (user != null && user.Rows.Count > 0 && !user.TableName.Equals("error")) { DataRow dr = user.Rows[0]; DateTime lg = Convert.ToDateTime(dr["timestamp"]); DateTime current = DateTime.Now.Add(BbQuery.BbServerTimeSpan); Debug.WriteLine("Login time: " + lg.ToLongTimeString()); Debug.WriteLine("Current: " + current.ToLongTimeString()); Debug.WriteLine("BbQuery.TimeSpan: " + BbQuery.BbServerTimeSpan.TotalSeconds.ToString()); Debug.WriteLine("session_id passes = " + session_id + " md5 found = " + dr["md5"].ToString()); TimeSpan diff = new TimeSpan(current.Ticks - lg.Ticks); Debug.WriteLine("diff.TotalSeconds: " + diff.TotalSeconds.ToString()); Cookie c = new Cookie("session_id", dr["md5"].ToString()); BbQuery.cc = new CookieContainer(); BbQuery.cc.Add(new Uri(authUrl), c); string name = ""; string firstname = ""; string lastname = ""; id = Convert.ToInt32(dr["id"]); firstname = dr["firstname"].ToString(); lastname = dr["lastname"].ToString(); name = dr["firstname"].ToString() + " " + dr["lastname"]; username = dr["username"].ToString(); wb.Stop(); BbQuery.BbLoginString = name + " logged in."; Debug.WriteLine(BbQuery.BbLoginString); BbQuery.BbLoggedInName = name; BbQuery.BbloggedIn = true; BbQuery.BbInstructor_id = id; BbQuery.BbUsername = username; Debug.WriteLine("LoginXP session cookie = " + BbQuery.cc.GetCookieHeader(new Uri(authUrl))); // success Debug.WriteLine("Success"); wb.Stop(); btnCancel_Click(this, new EventArgs()); } } }
public static multipleChoiceItem fromExisting(string BbUrl, string token, int qdpk1, DataTable students) { bool doHex = false; DataTable theData; string theXml = null; int row = 0; multipleChoiceItem retValue = null; multipleChoiceItem mc = null; StringBuilder sql = new StringBuilder(); sql.Append("select qd.data "); sql.Append("from qti_asi_data qd "); sql.Append(" where qd.pk1 = " + qdpk1.ToString()); RequesterAsync rr = new RequesterAsync(sql.ToString(), BbUrl, token, true); theData = rr.execute(); if (theData != null && !theData.TableName.Equals("error")) { string data = theData.Rows[0]["data"].ToString(); if (!data.StartsWith("P")) { doHex = true; } theXml = BbQuery.getStringFromData(data); } if (!String.IsNullOrEmpty(theXml)) { theXml = theXml.Replace("<item ", "<multipleChoiceItem ").Replace("</item>", "</multipleChoiceItem>"); mc = multipleChoiceItem.Parse(theXml); } var names = mc.presentation.flow.flow.Where(t => [email protected]("RESPONSE_BLOCK")); foreach (var n in names) { //n.response_lid.render_choice.flow_label. var labels = n.response_lid.render_choice.flow_label; foreach (var l in labels) { string stuName = students.Rows[row]["lastname"].ToString() + ", " + students.Rows[row]["firstname"].ToString() + " (" + students.Rows[row]["user_id"].ToString() + ")"; row++; l.response_label.flow_mat.material.mat_extension.mat_formattedtext.TypedValue = stuName; l.response_label.ident = QTIUtility.Utilities.Md5HashUtilityUTF8(stuName).ToLower(); } multipleChoiceItem.presentationLocalType.flowLocalType.flowLocalType1.response_lidLocalType.render_choiceLocalType.flow_labelLocalType m = new multipleChoiceItem.presentationLocalType.flowLocalType.flowLocalType1.response_lidLocalType.render_choiceLocalType.flow_labelLocalType(); if (row < students.Rows.Count) { // multipleChoiceItem.presentationLocalType.flowLocalType.flowLocalType1.response_lidLocalType.render_choiceLocalType.flow_labelLocalType m = new multipleChoiceItem.presentationLocalType.flowLocalType.flowLocalType1.response_lidLocalType.render_choiceLocalType.flow_labelLocalType(); string stuName = students.Rows[row]["lastname"].ToString() + ", " + students.Rows[row]["firstname"].ToString() + " (" + students.Rows[row]["user_id"].ToString() + ")"; m.@class = "Block"; m.response_label = new multipleChoiceItem.presentationLocalType.flowLocalType.flowLocalType1.response_lidLocalType.render_choiceLocalType.flow_labelLocalType.response_labelLocalType(); m.response_label.ident = QTIUtility.Utilities.Md5HashUtilityUTF8(stuName).ToLower(); m.response_label.shuffle = "Yes"; m.response_label.rarea = "Ellipse"; m.response_label.rrange = "Exact"; m.response_label.flow_mat = new multipleChoiceItem.presentationLocalType.flowLocalType.flowLocalType1.response_lidLocalType.render_choiceLocalType.flow_labelLocalType.response_labelLocalType.flow_matLocalType(); m.response_label.flow_mat.@class = "FORMATTED_TEXT_BLOCK"; m.response_label.flow_mat.material = new multipleChoiceItem.presentationLocalType.flowLocalType.flowLocalType1.response_lidLocalType.render_choiceLocalType.flow_labelLocalType.response_labelLocalType.flow_matLocalType.materialLocalType(); m.response_label.flow_mat.material.mat_extension = new multipleChoiceItem.presentationLocalType.flowLocalType.flowLocalType1.response_lidLocalType.render_choiceLocalType.flow_labelLocalType.response_labelLocalType.flow_matLocalType.materialLocalType.mat_extensionLocalType(); m.response_label.flow_mat.material.mat_extension.mat_formattedtext = new multipleChoiceItem.presentationLocalType.flowLocalType.flowLocalType1.response_lidLocalType.render_choiceLocalType.flow_labelLocalType.response_labelLocalType.flow_matLocalType.materialLocalType.mat_extensionLocalType.mat_formattedtextLocalType(); m.response_label.flow_mat.material.mat_extension.mat_formattedtext.TypedValue = stuName; //<mat_formattedtext type="HTML">Boxer, Barbara (barb)</mat_formattedtext> m.response_label.flow_mat.material.mat_extension.mat_formattedtext.type = "HTML"; n.response_lid.render_choice.flow_label.Add(m); row++; } while (row < students.Rows.Count) { multipleChoiceItem.presentationLocalType.flowLocalType.flowLocalType1.response_lidLocalType.render_choiceLocalType.flow_labelLocalType mcc = (multipleChoiceItem.presentationLocalType.flowLocalType.flowLocalType1.response_lidLocalType.render_choiceLocalType.flow_labelLocalType)m.Clone(); string stuName = students.Rows[row]["lastname"].ToString() + ", " + students.Rows[row]["firstname"].ToString() + " (" + students.Rows[row]["user_id"].ToString() + ")"; mcc.response_label.ident = QTIUtility.Utilities.Md5HashUtilityUTF8(stuName).ToLower(); n.response_lid.render_choice.flow_label.Add(mcc); row++; } } row = 0; var vcorrect = mc.resprocessing.respcondition.Where(t => t.title.Equals("correct")).FirstOrDefault().conditionvar.varequal; string thisName = students.Rows[row]["lastname"].ToString() + ", " + students.Rows[row]["firstname"].ToString() + " (" + students.Rows[row]["user_id"].ToString() + ")"; vcorrect.TypedValue = QTIUtility.Utilities.Md5HashUtilityUTF8(thisName).ToLower(); vcorrect.respident = "response"; //<respcondition title="correct"> var resps = mc.resprocessing.respcondition.Where(t => t.conditionvar != null && String.IsNullOrEmpty(t.title)); /*<respcondition title="correct"> * <conditionvar> * <varequal respident="response" case="No">0e1fffe32c27424094f9e85c12c55bfb</varequal> * </conditionvar> * <setvar variablename="SCORE" action="Set">SCORE.max</setvar> * <displayfeedback linkrefid="correct" feedbacktype="Response"/> * </respcondition>*/ /*<respcondition> * <conditionvar> * <varequal respident="55394393588c4bb5927a67b4f0846048" case="No"/> * </conditionvar> * <setvar variablename="SCORE" action="Set">100</setvar> * <displayfeedback linkrefid="55394393588c4bb5927a67b4f0846048" feedbacktype="Response"/> * </respcondition>*/ foreach (var r in resps) { if (r.conditionvar.varequal == null) { continue; } string stuName = students.Rows[row]["lastname"].ToString() + ", " + students.Rows[row]["firstname"].ToString() + " (" + students.Rows[row]["user_id"].ToString() + ")"; r.conditionvar.varequal.respident = QTIUtility.Utilities.Md5HashUtilityUTF8(stuName).ToLower(); r.displayfeedback.linkrefid = QTIUtility.Utilities.Md5HashUtilityUTF8(stuName).ToLower(); row++; } while (row < students.Rows.Count) { string stuName = students.Rows[row]["lastname"].ToString() + ", " + students.Rows[row]["firstname"].ToString() + " (" + students.Rows[row]["user_id"].ToString() + ")"; multipleChoiceItem.resprocessingLocalType.respconditionLocalType res = new multipleChoiceItem.resprocessingLocalType.respconditionLocalType(); res.conditionvar = new multipleChoiceItem.resprocessingLocalType.respconditionLocalType.conditionvarLocalType(); res.conditionvar.varequal = new multipleChoiceItem.resprocessingLocalType.respconditionLocalType.conditionvarLocalType.varequalLocalType(); res.conditionvar.varequal.respident = QTIUtility.Utilities.Md5HashUtilityUTF8(stuName).ToLower(); res.conditionvar.varequal.@case = "No"; res.setvar = new multipleChoiceItem.resprocessingLocalType.respconditionLocalType.setvarLocalType(); res.setvar.variablename = "SCORE"; res.setvar.action = "Set"; res.setvar.TypedValue = "0.0"; res.displayfeedback = new multipleChoiceItem.resprocessingLocalType.respconditionLocalType.displayfeedbackLocalType(); res.displayfeedback.linkrefid = QTIUtility.Utilities.Md5HashUtilityUTF8(stuName).ToLower(); res.displayfeedback.feedbacktype = "Response"; mc.resprocessing.respcondition.Add(res); row++; } row = 0; /*should have * <itemfeedback ident="correct" view="All"> * <flow_mat class="Block"> * <flow_mat class="FORMATTED_TEXT_BLOCK"> * <material> * <mat_extension> * <mat_formattedtext type="HTML"/> * </mat_extension> * </material> * </flow_mat> * </flow_mat> * </itemfeedback> * <itemfeedback ident="incorrect" view="All"> * <flow_mat class="Block"> * <flow_mat class="FORMATTED_TEXT_BLOCK"> * <material> * <mat_extension> * <mat_formattedtext type="HTML"/> * </mat_extension> * </material> * </flow_mat> * </flow_mat> * </itemfeedback> */ var itf = mc.itemfeedback.Where(t => !t.ident.Contains("correct")); foreach (var itp in itf) { string stuName = students.Rows[row]["lastname"].ToString() + ", " + students.Rows[row]["firstname"].ToString() + " (" + students.Rows[row]["user_id"].ToString() + ")"; itp.ident = QTIUtility.Utilities.Md5HashUtilityUTF8(stuName).ToLower(); row++; } /* * <itemfeedback ident="0e1fffe32c27424094f9e85c12c55bfb" view="All"> * <solution view="All" feedbackstyle="Complete"> * <solutionmaterial> * <flow_mat class="Block"> * <flow_mat class="FORMATTED_TEXT_BLOCK"> * <material> * <mat_extension> * <mat_formattedtext type="HTML"/> * </mat_extension> * </material> * </flow_mat> * </flow_mat> * </solutionmaterial> * </solution> * </itemfeedback> * * <itemfeedback ident="55394393588c4bb5927a67b4f0846048" view="All"> * <solution view="All" feedbackstyle="Complete"> * <solutionmaterial> * <flow_mat class="Block"> * <flow_mat class="FORMATTED_TEXT_BLOCK"> * <material> * <mat_extension> * <mat_formattedtext type="HTML"/> * </mat_extension> * </material> * </flow_mat> * </flow_mat> * </solutionmaterial> * </solution> * </itemfeedback>*/ multipleChoiceItem.itemfeedbackLocalType it = null; if (row < students.Rows.Count) { it = new multipleChoiceItem.itemfeedbackLocalType(); it.view = "All"; string stuName = students.Rows[row]["lastname"].ToString() + ", " + students.Rows[row]["firstname"].ToString() + " (" + students.Rows[row]["user_id"].ToString() + ")"; it.ident = QTIUtility.Utilities.Md5HashUtilityUTF8(stuName).ToLower(); it.solution = new multipleChoiceItem.itemfeedbackLocalType.solutionLocalType(); it.solution.view = "All"; it.solution.feedbackstyle = "Complete"; it.solution.solutionmaterial = new multipleChoiceItem.itemfeedbackLocalType.solutionLocalType.solutionmaterialLocalType(); it.solution.solutionmaterial.flow_mat = new multipleChoiceItem.itemfeedbackLocalType.solutionLocalType.solutionmaterialLocalType.flow_matLocalType(); it.solution.solutionmaterial.flow_mat.@class = "Block"; it.solution.solutionmaterial.flow_mat.flow_mat = new multipleChoiceItem.itemfeedbackLocalType.solutionLocalType.solutionmaterialLocalType.flow_matLocalType.flow_matLocalType1(); it.solution.solutionmaterial.flow_mat.flow_mat.@class = "FORMATTED_TEXT_BLOCK"; it.solution.solutionmaterial.flow_mat.flow_mat.material = new multipleChoiceItem.itemfeedbackLocalType.solutionLocalType.solutionmaterialLocalType.flow_matLocalType.flow_matLocalType1.materialLocalType(); it.solution.solutionmaterial.flow_mat.flow_mat.material.mat_extension = new multipleChoiceItem.itemfeedbackLocalType.solutionLocalType.solutionmaterialLocalType.flow_matLocalType.flow_matLocalType1.materialLocalType.mat_extensionLocalType(); it.solution.solutionmaterial.flow_mat.flow_mat.material.mat_extension.mat_formattedtext = new multipleChoiceItem.itemfeedbackLocalType.solutionLocalType.solutionmaterialLocalType.flow_matLocalType.flow_matLocalType1.materialLocalType.mat_extensionLocalType.mat_formattedtextLocalType(); it.solution.solutionmaterial.flow_mat.flow_mat.material.mat_extension.mat_formattedtext.type = "HTML"; mc.itemfeedback.Add(it); row++; } while (row < students.Rows.Count) { multipleChoiceItem.itemfeedbackLocalType itc = (multipleChoiceItem.itemfeedbackLocalType)it.Clone(); string stuName = students.Rows[row]["lastname"].ToString() + ", " + students.Rows[row]["firstname"].ToString() + " (" + students.Rows[row]["user_id"].ToString() + ")"; itc.ident = QTIUtility.Utilities.Md5HashUtilityUTF8(stuName).ToLower(); mc.itemfeedback.Add(itc); row++; } StringBuilder xm = new StringBuilder(); XmlWriter xr = XmlWriter.Create(xm); mc.Save(xr); xr.Flush(); xr.Close(); string ix = xm.ToString(); ix = ix.Replace("<multipleChoiceItem ", "<item ").Replace("</multipleChoiceItem>", "</item>"); ix = ix.Replace("<?xml version=\"1.0\" encoding=\"utf-16\"?>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); //xm.Length = 0; //xm.Append(ix); string xmf = String.Empty; byte[] b = UTF8Encoding.UTF8.GetBytes(ix); if (doHex) { xmf = BitConverter.ToString(b).Replace("-", string.Empty); } else { xmf = Convert.ToBase64String(b); } sql.Length = 0; sql.Append("update qti_asi_data set "); sql.Append("data =cast('" + ix + "' AS varbinary(max))"); sql.Append(" where pk1 = " + qdpk1.ToString()); string theSql = sql.ToString(); rr = new RequesterAsync(theSql, BbUrl, token, true); theData = rr.execute(); retValue = mc; return(retValue); }