YNICTE/FO/Controllers/CRoomController.cs

739 lines
24 KiB
C#
Raw Permalink Normal View History

using NP.Model;
using System;
using System.Collections;
2020-10-12 14:39:23 +09:00
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
namespace NP.FO.Controllers
{
/// <summary>
/// 강의실 컨트롤러
/// </summary>
2020-10-12 14:39:23 +09:00
public class CRoomController : CRoomBaseController
{
/// <summary>
/// 강의실 컨트롤러 메서드가 실행전 호출됨
/// </summary>
/// <param name="filterContext"></param>
2020-10-12 14:39:23 +09:00
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
ViewBag.Files = new VMBase().Files;
2020-10-12 14:39:23 +09:00
}
/// <summary>
/// 강의실 > 홈
/// </summary>
/// <returns></returns>
2020-10-12 14:39:23 +09:00
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<Lect>("cr.main.mygrade", p5).FirstOrDefault();
#endregion
2020-10-12 14:39:23 +09:00
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.users", p6).FirstOrDefault().mobile;
#endregion
2020-10-12 14:39:23 +09:00
if (!string.IsNullOrEmpty(ViewBag.mainboardmaster))
{
foreach (var s in ViewBag.mainboardmaster.Split(';'))
2020-10-12 14:39:23 +09:00
{
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>("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<Data>("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<LectInning>("cr.cminnings", p1);
#endregion
vm.intval2 = Convert.ToInt32(GetConfig("inninglimit") ?? "10");
foreach (var lectInning in vm.LectInnings)
{
2021-09-03 16:15:35 +09:00
lectInning.daylectinninglimit = vm.intval2;
}
if (vm.LectInnings.Count() > 0)
2020-10-12 14:39:23 +09:00
{
#region + vm.intval = cr.lectinnings
var p7 = new Hashtable()
{
{ "userno", SUserInfo.UserNo },
{ "isfinishtoday", 1 }
};
vm.intval = Dao.Get<LectInning>("cr.lectinnings", p7).Count();
#endregion
2020-10-12 14:39:23 +09:00
}
2020-10-12 14:39:23 +09:00
return CView();
}
/// <summary>
/// 강의실 > 강좌소개
/// </summary>
/// <returns></returns>
2020-10-12 14:39:23 +09:00
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.cm", p).First();
#endregion
#region + vm.CMPRs = cm.cmprs
p.Clear();
p = new Hashtable()
{
{ "cmno", vm.CM.cmno },
{ "usertype", 11 }
};
vm.CMPRs = Dao.Get<CMPR>("cm.cmprs", p);
#endregion
#region + vm.CMEV = cm.cmev
p.Clear();
p = new Hashtable()
{
{ "cmno", vm.CM.cmno }
};
vm.CMEV = Dao.Get<CMEV>("cm.cmev", p).First();
#endregion
#region + vm.intval = lect.lects.my
p.Clear();
p = new Hashtable()
{
{ "lectno", vm.croomlectno }
};
vm.intval = Dao.Get<Lect>("lect.lects.my", p).First().isrebate;
#endregion
2020-10-12 14:39:23 +09:00
return CView();
}
/// <summary>
/// 강의실 > 동영상시청
/// </summary>
/// <returns></returns>
2020-10-12 14:39:23 +09:00
public ActionResult Innings()
{
#region + vm.LectInnings = cr.cminnings
var p = new Hashtable()
{
{ "lectno", vm.croomlectno },
{ "userno", SUserInfo.UserNo }
};
vm.LectInnings = Dao.Get<LectInning>("cr.cminnings", p);
#endregion
vm.intval2 = Convert.ToInt32(GetConfig("inninglimit") ?? "10");
foreach (var lectInning in vm.LectInnings)
{
2021-09-03 16:15:35 +09:00
lectInning.daylectinninglimit = vm.intval2;
}
#region + ViewBag.Mobile = users.users
var p2 = new Hashtable()
{
{ "userno", SUserInfo.UserNo }
};
ViewBag.Mobile = Dao.Get<Users>("users.users", p2).FirstOrDefault().mobile;
#endregion
if (!string.IsNullOrEmpty(vm.LectInnings.FirstOrDefault().existslectinning) && vm.LectInnings.Count() > 0)
2020-10-12 14:39:23 +09:00
{
#region + vm.intval = cr.lectinnings
var p3 = new Hashtable()
{
{ "userno", SUserInfo.UserNo },
{ "isfinishtoday", 1 }
};
vm.intval = Dao.Get<LectInning>("cr.lectinnings", p3).Count();
#endregion
2020-10-12 14:39:23 +09:00
}
#region + vm.CMRSes = cr.mycmrs
var p4 = new Hashtable()
{
{ "lectno", vm.croomlectno },
{ "userno", SUserInfo.UserNo }
};
vm.CMRSes = Dao.Get<CMRS>("cr.mycmrs", p4);
#endregion
2020-10-12 14:39:23 +09:00
return CView();
}
/// <summary>
/// 강의실 > 설문참여
/// </summary>
/// <returns></returns>
2020-10-12 14:39:23 +09:00
public ActionResult Research()
{
#region + vm.CMRSes = cr.mycmrs
var p = new Hashtable()
{
{ "lectno", vm.croomlectno },
{ "userno", SUserInfo.UserNo }
};
vm.CMRSes = Dao.Get<CMRS>("cr.mycmrs", p);
#endregion
#region + lect = cr.checklectdate
var p2 = new Hashtable()
{
{ "lectno", vm.croomlectno }
};
Lect lect = Dao.Get<Lect>("cr.checklectdate", p2).First();
#endregion
ViewBag.isres = DateTime.Now <= lect.edate ? 1 : -1;
2020-10-12 14:39:23 +09:00
return CView();
}
/// <summary>
/// 강의실 > 성적확인
/// </summary>
/// <returns></returns>
2020-10-12 14:39:23 +09:00
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<Lect>("cr.main.mygrade", p).FirstOrDefault();
#endregion
2020-10-12 14:39:23 +09:00
return CView();
}
/// <summary>
/// 강의실 > 게시판 (croombmno 1:수료절차안내, 2:Q&A ...)
/// </summary>
/// <param name="cvm"></param>
/// <returns></returns>
2020-10-12 14:39:23 +09:00
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<BoardMaster>("board.bms", p).First();
#endregion
2020-10-12 14:39:23 +09:00
if (cvm.BM.isuseopening == 1)
{
#region + cvm.BMOs = board.bmos
cvm.BMOs = Dao.Get<BoardMasterOpening>("board.bmos", cvm.BM.bmno);
#endregion
2020-10-12 14:39:23 +09:00
}
2020-10-12 14:39:23 +09:00
cvm.pagerowcount = cvm.pagerowcount < 1 ? 10 : cvm.pagerowcount;
#region + cvm.Boards = board.bs
2020-10-12 14:39:23 +09:00
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>("board.bs", ht);
#endregion
2020-10-12 14:39:23 +09:00
cvm.pagetotalcount = GetCount(cvm.Boards.FirstOrDefault());
cvm.pageviewcount = cvm.Boards.Count();
2020-10-12 14:39:23 +09:00
return CView(cvm);
}
2020-10-12 14:39:23 +09:00
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>("board.bs", p).First();
#endregion
if (cvm.Board.issecr == 1 && !(cvm.Board.cno == SUserInfo.UserNo || cvm.Board.pcno == SUserInfo.UserNo))
{
return Redirect("/");
}
2020-10-12 14:39:23 +09:00
if (cvm.Board.cno != SUserInfo.UserNo)
{
#region + board.bd.read
Dao.Save("board.bd.read", cvm.BNo);
#endregion
2020-10-12 14:39:23 +09:00
}
2020-10-12 14:39:23 +09:00
cvm.FileList = new List<File>() { };
2020-10-12 14:39:23 +09:00
if (cvm.Board.fgno != null)
{
cvm.FileList = GetFiles(cvm.Board.fgno.Value);
}
2020-10-12 14:39:23 +09:00
if (cvm.Board.isreply == 1)
{
#region + cvm.BoardCMTs = board.boardcmts
cvm.BoardCMTs = Dao.Get<BoardCMT>("board.boardcmts", cvm.Board.bno);
#endregion
2020-10-12 14:39:23 +09:00
}
2020-10-12 14:39:23 +09:00
return CView(cvm);
}
2020-10-12 14:39:23 +09:00
public ActionResult BoardReg(VMCRoom vm)
{
ViewBag.croombmno = vm.croombmno.ToString();
if (SUserInfo.UserNo < 1)
{
return Redirect($"/Account/Index?ru={Request.Url.PathAndQuery}");
}
2020-10-12 14:39:23 +09:00
vm.BMOs = new List<BoardMasterOpening>() { };
vm.Board = new Board()
{
pbno = vm.PBNo
};
2020-10-12 14:39:23 +09:00
if (vm.BNo > 0)
{
#region + vm.Board = board.bs
var p = new Hashtable()
{
{ "bno", vm.BNo },
{ "getcontents", 1 }
};
vm.Board = Dao.Get<Board>("board.bs", p).First();
#endregion
2020-10-12 14:39:23 +09:00
if (vm.Board.isuseopening == 1)
{
#region + vm.BMOs = board.bmos
vm.BMOs = Dao.Get<BoardMasterOpening>("board.bmos", vm.Board.bmno);
#endregion
2020-10-12 14:39:23 +09:00
}
}
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>("board.bs", p).First().subject;
#endregion
2020-10-12 14:39:23 +09:00
}
#region + vm.BM = board.bms
var p2 = new Hashtable()
{
{ "bmno", vm.croombmno }
};
vm.BM = Dao.Get<BoardMaster>("board.bms", p2).First();
#endregion
2020-10-12 14:39:23 +09:00
vm.Board.isreply = vm.BM.isreply;
vm.Board.isuseopening = vm.BM.isuseopening;
vm.Board.bmno = vm.BM.bmno;
2020-10-12 14:39:23 +09:00
if (vm.BM.isuseopening == 1)
{
#region + vm.BMOs = board.bmos
vm.BMOs = Dao.Get<BoardMasterOpening>("board.bmos", vm.BM.bmno);
#endregion
2020-10-12 14:39:23 +09:00
}
}
if (vm.Board.issecr == 1 && vm.Board.cno != SUserInfo.UserNo)
{
return Redirect("/");
}
2020-10-12 14:39:23 +09:00
vm.FileList = new List<File>() { };
2020-10-12 14:39:23 +09:00
if (vm.Board.fgno != null)
{
vm.FileList = GetFiles(vm.Board.fgno.Value);
}
2020-10-12 14:39:23 +09:00
if (vm.Board.isreply == 1 && vm.Board.bno > 0)
{
#region + vm.BoardCMTs = board.boardcmts
vm.BoardCMTs = Dao.Get<BoardCMT>("board.boardcmts", vm.Board.bno);
#endregion
2020-10-12 14:39:23 +09:00
}
2020-10-12 14:39:23 +09:00
return CView(vm);
}
/// <summary>
/// 강의실 > 시험응시/과제제출
/// </summary>
/// <param name="vm"></param>
/// <returns></returns>
2020-10-12 14:39:23 +09:00
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 }
};
2024-08-07 12:54:55 +09:00
vm.Datas = Dao.Get<Data>("cr.myestimation", p1);
#endregion
2024-08-07 12:54:55 +09:00
// true일때 lms에서 시험내용으로 진입 가능
#region + var lectCheck = cr.myExCheck
ViewBag.exCheck = true;
2024-08-07 12:54:55 +09:00
var p2 = new Hashtable()
{
{ "lectno", vm.croomlectno },
{ "userno", SUserInfo.UserNo }
};
var lectCheck = Dao.Get<Data>("cr.myExCheck", p2);
#endregion
ViewBag.exCheck = lectCheck.Count > 0 ? true : false;
2024-08-07 12:54:55 +09:00
2020-10-12 14:39:23 +09:00
return CView(vm);
}
/// <summary>
/// 강의실 > 시험응시 /과제제출 > 시험응시 페이지
/// </summary>
/// <param name="vm"></param>
/// <returns></returns>
2020-10-12 14:39:23 +09:00
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()
2020-10-12 14:39:23 +09:00
{
{ "lectno", vm.croomlectno },
{ "userno", SUserInfo.UserNo },
{ "exno", vm.estno }
};
vm.LectEX = Dao.Get<LectEX>("cr.lectex", p).First();
#endregion
2020-10-12 14:39:23 +09:00
return CView(vm);
}
2020-10-12 14:39:23 +09:00
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<LectEXQ>("cr.userexamdata.start", p);
#endregion
2020-10-12 14:39:23 +09:00
vm.QuestionItems = new List<QuestionItem>();
2020-10-12 14:39:23 +09:00
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<QuestionItem>("cr.userexamquestionitem.get", p2);
#endregion
2020-10-12 14:39:23 +09:00
}
2020-10-12 14:39:23 +09:00
return CView(vm);
}
2020-10-12 14:39:23 +09:00
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<LectEX>("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<LectEXQ>("lect.lectexq.result", p);
#endregion
#region + vm.QuestionItems = lect.lectexqqi.list
vm.QuestionItems = Dao.Get<QuestionItem>("lect.lectexqqi.list", string.Join(",", vm.UserExamDatas.Select(s => s.qno)));
#endregion
#region + vm.EQs = lect.lectexresult.rightrate ()
vm.EQs = Dao.Get<CMEXQ>("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<CMEXQ>("lect.lectexresult.selectrate", p);
#endregion
2020-10-12 14:39:23 +09:00
return CView(vm);
}
/// <summary>
/// 강의실 > 시험응시/과제제출 > 과제제출 안내 (제출폼)
/// </summary>
/// <param name="vm"></param>
/// <returns></returns>
2020-10-12 14:39:23 +09:00
public ActionResult EstimationSubject(VMCRoom vm)
{
vm.FileList = new List<File>() { };
#region + vm.LectSD = cr.lectsd
var p = new Hashtable()
{
{ "lectno", vm.croomlectno },
{ "userno", SUserInfo.UserNo },
{ "sdno", vm.estno }
};
vm.LectSD = Dao.Get<LectSD>("cr.lectsd", p).First();
#endregion
string fgnos = "";
2020-10-12 14:39:23 +09:00
if (vm.LectSD.sdfgno != null)
{
fgnos = "," + vm.LectSD.sdfgno.Value.ToString();
}
if (vm.LectSD.fgno != null)
{
fgnos += "," + vm.LectSD.fgno.Value.ToString();
}
2020-10-12 14:39:23 +09:00
if (fgnos != "")
{
vm.FileList = GetFiles(fgnos.Substring(1));
}
2020-10-12 14:39:23 +09:00
return CView(vm);
}
2020-10-12 14:39:23 +09:00
public ActionResult EstimationDiscuss(VMCRoom vm)
{
vm.FileList = new List<File>() { };
#region + vm.LectSD = cr.lectsd2
var p = new Hashtable()
{
{ "lectno", vm.croomlectno },
{ "userno", SUserInfo.UserNo },
{ "sdno", vm.estno }
};
vm.LectSD = Dao.Get<LectSD>("cr.lectsd2", p).First();
#endregion
2020-10-12 14:39:23 +09:00
if (vm.LectSD.sdfgno != null)
{
vm.FileList = GetFiles(vm.LectSD.sdfgno.Value);
}
#region + vm.LectSDBoards = cr.lectsdboards
vm.LectSDBoards = Dao.Get<LectSDBoard>("cr.lectsdboards", vm.LectSD.sdno);
#endregion
2020-10-12 14:39:23 +09:00
return CView(vm);
}
2020-10-12 14:39:23 +09:00
public ActionResult DiscussReg(VMCRoom vm)
{
vm.FileList = new List<File>() { };
#region + vm.LectSD = cr.lectsd2
var p = new Hashtable()
{
{ "lectno", vm.croomlectno },
{ "userno", SUserInfo.UserNo },
{ "sdno", vm.estno }
};
vm.LectSD = Dao.Get<LectSD>("cr.lectsd2", p).First();
#endregion
2020-10-12 14:39:23 +09:00
vm.LectSDBoard = new LectSDBoard() { };
2020-10-12 14:39:23 +09:00
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()
2020-10-12 14:39:23 +09:00
{
{ "bno", vm.BNo },
{ "userno", SUserInfo.UserNo }
};
vm.LectSDBoard = Dao.Get<LectSDBoard>("cr.lectsdboard", p).First();
#endregion
2020-10-12 14:39:23 +09:00
if (vm.LectSDBoard.cno != SUserInfo.UserNo)
{
return RedirectToAction("/CRoom/Esitimation?" + base.vm.croomparam);
}
2020-10-12 14:39:23 +09:00
if (vm.LectSDBoard.fgno != null)
{
vm.FileList = GetFiles(vm.LectSDBoard.fgno.Value);
}
}
2020-10-12 14:39:23 +09:00
return CView(vm);
}
2020-10-12 14:39:23 +09:00
public ActionResult DiscussView(VMCRoom vm)
{
vm.FileList = new List<File>() { };
#region + vm.LectSDBoard = cr.lectsdboard
var p = new Hashtable()
{
{ "bno", vm.BNo },
{ "userno", SUserInfo.UserNo }
};
vm.LectSDBoard = Dao.Get<LectSDBoard>("cr.lectsdboard", p).First();
#endregion
2020-10-12 14:39:23 +09:00
if (vm.LectSDBoard.fgno != null)
{
vm.FileList = GetFiles(vm.LectSDBoard.fgno.Value);
}
#region + vm.BoardCMTs = cr.lectsdboardcmt
vm.BoardCMTs = Dao.Get<BoardCMT>("cr.lectsdboardcmt", vm.LectSDBoard.bno);
#endregion
2020-10-12 14:39:23 +09:00
return CView(vm);
}
2020-10-12 14:39:23 +09:00
}
}