/// <summary> /// 修改是否使用的状态 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void sbUse_Click(object sender, EventArgs e) { StateButton ub = (StateButton)sender; int index = ((GridViewRow)(ub.Parent.Parent)).RowIndex; int id = int.Parse(this.GridView1.DataKeys[index].Value.ToString()); // Song.Entities.Outline entity = Business.Do <IOutline>().OutlineSingle(id); entity.Ol_IsUse = !entity.Ol_IsUse; Business.Do <IOutline>().OutlineSave(entity); BindData(null, null); }
/// <summary> /// 输出是否可以播放 /// </summary> /// <param name="uid">文件名即Uid,是附件的as_uid</param> /// <param name="msg">输出提示</param> /// <returns>是否要播放</returns> private bool judge(string uid, out string msg) { msg = ""; ////如果没有来源页信息 //if (this.Request.UrlReferrer == null) //{ // msg = "请勿在本站以外访问!"; // return false; //} ////如果来源页与当前请求不在一个主域 //if (Request.UrlReferrer.Host != Request.Url.Host) //{ // msg = "请勿在本站以外访问!"; // return false; //} //如果学员没有登录 if (!Extend.LoginState.Accounts.IsLogin) { msg = "学员未登录,视频不允许播放!"; return(false); } //首先获取章节 Song.Entities.Outline outline = Business.Do <IOutline>().OutlineSingle(uid); if (outline == null || outline.Ol_IsUse == false) { msg = "当前视频所在章节不存在或已经被禁用"; return(false); } //判断是否与当前章节在同一环境下 if (WeiSha.Common.Request.Cookies["olid"].String != outline.Ol_ID.ToString()) { msg = "请勿在本站以外访问!"; return(false); } //获取课程 Song.Entities.Course course = Business.Do <ICourse>().CourseSingle(outline.Cou_ID); if (course == null || course.Cou_IsUse == false) { msg = "当前视频所在课程不存在或已经被禁用"; return(false); } //判断是否选修 Song.Entities.Accounts st = Extend.LoginState.Accounts.CurrentUser; bool isBuy = Business.Do <ICourse>().StudyIsCourse(st.Ac_ID, course.Cou_ID); //是否购买 bool istry = Business.Do <ICourse>().IsTryout(course.Cou_ID, st.Ac_ID); //是否在试用中 if (!isBuy && !istry) { msg = "当前学员未选修视频所在的课程"; return(false); } return(true); }
protected void btnEnter_Click(object sender, EventArgs e) { Song.Entities.Outline ol = id < 1 ? new Song.Entities.Outline() : Business.Do <IOutline>().OutlineSingle(id); if (ol == null) { return; } //名称 ol.Ol_Name = Ol_Name.Text.Trim(); //简介 ol.Ol_Intro = Ol_Intro.Text; //上级章节 int pid = 0; int.TryParse(ddlOutline.SelectedValue, out pid); ol.Ol_PID = pid; ol.Ol_IsUse = cbIsUse.Checked; //是否启用 ol.Ol_IsFree = cbIsFree.Checked; //免费 ol.Ol_IsFinish = cbIsFinish.Checked; //完结 //所属课程 ol.Cou_ID = couid; Song.Entities.Course cou = Business.Do <ICourse>().CourseSingle(couid); if (cou != null) { ol.Sbj_ID = cou.Sbj_ID; } //全局唯一ID ol.Ol_UID = getUID(); try { if (id < 1) { //新增 Business.Do <IOutline>().OutlineAdd(ol); } else { Business.Do <IOutline>().OutlineSave(ol); } Master.AlertCloseAndRefresh("操作完成"); } catch { throw; } }
/// <summary> /// 保存章节 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnEnter_Click(object sender, EventArgs e) { int.TryParse(lbOutlineID.Text, out olid); Song.Entities.Outline ol = olid < 1 ? new Song.Entities.Outline() : Business.Do <IOutline>().OutlineSingle(olid); if (ol == null) { return; } //名称 ol.Ol_Name = Ol_Name.Text.Trim(); //简介 ol.Ol_Intro = Ol_Intro.Text; //上级章节 int pid = 0; int.TryParse(ddlOutline.SelectedValue, out pid); ol.Ol_PID = pid; //是否启用 ol.Ol_IsUse = cbIsUse.Checked; //所属课程 ol.Cou_ID = couid; Song.Entities.Course cou = Business.Do <ICourse>().CourseSingle(couid); if (cou != null) { ol.Sbj_ID = cou.Sbj_ID; } //全局唯一ID ol.Ol_UID = getUID(); try { if (olid < 1) { //新增 Business.Do <IOutline>().OutlineAdd(ol); } else { Business.Do <IOutline>().OutlineSave(ol); } Response.Redirect("Courses_Outline.aspx?couid=" + couid + "&olid=" + ol.Ol_ID); } catch { throw; } }
/// <summary> /// 编辑当前数据项 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnEditEnter_Click(object sender, EventArgs e) { //当前点击的按钮 System.Web.UI.WebControls.Button btn = (System.Web.UI.WebControls.Button)sender; //当前输入框 GridViewRow gr = (GridViewRow)btn.Parent.Parent; TextBox tb = (TextBox)gr.FindControl("tbName"); if (tb == null || tb.Text.Trim() == "") { return; } //当前章节 int id = int.Parse(this.GridView1.DataKeys[gr.RowIndex].Value.ToString()); if (id > 0) { Song.Entities.Outline outline = Business.Do <IOutline>().OutlineSingle(id); if (outline == null) { return; } outline.Ol_Name = tb.Text.Trim(); Business.Do <IOutline>().OutlineSave(outline); } else { //新增 Song.Entities.Outline outline = new Song.Entities.Outline(); outline.Ol_Name = tb.Text.Trim(); //上级ID Label lbPid = (Label)gr.FindControl("lbPID"); outline.Ol_PID = Convert.ToInt32(lbPid.Text); //序号 Label lbTax = (Label)gr.FindControl("lbTax"); outline.Ol_Tax = Convert.ToInt32(lbTax.Text); //所属课程 outline.Cou_ID = couid; outline.Ol_IsUse = true; Business.Do <IOutline>().OutlineAdd(outline); } //退出编辑状态 GridView1.EditIndex = -1; BindData(null, null); }
protected void btnNofree_Click(object sender, EventArgs e) { string keys = GridView1.GetKeyValues; foreach (string s in keys.Split(',')) { int id = 0; int.TryParse(s, out id); Song.Entities.Outline entity = Business.Do <IOutline>().OutlineSingle(id); if (entity == null) { continue; } entity.Ol_IsFree = false; Business.Do <IOutline>().OutlineSave(entity); } BindData(null, null); }
/// <summary> /// 修改 /// </summary> /// <param name="entity">业务实体</param> public void Save(Accessory entity) { //如果没有填写扩展名,则自动加上 if (string.IsNullOrWhiteSpace(entity.As_Extension)) { string extension = System.IO.Path.GetExtension(entity.As_FileName); if (entity.As_FileName.IndexOf(".") > -1) { extension = extension.Replace(".", ""); } entity.As_Extension = extension; } Gateway.Default.Save <Accessory>(entity); //如果是视频,设置该视频所在的章节是否有视频 Song.Entities.Outline outline = Gateway.Default.From <Outline>().Where(Outline._.Ol_UID == entity.As_Uid).ToFirst <Outline>(); if (outline != null) { Business.Do <IOutline>().OutlineSave(outline); } }
///// <summary> ///// 添加留言 ///// </summary> ///// <returns></returns> //[Student] //public int Add(string msg, int playtime, int couid, int olid) //{ // if (string.IsNullOrWhiteSpace(msg)) return 0; // if (msg.Trim() == "") return 0; // Song.Entities.Accounts acc = Extend.LoginState.Accounts.CurrentUser; // if (acc == null) return 0; // return this.Add(acc.Ac_AccName, playtime, couid, olid); //} /// <summary> /// 添加留言 /// </summary> /// <param name="acc">学员账号,如果账号为空则默认为当前登录账号</param> /// <param name="msg">留言信息</param> /// <param name="playtime">视频播放时间</param> /// <param name="couid">课程id</param> /// <param name="olid">章节id</param> /// <returns></returns> public int Add(string acc, string msg, int playtime, int couid, int olid) { Song.Entities.Accounts account = null; if (!string.IsNullOrWhiteSpace(acc)) { account = Business.Do <IAccounts>().AccountsSingle(acc, -1); } else { account = Extend.LoginState.Accounts.CurrentUser; } if (account == null) { throw new Exception("当前账号不存在"); } Song.Entities.Message entity = new Entities.Message(); entity.Msg_Context = msg.Length > 200 ? msg.Substring(0, 200) : msg; entity.Msg_PlayTime = playtime; if (couid <= 0) { Song.Entities.Outline outline = Business.Do <IOutline>().OutlineSingle(olid); if (outline != null) { couid = outline.Cou_ID; } } entity.Cou_ID = couid; entity.Ol_ID = olid; entity.Ac_ID = account.Ac_ID; entity.Ac_AccName = account.Ac_AccName; entity.Ac_Name = account.Ac_Name; entity.Msg_Phone = string.IsNullOrWhiteSpace(account.Ac_MobiTel1) ? account.Ac_MobiTel2 : account.Ac_MobiTel1; entity.Msg_QQ = account.Ac_Qq; entity.Ac_Photo = account.Ac_Photo; entity.Msg_IP = WeiSha.Common.Browser.IP; return(Business.Do <IMessage>().Add(entity)); }
private void fill() { Song.Entities.Outline mm; if (id > 0) { mm = Business.Do <IOutline>().OutlineSingle(id); //是否显示 cbIsUse.Checked = mm.Ol_IsUse; cbIsFree.Checked = mm.Ol_IsFree; //是否免费 cbIsFinish.Checked = mm.Ol_IsFinish; //是否完结 //上级章节 ListItem li = ddlOutline.Items.FindByValue(mm.Ol_PID.ToString()); if (li != null) { ddlOutline.SelectedIndex = -1; li.Selected = true; } //唯一标识 ViewState["UID"] = mm.Ol_UID; //是否为直播课 cbIsLive.Checked = mm.Ol_IsLive; tbLiveTime.Text = mm.Ol_LiveTime < DateTime.Now.AddYears(-100) ? "" : mm.Ol_LiveTime.ToString("yyyy-MM-dd HH:mm"); tbLiveSpan.Text = mm.Ol_LiveSpan == 0 ? "" : mm.Ol_LiveSpan.ToString(); //排序号 Ol_Tax.Text = mm.Ol_Tax.ToString(); } else { //如果是新增 mm = new Song.Entities.Outline(); ViewState["UID"] = WeiSha.Common.Request.UniqueID(); } //标题 Ol_Name.Text = mm.Ol_Name; //简介 Ol_Intro.Text = mm.Ol_Intro; }
public void OnSave(object sender, EventArgs e) { if (sender != null) { if (!(sender is Outline)) { return; } Outline ol = (Outline)sender; Song.Entities.Outline old = Gateway.Default.From <Outline>().Where(Outline._.Ol_ID == ol.Ol_ID).ToFirst <Outline>(); ol.Ol_QuesCount = Business.Do <IOutline>().QuesOfCount(ol.Ol_ID, -1, true, true); WeiSha.Common.Cache <Song.Entities.Outline> .Data.Update(old, ol); } else { //填充章节数据到缓存 this.OutlineBuildCache(); } if (Save != null) { Save(sender, e); } }
/// <summary> /// 填充章节信息 /// </summary> /// <param name="olid"></param> private void outlineFill(int olid) { olineInitBind(couid); Song.Entities.Outline mm; if (olid > 0) { mm = Business.Do <IOutline>().OutlineSingle(olid); //是否显示 cbIsUse.Checked = mm.Ol_IsUse; //上级章节 ListItem li = ddlOutline.Items.FindByValue(mm.Ol_PID.ToString()); if (li != null) { ddlOutline.SelectedIndex = -1; li.Selected = true; } //唯一标识 ViewState["UID"] = mm.Ol_UID; //附件与视频 VideoBind(); EventBindData(null, null); AccessoryBind(); } else { //如果是新增 mm = new Song.Entities.Outline(); ViewState["UID"] = WeiSha.Common.Request.UniqueID(); } //标题 Ol_Name.Text = mm.Ol_Name; //简介 Ol_Intro.Text = mm.Ol_Intro; lbOutlineID.Text = olid.ToString(); //上传控件 Uploader1.UID = this.getUID(); }
protected void btnEnter_Click(object sender, EventArgs e) { Song.Entities.Outline ol = Business.Do <IOutline>().OutlineSingle(id); //是否为直播 ol.Ol_IsLive = cbIsLive.Checked; DateTime timeLive = DateTime.Now; //直播开始时间 DateTime.TryParse(tbLiveTime.Text, out timeLive); ol.Ol_LiveTime = timeLive; // int liveSpan = 0; //直播计划时长 int.TryParse(tbLiveSpan.Text, out liveSpan); ol.Ol_LiveSpan = liveSpan; try { Business.Do <IOutline>().OutlineSave(ol); Master.AlertCloseAndRefresh("操作完成"); } catch { throw; } }
/// <summary> /// 获取某个课程下第一个章节 /// </summary> /// <param name="couid">课程Id</param> /// <param name="isUse">是否包括只是允许的章节,null取所有范围,true只是允许采用的章节,false反之</param> /// <returns></returns> public Outline OutlineFirst(int couid, bool?isUse) { Song.Entities.Outline[] outlines = null; WhereClip wc = Outline._.Cou_ID == couid; if (isUse != null) { wc.And(Outline._.Ol_IsUse == (bool)isUse); } outlines = Gateway.Default.From <Outline>().Where(wc).OrderBy(Outline._.Ol_Tax.Asc).ToArray <Outline>(); Song.Entities.Outline ol = null; if (outlines != null && outlines.Length > 0) { foreach (Song.Entities.Outline t in outlines) { if (t.Ol_PID == 0) { ol = t; break; } } } return(ol); }
/// <summary> /// 批量添加章节,可用于导入时 /// </summary> /// <param name="orgid">机构id</param> /// <param name="sbjid">专业id</param> /// <param name="couid">课程(或课程)id</param> /// <param name="names">名称,可以是用逗号分隔的多个名称</param> /// <returns></returns> public Outline OutlineBatchAdd(int orgid, int sbjid, int couid, string names) { //整理名称信息 names = names.Replace(",", ","); List <string> listName = new List <string>(); foreach (string s in names.Split(',')) { if (s.Trim() != "") { listName.Add(s.Trim()); } } // int pid = 0; Song.Entities.Outline last = null; for (int i = 0; i < listName.Count; i++) { Song.Entities.Outline current = OutlineIsExist(orgid, sbjid, couid, pid, listName[i]); if (current == null) { current = new Outline(); current.Ol_Name = listName[i].Trim(); current.Ol_IsUse = true; current.Org_ID = orgid; current.Sbj_ID = sbjid; current.Cou_ID = couid; current.Ol_PID = pid; this.OutlineAdd(current); } last = current; pid = current.Ol_ID; } return(last); }
/// <summary> /// 删除,按主键ID; /// </summary> /// <param name="identify">实体的主键</param> public void Delete(int identify) { Accessory ac = this.GetSingle(identify); if (ac == null) { return; } WeiSha.WebControl.FileUpload.Delete(ac.As_Type, ac.As_FileName); string ext = ac.As_FileName.IndexOf(".") > -1 ? ac.As_FileName.Substring(ac.As_FileName.LastIndexOf(".")) : ""; if (ext.ToLower() == ".flv") { string name = ac.As_FileName.IndexOf(".") > -1 ? ac.As_FileName.Substring(0, ac.As_FileName.LastIndexOf(".")) : ac.As_FileName; WeiSha.WebControl.FileUpload.Delete(ac.As_Type, name + ".mp4"); } Gateway.Default.Delete <Accessory>(Accessory._.As_Id == identify); //如果是视频,设置该视频所在的章节是否有视频 Song.Entities.Outline outline = Gateway.Default.From <Outline>().Where(Outline._.Ol_UID == ac.As_Uid).ToFirst <Outline>(); if (outline != null) { Business.Do <IOutline>().OutlineSave(outline); } }
/// <summary> /// 删除,按系统唯一id /// </summary> /// <param name="uid"></param> /// <param name="isDelfile">是否删除文件</param> public void Delete(string uid, bool isDelfile) { if (isDelfile) { List <Accessory> acs = this.GetAll(uid); foreach (Accessory ac in acs) { WeiSha.WebControl.FileUpload.Delete(ac.As_Type, ac.As_FileName); string ext = ac.As_FileName.IndexOf(".") > -1 ? ac.As_FileName.Substring(ac.As_FileName.LastIndexOf(".")) : ""; if (ext.ToLower() == ".flv") { string name = ac.As_FileName.IndexOf(".") > -1 ? ac.As_FileName.Substring(0, ac.As_FileName.LastIndexOf(".")) : ac.As_FileName; WeiSha.WebControl.FileUpload.Delete(ac.As_Type, name + ".mp4"); } } } Gateway.Default.Delete <Accessory>(Accessory._.As_Uid == uid); //如果是视频,设置该视频所在的章节是否有视频 Song.Entities.Outline outline = Gateway.Default.From <Outline>().Where(Outline._.Ol_UID == uid).ToFirst <Outline>(); if (outline != null) { Business.Do <IOutline>().OutlineSave(outline); } }
protected override void InitPageTemplate(HttpContext context) { //当前章节,如果章节id,则取课程第一个章节 Song.Entities.Outline ol = id < 1 ? Business.Do <IOutline>().OutlineFirst(couid, true) : Business.Do <IOutline>().OutlineSingle(id); couid = couid > 0 ? couid : (ol != null ? ol.Cou_ID : 0); //当前课程 Song.Entities.Course course = Business.Do <ICourse>().CourseSingle(couid); if (course == null || !course.Cou_IsUse) { return; } this.Document.Variables.SetValue("course", course); //如果章节为空,则不再后面的了 if (ol == null) { return; } this.Document.Variables.SetValue("outline", ol); this.Document.Variables.SetValue("olid", ol.Ol_ID.ToString()); //上级章节 this.Document.Variables.SetValue("pat", Business.Do <IOutline>().OutlineSingle(ol.Ol_PID)); Response.Cookies.Add(new HttpCookie("olid", ol.Ol_ID.ToString())); //当前课程 //Song.Entities.Course course = Business.Do<ICourse>().CourseSingle(couid >0 ? couid : ol.Cou_ID); //if (course == null || !course.Cou_IsUse) return; //是否免费,或是限时免费 if (course.Cou_IsLimitFree) { DateTime freeEnd = course.Cou_FreeEnd.AddDays(1).Date; if (!(course.Cou_FreeStart <= DateTime.Now && freeEnd >= DateTime.Now)) { course.Cou_IsLimitFree = false; } } this.Document.Variables.SetValue("course", course); //判断是否允许在桌面应用中学习 this.Document.Variables.SetValue("StudyForDeskapp", getForDeskapp(course, ol)); //是否学习当前课程,如果没有学习且课程处于免费,则创建关联 if (this.Account != null) { isStudy = Business.Do <ICourse>().Study(course.Cou_ID, this.Account.Ac_ID); isBuy = course.Cou_IsFree || course.Cou_IsLimitFree ? true : Business.Do <ICourse>().IsBuy(course.Cou_ID, this.Account.Ac_ID); } this.Document.Variables.SetValue("isStudy", isStudy); this.Document.Variables.SetValue("isBuy", isBuy); //是否可以学习,如果是免费或已经选修便可以学习,否则当前课程允许试用且当前章节是免费的,也可以学习 bool canStudy = isBuy || (isStudy && ol.Ol_IsUse && ol.Ol_IsFinish && course.Cou_IsTry && ol.Ol_IsFree); this.Document.Variables.SetValue("canStudy", canStudy); //记录学员当前学习的课程 if (isStudy) { Extend.LoginState.Accounts.Course(course); } #region 章节输出 // 当前课程的所有章节 Song.Entities.Outline[] outlines = Business.Do <IOutline>().OutlineAll(ol.Cou_ID, true); //课程章节列表 this.Document.Variables.SetValue("outlines", outlines); //树形章节输出 if (outlines.Length > 0) { this.Document.Variables.SetValue("olTree", Business.Do <IOutline>().OutlineTree(outlines)); } #endregion #region 内容输出 CourseContext_State state = new CourseContext_State(); //视频 Song.Entities.Accessory video = getVideo(ol.Ol_UID); this.Document.Variables.SetValue("video", video); if (video != null) { state.Video = canStudy ? true : false; } if (Extend.LoginState.Accounts.IsLogin) { Song.Entities.LogForStudentStudy studyLog = Business.Do <IStudent>().LogForStudySingle(this.Account.Ac_ID, ol.Ol_ID); if (studyLog != null) { this.Document.Variables.SetValue("studyLog", studyLog); double historyPlay = (double)studyLog.Lss_PlayTime / 1000; this.Document.Variables.SetValue("historyPlay", historyPlay); } } //内容 if (!string.IsNullOrWhiteSpace(ol.Ol_Intro)) { state.Context = canStudy ? true : false; } //附件 List <Song.Entities.Accessory> access = Business.Do <IAccessory>().GetAll(ol.Ol_UID, "Course"); if (access.Count > 0) { foreach (Accessory ac in access) { ac.As_FileName = Upload.Get["Course"].Virtual + ac.As_FileName; } this.Document.Variables.SetValue("access", access); state.Attachment = canStudy ? true : false; } //当前章节是否有试题 if (canStudy) { bool isQues = Business.Do <IOutline>().OutlineIsQues(ol.Ol_ID, true); if (isQues) { state.Questions = canStudy ? true : false; } ; } state.JudgeNull(stateVal); this.Document.Variables.SetValue("state", state); #endregion //章节事件 OutlineEvent[] events = Business.Do <IOutline>().EventAll(-1, ol.Ol_ID, -1, true); this.Document.Variables.SetValue("events", events); this.Document.RegisterGlobalFunction(this.getEventQues); this.Document.RegisterGlobalFunction(this.getEventFeedback); this.Document.RegisterGlobalFunction(this.GetOrder); }
protected void btnEnter_Click(object sender, EventArgs e) { Song.Entities.Outline ol = id < 1 ? new Song.Entities.Outline() : Business.Do <IOutline>().OutlineSingle(id); try { if (ol == null) { return; } //名称 if (string.IsNullOrWhiteSpace(Ol_Name.Text.Trim())) { throw new Exception("名称不可以为空"); } ol.Ol_Name = Ol_Name.Text.Trim(); //简介 ol.Ol_Intro = Ol_Intro.Text; //上级章节 int pid = 0; int.TryParse(ddlOutline.SelectedValue, out pid); ol.Ol_PID = pid; ol.Ol_IsUse = cbIsUse.Checked; //是否启用 ol.Ol_IsFree = cbIsFree.Checked; //免费 ol.Ol_IsFinish = cbIsFinish.Checked; //完结 //所属课程 ol.Cou_ID = couid; Song.Entities.Course cou = Business.Do <ICourse>().CourseSingle(couid); if (cou != null) { ol.Sbj_ID = cou.Sbj_ID; } //是否为直播 ol.Ol_IsLive = cbIsLive.Checked; DateTime timeLive = DateTime.Now; //直播开始时间 DateTime.TryParse(tbLiveTime.Text, out timeLive); ol.Ol_LiveTime = timeLive; // int liveSpan = 0; //直播计划时长 int.TryParse(tbLiveSpan.Text, out liveSpan); ol.Ol_LiveSpan = liveSpan; //排序号 int tax = 0; if (Ol_Tax.Text.Trim() != "") { int.TryParse(Ol_Tax.Text, out tax); ol.Ol_Tax = tax; } ////全局唯一ID //ol.Ol_UID = getUID(); try { if (id < 1) { //新增 Business.Do <IOutline>().OutlineAdd(ol); } else { Business.Do <IOutline>().OutlineSave(ol); } Master.AlertCloseAndRefresh("操作完成"); } catch { throw; } } catch (Exception ex) { Alert(ex.Message); } }
/// <summary> /// 将当前项目向上移动;仅在当前对象的同层移动,即同一父节点下的对象这前移动; /// </summary> /// <param name="id"></param> /// <returns>如果已经处于顶端,则返回false;移动成功,返回true</returns> public bool OutlineUp(int couid, int id) { //当前对象 Outline current = Gateway.Default.From <Outline>().Where(Outline._.Ol_ID == id).ToFirst <Outline>(); int tax = (int)current.Ol_Tax; //上一个对象,即兄长对象;兄长不存则直接返回false; Outline prev = Gateway.Default.From <Outline>() .Where(Outline._.Ol_Tax < tax && Outline._.Cou_ID == current.Cou_ID && Outline._.Ol_PID == current.Ol_PID) .OrderBy(Outline._.Ol_Tax.Desc).ToFirst <Outline>(); //有当前等级哥哥对像 if (prev != null) { //交换排序号 current.Ol_Tax = prev.Ol_Tax; prev.Ol_Tax = tax; using (DbTrans tran = Gateway.Default.BeginTrans()) { try { tran.Save <Outline>(current); tran.Save <Outline>(prev); tran.Commit(); } catch { tran.Rollback(); throw; } finally { tran.Close(); } } this.OnSave(null, EventArgs.Empty); return(true); } else { if (current.Ol_PID == 0) { return(false); } //没有当前等级哥哥对像 Song.Entities.Outline top = Gateway.Default.From <Outline>().Where(Outline._.Ol_ID == current.Ol_PID).ToFirst <Outline>(); if (top == null) { return(false); } //父级的哥哥 Song.Entities.Outline topPrev = Gateway.Default.From <Outline>() .Where(Outline._.Ol_Tax < top.Ol_Tax && Outline._.Cou_ID == current.Cou_ID && Outline._.Ol_PID == top.Ol_PID) .OrderBy(Outline._.Ol_Tax.Desc).ToFirst <Outline>(); if (topPrev == null) { return(false); } //父级哥哥的子级的最大序号 object obj = Gateway.Default.Max <Outline>(Outline._.Ol_Tax, Outline._.Ol_PID == topPrev.Ol_ID); current.Ol_Tax = obj is int?(int)obj + 1 : 1; current.Ol_PID = topPrev.Ol_ID; current.Ol_Level = 1; Gateway.Default.Save <Outline>(current); this.OnSave(null, EventArgs.Empty); return(true); } }
/// <summary> /// 将某一行数据加入到数据库 /// </summary> /// <param name="dr"></param> /// <param name="dl"></param> private void _inputData(DataRow dr) { Song.Entities.Questions obj = new Song.Entities.Questions(); obj.Qus_IsUse = true; obj.Qus_Type = this.type; foreach (KeyValuePair <String, String> rel in ExcelInput1.DataRelation) { //Excel的列的值 string column = dr[rel.Key].ToString(); //数据库字段的名称 string field = rel.Value; if (field == "Qus_ID") { if (string.IsNullOrEmpty(column) || column.Trim() == "") { continue; } int ques = Convert.ToInt32(column); Song.Entities.Questions isHavObj = Business.Do <IQuestions>().QuesSingle(ques); if (isHavObj != null) { obj = isHavObj; } } //题干难度、专业、试题讲解 if (field == "Qus_Title") { if (column == string.Empty || column.Trim() == "") { return; } obj.Qus_Title = column; } if (field == "Qus_Diff") { obj.Qus_Diff = Convert.ToInt16(column); } if (field == "Sbj_Name") { Song.Entities.Subject subject = Business.Do <ISubject>().SubjectBatchAdd(org.Org_ID, column); if (subject != null) { obj.Sbj_Name = subject.Sbj_Name; obj.Sbj_ID = subject.Sbj_ID; } } if (field == "Cou_Name") { Song.Entities.Course course = Business.Do <ICourse>().CourseBatchAdd(org.Org_ID, obj.Sbj_ID, column); if (course != null) { obj.Cou_ID = course.Cou_ID; } } if (field == "Ol_Name") { Song.Entities.Outline outline = Business.Do <IOutline>().OutlineBatchAdd(org.Org_ID, obj.Sbj_ID, obj.Cou_ID, column); if (outline != null) { obj.Ol_ID = outline.Ol_ID; } } if (field == "Qus_Explain") { obj.Qus_Explain = column; } //唯一值,正确答案,类型 obj.Qus_UID = WeiSha.Common.Request.UniqueID(); if (field == "Qus_Answer") { if (column == string.Empty || column.Trim() == "") { obj.Qus_IsError = true; } obj.Qus_Answer = column; } } obj.Qus_ErrorInfo = ""; if (obj.Sbj_ID == 0) { throw new Exception("当前试题所属专业并不存在"); } if (obj.Cou_ID == 0) { throw new Exception("当前试题所在课程并不存在"); } //if (obj.Ol_ID == 0) throw new Exception("当前试题所在章节并不存在"); if (org != null) { obj.Org_ID = org.Org_ID; } Business.Do <IQuestions>().QuesInput(obj, null); }
/// <summary> /// 将当前项目向下移动;仅在当前对象的同层移动,即同一父节点下的对象这前移动; /// </summary> /// <param name="id"></param> /// <returns>如果已经处于顶端,则返回false;移动成功,返回true</returns> public bool OutlineDown(int couid, int id) { //当前对象 Outline current = Gateway.Default.From <Outline>().Where(Outline._.Ol_ID == id).ToFirst <Outline>(); int tax = (int)current.Ol_Tax; //下一个对象,即弟弟对象;弟弟不存则直接返回false; Outline next = Gateway.Default.From <Outline>() .Where(Outline._.Ol_Tax > tax && Outline._.Cou_ID == current.Cou_ID && Outline._.Ol_PID == current.Ol_PID) .OrderBy(Outline._.Ol_Tax.Asc).ToFirst <Outline>(); if (next != null) { current.Ol_Tax = next.Ol_Tax; next.Ol_Tax = tax; using (DbTrans tran = Gateway.Default.BeginTrans()) { try { tran.Save <Outline>(current); tran.Save <Outline>(next); tran.Commit(); } catch { tran.Rollback(); throw; } finally { tran.Close(); } } this.OnSave(null, EventArgs.Empty); return(true); } else { if (current.Ol_PID == 0) { return(false); } //没有当前等级父对象 Song.Entities.Outline parent = Gateway.Default.From <Outline>().Where(Outline._.Ol_ID == current.Ol_PID).ToFirst <Outline>(); if (parent == null) { return(false); } //父级的弟弟 Song.Entities.Outline topNext = Gateway.Default.From <Outline>() .Where(Outline._.Ol_Tax > parent.Ol_Tax && Outline._.Cou_ID == current.Cou_ID && Outline._.Ol_PID == parent.Ol_PID) .OrderBy(Outline._.Ol_Tax.Asc).ToFirst <Outline>(); if (topNext == null) { return(false); } //父级弟弟的子级 Song.Entities.Outline[] child = this.OutlineCount(couid, topNext.Ol_ID, null, -1); using (DbTrans tran = Gateway.Default.BeginTrans()) { try { current.Ol_Tax = 1; current.Ol_PID = topNext.Ol_ID; tran.Save <Outline>(current); //父级弟弟的子级的排序号重排 for (int i = 0; i < child.Length; i++) { tran.Update <Outline>(Outline._.Ol_Tax, i + 2, Outline._.Ol_ID == child[i].Ol_ID); } tran.Commit(); } catch { tran.Rollback(); throw; } finally { tran.Close(); } } } this.OnSave(null, EventArgs.Empty); return(true); }
protected override void InitPageTemplate(HttpContext context) { //如果没有登录则跳转 if (this.Account == null) { if (WeiSha.Common.Browser.IsMobile) { context.Response.Redirect("/Mobile/Login.ashx"); } else { context.Response.Redirect("/student/index.ashx"); } return; } //当前章节 Song.Entities.Outline ol = null; ol = id < 1 ? Business.Do <IOutline>().OutlineFirst(couid, true) : ol = Business.Do <IOutline>().OutlineSingle(id); this.Document.Variables.SetValue("outline", ol); if (ol == null) { return; } //入写章节id的cookie,当播放视频时会判断此处 Response.Cookies.Add(new HttpCookie("olid", ol.Ol_ID.ToString())); //自定义配置项 Song.Entities.Organization org = Business.Do <IOrganization>().OrganCurrent(); WeiSha.Common.CustomConfig config = CustomConfig.Load(org.Org_Config); //视频 List <Song.Entities.Accessory> videos = Business.Do <IAccessory>().GetAll(ol.Ol_UID, "CourseVideo"); if (videos.Count > 0) { if (videos[0].As_IsOuter) { //如果是外部链接 this.Document.Variables.SetValue("video", videos[0]); } else { //如果是内部链接 videos[0].As_FileName = Upload.Get[videos[0].As_Type].Virtual + videos[0].As_FileName; this.Document.Variables.SetValue("video", videos[0]); } this.Document.Variables.SetValue("vpath", Upload.Get["CourseVideo"].Virtual); this.Document.Variables.SetValue("IsVideoNoload", config["IsVideoNoload"].Value.Boolean ?? false); } //附件 List <Song.Entities.Accessory> access = Business.Do <IAccessory>().GetAll(ol.Ol_UID, "Course"); if (access.Count > 0) { foreach (Accessory ac in access) { ac.As_FileName = Upload.Get["Course"].Virtual + ac.As_FileName; } this.Document.Variables.SetValue("access", access); } //章节事件 OutlineEvent[] events = Business.Do <IOutline>().EventAll(-1, ol.Ol_ID, -1, true); this.Document.Variables.SetValue("events", events); this.Document.RegisterGlobalFunction(this.getEventQues); this.Document.RegisterGlobalFunction(this.getEventFeedback); this.Document.RegisterGlobalFunction(this.GetOrder); }
protected override void InitPageTemplate(HttpContext context) { //如果没有登录则跳转 if (this.Account == null) { context.Response.Redirect("/Mobile/Login.ashx"); } //当前课程 Song.Entities.Course currCourse = Business.Do <ICourse>().CourseSingle(couid); if (currCourse != null) { this.Document.SetValue("currCourse", currCourse); couid = currCourse.Cou_ID; this.Document.SetValue("couid", couid); //当前课程下的章节 Song.Entities.Outline[] outlines = Business.Do <IOutline>().OutlineAll(couid, true); foreach (Song.Entities.Outline c in outlines) { c.Ol_Intro = Extend.Html.ClearHTML(c.Ol_Intro); } this.Document.SetValue("outlines", outlines); DataTable dt = WeiSha.WebControl.Tree.ObjectArrayToDataTable.To(outlines); WeiSha.WebControl.Tree.DataTableTree tree = new WeiSha.WebControl.Tree.DataTableTree(); tree.IdKeyName = "OL_ID"; tree.ParentIdKeyName = "OL_PID"; tree.TaxKeyName = "Ol_Tax"; tree.Root = 0; dt = tree.BuilderTree(dt); this.Document.Variables.SetValue("dtOutlines", dt); } //当前章节 Song.Entities.Outline ol = null; ol = id < 1 ? Business.Do <IOutline>().OutlineFirst(couid, true) : ol = Business.Do <IOutline>().OutlineSingle(id); this.Document.Variables.SetValue("outline", ol); if (ol == null) { return; } //入写章节id的cookie,当播放视频时会判断此处 Response.Cookies.Add(new HttpCookie("olid", ol.Ol_ID.ToString())); //自定义配置项 Song.Entities.Organization org = Business.Do <IOrganization>().OrganCurrent(); WeiSha.Common.CustomConfig config = CustomConfig.Load(org.Org_Config); //视频 List <Song.Entities.Accessory> videos = Business.Do <IAccessory>().GetAll(ol.Ol_UID, "CourseVideo"); if (videos.Count > 0) { if (videos[0].As_IsOuter) { //如果是外部链接 this.Document.Variables.SetValue("video", videos[0]); } else { //如果是内部链接 videos[0].As_FileName = Upload.Get[videos[0].As_Type].Virtual + videos[0].As_FileName; this.Document.Variables.SetValue("video", videos[0]); } this.Document.Variables.SetValue("vpath", Upload.Get["CourseVideo"].Virtual); this.Document.Variables.SetValue("IsVideoNoload", config["IsVideoNoload"].Value.Boolean ?? false); } //附件 List <Song.Entities.Accessory> access = Business.Do <IAccessory>().GetAll(ol.Ol_UID, "Course"); if (access.Count > 0) { foreach (Accessory ac in access) { ac.As_FileName = Upload.Get["Course"].Virtual + ac.As_FileName; } this.Document.Variables.SetValue("access", access); } //章节事件 OutlineEvent[] events = Business.Do <IOutline>().EventAll(-1, ol.Ol_ID, -1, true); this.Document.Variables.SetValue("events", events); this.Document.RegisterGlobalFunction(this.getEventQues); this.Document.RegisterGlobalFunction(this.getEventFeedback); this.Document.RegisterGlobalFunction(this.GetOrder); }
protected override void InitPageTemplate(HttpContext context) { this.Document.SetValue("couid", couid); //当前课程 Song.Entities.Course course = Business.Do <ICourse>().CourseSingle(couid); if (course != null) { //是否免费,或是限时免费 if (course.Cou_IsLimitFree) { DateTime freeEnd = course.Cou_FreeEnd.AddDays(1).Date; if (!(course.Cou_FreeStart <= DateTime.Now && freeEnd >= DateTime.Now)) { course.Cou_IsLimitFree = false; } } this.Document.SetValue("course", course); //当前课程下的章节 Song.Entities.Outline[] outlines = Business.Do <IOutline>().OutlineAll(couid, true); foreach (Song.Entities.Outline c in outlines) { c.Ol_Intro = Extend.Html.ClearHTML(c.Ol_Intro); } this.Document.SetValue("outlines", outlines); if (outlines != null && outlines.Length > 0) { this.Document.Variables.SetValue("dtOutlines", Business.Do <IOutline>().OutlineTree(outlines)); } } //是否学习当前课程 int accid = 0; if (Extend.LoginState.Accounts.IsLogin) { accid = this.Account.Ac_ID; } bool isStudy = Business.Do <ICourse>().StudyIsCourse(accid, couid); this.Document.Variables.SetValue("isStudy", isStudy); //当前章节 Song.Entities.Outline ol = null; ol = olid < 1 ? Business.Do <IOutline>().OutlineFirst(couid, true) : ol = Business.Do <IOutline>().OutlineSingle(olid); if (ol == null) { return; } //是否可以学习,如果是免费或已经选修便可以学习,否则当前课程允许试用且当前章节是免费的,也可以学习 bool canStudy = isStudy || course.Cou_IsFree || course.Cou_IsLimitFree ? true : (course.Cou_IsTry && ol.Ol_IsFree); canStudy = canStudy && ol.Ol_IsUse && ol.Ol_IsFinish && this.Account != null; this.Document.Variables.SetValue("canStudy", canStudy); this.Document.Variables.SetValue("outline", ol); if (!canStudy) { return; } if (ol == null) { return; } //入写章节id的cookie,当播放视频时会判断此处 Response.Cookies.Add(new HttpCookie("olid", ol.Ol_ID.ToString())); //自定义配置项 Song.Entities.Organization org = Business.Do <IOrganization>().OrganCurrent(); WeiSha.Common.CustomConfig config = CustomConfig.Load(org.Org_Config); //视频 List <Song.Entities.Accessory> videos = Business.Do <IAccessory>().GetAll(ol.Ol_UID, "CourseVideo"); if (videos.Count > 0) { if (videos[0].As_IsOuter) { //如果是外部链接 this.Document.Variables.SetValue("video", videos[0]); } else { //如果是内部链接 videos[0].As_FileName = Upload.Get[videos[0].As_Type].Virtual + videos[0].As_FileName; this.Document.Variables.SetValue("video", videos[0]); } this.Document.Variables.SetValue("vpath", Upload.Get["CourseVideo"].Virtual); this.Document.Variables.SetValue("IsVideoNoload", config["IsVideoNoload"].Value.Boolean ?? false); } //附件 List <Song.Entities.Accessory> access = Business.Do <IAccessory>().GetAll(ol.Ol_UID, "Course"); if (access.Count > 0) { foreach (Accessory ac in access) { ac.As_FileName = Upload.Get["Course"].Virtual + ac.As_FileName; } this.Document.Variables.SetValue("access", access); } //章节事件 OutlineEvent[] events = Business.Do <IOutline>().EventAll(-1, ol.Ol_ID, -1, true); this.Document.Variables.SetValue("events", events); this.Document.RegisterGlobalFunction(this.getEventQues); this.Document.RegisterGlobalFunction(this.getEventFeedback); this.Document.RegisterGlobalFunction(this.GetOrder); }
/// <summary> /// 将某一行数据加入到数据库 /// </summary> /// <param name="dr"></param> /// <param name="dl"></param> private void _inputData(DataRow dr) { Song.Entities.Questions obj = new Song.Entities.Questions(); obj.Qus_IsUse = true; obj.Qus_Type = this.type; foreach (KeyValuePair <String, String> rel in ExcelInput1.DataRelation) { //Excel的列的值 string column = dr[rel.Key].ToString(); //数据库字段的名称 string field = rel.Value; if (field == "Qus_ID") { if (column == string.Empty || column.Trim() == "") { continue; } int ques = Convert.ToInt32(column); Song.Entities.Questions isHavObj = Business.Do <IQuestions>().QuesSingle(ques); if (isHavObj != null) { obj = isHavObj; } } //题干难度、专业、试题讲解 if (field == "Qus_Title") { if (string.IsNullOrEmpty(column) || column.Trim() == "") { return; } obj.Qus_Title = column; } if (field == "Qus_Diff") { obj.Qus_Diff = Convert.ToInt16(column); } if (field == "Sbj_Name") { Song.Entities.Subject subject = Business.Do <ISubject>().SubjectBatchAdd(org.Org_ID, column); if (subject != null) { obj.Sbj_Name = subject.Sbj_Name; obj.Sbj_ID = subject.Sbj_ID; } } if (field == "Cou_Name") { Song.Entities.Course course = Business.Do <ICourse>().CourseBatchAdd(org.Org_ID, obj.Sbj_ID, column); if (course != null) { obj.Cou_ID = course.Cou_ID; } } if (field == "Ol_Name") { Song.Entities.Outline outline = Business.Do <IOutline>().OutlineBatchAdd(org.Org_ID, obj.Sbj_ID, obj.Cou_ID, column); if (outline != null) { obj.Ol_ID = outline.Ol_ID; } } if (field == "Qus_Explain") { obj.Qus_Explain = column; } //唯一值 obj.Qus_UID = WeiSha.Common.Request.UniqueID(); } //再遍历一遍,取答案 int ansNum = 0; List <Song.Entities.QuesAnswer> ansItem = new List <QuesAnswer>(); foreach (KeyValuePair <String, String> rel in ExcelInput1.DataRelation) { //数据库字段的名称 string field = rel.Value; Match match = new Regex(@"(Ans_Context)(\d+)").Match(field); if (match.Success) { //Excel的列的值 string column = dr[rel.Key].ToString(); if (column == string.Empty || column.Trim() == "") { continue; } Song.Entities.QuesAnswer ans = new Song.Entities.QuesAnswer(); ans.Ans_Context = column; ans.Qus_UID = obj.Qus_UID; ansNum++; ansItem.Add(ans); } } obj.Qus_Title = tranTxt(obj.Qus_Title); int bracketsCount = new Regex(@"([^)]+)").Matches(obj.Qus_Title).Count; //判断是否有错 string error = ""; if (bracketsCount <= 0) { error = "试题中缺少填空项!(填空项用括号标识)"; } if (ansNum <= 0) { error = "缺少答案项"; } if (ansNum < bracketsCount) { error = string.Format("答案项少于填空项;填空项{0}个,答案{1}个", bracketsCount, ansNum); } // obj.Qus_IsError = error != ""; obj.Qus_ErrorInfo = error; if (obj.Sbj_ID == 0) { throw new Exception("当前试题所属专业并不存在"); } if (obj.Cou_ID == 0) { throw new Exception("当前试题所在课程并不存在"); } //if (obj.Ol_ID == 0) throw new Exception("当前试题所在章节并不存在"); if (org != null) { obj.Org_ID = org.Org_ID; } Business.Do <IQuestions>().QuesInput(obj, ansItem); }
/// <summary> /// 删除,按主键ID; /// </summary> /// <param name="identify">实体的主键</param> public void OutlineDelete(int identify) { Song.Entities.Outline ol = this.OutlineSingle(identify); this.OutlineDelete(ol); }
protected override void InitPageTemplate(HttpContext context) { //if (!Extend.LoginState.Accounts.IsLogin || this.Account==null) // context.Response.Redirect(WeiSha.Common.Login.Get["Accounts"].NoLoginPath.String); //自定义配置项 Song.Entities.Organization org = Business.Do <IOrganization>().OrganCurrent(); WeiSha.Common.CustomConfig config = CustomConfig.Load(org.Org_Config); // //取当前章节 ol = id < 1 ? Business.Do <IOutline>().OutlineFirst(couid, true) : ol = Business.Do <IOutline>().OutlineSingle(id); //当前课程 Song.Entities.Course course = Business.Do <ICourse>().CourseSingle(ol == null ? couid : ol.Cou_ID); if (course == null) { return; } #region 创建与学员的关联 if (this.Account != null) { int accid = this.Account.Ac_ID; bool istudy = Business.Do <ICourse>().Study(course.Cou_ID, accid); } #endregion #region 章节输出 //是否免费,或是限时免费 if (course.Cou_IsLimitFree) { DateTime freeEnd = course.Cou_FreeEnd.AddDays(1).Date; if (!(course.Cou_FreeStart <= DateTime.Now && freeEnd >= DateTime.Now)) { course.Cou_IsLimitFree = false; } } this.Document.Variables.SetValue("course", course); Extend.LoginState.Accounts.Course(course); if (ol == null) { return; } // couid = ol.Cou_ID; id = ol.Ol_ID; //入写章节id的cookie,当播放视频时会判断此处 Response.Cookies.Add(new HttpCookie("olid", id.ToString())); outlines = Business.Do <IOutline>().OutlineAll(ol.Cou_ID, true); //是否学习当前课程 if (course == null || this.Account == null) { isStudy = false; } else { isStudy = Business.Do <ICourse>().StudyIsCourse(this.Account.Ac_ID, course.Cou_ID); } this.Document.Variables.SetValue("isStudy", isStudy); //是否可以学习,如果是免费或已经选修便可以学习,否则当前课程允许试用且当前章节是免费的,也可以学习 bool canStudy = isStudy || course.Cou_IsFree || course.Cou_IsLimitFree ? true : (course.Cou_IsTry && ol.Ol_IsFree); canStudy = canStudy && ol.Ol_IsUse && ol.Ol_IsFinish && this.Account != null; this.Document.Variables.SetValue("canStudy", canStudy); //课程章节列表 this.Document.Variables.SetValue("outlines", outlines); //树形章节输出 if (outlines.Length > 0) { this.Document.Variables.SetValue("olTree", Business.Do <IOutline>().OutlineTree(outlines)); } this.Document.Variables.SetValue("outline", ol); #endregion //视频 List <Song.Entities.Accessory> videos = Business.Do <IAccessory>().GetAll(ol.Ol_UID, "CourseVideo"); if (videos.Count > 0) { if (videos[0].As_IsOuter) { //如果是外部链接 this.Document.Variables.SetValue("video", videos[0]); } else { //如果是内部链接 videos[0].As_FileName = Upload.Get[videos[0].As_Type].Virtual + videos[0].As_FileName; try { string fileHy = Server.MapPath(videos[0].As_FileName); if (!System.IO.File.Exists(fileHy)) { string ext = System.IO.Path.GetExtension(fileHy).ToLower(); if (ext == ".mp4") { videos[0].As_FileName = Path.ChangeExtension(videos[0].As_FileName, ".flv"); } if (ext == ".flv") { videos[0].As_FileName = Path.ChangeExtension(videos[0].As_FileName, ".mp4"); } } this.Document.Variables.SetValue("video", videos[0]); if (Extend.LoginState.Accounts.IsLogin) { Song.Entities.LogForStudentStudy studyLog = Business.Do <IStudent>().LogForStudySingle(this.Account.Ac_ID, ol.Ol_ID); if (studyLog != null) { this.Document.Variables.SetValue("studyLog", studyLog); double historyPlay = (double)studyLog.Lss_PlayTime / 1000; this.Document.Variables.SetValue("historyPlay", historyPlay); } } } catch { } } this.Document.Variables.SetValue("IsVideoNoload", config["IsVideoNoload"].Value.Boolean ?? false); state = state < 1 ? 1 : state; } //内容 if (!string.IsNullOrWhiteSpace(ol.Ol_Intro)) { state = state < 1 ? 2 : state; } //上级章节 if (ol != null) { Song.Entities.Outline pat = Business.Do <IOutline>().OutlineSingle(ol.Ol_PID); this.Document.Variables.SetValue("pat", pat); } //附件 List <Song.Entities.Accessory> access = Business.Do <IAccessory>().GetAll(ol.Ol_UID, "Course"); if (access.Count > 0) { foreach (Accessory ac in access) { ac.As_FileName = Upload.Get["Course"].Virtual + ac.As_FileName; } this.Document.Variables.SetValue("access", access); state = state < 1 ? 3 : state; } //当前章节是否有试题 if (canStudy) { bool isQues = Business.Do <IOutline>().OutlineIsQues(ol.Ol_ID, true); this.Document.Variables.SetValue("isQues", isQues); if (isQues) { state = state < 1 ? 4 : state; } } else { state = 0; } //章节事件 OutlineEvent[] events = Business.Do <IOutline>().EventAll(-1, ol.Ol_ID, -1, true); this.Document.Variables.SetValue("events", events); this.Document.RegisterGlobalFunction(this.getEventQues); this.Document.RegisterGlobalFunction(this.getEventFeedback); this.Document.RegisterGlobalFunction(this.GetOrder); //状态 this.Document.Variables.SetValue("state", state); this.Document.Variables.SetValue("olid", id); }
protected override void InitPageTemplate(HttpContext context) { //当前课程 Song.Entities.Course course = Business.Do <ICourse>().CourseSingle(couid); if (course == null || !course.Cou_IsUse) { return; } //是否免费,或是限时免费 if (course.Cou_IsLimitFree) { DateTime freeEnd = course.Cou_FreeEnd.AddDays(1).Date; if (!(course.Cou_FreeStart <= DateTime.Now && freeEnd >= DateTime.Now)) { course.Cou_IsLimitFree = false; } } this.Document.Variables.SetValue("course", course); //是否学习当前课程,如果没有学习且课程处于免费,则创建关联 if (this.Account != null) { isStudy = Business.Do <ICourse>().Study(course.Cou_ID, this.Account.Ac_ID); isBuy = course.Cou_IsFree || course.Cou_IsLimitFree ? true : Business.Do <ICourse>().IsBuy(course.Cou_ID, this.Account.Ac_ID); } this.Document.Variables.SetValue("isStudy", isStudy); this.Document.Variables.SetValue("isBuy", isBuy); //记录学员当前学习的课程 if (isStudy) { Extend.LoginState.Accounts.Course(course); } //当前章节 Song.Entities.Outline ol = olid < 1 ? Business.Do <IOutline>().OutlineFirst(couid, true) : Business.Do <IOutline>().OutlineSingle(olid); if (ol == null) { return; } this.Document.Variables.SetValue("outline", ol); this.Document.Variables.SetValue("olid", ol.Ol_ID.ToString()); //入写章节id的cookie,当播放视频时会判断此处 Response.Cookies.Add(new HttpCookie("olid", ol.Ol_ID.ToString())); //是否可以学习,如果是免费或已经选修便可以学习,否则当前课程允许试用且当前章节是免费的,也可以学习 bool canStudy = isBuy || (isStudy && ol.Ol_IsUse && ol.Ol_IsFinish && course.Cou_IsTry && ol.Ol_IsFree); this.Document.Variables.SetValue("canStudy", canStudy); #region 章节输出 // 当前课程的所有章节 Song.Entities.Outline[] outlines = Business.Do <IOutline>().OutlineAll(ol.Cou_ID, true); //课程章节列表 this.Document.Variables.SetValue("outlines", outlines); //树形章节输出 if (outlines.Length > 0) { this.Document.Variables.SetValue("olTree", Business.Do <IOutline>().OutlineTree(outlines)); } #endregion //视频 Song.Entities.Accessory video = Song.Site.CourseStudy.getVideo(ol.Ol_UID); this.Document.Variables.SetValue("video", video); if (Extend.LoginState.Accounts.IsLogin) { Song.Entities.LogForStudentStudy studyLog = Business.Do <IStudent>().LogForStudySingle(this.Account.Ac_ID, ol.Ol_ID); if (studyLog != null) { this.Document.Variables.SetValue("studyLog", studyLog); double historyPlay = (double)studyLog.Lss_PlayTime / 1000; this.Document.Variables.SetValue("historyPlay", historyPlay); } } //附件 List <Song.Entities.Accessory> access = Business.Do <IAccessory>().GetAll(ol.Ol_UID, "Course"); if (access.Count > 0) { foreach (Accessory ac in access) { ac.As_FileName = Upload.Get["Course"].Virtual + ac.As_FileName; } this.Document.Variables.SetValue("access", access); } }
/// <summary> /// 章节的状态 /// </summary> /// <param name="olid"></param> /// <returns></returns> public Dictionary <string, object> State(int olid) { Dictionary <string, object> dic = new Dictionary <string, object>(); Song.Entities.Accounts acc = Extend.LoginState.Accounts.CurrentUser; dic.Add("isLogin", acc != null); //学员是否登录 // Song.Entities.Outline outline = Business.Do <IOutline>().OutlineSingle(olid); if (outline == null) { throw new Exception("章节不存在"); } dic.Add("Name", outline.Ol_Name); Song.Entities.Course course = Business.Do <ICourse>().CourseSingle(outline.Cou_ID); if (course == null) { throw new Exception("课程不存在"); } dic.Add("Course", course.Cou_Name); Song.Entities.Organization orgin; //是否限制在桌面应用中打开 dic.Add("DeskAllow", this.getDeskallow(course, outline, out orgin)); //是否在切换浏览器时继续播放 dic.Add("SwitchPlay", this.getSwitchPlay(course, acc, orgin)); //是否免费,或是限时免费 if (course.Cou_IsLimitFree) { DateTime freeEnd = course.Cou_FreeEnd.AddDays(1).Date; if (!(course.Cou_FreeStart <= DateTime.Now && freeEnd >= DateTime.Now)) { course.Cou_IsLimitFree = false; } } //是否可以学习,是否购买 bool isStudy = false, isBuy = false, canStudy = false; if (acc != null) { isStudy = Business.Do <ICourse>().Study(course.Cou_ID, acc.Ac_ID); isBuy = course.Cou_IsFree || course.Cou_IsLimitFree ? true : Business.Do <ICourse>().IsBuy(course.Cou_ID, acc.Ac_ID); //学习记录 Song.Entities.LogForStudentStudy studyLog = Business.Do <IStudent>().LogForStudySingle(acc.Ac_ID, outline.Ol_ID); dic.Add("StudyTime", studyLog != null ? studyLog.Lss_StudyTime : 0); dic.Add("PlayTime", studyLog != null ? studyLog.Lss_PlayTime : 0); } dic.Add("isStudy", isStudy); dic.Add("isBuy", isBuy); //是否可以学习,如果是免费或已经选修便可以学习,否则当前课程允许试用且当前章节是免费的,也可以学习 canStudy = isBuy || (isStudy && outline.Ol_IsUse && outline.Ol_IsFinish && course.Cou_IsTry && outline.Ol_IsFree); dic.Add("canStudy", canStudy); //是否有知识库 int knlCount = Business.Do <IKnowledge>().KnowledgeOfCount(-1, course.Cou_ID, -1, true); dic.Add("isKnl", knlCount > 0 && canStudy); //是否有视频,是否为外链视频 List <Song.Entities.Accessory> videos = Business.Do <IAccessory>().GetAll(outline.Ol_UID, "CourseVideo"); bool existVideo = videos.Count > 0; dic.Add("outerVideo", existVideo && (videos.Count > 0 && videos[0].As_IsOuter)); //站外视频,包括其它网站的视频,或是视频播放链接 dic.Add("otherVideo", existVideo && (videos.Count > 0 && videos[0].As_IsOther)); //其它视频平台的链接 if (videos.Count > 0) { string videoUrl = existVideo ? videos[0].As_FileName : string.Empty; //视频地址 //如果是内部链接 if (existVideo && !videos[0].As_IsOuter) { videoUrl = Upload.Get[videos[0].As_Type].Virtual + videoUrl; string ext = System.IO.Path.GetExtension(videoUrl).ToLower(); if (ext == ".flv") { videoUrl = Path.ChangeExtension(videoUrl, ".mp4"); } } dic.Add("urlVideo", canStudy ? videoUrl : string.Empty); outline.Ol_IsLive = false; } //直播 bool isLive = outline.Ol_IsLive, isLiving = false; if (outline.Ol_IsLive) { string urlVideo = string.Empty; if (canStudy) { //查询直播状态 pili_sdk.pili.StreamStatus status = Pili.API <IStream>().Status(outline.Ol_LiveID); if (status != null) { pili_sdk.pili.Stream stream = status.Stream; string proto = Business.Do <ILive>().GetProtocol; //协议,http还是https urlVideo = string.Format("{0}://{1}/{2}/{3}.m3u8", proto, stream.LiveHlsHost, stream.HubName, stream.Title); isLiving = status.Status == "connected"; //正在直播 existVideo = isLiving ? false : existVideo; } } //直播播放地址 if (!dic.ContainsKey("urlVideo")) { dic.Add("urlVideo", urlVideo); } //直播开始或结束 dic.Add("LiveStart", DateTime.Now > outline.Ol_LiveTime); dic.Add("LiveOver", outline.Ol_LiveTime.AddMinutes(outline.Ol_LiveSpan) < DateTime.Now); } dic.Add("isLive", outline.Ol_IsLive); //是否为直播章节 dic.Add("isLiving", isLiving && canStudy); //是否在直播中 dic.Add("existVideo", existVideo && canStudy); //是否有课程内容 bool isContext = !string.IsNullOrWhiteSpace(outline.Ol_Intro); dic.Add("isContext", isContext && canStudy); //是否有试题 bool isQues = Business.Do <IOutline>().OutlineIsQues(outline.Ol_ID, true); dic.Add("isQues", isQues && canStudy); //是否有附件 int accessCount = Business.Do <IAccessory>().OfCount(outline.Ol_UID, "Course"); dic.Add("isAccess", accessCount > 0 && canStudy); //啥都没有(视频,内容,附件,试题,都没有) bool isNull = !(existVideo || isLive || isContext || isQues || isQues || accessCount > 0); dic.Add("isNull", isNull || !canStudy); return(dic); }
/// <summary> /// 将某一行数据加入到数据库 /// </summary> /// <param name="dr"></param> /// <param name="dl"></param> private void _inputData(DataRow dr) { Song.Entities.Questions obj = new Song.Entities.Questions(); obj.Qus_IsUse = true; obj.Qus_Type = this.type; //正确答案 string[] correct = null; //是否有答案 bool isHavAns = false; foreach (KeyValuePair <String, String> rel in ExcelInput1.DataRelation) { //Excel的列的值 string column = dr[rel.Key].ToString(); //数据库字段的名称 string field = rel.Value; if (field == "Qus_ID") { if (column == string.Empty || column.Trim() == "") { continue; } int ques = Convert.ToInt32(column); Song.Entities.Questions isHavObj = Business.Do <IQuestions>().QuesSingle(ques); if (isHavObj != null) { obj = isHavObj; } } //题干难度、专业、试题讲解 if (field == "Qus_Title") { if (column == string.Empty || column.Trim() == "") { return; } obj.Qus_Title = tranTxt(column); } if (field == "Qus_Diff") { obj.Qus_Diff = Convert.ToInt16(column); } if (field == "Sbj_Name") { Song.Entities.Subject subject = Business.Do <ISubject>().SubjectBatchAdd(org.Org_ID, column); if (subject != null) { obj.Sbj_Name = subject.Sbj_Name; obj.Sbj_ID = subject.Sbj_ID; } } if (field == "Cou_Name") { Song.Entities.Course course = Business.Do <ICourse>().CourseBatchAdd(org.Org_ID, obj.Sbj_ID, column); if (course != null) { obj.Cou_ID = course.Cou_ID; } } if (field == "Ol_Name") { Song.Entities.Outline outline = Business.Do <IOutline>().OutlineBatchAdd(org.Org_ID, obj.Sbj_ID, obj.Cou_ID, column); if (outline != null) { obj.Ol_ID = outline.Ol_ID; } } if (field == "Qus_Explain") { obj.Qus_Explain = column; } //唯一值,正确答案,类型 obj.Qus_UID = WeiSha.Common.Request.UniqueID(); if (field == "Ans_IsCorrect") { column = Regex.Replace(column, @"[^1-9]", ","); correct = column.Split(','); } } //再遍历一遍,取答案 List <Song.Entities.QuesAnswer> ansItem = new List <QuesAnswer>(); foreach (KeyValuePair <String, String> rel in ExcelInput1.DataRelation) { //数据库字段的名称 string field = rel.Value; Match match = new Regex(@"(Ans_Context)(\d+)").Match(field); if (match.Success) { //Excel的列的值 string column = dr[rel.Key].ToString(); if (column == string.Empty || column.Trim() == "") { continue; } int index = Convert.ToInt16(match.Groups[2].Value); Song.Entities.QuesAnswer ans = new Song.Entities.QuesAnswer(); ans.Ans_Context = column; foreach (string s in correct) { if (s == string.Empty || s.Trim() == "") { continue; } if (index == Convert.ToInt32(s)) { ans.Ans_IsCorrect = true; isHavAns = true; break; } } ans.Qus_UID = obj.Qus_UID; ansItem.Add(ans); } } if (!isHavAns) { obj.Qus_IsError = true; } //判断是否有错 string error = ""; if (ansItem.Count < 1) { error = "缺少答案选项"; } if (!isHavAns) { error = "没有设置正确答案"; } obj.Qus_IsError = error != ""; obj.Qus_ErrorInfo = error; if (obj.Sbj_ID == 0) { throw new Exception("当前试题所属专业并不存在"); } if (obj.Cou_ID == 0) { throw new Exception("当前试题所在课程并不存在"); } //if (obj.Ol_ID == 0) throw new Exception("当前试题所在章节并不存在"); if (org != null) { obj.Org_ID = org.Org_ID; } Business.Do <IQuestions>().QuesInput(obj, ansItem); }