using NP.Model; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Web.Mvc; namespace NP.FO.Controllers { /// /// 강의실 컨트롤러 /// public class CRoomController : CRoomBaseController { /// /// 강의실 컨트롤러 메서드가 실행전 호출됨 /// /// protected override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); ViewBag.Files = new VMBase().Files; } /// /// 강의실 > 홈 /// /// public ActionResult Index() { ViewBag.fronturl = $"https://{Request.Url.Host}"; string bmnos = null; #region + vm.Lect = cr.main.mygrade var p5 = new Hashtable() { { "lectno", vm.croomlectno }, { "cmno", vm.croomcmno }, { "userno", SUserInfo.UserNo } }; vm.Lect = Dao.Get("cr.main.mygrade", p5).FirstOrDefault(); #endregion if (vm.Lect == null) { return Redirect("/My/Lecture"); } #region + ViewBag.Mobile = users.users var p6 = new Hashtable() { { "userno", SUserInfo.UserNo } }; ViewBag.Mobile = Dao.Get("users.users", p6).FirstOrDefault().mobile; #endregion if (!string.IsNullOrEmpty(ViewBag.mainboardmaster)) { foreach (var s in ViewBag.mainboardmaster.Split(';')) { bmnos += "," + s.Split(':')[0]; } } #region + var pplogGet = lect.pplog.get var p2 = new Hashtable() { { "userno", SUserInfo.UserNo }, { "lectno", vm.Lect.lectno } }; var pplogGet = Dao.Get("lect.pplog.get", p2).FirstOrDefault(); vm.Lect.zstring1 = pplogGet.zstring1; vm.Lect.zstring2 = pplogGet.zstring2; vm.Lect.zstring3 = pplogGet.zstring3; vm.Lect.zstring4 = pplogGet.zstring4; vm.Lect.zstring5 = pplogGet.zstring5; #endregion #region + vm.Datas = cr.main.boardalarm var p3 = new Hashtable() { { "bmnos", !string.IsNullOrEmpty(bmnos) ? bmnos.Substring(1) : bmnos }, { "lect", vm.croomlectno }, { "cmno", vm.croomcmno }, { "lectno", vm.croomlectno }, { "userno", SUserInfo.UserNo } }; vm.Datas = Dao.Get("cr.main.boardalarm", p3); #endregion #region + vm.LectInnings = cr.cminnings var p1 = new Hashtable(); p1.Add("lectno", vm.croomlectno); p1.Add("userno", SUserInfo.UserNo); // 진도율 100% 이하일떄 6개 제한을 둠 if (vm.Lect.attrate < 100) { p1.Add("limit", 6); } // 진도율이 100% 이하 또는 디버깅용 로컬일때가 아니면 // "오늘 시청 가능한 limit 개 차시 중" 이 위에 limit 만큼 보여짐 if (vm.Lect.attrate < 100) { p1.Add("notstudy", 1); } vm.LectInnings = Dao.Get("cr.cminnings", p1); #endregion vm.intval2 = Convert.ToInt32(GetConfig("inninglimit") ?? "10"); foreach (var lectInning in vm.LectInnings) { lectInning.daylectinninglimit = vm.intval2; } if (vm.LectInnings.Count() > 0) { #region + vm.intval = cr.lectinnings var p7 = new Hashtable() { { "userno", SUserInfo.UserNo }, { "isfinishtoday", 1 } }; vm.intval = Dao.Get("cr.lectinnings", p7).Count(); #endregion } return CView(); } /// /// 강의실 > 강좌소개 /// /// public ActionResult Plan() { var p = new Hashtable(); #region + vm.CM = cm.cm p = new Hashtable() { { "cmno", vm.croomcmno }, { "htmlcolumns", ",a.introhtml,a.targethtml,a.goalhtml,a.contenthtml,a.studyplace,cc.cname studyplacename" } }; vm.CM = Dao.Get("cm.cm", p).First(); #endregion #region + vm.CMPRs = cm.cmprs p.Clear(); p = new Hashtable() { { "cmno", vm.CM.cmno }, { "usertype", 11 } }; vm.CMPRs = Dao.Get("cm.cmprs", p); #endregion #region + vm.CMEV = cm.cmev p.Clear(); p = new Hashtable() { { "cmno", vm.CM.cmno } }; vm.CMEV = Dao.Get("cm.cmev", p).First(); #endregion #region + vm.intval = lect.lects.my p.Clear(); p = new Hashtable() { { "lectno", vm.croomlectno } }; vm.intval = Dao.Get("lect.lects.my", p).First().isrebate; #endregion return CView(); } /// /// 강의실 > 동영상시청 /// /// public ActionResult Innings() { #region + vm.LectInnings = cr.cminnings var p = new Hashtable() { { "lectno", vm.croomlectno }, { "userno", SUserInfo.UserNo } }; vm.LectInnings = Dao.Get("cr.cminnings", p); #endregion vm.intval2 = Convert.ToInt32(GetConfig("inninglimit") ?? "10"); foreach (var lectInning in vm.LectInnings) { lectInning.daylectinninglimit = vm.intval2; } #region + ViewBag.Mobile = users.users var p2 = new Hashtable() { { "userno", SUserInfo.UserNo } }; ViewBag.Mobile = Dao.Get("users.users", p2).FirstOrDefault().mobile; #endregion if (!string.IsNullOrEmpty(vm.LectInnings.FirstOrDefault().existslectinning) && vm.LectInnings.Count() > 0) { #region + vm.intval = cr.lectinnings var p3 = new Hashtable() { { "userno", SUserInfo.UserNo }, { "isfinishtoday", 1 } }; vm.intval = Dao.Get("cr.lectinnings", p3).Count(); #endregion } #region + vm.CMRSes = cr.mycmrs var p4 = new Hashtable() { { "lectno", vm.croomlectno }, { "userno", SUserInfo.UserNo } }; vm.CMRSes = Dao.Get("cr.mycmrs", p4); #endregion return CView(); } /// /// 강의실 > 설문참여 /// /// public ActionResult Research() { #region + vm.CMRSes = cr.mycmrs var p = new Hashtable() { { "lectno", vm.croomlectno }, { "userno", SUserInfo.UserNo } }; vm.CMRSes = Dao.Get("cr.mycmrs", p); #endregion #region + lect = cr.checklectdate var p2 = new Hashtable() { { "lectno", vm.croomlectno } }; Lect lect = Dao.Get("cr.checklectdate", p2).First(); #endregion ViewBag.isres = DateTime.Now <= lect.edate ? 1 : -1; return CView(); } /// /// 강의실 > 성적확인 /// /// public ActionResult Grade() { #region + vm.Lect = cr.main.mygrade var p = new Hashtable() { { "lectno", vm.croomlectno }, { "cmno", vm.croomcmno }, { "userno", SUserInfo.UserNo } }; vm.Lect = Dao.Get("cr.main.mygrade", p).FirstOrDefault(); #endregion return CView(); } /// /// 강의실 > 게시판 (croombmno 1:수료절차안내, 2:Q&A ...) /// /// /// public ActionResult Boards(VMCRoom cvm) { ViewBag.croombmno = cvm.croombmno.ToString(); #region + cvm.BM = board.bms var p = new Hashtable() { { "bmno", cvm.croombmno } }; cvm.BM = Dao.Get("board.bms", p).First(); #endregion if (cvm.BM.isuseopening == 1) { #region + cvm.BMOs = board.bmos cvm.BMOs = Dao.Get("board.bmos", cvm.BM.bmno); #endregion } cvm.pagerowcount = cvm.pagerowcount < 1 ? 10 : cvm.pagerowcount; #region + cvm.Boards = board.bs var ht = SetHash(cvm); ht.Add("bmno", cvm.BM.bmno); ht.Add("isopen", 1); ht.Add("opno", cvm.opno); ht.Add("getcontents", 1); ht.Add("scc", cvm.scc); ht.Add("cmno", cvm.croomcmno < 1 ? base.vm.croomcmno : cvm.croomcmno); cvm.Boards = Dao.Get("board.bs", ht); #endregion cvm.pagetotalcount = GetCount(cvm.Boards.FirstOrDefault()); cvm.pageviewcount = cvm.Boards.Count(); return CView(cvm); } public ActionResult BoardView(VMCRoom cvm) { ViewBag.croombmno = cvm.croombmno.ToString(); if (SUserInfo.UserNo < 1) { return Redirect("/Account/Index"); } #region + cvm.Board = board.bs var p = new Hashtable() { { "bno", cvm.BNo }, { "getcontents", 1 } }; cvm.Board = Dao.Get("board.bs", p).First(); #endregion if (cvm.Board.issecr == 1 && !(cvm.Board.cno == SUserInfo.UserNo || cvm.Board.pcno == SUserInfo.UserNo)) { return Redirect("/"); } if (cvm.Board.cno != SUserInfo.UserNo) { #region + board.bd.read Dao.Save("board.bd.read", cvm.BNo); #endregion } cvm.FileList = new List() { }; if (cvm.Board.fgno != null) { cvm.FileList = GetFiles(cvm.Board.fgno.Value); } if (cvm.Board.isreply == 1) { #region + cvm.BoardCMTs = board.boardcmts cvm.BoardCMTs = Dao.Get("board.boardcmts", cvm.Board.bno); #endregion } return CView(cvm); } public ActionResult BoardReg(VMCRoom vm) { ViewBag.croombmno = vm.croombmno.ToString(); if (SUserInfo.UserNo < 1) { return Redirect($"/Account/Index?ru={Request.Url.PathAndQuery}"); } vm.BMOs = new List() { }; vm.Board = new Board() { pbno = vm.PBNo }; if (vm.BNo > 0) { #region + vm.Board = board.bs var p = new Hashtable() { { "bno", vm.BNo }, { "getcontents", 1 } }; vm.Board = Dao.Get("board.bs", p).First(); #endregion if (vm.Board.isuseopening == 1) { #region + vm.BMOs = board.bmos vm.BMOs = Dao.Get("board.bmos", vm.Board.bmno); #endregion } } else { if ((vm.PBNo ?? 0) > 0) { #region + vm.Board.psubject = "board.bs" var p = new Hashtable() { { "bno", vm.PBNo } }; vm.Board.psubject = Dao.Get("board.bs", p).First().subject; #endregion } #region + vm.BM = board.bms var p2 = new Hashtable() { { "bmno", vm.croombmno } }; vm.BM = Dao.Get("board.bms", p2).First(); #endregion vm.Board.isreply = vm.BM.isreply; vm.Board.isuseopening = vm.BM.isuseopening; vm.Board.bmno = vm.BM.bmno; if (vm.BM.isuseopening == 1) { #region + vm.BMOs = board.bmos vm.BMOs = Dao.Get("board.bmos", vm.BM.bmno); #endregion } } if (vm.Board.issecr == 1 && vm.Board.cno != SUserInfo.UserNo) { return Redirect("/"); } vm.FileList = new List() { }; if (vm.Board.fgno != null) { vm.FileList = GetFiles(vm.Board.fgno.Value); } if (vm.Board.isreply == 1 && vm.Board.bno > 0) { #region + vm.BoardCMTs = board.boardcmts vm.BoardCMTs = Dao.Get("board.boardcmts", vm.Board.bno); #endregion } return CView(vm); } /// /// 강의실 > 시험응시/과제제출 /// /// /// public ActionResult Estimation(VMCRoom vm) { #region + vm.Datas = cr.myestimation var p1 = new Hashtable() { { "lectno", vm.croomlectno }, { "userno", SUserInfo.UserNo }, { "exam"+(vm.tabidx == 0 || vm.tabidx == 1 ? "" : "x"), 1 }, { "subject"+(vm.tabidx == 0 || vm.tabidx == 2 ? "" : "x"), 1 }, { "discuss"+(vm.tabidx == 0 || vm.tabidx == 3 ? "" : "x"), 1 } }; vm.Datas = Dao.Get("cr.myestimation", p1); #endregion // true일때 lms에서 시험내용으로 진입 가능 #region + var lectCheck = cr.myExCheck ViewBag.exCheck = true; var p2 = new Hashtable() { { "lectno", vm.croomlectno }, { "userno", SUserInfo.UserNo } }; var lectCheck = Dao.Get("cr.myExCheck", p2); #endregion ViewBag.exCheck = lectCheck.Count > 0 ? true : false; return CView(vm); } /// /// 강의실 > 시험응시 /과제제출 > 시험응시 페이지 /// /// /// public ActionResult EstimationExam(VMCRoom vm) { string ua = (Request?.UserAgent ?? "").ToLower(); ViewBag.IsPortalAppBrowser = ua.Contains("daumapp") || ua.Contains("naver"); #region + vm.LectEX = cr.lectex var p = new Hashtable() { { "lectno", vm.croomlectno }, { "userno", SUserInfo.UserNo }, { "exno", vm.estno } }; vm.LectEX = Dao.Get("cr.lectex", p).First(); #endregion return CView(vm); } public ActionResult Exam(VMCRoom vm) { #region + vm.UserExamDatas = cr.userexamdata.start var p = new Hashtable() { { "lectno", vm.croomlectno}, { "exno", vm.estno }, { "userno", SUserInfo.UserNo }, { "uip", GetUserIP() }, {"uno", SUserInfo.UserNo } }; vm.UserExamDatas = Dao.Get("cr.userexamdata.start", p); #endregion vm.QuestionItems = new List(); if (vm.UserExamDatas.Count() > 0 && vm.UserExamDatas.Where(w => w.atype == 0).Count() > 0) { #region + vm.QuestionItems = cr.userexamquestionitem.get var p2 = new Hashtable() { { "orderby", vm.UserExamDatas.First().israndqi == 1 ? "a.qno, rand()" : "a.qno, a.qino" }, { "qnos", string.Join(",", vm.UserExamDatas.Where(w => w.atype == 0).ToList().Select(s => s.qno)) } }; vm.QuestionItems = Dao.Get("cr.userexamquestionitem.get", p2); #endregion } return CView(vm); } public ActionResult ExamRecord(VMCRoom vm) { #region + vm.LectEX = lect.lectex.result var p = new Hashtable() { { "lectno", vm.croomlectno }, { "exno", vm.estno }, { "userno", SUserInfo.UserNo } }; vm.LectEX = Dao.Get("lect.lectex.result", p).First(); #endregion #region + vm.UserExamDatas = lect.lectexq.result p.Clear(); p = new Hashtable() { { "lectno", vm.croomlectno }, { "exno", vm.estno }, { "userno", SUserInfo.UserNo } }; vm.UserExamDatas = Dao.Get("lect.lectexq.result", p); #endregion #region + vm.QuestionItems = lect.lectexqqi.list vm.QuestionItems = Dao.Get("lect.lectexqqi.list", string.Join(",", vm.UserExamDatas.Select(s => s.qno))); #endregion #region + vm.EQs = lect.lectexresult.rightrate (정답비율) vm.EQs = Dao.Get("lect.lectexresult.rightrate", string.Join(",", vm.UserExamDatas.Select(s => s.eqno))); #endregion #region + vm.EQs2 = lect.lectexresult.selectrate (선택비율) p.Clear(); p = new Hashtable() { { "lectno", vm.croomlectno }, { "exno", vm.estno }, { "userno", SUserInfo.UserNo } }; vm.EQs2 = Dao.Get("lect.lectexresult.selectrate", p); #endregion return CView(vm); } /// /// 강의실 > 시험응시/과제제출 > 과제제출 안내 (제출폼) /// /// /// public ActionResult EstimationSubject(VMCRoom vm) { vm.FileList = new List() { }; #region + vm.LectSD = cr.lectsd var p = new Hashtable() { { "lectno", vm.croomlectno }, { "userno", SUserInfo.UserNo }, { "sdno", vm.estno } }; vm.LectSD = Dao.Get("cr.lectsd", p).First(); #endregion string fgnos = ""; if (vm.LectSD.sdfgno != null) { fgnos = "," + vm.LectSD.sdfgno.Value.ToString(); } if (vm.LectSD.fgno != null) { fgnos += "," + vm.LectSD.fgno.Value.ToString(); } if (fgnos != "") { vm.FileList = GetFiles(fgnos.Substring(1)); } return CView(vm); } public ActionResult EstimationDiscuss(VMCRoom vm) { vm.FileList = new List() { }; #region + vm.LectSD = cr.lectsd2 var p = new Hashtable() { { "lectno", vm.croomlectno }, { "userno", SUserInfo.UserNo }, { "sdno", vm.estno } }; vm.LectSD = Dao.Get("cr.lectsd2", p).First(); #endregion if (vm.LectSD.sdfgno != null) { vm.FileList = GetFiles(vm.LectSD.sdfgno.Value); } #region + vm.LectSDBoards = cr.lectsdboards vm.LectSDBoards = Dao.Get("cr.lectsdboards", vm.LectSD.sdno); #endregion return CView(vm); } public ActionResult DiscussReg(VMCRoom vm) { vm.FileList = new List() { }; #region + vm.LectSD = cr.lectsd2 var p = new Hashtable() { { "lectno", vm.croomlectno }, { "userno", SUserInfo.UserNo }, { "sdno", vm.estno } }; vm.LectSD = Dao.Get("cr.lectsd2", p).First(); #endregion vm.LectSDBoard = new LectSDBoard() { }; if (vm.BNo > 0) { vm.BNo = vm.LectSD.bno > 0 ? vm.LectSD.bno : vm.BNo; #region + vm.LectSDBoard = cr.lectsdboard p.Clear(); p = new Hashtable() { { "bno", vm.BNo }, { "userno", SUserInfo.UserNo } }; vm.LectSDBoard = Dao.Get("cr.lectsdboard", p).First(); #endregion if (vm.LectSDBoard.cno != SUserInfo.UserNo) { return RedirectToAction("/CRoom/Esitimation?" + base.vm.croomparam); } if (vm.LectSDBoard.fgno != null) { vm.FileList = GetFiles(vm.LectSDBoard.fgno.Value); } } return CView(vm); } public ActionResult DiscussView(VMCRoom vm) { vm.FileList = new List() { }; #region + vm.LectSDBoard = cr.lectsdboard var p = new Hashtable() { { "bno", vm.BNo }, { "userno", SUserInfo.UserNo } }; vm.LectSDBoard = Dao.Get("cr.lectsdboard", p).First(); #endregion if (vm.LectSDBoard.fgno != null) { vm.FileList = GetFiles(vm.LectSDBoard.fgno.Value); } #region + vm.BoardCMTs = cr.lectsdboardcmt vm.BoardCMTs = Dao.Get("cr.lectsdboardcmt", vm.LectSDBoard.bno); #endregion return CView(vm); } } }