gyhlw_dotnet/网站项目/VRS/Management/VSAT/ExamTheoryBase_Add_Custom.a...

625 lines
21 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
namespace VRS.Management.VSAT
{
public partial class ExamTheoryBase_Add_Custom : BasePage
{
DataService.BLL.pro_exam_batch bll = new DataService.BLL.pro_exam_batch();
DataService.BLL.admin_log log = new DataService.BLL.admin_log();
DataService.BLL.admin_user bll_user = new DataService.BLL.admin_user();
DataService.BLL.pro_theory_base bll_theory_base = new DataService.BLL.pro_theory_base();
DataService.BLL.pro_theory_base_item bll_theory_base_item = new DataService.BLL.pro_theory_base_item();
protected override void Page_Load(object sender, EventArgs e)
{
base.Page_Load(sender, e);
if (!IsPostBack)
{
//var user = DataService.BLL.admin_user.load_login();
//var user_login = bll_user.GetModel(user.user_id);
//DataLoad();
BindDeviceType("TheoryBaseKnow", dp_know, "");
}
}
public void DataLoad()
{
var list = bll_theory_base.GetModelList("").ToList();
RadListBoxDestination.DataSource = list;
RadListBoxDestination.DataValueField = "id";
RadListBoxDestination.DataTextField = "question";
RadListBoxDestination.DataSortField = "question";
RadListBoxDestination.DataBind();
}
protected void RadListBoxDestination_Reordered(object sender, RadListBoxEventArgs e)
{
RadListBoxDestination.DataBind();
ReorderAZ();
}
protected void RadListBoxDestination_Deleted(object sender, RadListBoxEventArgs e)
{
span_name.InnerHtml = "";
RadListBoxDestination.DataBind();
ReorderAZ();
}
protected void RadListBoxDestination_Deleting(object sender, RadListBoxDeletingEventArgs e)
{
if (RadListBoxDestination.Items.Count <= 2)
{
span_name.InnerHtml = "至少有两个选项!";
e.Cancel = true;
}
}
//添加单个选项
protected void btnAddItem_Click(object sender, EventArgs e)
{
/*
var item = new RadListBoxItem();
item.Text = txt_additem.Text.Trim();
var addItem = new RadListBoxItem(item.Text, item.Text);
RadListBoxDestination.Items.Add(addItem);
var added_index = addItem.Index;
RadioButtonList radbuttonlist = addItem.FindControl("RadioButtonList_Answer") as RadioButtonList;
if (null != radbuttonlist)
{
radbuttonlist.SelectedValue = RadioButtonList_answer.SelectedValue;
}
*/
var kind = dp_kind.SelectedValue;
if (string.IsNullOrEmpty(kind))
{
span_name.InnerHtml = "题目类型不能为空!";
return;
}
if (kind == "简答题" || kind == "填空题")
{
span_name.InnerHtml = "该题目类型不能添加选项!";
return;
}
if (kind == "判断题")
{
if (RadListBoxDestination.Items.Count >= 2)
{
span_name.InnerHtml = "判断题只有两个选项!";
return;
}
}
else if (kind == "单选题")
{
}
else if (kind == "多选题")
{
}
span_name.InnerHtml = "";
AddNewItem();
RadListBoxDestination.DataBind();
}
/// <summary>
/// 更新选项值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void option_name_TextChanged(object sender, EventArgs e)
{
var txtBox = sender as RadTextBox;
var rad_item = txtBox.Parent as RadListBoxItem;
if (null != rad_item)
{
rad_item.Text = txtBox.Text.Trim();
}
}
protected void btnSure_Click(object sender, EventArgs e)
{
btnSure.Enabled = false;
DataService.Model.pro_theory_base model = new DataService.Model.pro_theory_base();
var user = DataService.BLL.admin_user.load_login();
if (string.IsNullOrEmpty(dp_kind.SelectedValue))
{
RadAjaxManager1.Alert("题目类型不能为空!");
btnSure.Enabled = true;
return;
}
if (string.IsNullOrEmpty(question_name.Text.Trim()))
{
RadAjaxManager1.Alert("题干不能为空!");
btnSure.Enabled = true;
return;
}
if (string.IsNullOrEmpty(dp_know.SelectedValue))
{
RadAjaxManager1.Alert("知识领域不能为空!");
btnSure.Enabled = true;
return;
}
int right_count = 0;
var questionTK = question_name.Text.Trim();
var answerTK = answer_write.Text.Trim();
List<string> list_answer = new List<string>();
if (dp_kind.SelectedValue != "简答题" && dp_kind.SelectedValue != "填空题")
{
var flag = ExamTheoryBase_Edit_Custom.CheckRightAnswerCount(RadListBoxDestination, ref right_count, list_answer);
if (!flag)
{
RadAjaxManager1.Alert("选项值不能为空!");
btnSure.Enabled = true;
return;
}
}
var total_count = RadListBoxDestination.Items.Count;
//判断题、单选题、多选题
if (dp_kind.SelectedValue == "判断题")
{
if (total_count != 2)
{
RadAjaxManager1.Alert("判断题只有两个选项!");
btnSure.Enabled = true;
return;
}
if (right_count != 1)
{
RadAjaxManager1.Alert("判断题只有1个选项答案");
btnSure.Enabled = true;
return;
}
}
else if (dp_kind.SelectedValue == "单选题")
{
if (total_count < 2)
{
RadAjaxManager1.Alert("单选题至少两个选项!");
btnSure.Enabled = true;
return;
}
if (right_count != 1)
{
RadAjaxManager1.Alert("单选题只有1个选项答案");
btnSure.Enabled = true;
return;
}
}
else if (dp_kind.SelectedValue == "多选题")
{
if (total_count < 2)
{
RadAjaxManager1.Alert("多选题至少两个选项!");
btnSure.Enabled = true;
return;
}
if (right_count < 2)
{
RadAjaxManager1.Alert("多选题至少2个选项答案");
btnSure.Enabled = true;
return;
}
}
else if (dp_kind.SelectedValue == "简答题")
{
var answer = answer_write.Text.Trim();
if (string.IsNullOrEmpty(answer))
{
RadAjaxManager1.Alert("简答题答案不能为空!");
btnSure.Enabled = true;
return;
}
}
else if (dp_kind.SelectedValue == "填空题")
{
var answer = answer_write.Text.Trim();
if (string.IsNullOrEmpty(answer))
{
RadAjaxManager1.Alert("填空题答案不能为空!");
btnSure.Enabled = true;
return;
}
var line2 = "__";
questionTK = questionTK.Replace("__________", line2)
.Replace("_________", line2)
.Replace("________", line2)
.Replace("_______", line2)
.Replace("______", line2)
.Replace("_____", line2)
.Replace("____", line2)
.Replace("___", line2);
// var question_array = question.Split(new string[] { line2 }, StringSplitOptions.RemoveEmptyEntries);
var question_count = CountSubstringOccurrences(questionTK, line2);
answerTK = answerTK.Replace("__________", line2)
.Replace("_________", line2)
.Replace("________", line2)
.Replace("_______", line2)
.Replace("______", line2)
.Replace("_____", line2)
.Replace("____", line2)
.Replace("___", line2);
var answer_array = answerTK.Split(new string[] { line2 }, StringSplitOptions.None);
if (question_count != answer_array.Length)
{
RadAjaxManager1.Alert(string.Format("填空题空格数:{0} ,与答案数:{1} 不一致!", question_count, answer_array.Length));
btnSure.Enabled = true;
return;
}
}
var id = BasePage.GetId();
model.id = id;
model.target = dp_know.SelectedValue;
model.kind = dp_kind.SelectedValue;
model.question = question_name.Text.Trim();
model.create_time = DateTime.Now;
model.create_by = user.user_id;
//model.r1 = r1.Text.Trim();//备注
if (dp_kind.SelectedValue == "填空题")
{
model.question = questionTK;
model.answer = answerTK;
}
else if (dp_kind.SelectedValue == "简答题")
{
model.answer = answer_write.Text.Trim();
}
else //其它题型
{
model.answer = string.Join(",", list_answer);
}
int index = 1;
var now = DateTime.Now;
Dictionary<int, string> dic = new Dictionary<int, string>();
string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var length = alphabet.Length;
for (int i = 0; i < 26; i++)
{
dic.Add(i, alphabet.Substring(i, 1));
}
if (bll_theory_base.Add(model))
{
log.write_log("添加题目成功。" + "名称:" + model.question + "id" + model.id);
for (int i = 0; i < RadListBoxDestination.Items.Count; i++)
{
var list_item = RadListBoxDestination.Items[i];
var item = new DataService.Model.pro_theory_base_item();
item.id = BasePage.GetNextId(id, index++);
item.theory_base_id = id;
item.no = (i + 1);
if (dic.ContainsKey(i))
{
item.item_letter = dic[i];
}
item.create_by = user.user_id;
item.create_time = now;
item.item = list_item.Text;
RadTextBox box = list_item.FindControl("option_name") as RadTextBox;
if (null != box)
{
}
RadioButtonList radbuttonlist = list_item.FindControl("RadioButtonList_Answer") as RadioButtonList;
if (null != radbuttonlist)
{
item.is_answer = int.Parse(radbuttonlist.SelectedValue);
}
bll_theory_base_item.Add(item);
}
RadAjaxManager1.ResponseScripts.Add("alert('添加题目成功!');CloseAndRebind();");
}
else
{
RadAjaxManager1.Alert("添加题目失败!");
btnSure.Enabled = true;
}
}
public static int CountSubstringOccurrences(string str, string substr)
{
int index = 0;
int count = 0;
while ((index = str.IndexOf(substr, index)) != -1)
{
count++;
index += substr.Length;
}
return count;
}
/// <summary>
/// 旧有添加
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSure_Click_old(object sender, EventArgs e)
{
DataService.Model.pro_theory_base model = new DataService.Model.pro_theory_base();
var user = DataService.BLL.admin_user.load_login();
if (string.IsNullOrEmpty(dp_kind.SelectedValue))
{
RadAjaxManager1.Alert("题目类型不能为空!");
return;
}
if (string.IsNullOrEmpty(question_name.Text.Trim()))
{
RadAjaxManager1.Alert("题干不能为空!");
return;
}
if (dp_kind.SelectedValue == "简答题")
{
if (string.IsNullOrEmpty(anwser_jianda.Text.Trim()))
{
RadAjaxManager1.Alert("简答题答案不能为空!");
return;
}
}
else
{
if (dp_answer.CheckedItems.Count <= 0)
{
RadAjaxManager1.Alert("请选择答案!");
return;
}
}
model.id = BasePage.GetId();
model.kind = dp_kind.SelectedValue;
model.question = question_name.Text.Trim();
model.create_time = DateTime.Now;
model.create_by = user.user_id;
model.r1 = r1.Text.Trim();
if (dp_kind.SelectedValue == "简答题")
{
model.answer = anwser_jianda.Text.Trim();
model.option_a = "";
model.option_b = "";
}
else
{
var array = dp_answer.CheckedItems.Select(s => s.Text).OrderBy(s => s).ToArray();
model.answer = string.Join(",", array);
model.option_a = option_a.Text.Trim();
model.option_b = option_b.Text.Trim();
}
if (bll_theory_base.Add(model))
{
log.write_log("添加题目成功。" + "名称:" + model.question + "id" + model.id);
RadAjaxManager1.ResponseScripts.Add("alert('添加成功!');CloseAndRebind();");
}
else
{
RadAjaxManager1.Alert("添加失败!");
}
}
protected void btnRowEdit_Click(object sender, EventArgs e)
{
var item = sender as LinkButton;
var rad_item = item.Parent as RadListBoxItem; //item
//var rad_list = item.Parent.Parent; //radlist
var text = rad_item.Text;
var value = rad_item.Value;
var txtbox = rad_item.FindControl("option_name") as RadTextBox;
if (txtbox.Text != text)
{
rad_item.Text = txtbox.Text.Trim();
}
}
protected void dp_kind_SelectedIndexChanged(object sender, DropDownListEventArgs e)
{
var kind = dp_kind.SelectedValue;
if (kind == "单选题" || kind == "多选题")
{
//tr_items.Visible = true;
//tr_answer.Visible = false;
//hid_add.Value = "0";
btnAddItem.Visible = true;
answer_write.Text = "";
answer_write.Enabled = false;
if (RadListBoxDestination.Items.Count <= 3)
{
RadListBoxDestination.Items.Clear();
AddNewItem();
AddNewItem();
AddNewItem();
AddNewItem();
RadListBoxDestination.DataBind();
}
}
else if (kind == "判断题")
{
//tr_items.Visible = true;
//tr_answer.Visible = false;
//hid_add.Value = "0";
btnAddItem.Visible = true;
answer_write.Text = "";
answer_write.Enabled = false;
RadListBoxDestination.Items.Clear();
//AddNewItem();
//AddNewItem();
AddNewItem("正确");
AddNewItem("错误");
RadListBoxDestination.DataBind();
}
else
{
// tr_items.Visible = false;
// tr_answer.Visible = true;
//hid_add.Value = "1";
btnAddItem.Visible = false;
answer_write.Enabled = true;
RadListBoxDestination.Items.Clear();
RadListBoxDestination.DataBind();
}
span_name.InnerHtml = "";
}
public void AddNewItem(string text = "")
{
Dictionary<int, string> dic = new Dictionary<int, string>();
string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var length = alphabet.Length;
for (int i = 0; i < 26; i++)
{
dic.Add(i, alphabet.Substring(i, 1));
}
var item = new RadListBoxItem();
// item.Text = txt_additem.Text.Trim(); //$$$$
if (!string.IsNullOrEmpty(text))
{
item.Text = text;
}
else
{
item.Text = txt_additem.Text.Trim();
}
var addItem = new RadListBoxItem(item.Text, item.Text);
RadListBoxDestination.Items.Add(addItem);
var added_index = addItem.Index;
Label labelAZ = addItem.FindControl("labelAZ") as Label;
if (null != labelAZ)
{
if (dic.ContainsKey(added_index))
{
labelAZ.Text = dic[added_index];
}
}
}
public void ReorderAZ()
{
Dictionary<int, string> dic = new Dictionary<int, string>();
string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var length = alphabet.Length;
for (int i = 0; i < 26; i++)
{
dic.Add(i, alphabet.Substring(i, 1));
}
for (int i = 0; i < RadListBoxDestination.Items.Count; i++)
{
var item = RadListBoxDestination.Items[i];
var added_index = item.Index;
Label labelAZ = item.FindControl("labelAZ") as Label;
if (null != labelAZ)
{
if (dic.ContainsKey(added_index))
{
labelAZ.Text = dic[added_index];
}
}
}
}
#region
public void upload_click(RadAsyncUpload Upload1, Image img)
{
if (Upload1.UploadedFiles.Count < 1)
{
RadAjaxManager1.Alert("未选择图片!");
return;
}
var uploadFile = Upload1.UploadedFiles[0];
var extension = uploadFile.GetExtension();
var extension_list = new string[] { ".jpg", ".png", ".jpeg", ".bmp", ".gif" };
if (!extension_list.Contains(extension))
{
RadAjaxManager1.Alert("文件格式错误!");
return;
}
if (BasePage.SaveFile(uploadFile, Context, out string filePath))
{
img.ImageUrl = "~" + filePath;
}
else
{
RadAjaxManager1.Alert("上传失败!");
}
}
public void Remove_Click(Image img)
{
if (!string.IsNullOrEmpty(img.ImageUrl))
{
string path = Server.MapPath(img.ImageUrl);
if (File.Exists(path))
{
File.Delete(path);
}
img.ImageUrl = "";
}
}
#endregion
}
}