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)
{
string sqlId = "";
#region + 시험응시 집체교육이 선택된게 있는지 확인
var p3 = new Hashtable()
{
{ "lectno", vm.croomlectno },
{ "userno", SUserInfo.UserNo }
};
//시험일정이 있는지 체크
var scd_cmisno = Dao.Get("cr.myestimation.excnt", p3);
if ((int)scd_cmisno.FirstOrDefault() > 0) {
sqlId = "cr.myestimation.ex";
} else {
sqlId = "cr.myestimation";
}
#endregion
#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(sqlId, 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);
}
}
}