using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using Bowin.Common.Linq.Entity; using EMISOnline.ViewModel.SystemView; using EMISOnline.DataLogic.SystemDAL; using EMISOnline.Entities; using EMISOnline.DataLogic.Student; using EMISOnline.CommonLogic.StudentServices; using Bowin.Web.Controls.Mvc; using Bowin.Common.Linq; using EMISOnline.ViewModel; namespace EMISOnline.CommonLogic.SchoolyearServices { public class CoursematerialServices : BaseServices, ICoursematerialServices { public CoursematerialDAL CoursematerialDAL { get; set; } public IList GetStudentCoursematerialList(Guid UserID, Guid SchoolyearID) { Expression> exp = (x => x.UserID == UserID && x.SchoolyearID == SchoolyearID); List list = CoursematerialDAL.GetSutdentCoursematerial(exp).ToList(); return list; } public V_StudentEducationMissionClass GetEducationMissionClass(Guid EducationMissionClassID) { Expression> exp = (x => x.EducationMissionClassID == EducationMissionClassID); return CoursematerialDAL.GetSutdentCoursematerial(exp).FirstOrDefault(); } public List GetCourseChapterTree(Guid CoursematerialID) { List list = CoursematerialDAL.GetCourseChapterByCoursematerialID(CoursematerialID); return CreateCourseChapterTree(list,null); } public List CreateCourseChapterTree(List list, Guid? ParentId) { List rtn = new List(); List childs = list.Where(w => w.ParentCourseChapterID == ParentId).ToList(); foreach (EM_CourseChapter e in childs) { TreeItem item = new TreeItem(); item.id = e.CourseChapterID.ToString(); item.text = e.Name; item.attributes = null; //查找视频信息 var query = from a in CoursematerialDAL.GetCourseVideo(e.CourseChapterID) where e.VideoTypeID == (int)EM_OnlineVideoType.Local select new TreeItem { id = a.CourseVideoID.ToString(), text = a.Name, attributes = new { VideoTypeID = (int)EM_OnlineVideoType.Local, a.PlayUrl } }; var videoInfoList = query.ToList(); if (e.VideoTypeID == (int)EM_OnlineVideoType.Outer) { videoInfoList.Add(new TreeItem { id = Guid.NewGuid().ToString(), text = e.Name, attributes = new { VideoTypeID = (int)EM_OnlineVideoType.Outer, PlayUrl = e.OuterVideoUrl } }); } //var childrenList = videoInfoList.Concat(CreateCourseChapterTree(list, e.CourseChapterID)).ToList(); if(e.ParentCourseChapterID==null) { List childList = list.Where(w => w.ParentCourseChapterID == e.CourseChapterID).ToList(); foreach (EM_CourseChapter c in childList) { //查找视频信息 var childQuery = from a in CoursematerialDAL.GetCourseVideo(c.CourseChapterID) where c.VideoTypeID == (int)EM_OnlineVideoType.Local select new TreeItem { id = a.CourseVideoID.ToString(), text = a.Name, attributes = new { VideoTypeID = (int)EM_OnlineVideoType.Local, a.PlayUrl } }; var childVideoInfoList = childQuery.ToList(); if (c.VideoTypeID == (int)EM_OnlineVideoType.Outer) { childVideoInfoList.Add(new TreeItem { id = Guid.NewGuid().ToString(), text = c.Name, attributes = new { VideoTypeID = (int)EM_OnlineVideoType.Outer, PlayUrl = c.OuterVideoUrl } }); } var childrensList = childVideoInfoList.ToList(); item.children = childVideoInfoList; } } rtn.Add(item); } return rtn; } public EM_CourseStudyStatus GetCourseStudyStatusByUser(Guid CoursematerialID,Guid UserID) { Expression> exp = (x => x.UserID == UserID); exp = exp.And(x => x.CoursematerialID == CoursematerialID); EM_CourseStudyStatus css = CoursematerialDAL.CourseStudyStatusRepository.GetList(exp).FirstOrDefault(); if (css == null) { css = new EM_CourseStudyStatus(); css.CourseStudyStatusID = Guid.NewGuid(); css.CoursematerialID = CoursematerialID; css.UserID = UserID; css.LastVideoTypeID = (int)EM_OnlineVideoType.Local; css.ContinuousTime = 0; css.LastCourseVideoLength = 0; css.LastOuterVideoUrl = ""; UnitOfWork.Add(css); UnitOfWork.Commit(); } return css; } public void SaveCourseStudyStatusByUser(EM_CourseStudyStatus cstatus) { EM_CourseStudyStatus css = GetCourseStudyStatusByUser(cstatus.CoursematerialID.Value, cstatus.UserID); css.ContinuousTime = cstatus.ContinuousTime; css.LastCourseVideoID = cstatus.LastCourseVideoID; css.LastCourseVideoLength = cstatus.LastCourseVideoLength; UnitOfWork.Update(css); UnitOfWork.Commit(); } public EM_CourseVideo GetCourseVideo(Guid CourseVideoID) { return CoursematerialDAL.CourseVideoRepository.GetList(w => w.CourseVideoID == CourseVideoID).FirstOrDefault(); } public EM_CourseVideo GetFirstCourseVideo(Guid CoursematerialID) { return CoursematerialDAL.GetCourseVideoByCoursematerialID(CoursematerialID).FirstOrDefault(); } public EM_CourseChapter GetOutPlayUrl(Guid CoursematerialID) { return CoursematerialDAL.CourseChapterRepository.GetList(x => x.CoursematerialID == CoursematerialID).FirstOrDefault(); } public ER_ScoreRule getScoreRule() { return CoursematerialDAL.GetScoreRule(); } } }