Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        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;
            }
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
 /// <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);
     }
 }
Exemplo n.º 8
0
        ///// <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));
        }
Exemplo n.º 9
0
        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;
        }
Exemplo n.º 10
0
 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();
 }
Exemplo n.º 12
0
        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;
            }
        }
Exemplo n.º 13
0
        /// <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);
        }
Exemplo n.º 14
0
        /// <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);
        }
Exemplo n.º 15
0
        /// <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);
            }
        }
Exemplo n.º 16
0
 /// <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);
     }
 }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 18
0
        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);
            }
        }
Exemplo n.º 19
0
        /// <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);
            }
        }
Exemplo n.º 20
0
 /// <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);
 }
Exemplo n.º 21
0
        /// <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);
        }
Exemplo n.º 22
0
        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);
        }
Exemplo n.º 24
0
        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);
        }
Exemplo n.º 25
0
        /// <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);
        }
Exemplo n.º 26
0
 /// <summary>
 /// 删除,按主键ID;
 /// </summary>
 /// <param name="identify">实体的主键</param>
 public void OutlineDelete(int identify)
 {
     Song.Entities.Outline ol = this.OutlineSingle(identify);
     this.OutlineDelete(ol);
 }
Exemplo n.º 27
0
        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);
        }
Exemplo n.º 28
0
        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);
            }
        }
Exemplo n.º 29
0
        /// <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);
        }