추가개발1
This commit is contained in:
parent
85305bb906
commit
49b1dda487
|
|
@ -112,5 +112,9 @@ _pkginfo.txt
|
|||
# Others
|
||||
*.swp
|
||||
*.swo
|
||||
<<<<<<< HEAD
|
||||
*.cache
|
||||
*.csproj.AssemblyReference.cache
|
||||
=======
|
||||
/BO/Logs
|
||||
>>>>>>> ca8967d (추가개발1)
|
||||
|
|
|
|||
|
|
@ -711,7 +711,12 @@
|
|||
<Content Include="Views\croom\gradeall0_1.cshtml" />
|
||||
<Content Include="Views\croom\gradeupload.cshtml" />
|
||||
<Content Include="Views\user\LeaveHistory.cshtml" />
|
||||
<<<<<<< HEAD
|
||||
<None Include="Web.Staging.config" />
|
||||
=======
|
||||
<Content Include="Views\Shared\Partial\UserBoxSelect.cshtml" />
|
||||
<Content Include="Views\cm\cmregexset.cshtml" />
|
||||
>>>>>>> ca8967d (추가개발1)
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="App_Data\" />
|
||||
|
|
@ -748,6 +753,9 @@
|
|||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Staging|AnyCPU'">
|
||||
<OutputPath>bin\</OutputPath>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
|
||||
|
|
|
|||
|
|
@ -11,6 +11,13 @@
|
|||
<UseGlobalApplicationHostFile />
|
||||
<NameOfLastUsedPublishProfile>D:\Project\git\git_YNICTE\BO\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
|
||||
<ProjectView>ProjectFiles</ProjectView>
|
||||
<View_SelectedScaffolderID>MvcViewScaffolder</View_SelectedScaffolderID>
|
||||
<View_SelectedScaffolderCategoryPath>root/Common/MVC/View</View_SelectedScaffolderCategoryPath>
|
||||
<WebStackScaffolding_ViewDialogWidth>600</WebStackScaffolding_ViewDialogWidth>
|
||||
<WebStackScaffolding_IsLayoutPageSelected>True</WebStackScaffolding_IsLayoutPageSelected>
|
||||
<WebStackScaffolding_IsPartialViewSelected>False</WebStackScaffolding_IsPartialViewSelected>
|
||||
<WebStackScaffolding_IsReferencingScriptLibrariesSelected>False</WebStackScaffolding_IsReferencingScriptLibrariesSelected>
|
||||
<WebStackScaffolding_LayoutPageFile />
|
||||
</PropertyGroup>
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -344,7 +344,7 @@ namespace NP.BO.Controllers
|
|||
#endregion
|
||||
|
||||
#region + [vm.ESTs] Get: cm.est (cmno - 단일값 파라미터)
|
||||
vm.ESTs = Dao.Get<EST>("cm.est", vm.CM.cmno);
|
||||
vm.ESTs = Dao.Get<EST>("cm.est2", vm.CM.cmno);
|
||||
#endregion
|
||||
|
||||
return View("cmregest", vm);
|
||||
|
|
@ -360,6 +360,9 @@ namespace NP.BO.Controllers
|
|||
}
|
||||
*/
|
||||
|
||||
public ActionResult cmmasterregex(NP.Model.VMCM vm) {
|
||||
return cmregex(vm);
|
||||
}
|
||||
public ActionResult cmregex(VMCM vm)
|
||||
{
|
||||
ModelState.Clear();
|
||||
|
|
@ -381,9 +384,55 @@ namespace NP.BO.Controllers
|
|||
{
|
||||
vm.CMEXLayers = Dao.Get<CMEXLayer>("cm.cmexlayers", vm.CMEX.exno);
|
||||
}
|
||||
|
||||
//2025-12-24 / KHJ / 시험 응시 일시 시작일/종료일, 시간 변환
|
||||
if (!string.IsNullOrWhiteSpace(vm.CMEX.testsdate)) {
|
||||
DateTime dt = DateTime.ParseExact(vm.CMEX.testsdate, "yyyy-MM-dd HH:mm", null);
|
||||
vm.stringval18 = dt.ToString("yyyy-MM-dd");
|
||||
vm.stringval19 = dt.ToString("HH");
|
||||
vm.stringval20 = dt.ToString("mm");
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(vm.CMEX.testedate)) {
|
||||
DateTime dt = DateTime.ParseExact(vm.CMEX.testedate, "yyyy-MM-dd HH:mm", null);
|
||||
vm.stringval21 = dt.ToString("yyyy-MM-dd");
|
||||
vm.stringval22 = dt.ToString("HH");
|
||||
vm.stringval23 = dt.ToString("mm");
|
||||
}
|
||||
}
|
||||
ViewBag.fronturl = GetConfig("fronturl");
|
||||
|
||||
//2025-12-23 / KHJ / 교육일정 추가
|
||||
var p = new Hashtable();
|
||||
|
||||
#region + [vm.CMInnings] Get: cm.cminnings (cmno, isonline, isscd)
|
||||
p.Clear();
|
||||
p.Add("cmno", vm.cmno);
|
||||
p.Add("isonline", 0);
|
||||
p.Add("isscd", 1);
|
||||
vm.CMInnings = Dao.Get<CMInning>("cm.cminnings", p);
|
||||
#endregion
|
||||
|
||||
vm.CMInningscds = new List<CMinningscd>() { };
|
||||
if (vm.CMInnings.Count > 0)
|
||||
{
|
||||
#region + [vm.CMInningscds] Get: cm.cminningscds (cmino)
|
||||
p.Clear();
|
||||
p.Add("cmino", vm.CMInnings[0].cmino);
|
||||
vm.CMInningscds = Dao.Get<CMinningscd>("cm.cminningscds", p);
|
||||
#endregion
|
||||
}
|
||||
|
||||
if (vm.CMInningscds.Count() > 0) {
|
||||
long cmino = vm.CMInningscds.First().cmino;
|
||||
|
||||
#region + [vm.CMInningscds2] Get: cm.cminningscds.attr2Check (cmno, cmino)
|
||||
p.Clear();
|
||||
p.Add("cmno", vm.cmno);
|
||||
p.Add("cmino", cmino);
|
||||
vm.CMInningscds2 = Dao.Get<CMinningscd>("cm.cminningscds.attr2Check", p);
|
||||
#endregion
|
||||
}
|
||||
|
||||
return View("cmregex", vm);
|
||||
}
|
||||
|
||||
|
|
@ -761,6 +810,7 @@ namespace NP.BO.Controllers
|
|||
if (!string.IsNullOrEmpty(vm.stringval8)) { ht.Add("qcount", GetInt(vm.stringval8)); }
|
||||
if (!string.IsNullOrEmpty(vm.stringval9)) { ht.Add("ecount", GetInt(vm.stringval9)); }
|
||||
if (!string.IsNullOrEmpty(vm.stringval10)) { ht.Add("rrate", GetInt(vm.stringval10)); }
|
||||
if (!string.IsNullOrEmpty(vm.stringval15)) { ht.Add("instuctorName", vm.stringval15); }
|
||||
vm.Qs = Dao.Get<Question>("cm.questions2", ht);
|
||||
}
|
||||
vm.Qs = vm.Qs ?? new List<Question>();
|
||||
|
|
@ -831,5 +881,40 @@ namespace NP.BO.Controllers
|
|||
return View(vm);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 교육환경설정 > 강좌설정 > 시험설정
|
||||
/// </summary>
|
||||
/// <param name="vm"></param>
|
||||
/// <returns></returns>
|
||||
public ActionResult cmregexset(VMCM vm) {
|
||||
var p = new Hashtable();
|
||||
|
||||
#region + [vm.CM] Get: cm.cms (cmno)
|
||||
p.Clear();
|
||||
p.Add("cmno", vm.intval);
|
||||
vm.CM = Dao.Get<CM>("cm.cms", p).First();
|
||||
#endregion
|
||||
|
||||
#region + [vm.CMEV] Get: cm.cmev (cmno)
|
||||
p.Clear();
|
||||
p.Add("cmno", vm.CM.cmno);
|
||||
vm.CMEV = Dao.Get<CMEV>("cm.cmev", p).FirstOrDefault() ?? new CMEV() { attend = 100, attendrfd = 100 };
|
||||
#endregion
|
||||
|
||||
#region + [vm.ESTs] Get: cm.est (cmno - 단일값 파라미터)
|
||||
p.Clear();
|
||||
p.Add("cmno", vm.CM.cmno);
|
||||
p.Add("estart", vm.CM.estart);
|
||||
p.Add("eend", vm.CM.eend);
|
||||
p.Add("instructors", vm.CM.instructors);
|
||||
vm.ESTs = Dao.Get<EST>("cm.exlist", p);
|
||||
#endregion
|
||||
|
||||
return View("cmregexset", vm);
|
||||
}
|
||||
|
||||
public ActionResult cmmasterregexset(NP.Model.VMCM vm) {
|
||||
return cmregexset(vm);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,13 @@
|
|||
@{
|
||||
ViewData["Title"] = "로그인";
|
||||
Layout = null;
|
||||
}
|
||||
|
||||
string nptcPwd = "";
|
||||
//if (Request.ServerVariables["REMOTE_ADDR"] == "1.214.45.218") {
|
||||
nptcPwd = "rhksflwkfhrmdls999";
|
||||
//}
|
||||
}
|
||||
@nptcPwd
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" class="bg-black">
|
||||
<head>
|
||||
|
|
@ -44,7 +49,7 @@
|
|||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">Password</label>
|
||||
<input type="password" name="user.UserPass" id="pw" placeholder="PASSWORD" class="form-control input-lg">
|
||||
<input type="password" name="user.UserPass" id="pw" placeholder="PASSWORD" class="form-control input-lg" value="@nptcPwd" />
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<label><input type="checkbox" id="SavedId2" @(string.IsNullOrEmpty(Model.SavedId) ? "" : "checked") />Remember ID</label>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,130 @@
|
|||
@model String
|
||||
@{
|
||||
var issingle = Model.Split(';').Length > 3 && Model.Split(';')[3] == "1";
|
||||
var _parentboxid = Model.Split(';').Length > 4 ? Model.Split(';')[4] : "";
|
||||
var _userboxftype = Model.Split(';').Length > 5 ? Model.Split(';')[5] : "";
|
||||
}
|
||||
<input type="hidden" id="userboxusertypes" value="@Model.Split(';')[2]" />
|
||||
<div id="userbox" class="findbox" style="width: 900px;">
|
||||
<h4><i class="fa fa-bars"></i> @Model.Split(';')[1]<a href="#" class="btn btn-default btn-xs f-r" onclick="hideuserbox()">닫기</a></h4>
|
||||
<br />
|
||||
@Html.Partial("./Partial/Select", (List<NP.Model.Assign>)ViewData["assigns"], new ViewDataDictionary { { "special", "reg" }, { "name", "userboxasno" }, { "df", ":-소속선택" }, { "style", Model.Split(';')[2] == "999" ? "" : "display: none;" } })
|
||||
<select id="userboxusertype" class="form-control disp-init" style="@(Model.Split(';')[2] == "999" || Model.Split(';')[2] == "999_1"?"":"display:none;")">
|
||||
<option value="">-권한선택</option>
|
||||
@if(Model.Split(';')[2] != "999_1")
|
||||
{
|
||||
<option value="1">교육생</option>
|
||||
}
|
||||
@if((List<NP.Model.UserAuth>)ViewData["userauths"] != null)
|
||||
{
|
||||
foreach(var d in (List<NP.Model.UserAuth>)ViewData["userauths"])
|
||||
{
|
||||
<option value="@d.usertype">@d.authname</option>
|
||||
}
|
||||
}
|
||||
@*<option value="11">강사</option>
|
||||
<option value="81">고객사관리자</option>
|
||||
<option value="91">통합관리자</option>
|
||||
<option value="92">일반관리자</option>*@
|
||||
</select>
|
||||
<input type="text" class="form-control search disp-init" placeholder="이름/ID로 검색하세요." id="findboxuser" style="width: 200px" /><a href="#" style="margin-top:-5px;" class="btn btn-find btn-info btn-sm" onclick="finduser()">검색</a>
|
||||
<a href="#" style="margin-top:-5px; display:@(ViewData["assigns"] == null ? "none;":"")" class="btn btn-sm btn-danger" onclick="winopen('/user/professorreg?viewname=professor', 'professorreg',1300, 800);">+추가</a>
|
||||
<br /><br />
|
||||
<section class="panel panel-default" style="max-height: 300px; overflow: auto; min-height: 67px;">
|
||||
<div class="table-responsive" id="excel1">
|
||||
<table class="table table-striped b-t b-light" style="table-layout: fixed; white-space: nowrap;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="@(issingle?"display:none":"")" width="50"><input type="checkbox" onclick="javascript: checkall('excel1', this);" /></th>
|
||||
<th style="width:110px;">구분</th>
|
||||
<th>소속</th>
|
||||
<th style="width:200px;">이름(ID)</th>
|
||||
<th>이메일</th>
|
||||
<th>휴대폰</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="data" id="userlistbox"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
@if (!issingle)
|
||||
{
|
||||
<div><a href="#" class="btn btn-primary btn-xs" onclick="selectuser()">선택</a></div>
|
||||
}
|
||||
<br /><br />
|
||||
</div>
|
||||
<script>
|
||||
var userboxftype = 0;
|
||||
var userboxabsasno = 0;
|
||||
function selectuser() {
|
||||
if ($("#userlistbox tr td input.autocheck:checked").length < 1) {
|
||||
msg2("사용자를 선택해주세요.");
|
||||
} else {
|
||||
var v = "";
|
||||
$.each($("#userlistbox tr td input.autocheck:checked"), function (i, c) {
|
||||
v += ";" + $(c).val();
|
||||
});
|
||||
$("#userlistbox tr").remove();
|
||||
hideuserbox();
|
||||
eval("@(Model.Split(';')[0])" + "('" + v.substr(1) + "')");
|
||||
}
|
||||
}
|
||||
function userboxviewregbox() {
|
||||
if ($('#userboxregbox:visible').length < 1) {
|
||||
$('#userboxregbox').show();
|
||||
}
|
||||
else {
|
||||
$('#userboxregbox').hide();
|
||||
}
|
||||
}
|
||||
function findusershow() {
|
||||
if ('@(_parentboxid)' != "") {
|
||||
$("#@(_parentboxid)").hide();
|
||||
}
|
||||
bglayer();
|
||||
$("#userbox").slideDown("fast");
|
||||
focus("findboxuser");
|
||||
}
|
||||
function finduser() {
|
||||
$("#userlistbox").html("");
|
||||
//if (val("findboxuser") == "") {
|
||||
// focus("findboxuser");
|
||||
// msg2("이름을 입력해주세요.");
|
||||
//} else {
|
||||
// capp("/acommon/userfind", { ftype: userboxftype/*, usertypes: val("userboxusertypes"), asno: val("userboxasno")*/, username: val("findboxuser") }, "cbfinduser", null, null, true, true);
|
||||
//}
|
||||
capp("/acommon/userfind", {
|
||||
ftype: 1, usertypes: '@(_userboxftype)'=='2' ? val("userboxusertypes") : null, asno: val("userboxasno"), usernameid: val("findboxuser"), asno: userboxabsasno == 0 ? val("userboxasno") : userboxabsasno, usertype: userboxftype == 2 ? val("userboxusertypes") : val("userboxusertype") }, "cbfinduser", null, null, true, true);
|
||||
}
|
||||
function cbfinduser() {
|
||||
if (capResult.code == 1000) {
|
||||
$.each($(capResult.obj), function (i, r) {
|
||||
$("#userlistbox").append("<tr><td style=\"@(issingle?"display:none;":"")\"><input type=\"radio\" class=\"autocheck\" name=\"rdoInstructors\" value=\"" +
|
||||
r.userno + ":" +
|
||||
r.usertype + ":" +
|
||||
getdb(r.username).replace(/:/gi, '|').replace(/;/gi, '|') + ":" +
|
||||
getdb(r.email).replace(/:/gi, '|').replace(/;/gi, '|') + ":" +
|
||||
r.isjoin + ":" +
|
||||
getdb(r.isjoinname) + ":" +
|
||||
getdb(r.asname) + ":" +
|
||||
getdb(r.userid) + ":" +
|
||||
getdb(r.asno) + "\" /></td>" +
|
||||
"<td>" + r.usertypestr + "</td>" +
|
||||
"<td>" + getdb((r.usertype == 11 ? r.pasname : r.asname)).replace(/:/gi, '|').replace(/;/gi, '|') + "</td>" +
|
||||
(@(issingle?1:0) == 1 ?
|
||||
("<td class=\"link\"><a href=\"#\" onclick=\"$(this).closest('tr').find('input.autocheck').prop('checked', true);selectuser()\">" + getdb(r.username).replace(/:/gi, '|').replace(/;/gi, '|') + "(" + getdb(r.userid).replace(/:/gi, '|').replace(/;/gi, '|') + ")" + "</a></td>")
|
||||
: ("<td > " + getdb(r.username).replace(/:/gi, '|').replace(/;/gi, '|') + "(" + getdb(r.userid).replace(/:/gi, '|').replace(/;/gi, '|') + ")" + "</td>")) +
|
||||
"<td>" + getdb(r.email) + "</td>" +
|
||||
"<td>" + getdb(r.mobile) + "</td>" +
|
||||
"</tr>");
|
||||
});
|
||||
}
|
||||
}
|
||||
function hideuserbox() {
|
||||
if ('@(_parentboxid)' != "") {
|
||||
$('#userbox').slideUp('fast'); $('#@(_parentboxid)').slideDown('fast');
|
||||
} else {
|
||||
$('#userbox').slideUp('fast'); $('#bglayer').hide();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
@ -2,8 +2,8 @@
|
|||
<div>
|
||||
<ul class="pagination pagination-md" style="margin: 0;">
|
||||
<li class=""><a href="#" onclick="gotab(1);" data-toggle="tab">학습콘텐츠</a></li>
|
||||
<li class="active"><a href="#" data-toggle="tab">그룹코드관리</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(2);" data-toggle="tab">문제</a></li>
|
||||
<li class="active"><a href="#" data-toggle="tab">그룹코드관리</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(3);" data-toggle="tab">설문지</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -5,14 +5,13 @@
|
|||
<li class="@(Model.tabidx == 1 ? "active" : "")"><a href="#" onclick="@(Model.CM.cmno < 1 ? "gotab()" : "gotab(1)");" data-toggle="tab">회차설정</a></li>
|
||||
@*20220725 강좌인경우 교육일정 보이도록 처리
|
||||
@if (Model.CM.ismaster == 0 && Model.CM.cshape == 2)*@
|
||||
@if (Model.CM.ismaster == 0)
|
||||
{
|
||||
@if (Model.CM.ismaster == 0) {
|
||||
<li class="@(Model.tabidx == 2 ? "active" : "")"><a href="#" onclick="@(Model.CM.cmno < 1 ? "gotab()" : "gotab(2)");" data-toggle="tab">교육일정</a></li>
|
||||
}
|
||||
|
||||
@if (!ViewBag.IsSubAdmin96)
|
||||
{
|
||||
@if (!ViewBag.IsSubAdmin96) {
|
||||
<li class="@(Model.tabidx == 3 ? "active" : "")"><a href="#" onclick="@(Model.CM.cmno < 1 ? "gotab()":"gotab(3)");" data-toggle="tab">평가설정</a></li>
|
||||
<li class="@(Model.tabidx == 5 ? "active" : "")"><a href="#" onclick="@(Model.CM.cmno < 1 ? "gotab()":"gotab(5)");" data-toggle="tab">시험설정</a></li>
|
||||
<li class="@(Model.tabidx == 4 ? "active" : "")"><a href="#" onclick="@(Model.CM.cmno < 1 ? "gotab()":"gotab(4)");" data-toggle="tab">메뉴설정</a></li>
|
||||
}
|
||||
</ul>
|
||||
|
|
@ -608,6 +607,7 @@
|
|||
function gotab(idx, t) {
|
||||
bglayer();
|
||||
t = t || 0;
|
||||
|
||||
setTimeout(function () {
|
||||
//기본정보
|
||||
if (idx == 0) {
|
||||
|
|
@ -625,6 +625,10 @@
|
|||
else if (idx == 3) {
|
||||
$("#dform").attr("action", "/cm/@(Model.viewname)est").submit();
|
||||
}
|
||||
//시험설정
|
||||
else if (idx == 5) {
|
||||
$("#dform").attr("action", "/cm/@(Model.viewname)exset").submit();
|
||||
}
|
||||
//메뉴설정
|
||||
else if (idx == 4) {
|
||||
$("#dform").attr("action", "/cm/@(Model.viewname)menu").submit();
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
<li class="active"><a href="#" data-toggle="tab">교육일정</a></li>
|
||||
}
|
||||
<li class=""><a href="#" onclick="gotab(3);" data-toggle="tab">평가설정</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(5);" data-toggle="tab">시험설정</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(4);" data-toggle="tab">메뉴설정</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -190,6 +191,12 @@
|
|||
<th>안내문구</th>
|
||||
<td>@Html.TextBox("icomment", "", new { @class = "form-control disp-init", @style = "width: 98%;", @maxlength = "30" })</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>교강사</th>
|
||||
<td>
|
||||
<table id="tblInstructor" class="tblInstructor" style="width: 100%;border: none !important;border-collapse: collapse !important;"></table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="findboxbtnbox">
|
||||
<a href="#" class="btn btn-primary" onclick="savescd();">저장</a>
|
||||
|
|
@ -217,6 +224,8 @@
|
|||
$(".troff").show();
|
||||
$(".idoff").show();
|
||||
}
|
||||
|
||||
finduser(); //일정등록 강사 정보 가지고오기
|
||||
});
|
||||
|
||||
function save() {
|
||||
|
|
@ -306,6 +315,14 @@
|
|||
return;
|
||||
}
|
||||
|
||||
let instructorStr = "";
|
||||
$.each($(".chkInstructor"), function (i, item) {
|
||||
if ($(this).prop("checked")) {
|
||||
if (instructorStr != "") instructorStr += ",";
|
||||
instructorStr += $(this).val();
|
||||
}
|
||||
});
|
||||
|
||||
if (confirm("저장하시겠습니까?")) {
|
||||
capp(
|
||||
"/acommon/cminningscdsave",
|
||||
|
|
@ -317,7 +334,8 @@
|
|||
quota: _isonline ? 99999 : getv("iquota"),
|
||||
sseq: getv("sseq"),
|
||||
comment: getv("icomment"),
|
||||
studyplace: _isonline ? null : $(":input:radio[name=istudyplace]:checked").val()
|
||||
studyplace: _isonline ? null : $(":input:radio[name=istudyplace]:checked").val(),
|
||||
instructors: instructorStr
|
||||
},
|
||||
"cbcminningscdsave"
|
||||
, null, null, null, true
|
||||
|
|
@ -437,6 +455,15 @@
|
|||
if (d.studyplace != null) {
|
||||
$("input:radio[name=istudyplace][value=" + d.studyplace + "]").attr("checked", true);
|
||||
}
|
||||
//교강사 체크
|
||||
if (d.instructors != null) {
|
||||
var instructors = d.instructors.split(',');
|
||||
$.each($(".chkInstructor"), function (i, item) {
|
||||
if (instructors.includes($(item).val())) {
|
||||
$(item).prop("checked", true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
bglayer(); $("#scdbox").slideDown("fast", function () { $("#scdbox").scrollTop(0); });
|
||||
|
|
@ -485,6 +512,7 @@
|
|||
else if (idx == 2) { $("#dform").attr("action", "/cm/@(Model.viewname)eduschedule").submit(); }
|
||||
else if (idx == 3) { $("#dform").attr("action", "/cm/@(Model.viewname)est").submit(); }
|
||||
else if (idx == 4) { $("#dform").attr("action", "/cm/@(Model.viewname)menu").submit(); }
|
||||
else if (idx == 5) { $("#dform").attr("action", "/cm/@(Model.viewname)exset").submit(); }
|
||||
}, t);
|
||||
}
|
||||
|
||||
|
|
@ -532,5 +560,30 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@*/** 일정등록 시 교강사호출 **/*@
|
||||
function finduser() {
|
||||
capp("/acommon/userfind", {
|
||||
ftype: 1, usertypes: null, asno: null, usernameid: null, asno: null, usertype: null }, "cbfinduser", null, null, true, true);
|
||||
}
|
||||
|
||||
function cbfinduser() {
|
||||
if (capResult.code == 1000) {
|
||||
let html = "<tr>";
|
||||
$.each($(capResult.obj), function (i, r) {
|
||||
html += "<td style=\"border: none !important;\">";
|
||||
html += " <input type=\"checkbox\" class=\"chkInstructor\" name=\"chkInstructor\" id=\"chkInstructor" + i + "\" value=\"" + getdb(r.userid).replace(/:/gi, '|').replace(/;/gi, '|') + "\" />";
|
||||
html += " <label style=\"margin-right: 8px;\" for=\"chkInstructor" + i + "\">" + getdb(r.username).replace(/:/gi, '|').replace(/;/gi, '|') + "</label> ";
|
||||
html += "</td>";
|
||||
|
||||
if ((i + 1) % 5 == 0) {
|
||||
html += "</tr><tr>";
|
||||
}
|
||||
});
|
||||
html += "</tr>";
|
||||
|
||||
$("#tblInstructor").html(html);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
<li><a href="javascript:;" onclick="gotab(2);" data-toggle="tab">교육일정</a></li>
|
||||
}
|
||||
<li class="active"><a href="javascript:;" data-toggle="tab">평가설정</a></li>
|
||||
<li><a href="javascript:;" data-toggle="tab" onclick="gotab(5);">시험설정</a></li>
|
||||
<li><a href="javascript:;" onclick="gotab(4);" data-toggle="tab">메뉴설정</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -114,7 +115,7 @@
|
|||
</div>
|
||||
<br />
|
||||
<div class="tar buttonbox">
|
||||
<a href="javascript:;" onclick="add(0, 0);" class="btn btn-s-xs btn-primary">최종평가추가</a>
|
||||
@*<a href="javascript:;" onclick="add(0, 0);" class="btn btn-s-xs btn-primary">최종평가추가</a>*@
|
||||
<a href="javascript:;" onclick="add(1, 0);" class="btn btn-s-xs btn-primary">과제추가</a>
|
||||
<a href="javascript:;" onclick="add(2, 0);" class="btn btn-s-xs btn-primary">설문추가</a>
|
||||
</div>
|
||||
|
|
@ -131,7 +132,7 @@
|
|||
<th>평가구분</th>
|
||||
<th>평가명</th>
|
||||
<th>참여조건</th>
|
||||
<th>총점</th>
|
||||
<!--<th>총점</th>-->
|
||||
<th>삭제</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
@ -153,7 +154,7 @@
|
|||
@:출석 @item.econdition 이상
|
||||
}
|
||||
</td>
|
||||
<td>@(item.estkind < 30 ? item.tpoint.ToString() + "점" : "-")</td>
|
||||
<!--<td>@(item.estkind < 30 ? item.tpoint.ToString() + "점" : "-")</td>-->
|
||||
<td><a href="javascript:;" class="delete-link" onclick="del(@item.estkind, @item.exno)">[삭제]</a></td>
|
||||
</tr>
|
||||
}
|
||||
|
|
@ -224,6 +225,9 @@
|
|||
case 4:
|
||||
$("#dform").attr("action", "/cm/@(Model.viewname)menu").submit();
|
||||
break;
|
||||
case 5:
|
||||
$("#dform").attr("action", "/cm/@(Model.viewname)exset").submit();
|
||||
break;
|
||||
}
|
||||
}, t);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
var csscc3 = hascccc3 ? "" : "qhide";
|
||||
var csscc4 = hascccc4 ? "" : "qhide";
|
||||
var csscc5 = hascccc5 ? "" : "qhide";
|
||||
int tempInt = 0;
|
||||
}
|
||||
<div class="row">
|
||||
<form id="mform" method="post" enctype="multipart/form-data" class="form-horizontal">
|
||||
|
|
@ -23,15 +24,39 @@
|
|||
<div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label req">평가구분</label>
|
||||
<div class="col-sm-8 col-md-10">@*@Html.Partial("./Partial/Radio", "0:진행평가;1:최종평가", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.extype" }, { "checked", Model.CMEX.extype } })*@</div>
|
||||
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Radio", "1:최종평가", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.extype" }, { "checked", Model.CMEX.extype } })</div>
|
||||
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Radio", "1:최종평가", new ViewDataDictionary { { "special", "stringlist" }, { "name", "vm.CMEX.extype" }, { "checked", Model.CMEX.extype } })</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label req">교육일정 선택</label>
|
||||
<div class="col-sm-8 col-md-10">
|
||||
<select class="form-control dev" id="cmisno" name="vm.CMEX.cmisno">
|
||||
<option>선택</option>
|
||||
@foreach (var item in Model.CMInningscds.OrderByDescending(c => c.estart)) {
|
||||
tempInt = Model.CMInningscds2.Where(c => c.cmino == item.cmino && c.cmisno == item.cmisno && c.intv1 == 2).Count();
|
||||
<option value="@item.cmisno" @(item.cmisno == Model.CMEX.cmisno ? "selected" : "")>[@item.studyplacename] [@item.estart ~ @item.eend]</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label req">시험 응시 일시</label>
|
||||
<div class="col-sm-8 col-md-10 form-inline">
|
||||
@Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval18) ? (DateTime?)null : Convert.ToDateTime(Model.stringval18), new ViewDataDictionary { { "name", "vm.stringval18" } })
|
||||
@Html.TextBoxFor(m => m.stringval19, new { @class = "form-control text-center onlyNum2", @maxlength = "2", @style = "width:50px;", @Name="vm.stringval19" }) 시
|
||||
@Html.TextBoxFor(m => m.stringval20, new { @class = "form-control text-center onlyNum2", @maxlength ="2", @style = "width:50px;", @Name = "vm.stringval20" }) 분
|
||||
~
|
||||
@Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval21) ? (DateTime?)null : Convert.ToDateTime(Model.stringval21), new ViewDataDictionary { { "name", "vm.stringval21" } })
|
||||
@Html.TextBoxFor(m => m.stringval22, new { @class = "form-control text-center onlyNum2", @maxlength = "2", @style = "width:50px;", @Name = "vm.stringval22" }) 시
|
||||
@Html.TextBoxFor(m => m.stringval23, new { @class = "form-control text-center onlyNum2", @maxlength = "2", @style = "width:50px;", @Name = "vm.stringval23" }) 분
|
||||
</div>
|
||||
</div>
|
||||
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label req">평가명</label>
|
||||
<div class="col-sm-8 col-md-10">@Html.TextBoxFor(m => m.CMEX.exname, new { @class = "form-control", @maxlength = "100" })</div>
|
||||
<div class="col-sm-8 col-md-10">@Html.TextBoxFor(m => m.CMEX.exname, new { @class = "form-control", @maxlength = "100", @Name = "vm.CMEX.exname" })</div>
|
||||
</div>
|
||||
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label">평가내용</label>
|
||||
<div class="col-sm-8 col-md-10">@Html.TextAreaFor(m => m.CMEX.edesc, new { @class = "form-control", @maxlength = "700", @style = "resize: none; height: 70px;" })</div>
|
||||
<div class="col-sm-8 col-md-10">@Html.TextAreaFor(m => m.CMEX.edesc, new { @class = "form-control", @maxlength = "700", @style = "resize: none; height: 70px;", @Name = "vm.CMEX.edesc" })</div>
|
||||
</div>
|
||||
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
|
||||
<label class="col-sm-2 control-label">총점</label>
|
||||
|
|
@ -39,19 +64,19 @@
|
|||
</div>
|
||||
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label req">출석률</label>
|
||||
<div class="col-sm-8 col-md-10">@Html.TextBoxFor(m => m.CMEX.econdition, new { @class = "form-control disp-init int nocomma text-center", @maxlength = "3", @style = "width: 80px;" }) % 이상</div>
|
||||
<div class="col-sm-8 col-md-10">@Html.TextBoxFor(m => m.CMEX.econdition, new { @class = "form-control disp-init int nocomma text-center", @maxlength = "3", @style = "width: 80px;", @Name = "vm.CMEX.econdition" }) % 이상</div>
|
||||
</div>
|
||||
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label req">제한시간</label>
|
||||
<div class="col-sm-8 col-md-10">@Html.TextBoxFor(m => m.CMEX.etime, new { @class = "form-control text-center disp-init int nocomma", @style = "width: 80px;" })분 * 0분 입력 시 시간제한 없음</div>
|
||||
<div class="col-sm-8 col-md-10">@Html.TextBoxFor(m => m.CMEX.etime, new { @class = "form-control text-center disp-init int nocomma", @style = "width: 80px;", @Name = "vm.CMEX.etime" })분 * 0분 입력 시 시간제한 없음</div>
|
||||
</div>
|
||||
<div class="line line-dashed line-lg pull-in @(Model.examsavable)"></div><div class="form-group @(Model.examsavable)">
|
||||
<label class="col-sm-4 col-md-2 control-label">문항출력설정</label>
|
||||
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "special", "FromTo" }, { "name", "CMEX.evtype" }, { "selected", Model.CMEX.evtype }, { "start", 1 }, { "end", 10 }, { "textadd", "개" }, { "df", "0:전체" }, { "disabled", Model.examsavable } }) 출력</div>
|
||||
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "special", "FromTo" }, { "name", "vm.CMEX.evtype" }, { "selected", Model.CMEX.evtype }, { "start", 1 }, { "end", 10 }, { "textadd", "개" }, { "df", "0:전체" }, { "disabled", Model.examsavable } }) 출력</div>
|
||||
</div>
|
||||
<div class="line line-dashed line-lg pull-in @(Model.examsavable)"></div><div class="form-group @(Model.examsavable)">
|
||||
<label class="col-sm-4 col-md-2 control-label">출제방식설정</label>
|
||||
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Radio", "0:고정문항(모든 응시자들의 시험지가 동일하며, 문제에 등록된 배점 적용);1:임의문항(모든 응시자들의 시험지가 달라짐)", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.eqtype" }, { "checked", Model.CMEX.eqtype }, { "setbr", 1 }, { "disabled", Model.examsavable } })</div>
|
||||
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Radio", "0:고정문항(모든 응시자들의 시험지가 동일하며, 문제에 등록된 배점 적용);1:임의문항(모든 응시자들의 시험지가 달라짐)", new ViewDataDictionary { { "special", "stringlist" }, { "name", "vm.CMEX.eqtype" }, { "checked", Model.CMEX.eqtype }, { "setbr", 1 }, { "disabled", Model.examsavable } })</div>
|
||||
</div>
|
||||
<div id="examlayerbox" style="@(Model.CMEX.eqtype == 0 ? "display: none;":"")">
|
||||
<div class="line line-dashed line-lg pull-in @(Model.examsavable)"></div><div class="form-group @(Model.examsavable)">
|
||||
|
|
@ -124,33 +149,33 @@
|
|||
<div class="line line-dashed line-lg pull-in @(Model.examsavable)"></div><div class="form-group @(Model.examsavable)">
|
||||
<label class="col-sm-4 col-md-2 control-label">문제/보기섞기</label>
|
||||
<div class="col-sm-8 col-md-10">
|
||||
@Html.HiddenFor(m => m.CMEX.israndq)<label><input type="checkbox" id="chkrq" @(Model.CMEX.israndq == 1 ? "checked" : "") @(Model.examsavable == "" ? "" : "disabled") /><label for="chkrq">문제섞기</label></label>
|
||||
@Html.HiddenFor(m => m.CMEX.israndqi)<label><input type="checkbox" id="chkrqi" @(Model.CMEX.israndqi == 1 ? "checked" : "") @(Model.examsavable == "" ? "" : "disabled") /><label for="chkrqi">보기섞기</label></label>
|
||||
@Html.HiddenFor(m => m.CMEX.israndq, new { @Name = "vm.CMEX.israndq" })<label><input type="checkbox" id="chkrq" @(Model.CMEX.israndq == 1 ? "checked" : "") @(Model.examsavable == "" ? "" : "disabled") /><label for="chkrq">문제섞기</label></label>
|
||||
@Html.HiddenFor(m => m.CMEX.israndqi, new { @Name = "vm.CMEX.israndqi" })<label><input type="checkbox" id="chkrqi" @(Model.CMEX.israndqi == 1 ? "checked" : "") @(Model.examsavable == "" ? "" : "disabled") /><label for="chkrqi">보기섞기</label></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label">순차응시여부</label>
|
||||
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Radio", "0:자유응시 ;1:순차응시(다음문제로 이동 시 이전 문제를 볼 수 없습니다.)", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.isseq" }, { "checked", Model.CMEX.isseq } })<span style="color: red;"></span></div>
|
||||
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Radio", "0:자유응시 ;1:순차응시(다음문제로 이동 시 이전 문제를 볼 수 없습니다.)", new ViewDataDictionary { { "special", "stringlist" }, { "name", "vm.CMEX.isseq" }, { "checked", Model.CMEX.isseq } })<span style="color: red;"></span></div>
|
||||
</div>
|
||||
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label">시험창이탈허용</label>
|
||||
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Radio", "0:허용 ;1:비허용(시험창 이탈시 강제종료)", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.isblur" }, { "checked", Model.CMEX.isblur } })<span style="color: red;">※비허용 시 시험창을 벗어나지 않도록 응시자들에게 공지해주세요.</span></div>
|
||||
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Radio", "0:허용 ;1:비허용(시험창 이탈시 강제종료)", new ViewDataDictionary { { "special", "stringlist" }, { "name", "vm.CMEX.isblur" }, { "checked", Model.CMEX.isblur } })<span style="color: red;">※비허용 시 시험창을 벗어나지 않도록 응시자들에게 공지해주세요.</span></div>
|
||||
</div>
|
||||
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label">임시저장허용</label>
|
||||
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Radio", "1:예;0:아니오", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.isusebackup" }, { "checked", Model.CMEX.isusebackup } }) (응시자가 시험응시화면에서 선택한 답안을 제출 전 저장하는 기능입니다. 동시응시인원이 많을 경우 시험응시사이트가 느려질 수 있습니다.)</div>
|
||||
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Radio", "1:예;0:아니오", new ViewDataDictionary { { "special", "stringlist" }, { "name", "vm.CMEX.isusebackup" }, { "checked", Model.CMEX.isusebackup } }) (응시자가 시험응시화면에서 선택한 답안을 제출 전 저장하는 기능입니다. 동시응시인원이 많을 경우 시험응시사이트가 느려질 수 있습니다.)</div>
|
||||
</div>
|
||||
<div class="line line-dashed line-lg pull-in @(Model.examsavable)"></div><div class="form-group @(Model.examsavable)">
|
||||
<label class="col-sm-4 col-md-2 control-label">이어보기설정</label>
|
||||
<div class="col-sm-8 col-md-10" @Html.Partial("./Partial/Radio", ":무제한;1:1회;2:2회;0:미허용", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.relaylimit" }, { "checked", Model.CMEX.relaylimit }, { "disabled", Model.examsavable } }) (시험응시화면이 닫혔을 경우, 제한시간 내 다시 응시할 수 있는 기준을 설정)</div>
|
||||
<div class="col-sm-8 col-md-10" @Html.Partial("./Partial/Radio", ":무제한;1:1회;2:2회;0:미허용", new ViewDataDictionary { { "special", "stringlist" }, { "name", "vm.CMEX.relaylimit" }, { "checked", Model.CMEX.relaylimit }, { "disabled", Model.examsavable } }) (시험응시화면이 닫혔을 경우, 제한시간 내 다시 응시할 수 있는 기준을 설정)</div>
|
||||
</div>
|
||||
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label">재응시허용</label>
|
||||
<div class="col-sm-8 col-md-10" @Html.Partial("./Partial/Radio", "1:예;0:아니오", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.isreexamable" }, { "checked", Model.CMEX.exno < 1 ? 1 : Model.CMEX.isreexamable } })</div>
|
||||
<div class="col-sm-8 col-md-10" @Html.Partial("./Partial/Radio", "1:예;0:아니오", new ViewDataDictionary { { "special", "stringlist" }, { "name", "vm.CMEX.isreexamable" }, { "checked", Model.CMEX.exno < 1 ? 1 : Model.CMEX.isreexamable } })</div>
|
||||
</div>
|
||||
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label">시험결과공개</label>
|
||||
<div class="col-sm-8 col-md-10" @Html.Partial("./Partial/Radio", "0:비공개;1:공개", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.isresultopen" }, { "checked", Model.CMEX.isresultopen } })</div>
|
||||
<div class="col-sm-8 col-md-10" @Html.Partial("./Partial/Radio", "0:비공개;1:공개", new ViewDataDictionary { { "special", "stringlist" }, { "name", "vm.CMEX.isresultopen" }, { "checked", Model.CMEX.isresultopen } })</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
|
@ -207,12 +232,12 @@
|
|||
<a href="#" class="btn btn-default" onclick="goparent(val('IsSavedForParent') == '1');">닫기</a>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="CMEX.exno" id="datakey" value="@Model.CMEX.exno" />
|
||||
@Html.HiddenFor(m => m.CMEX.cmno)
|
||||
@Html.HiddenFor(m => m.cmno)
|
||||
<input type="hidden" name="vm.CMEX.exno" id="datakey" value="@Model.CMEX.exno" />
|
||||
@Html.HiddenFor(m => m.CMEX.cmno, new { @Name = "vm.CMEX.cmno" })
|
||||
@Html.HiddenFor(m => m.cmno, new { @Name = "vm.cmno" })
|
||||
@Html.HiddenFor(m=>m.IsSavedForParent)
|
||||
<input type="hidden" name="savedata" id="sdata" />
|
||||
<input type="hidden" name="savedata2" id="sdata2" />
|
||||
<input type="hidden" name="vm.savedata" id="sdata" />
|
||||
<input type="hidden" name="vm.savedata2" id="sdata2" />
|
||||
@Html.Partial("./Partial/DForm", Model)
|
||||
</form>
|
||||
</div>
|
||||
|
|
@ -269,7 +294,7 @@
|
|||
var csscc4 = '@(csscc4)';
|
||||
var csscc5 = '@(csscc5)';
|
||||
$(document).ready(function () {
|
||||
$("input[name='CMEX.eqtype']").on("change", function () {
|
||||
$("input[name='vm.CMEX.eqtype']").on("change", function () {
|
||||
setDND(true);
|
||||
});
|
||||
$("#layertable").on("change", "input.int", function (e) {
|
||||
|
|
@ -277,7 +302,7 @@
|
|||
});
|
||||
$("input._hide").prop("readonly", true);
|
||||
setDND(false);
|
||||
if (!$("#CMEX_eqtype0").prop("checked")) {
|
||||
if (!$("#vm_CMEX_eqtype0").prop("checked")) {
|
||||
setqlayer()
|
||||
}
|
||||
$("table#box1").on("change", "input.int.eqtypes", function () {
|
||||
|
|
@ -288,6 +313,22 @@
|
|||
$("#spantotal").text(tot);
|
||||
})
|
||||
focus("CMEX_exname");
|
||||
|
||||
$(document).on("keyup", ".onlyNum2", function () {
|
||||
// 숫자만 남기기
|
||||
this.value = this.value.replace(/\D/g, '');
|
||||
// 두 자리까지만 허용
|
||||
if (this.value.length > 2) {
|
||||
this.value = this.value.slice(0, 2);
|
||||
}
|
||||
// 범위 체크 (00~59)
|
||||
if (this.value != "") {
|
||||
let num = parseInt(this.value, 10);
|
||||
if (num > 59) {
|
||||
this.value = "59"; // 최대값으로 보정
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
function cartesianProductOf() {
|
||||
return _.reduce(arguments, function (a, b) {
|
||||
|
|
@ -346,7 +387,7 @@
|
|||
function setDND(setorgpoint) {
|
||||
$("#examlayerbox").hide();
|
||||
var tot = 0;
|
||||
if ($("#CMEX_eqtype0").prop("checked")) {
|
||||
if ($("#vm_CMEX_eqtype0").prop("checked")) {
|
||||
$("#box1 tr.data td.point input.readnot").prop("readonly", false);
|
||||
if (setorgpoint && $("#box1 tbody tr.data").length > 0) {
|
||||
msg("하단 문항들의 점수를 문제은행 기본점수 또는 최종저장된 점수로 변경합니다.");
|
||||
|
|
@ -396,7 +437,7 @@
|
|||
}
|
||||
function save() {
|
||||
var _isvalid = true;
|
||||
if (!$("#CMEX_eqtype0").prop("checked")) {
|
||||
if (!$("#vm_CMEX_eqtype0").prop("checked")) {
|
||||
//문항 점검
|
||||
$.each($("#layertable tbody tr.data"), function (i, r) {
|
||||
if (getint($(r).find("td.poolcount").text()) < getint($(r).find("td.qcount input.int").val())) {
|
||||
|
|
@ -411,7 +452,7 @@
|
|||
}
|
||||
if (_isvalid) {
|
||||
var _layerqcount = 0;
|
||||
if ($("#CMEX_eqtype1").prop("checked")) {
|
||||
if ($("#vm_CMEX_eqtype1").prop("checked")) {
|
||||
$.each($("#layertable tbody tr td.qcount input.int"), function (i, c) {
|
||||
_layerqcount += getint($(c).val());
|
||||
if (_layerqcount > 0) {
|
||||
|
|
@ -420,14 +461,14 @@
|
|||
});
|
||||
}
|
||||
if (check("CMEX_exname", "", "시험명칭을 입력하세요.")) { }
|
||||
else if ($("#CMEX_eqtype0").prop("checked") && $("#box1 tbody tr").length < 1) { msg("출제할 문제를 추가해주세요."); }
|
||||
else if ($("#CMEX_eqtype1").prop("checked") && _layerqcount < 1) { msg("출제문항수를 입력해주세요."); }
|
||||
else if ($("#vm_CMEX_eqtype0").prop("checked") && $("#box1 tbody tr").length < 1) { msg("출제할 문제를 추가해주세요."); }
|
||||
else if ($("#vm_CMEX_eqtype1").prop("checked") && _layerqcount < 1) { msg("출제문항수를 입력해주세요."); }
|
||||
else if (getDouble(val("CMEX_econdition")) > 100 || getDouble(val("CMEX_econdition")) < 0) { msg("출석률은 0 ~ 100 사이의 값을 입력해주세요."); }
|
||||
else if (_isvalid && confirm("시험을 " + (getint(val("CMEX_exno")) < 1 ? "등록" : "수정") + "하시겠습니까?")) {
|
||||
$("#CMEX_israndq").val($("#chkrq").prop("checked") ? 1 : 0);
|
||||
$("#CMEX_israndqi").val($("#chkrqi").prop("checked") ? 1 : 0);
|
||||
var sd = "";
|
||||
if (!$("#CMEX_eqtype0").prop("checked")) {
|
||||
if (!$("#vm_CMEX_eqtype0").prop("checked")) {
|
||||
$.each($("#layertable tbody tr.data"), function (i, r) {
|
||||
//코드6, qcount, rpoint
|
||||
sd += ";" + $(r).attr("data-ccode") + ":" + $(r).find("td.qcount input.int").val() + ":" + $(r).find("td.rpoint input.int").val();
|
||||
|
|
@ -439,7 +480,7 @@
|
|||
sd += ";" + $(r).attr("data-eqno") + ":" + $(r).find("td.qseq input.int").val() + ":" + $(r).find("td.autocheck input.qno").val() + ":" + $(r).find("td.point input.int").val();
|
||||
});
|
||||
$("#sdata2").val(sd.length > 0 ? sd.substr(1) : sd);
|
||||
cap("/acommon/cmexsave", "mform", "cbsave");
|
||||
cap("/acommon/cmexsave2025", "mform", "cbsave");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -489,7 +530,7 @@
|
|||
$("#intval").val(capResult.obj);
|
||||
}
|
||||
setv("IsSavedForParent", 1);
|
||||
timesubmit();
|
||||
//timesubmit();
|
||||
}
|
||||
else if (capResult.obj == -1) {
|
||||
msg("이미 최종평가가 등록되어 있습니다.");
|
||||
|
|
|
|||
|
|
@ -0,0 +1,344 @@
|
|||
@model NP.Model.VMCM
|
||||
<!-- div[id=container] -->
|
||||
<div style="@(Model.CM.cmno < 1 ? "display: none;" : "")">
|
||||
<ul class="pagination pagination-md" style="margin: 0;">
|
||||
<li><a href="javascript:;" onclick="gotab(0);" data-toggle="tab">기본정보</a></li>
|
||||
<li><a href="javascript:;" onclick="gotab(1);" data-toggle="tab">회차설정</a></li>
|
||||
@if (Model.CM.ismaster == 0) {
|
||||
<li><a href="javascript:;" onclick="gotab(2);" data-toggle="tab">교육일정</a></li>
|
||||
}
|
||||
<li><a href="javascript:;" data-toggle="tab" onclick="gotab(3);">평가설정</a></li>
|
||||
<li class="active"><a href="javascript:;" onclick="gotab(5);" data-toggle="tab">시험설정</a></li>
|
||||
<li><a href="javascript:;" onclick="gotab(4);" data-toggle="tab">메뉴설정</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- // div[id=container] -->
|
||||
<!-- form[id=mform] -->
|
||||
<form id="mform" method="post" class="form-horizontal">
|
||||
<!-- section[class=panel panel-default] -->
|
||||
<section class="panel panel-default" style="border-top: 1px solid #ddd; margin-top: 5px;">
|
||||
<div class="panel-body">
|
||||
@if (Model.CM.ismaster == 1) {
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label">과정분류 | 과정명</label>
|
||||
<div class="col-sm-8 col-md-10">
|
||||
<input type="text" class="form-control" disabled value="[ @(Model.CM.pcgname) | @(Model.CM.cgname) ] @(Model.CM.cname)" />
|
||||
</div>
|
||||
</div>
|
||||
} else {
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label">기수 | 강좌명 | 분반</label>
|
||||
<div class="col-sm-8 col-md-10">
|
||||
<input type="text" class="form-control" disabled value="@(Model.CM.tmname) | @(Model.CM.cname) | @(Model.CM.classno)반" />
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</section>
|
||||
<!-- // section[class=panel panel-default] -->
|
||||
<!-- section[class=panel panel-default] -->
|
||||
<!-- // section[class=panel panel-default] -->
|
||||
|
||||
<br />
|
||||
|
||||
<!-- section[class=panel panel-default] -->
|
||||
<section class="panel panel-default" style="border-top: 1px solid #ddd; margin-top: 5px;">
|
||||
<header class="panel-heading">
|
||||
<strong><i class="fa fa-bars"></i> 시험목록<span></span></strong>
|
||||
</header>
|
||||
|
||||
<div style="padding: 5px 20px; background-color: #fff;">
|
||||
교육종료일
|
||||
@Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval5) ? (DateTime?)null : Convert.ToDateTime(Model.stringval5), new ViewDataDictionary { { "name", "vm.CM.estart" } }) ~
|
||||
@Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval6) ? (DateTime?)null : Convert.ToDateTime(Model.stringval6), new ViewDataDictionary { { "name", "vm.CM.eend" } })
|
||||
|
||||
@Html.Partial("./Partial/Text", Model.addstringval5, Helpers.DicText(new NP.Model.TextDic() { Name = "vm.CM.instructors", Value = Model.addstringval5, PH = "교강사 이름을 입력하세요.", CssClass = "", Style = "width:250px; display:inline-block;" }))
|
||||
<a href="#" class="btn btn-default" onclick="submit()" id="btnsearchtext">검색</a>
|
||||
|
||||
<a href="javascript:;" onclick="add(0, 0);" class="btn btn-s-xs btn-primary">최종평가추가</a>
|
||||
</div>
|
||||
|
||||
<div class="table-responsive" id="excel2">
|
||||
<table class="table table-striped b-t b-light">
|
||||
<thead>
|
||||
<tr>
|
||||
@*<th>평가구분</th>*@
|
||||
<th>평가명</th>
|
||||
<th>집체교육일</th>
|
||||
<th>참여일시</th>
|
||||
<th>참여조건</th>
|
||||
<th>총점</th>
|
||||
<th>삭제</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="data" id="tbody1">
|
||||
@{
|
||||
var estList = Model.ESTs.ToList();
|
||||
foreach (var item in estList) {
|
||||
<tr>
|
||||
<!--<td>@item.estkindname</td>-->
|
||||
<td class="link"><a href="javascript:;" onclick="add(@item.gubun, @item.exno)">@item.exname</a></td>
|
||||
<td>
|
||||
@if(item.cshape == 1) { //오프라인
|
||||
@(item.estart + "~" + item.eend)
|
||||
} else { //온라인
|
||||
@(item.estart)
|
||||
}
|
||||
</td>
|
||||
<td>
|
||||
@if (item.testsdate != null && item.testedate != null) {
|
||||
@(Html.Raw(item.testsdate + " ~ <br/>" + item.testedate))
|
||||
}
|
||||
</td>
|
||||
<td>
|
||||
@if (item.rstype == 1) {
|
||||
@(item.iseq + "회차" + " (" + item.teachername + ")")
|
||||
} else {
|
||||
@:출석 @(item.econdition) 이상
|
||||
}
|
||||
</td>
|
||||
<td>@(item.estkind < 30 ? item.tpoint.ToString() + "점" : "-")</td>
|
||||
<td><a href="javascript:;" class="delete-link" onclick="del(@item.estkind, @item.exno)">[삭제]</a></td>
|
||||
</tr>
|
||||
}
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
<!-- // section[class=panel panel-default] -->
|
||||
|
||||
<input type="hidden" id="cmno" name="cmno" value="@Model.CM.cmno" />
|
||||
<input type="hidden" id="vm.CM.cmno" name="vm.CM.cmno" value="@Model.CM.cmno" />
|
||||
</form>
|
||||
<!-- // form[id=mform] -->
|
||||
|
||||
<form id="dform" method="post" action="/cm/@Model.listviewname">
|
||||
@Html.Partial("./Partial/DForm", Model, new ViewDataDictionary { { "preform", 1 } })
|
||||
</form>
|
||||
|
||||
@section styles {
|
||||
<style type="text/css">
|
||||
input.int {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.delete-link {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
||||
}
|
||||
|
||||
@section scriptsHeader {
|
||||
@Html.Partial("./Partial/ScriptDate")
|
||||
}
|
||||
|
||||
@section scripts {
|
||||
<script>
|
||||
@*/* 문서 로드 시 초기화 */*@
|
||||
$(document).ready(function () {
|
||||
$("#esttable tr td input.int").on("keyup", function (e) {
|
||||
if ($(this).closest("tr").hasClass("auto")) {
|
||||
var tot = 0;
|
||||
$.each($(this).closest("tr").find("td input.int"), function (i, c) {
|
||||
if (!$(c).hasClass("tot")) {
|
||||
tot += getint($(c).val());
|
||||
}
|
||||
});
|
||||
$(this).closest("tr").find("td input.int.tot").val(tot);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@*/* 탭 이동 함수 */*@
|
||||
function gotab(idx, t) {
|
||||
bglayer();
|
||||
t = t || 0;
|
||||
setTimeout(function () {
|
||||
switch (idx) {
|
||||
case 0:
|
||||
$("#dform").attr("action", "/cm/@Model.viewname").submit();
|
||||
break;
|
||||
case 1:
|
||||
$("#dform").attr("action", "/cm/@(Model.viewname)inning").submit();
|
||||
break;
|
||||
case 2:
|
||||
$("#dform").attr("action", "/cm/@(Model.viewname)eduschedule").submit();
|
||||
break;
|
||||
case 3:
|
||||
$("#dform").attr("action", "/cm/@(Model.viewname)est").submit();
|
||||
break;
|
||||
case 4:
|
||||
$("#dform").attr("action", "/cm/@(Model.viewname)menu").submit();
|
||||
break;
|
||||
case 5:
|
||||
$("#dform").attr("action", "/cm/@(Model.viewname)exset").submit();
|
||||
break;
|
||||
}
|
||||
}, t);
|
||||
}
|
||||
|
||||
// 온라인 여부 변수
|
||||
var _isonline = @(Model.CMEV.scdtype == 1 ? "true" : "false");
|
||||
|
||||
@*/* 평가기준 저장 함수 */*@
|
||||
function save() {
|
||||
var isok = true;
|
||||
$("#isoffabs").attr("disabled", false);
|
||||
|
||||
// 총점 검증
|
||||
$.each($("tr td input.tot"), function (i, c) {
|
||||
if (getint($(c).val()) != 100) {
|
||||
isok = false;
|
||||
$(c).focus();
|
||||
msg("평가항목의 " + ($(c).hasClass("tot") ? "합이" : "기준이") + " [100]이 되도록 입력해주세요.");
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
// 수료기준 검증
|
||||
if (isok) {
|
||||
$.each($("tr#trestcut td input.tot"), function (i, c) {
|
||||
if (getint($(c).val()) != 100) {
|
||||
isok = false;
|
||||
$(c).focus();
|
||||
msg("평가항목의 기준이 [100]이 되도록 입력해주세요.");
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 비환급 점수 검증
|
||||
if (isok) {
|
||||
$.each($("tr#trestrfd td input.int"), function (i, c) {
|
||||
if (getint($(c).val()) > 100) {
|
||||
isok = false;
|
||||
$(c).focus();
|
||||
msg("평가항목의 " + ($(c).hasClass("tot") ? "합이" : "기준이") + " 100 이하가 되도록 입력해주세요.");
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 비환급 수료기준 검증
|
||||
if (isok) {
|
||||
$.each($("tr#trestcutrfd td input.int"), function (i, c) {
|
||||
if (getint($(c).val()) > 100) {
|
||||
isok = false;
|
||||
$(c).focus();
|
||||
msg("평가항목의 기준이 100 이하가 되도록 입력해주세요.");
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 체크박스 값 설정
|
||||
var chked = $("#isoffabs").is(':checked');
|
||||
setv("isoffabs", chked ? 1 : 0);
|
||||
|
||||
// 비환급 값을 환급에 적용
|
||||
$.each($("#trest input"), function () {
|
||||
$("#trestrfd input[name='" + this.name + "rfd']").val(this.value);
|
||||
});
|
||||
$.each($("#trestcut input"), function () {
|
||||
$("#trestcutrfd input[name='" + this.name + "rfd']").val(this.value);
|
||||
});
|
||||
|
||||
if (isok && confirm("평가기준/비율을 저장하시겠습니까?")) {
|
||||
cap("/acommon/cmevsave", "mform", "cbsave");
|
||||
}
|
||||
}
|
||||
|
||||
@*/* 저장 콜백 함수 */*@
|
||||
function cbsave() {
|
||||
$("#isoffabs").attr("disabled", _isonline);
|
||||
if (capResult.code == 1000) {
|
||||
msg("평가기준/비율을 저장했습니다.", null, true, null, true);
|
||||
gotab(3, 500);
|
||||
} else {
|
||||
msgadmin();
|
||||
}
|
||||
}
|
||||
|
||||
@*/* 페이지 새로고침 함수 */*@
|
||||
function pagerefresh() {
|
||||
gotab(5, 500);
|
||||
}
|
||||
|
||||
@*/* 평가 추가 함수 */*@
|
||||
function add(idx, no) {
|
||||
if (idx == 0) {
|
||||
showramemainlayer("/cm/cmregex?cmno=@(Model.CM.cmno)&intval=" + no);
|
||||
} else if (idx == 1) {
|
||||
showramemainlayer("/cm/cmregsd?cmno=@(Model.CM.cmno)&intval=" + no);
|
||||
} else if (idx == 2) {
|
||||
showramemainlayer("/cm/cmregrs?cmno=@(Model.CM.cmno)&intval=" + no);
|
||||
}
|
||||
}
|
||||
|
||||
@*/* 평가 삭제 함수 */*@
|
||||
function del(extype, no) {
|
||||
if (confirm("삭제하시겠습니까?")) {
|
||||
capp("/acommon/estdel", { extype: extype, no: no }, "cbdel");
|
||||
}
|
||||
}
|
||||
|
||||
@*/* 삭제 콜백 함수 */*@
|
||||
function cbdel() {
|
||||
if (capResult.code == 1000) {
|
||||
msg("삭제했습니다.", null, true, null, true);
|
||||
gotab(3, 500);
|
||||
} else {
|
||||
msg("수강데이터가 생성되어 삭제할 수 없습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
function submit() {
|
||||
$("#cmno").val("vm.CM.");
|
||||
capp("/acommon/ExamList", $("#mform").serialize(), "examList");
|
||||
}
|
||||
|
||||
function examList() {
|
||||
if (capResult.code == 1000) {
|
||||
let html = "";
|
||||
|
||||
$.each($(capResult.obj), function (i, item) {
|
||||
let cShape = "", rsType = "", testDate = "", estKind = "";
|
||||
|
||||
if (item.cshape == 1) { //오프라인
|
||||
cShape = item.estart + "~" + item.eend;
|
||||
} else { //온라인
|
||||
cShape = item.estart;
|
||||
}
|
||||
|
||||
if (item.rstype == 1) {
|
||||
rsType = item.iseq + " 회차 (" + item.teachername + ")";
|
||||
} else {
|
||||
rsType = " 출석 " + item.econdition + " 이상";
|
||||
}
|
||||
|
||||
if (item.testsdate != null && item.testedate != null) {
|
||||
testDate = item.testsdate + " ~<br />" + item.testedate;
|
||||
}
|
||||
|
||||
if (item.estkind < 30) {
|
||||
estKind = item.tpoint + "점";
|
||||
} else {
|
||||
estKind = "-";
|
||||
}
|
||||
|
||||
html += "<tr>";
|
||||
html += " <td class=\"link\"><a href=\"javascript:;\" onclick=\"add(" + item.gubun + ", " + item.exno + ")\">" + item.exname + "</a></td>";
|
||||
html += " <td>" + cShape + "</td>";
|
||||
html += " <td>" + testDate + "</td>";
|
||||
html += " <td>" + rsType + "</td>";
|
||||
html += " <td>" + estKind +"</td>"
|
||||
html += " <td><a href=\"javascript:;\" class=\"delete-link\" onclick=\"del(" + item.estkind + ", " + item.exno + ")\">[삭제]</a></td>";
|
||||
html += "</tr>";
|
||||
});
|
||||
|
||||
$("#tbody1").html(html);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
}
|
||||
|
|
@ -12,6 +12,7 @@
|
|||
@if (!ViewBag.IsSubAdmin96)
|
||||
{
|
||||
<li class=""><a href="#" onclick="gotab(3);" data-toggle="tab">평가설정</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(5);" data-toggle="tab">시험설정</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(4);" data-toggle="tab">메뉴설정</a></li>
|
||||
}
|
||||
</ul>
|
||||
|
|
@ -448,6 +449,7 @@
|
|||
else if (idx == 2) { $("#dform").attr("action", "/cm/@(Model.viewname)eduschedule").submit(); }
|
||||
else if (idx == 3) { $("#dform").attr("action", "/cm/@(Model.viewname)est").submit(); }
|
||||
else if (idx == 4) { $("#dform").attr("action", "/cm/@(Model.viewname)menu").submit(); }
|
||||
else if (idx == 5) { $("#dform").attr("action", "/cm/@(Model.viewname)exset").submit(); }
|
||||
}, t);
|
||||
}
|
||||
function regbatch() {
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
<li class=""><a href="#" onclick="gotab(2);" data-toggle="tab">교육일정</a></li>
|
||||
}
|
||||
<li class=""><a href="#" onclick="gotab(3);" data-toggle="tab">평가설정</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(5);" data-toggle="tab">시험설정</a></li>
|
||||
<li class="active"><a href="#" data-toggle="tab">메뉴설정</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -85,6 +86,7 @@
|
|||
else if (idx == 2) { $("#dform").attr("action", "/cm/@(Model.viewname)eduschedule").submit(); }
|
||||
else if (idx == 3) { $("#dform").attr("action", "/cm/@(Model.viewname)est").submit(); }
|
||||
else if (idx == 4) { $("#dform").attr("action", "/cm/@(Model.viewname)menu").submit(); }
|
||||
else if (idx == 5) { $("#dform").attr("action", "/cm/@(Model.viewname)exset").submit(); }
|
||||
}, t);
|
||||
}
|
||||
function save() {
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@
|
|||
@Html.Raw(Model.viewidxname == "강좌" ? "<td>" + item.pcmno + "</td>" : "")
|
||||
<td>@item.tmname</td>
|
||||
<td>@item.pcgname</td>
|
||||
<td>@item.cgname</td>
|
||||
<td>@item.cgname)</td>
|
||||
<td>@item.cshapename</td>
|
||||
@if (!ViewBag.IsSubAdmin96)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@
|
|||
<li class="active"><a href="#" data-toggle="tab">학습콘텐츠</a></li>
|
||||
@if (!ViewBag.IsSubAdmin96)
|
||||
{
|
||||
<li class=""><a href="#" onclick="gotab(0);" data-toggle="tab">그룹코드관리</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(2);" data-toggle="tab">문제</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(0);" data-toggle="tab">그룹코드관리</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(3);" data-toggle="tab">설문지</a></li>
|
||||
}
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@
|
|||
@Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc3"), new ViewDataDictionary { { "name", "StringVal5" }, { "selected", Model.stringval5 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc3").First().cgroupname } })
|
||||
@Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc4"), new ViewDataDictionary { { "name", "StringVal6" }, { "selected", Model.stringval6 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc4").First().cgroupname } })
|
||||
@Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc5"), new ViewDataDictionary { { "name", "StringVal7" }, { "selected", Model.stringval7 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc5").First().cgroupname } })
|
||||
@Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc6"), new ViewDataDictionary { { "name", "StringVal14" }, { "selected", Model.stringval14 }, { "cssclass", "searchcon " }, { "df", "교강사" } })
|
||||
@Html.TextBox("stringval15", Model.stringval15, new { @class = "form-control", @style = "width: 120px;" })
|
||||
@Html.Partial("./Partial/Button", new NP.Model.Button() { Special = "search" })
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -23,6 +25,7 @@
|
|||
<colgroup>
|
||||
<col style="width: 30px;" />
|
||||
<col style="width: 120px;" />
|
||||
<col style="width: 100px;" />
|
||||
<col style="width: 50px;" />
|
||||
<col style="width: 50px;" />
|
||||
<col style="width: 70px;" />
|
||||
|
|
@ -38,6 +41,7 @@
|
|||
<tr>
|
||||
<th><input type="checkbox" onclick="javascript: checkall('box1', this);" /></th>
|
||||
<th>과정</th>
|
||||
<th>교강사</th>
|
||||
<th>문제유형</th>
|
||||
<th>@Model.ComGroups.Where(w => w.cgroup == "ccdiff").First().cgroupname</th>
|
||||
<th>@Model.ComGroups.Where(w => w.cgroup == "cc1").First().cgroupname</th>
|
||||
|
|
@ -56,6 +60,7 @@
|
|||
<tr class="data center" data-qno="@item.qno" style="font-size:11px;">
|
||||
<td><input type="checkbox" class="autocheck qno" value="@string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}", item.qno, item.atype, item.qdiff, item.cc1, item.cc2, item.cc3, item.cc4, item.cc5, item.dpoint)" /></td>
|
||||
<td class="text-left" data-val="@item.atype">@item.cname</td>
|
||||
<td class="text-center">@item.instructors_name</td>
|
||||
<td class="atype" data-val="@item.atype">@item.atypename</td>
|
||||
<td class="qdiff" data-val="@item.qdiff">@item.qdiffname</td>
|
||||
<td class="qp1" data-val="@item.cc1">@item.ccname1</td>
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@
|
|||
<div>
|
||||
<ul class="pagination pagination-md" style="margin: 0;">
|
||||
<li class=""><a href="#" onclick="gotab(1);" data-toggle="tab">학습콘텐츠</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(0);" data-toggle="tab">그룹코드관리</a></li>
|
||||
<li class="active"><a href="#" data-toggle="tab">문제</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(0);" data-toggle="tab">그룹코드관리</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(3);" data-toggle="tab">설문지</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -31,6 +31,22 @@
|
|||
<label class="col-sm-4 col-md-2 control-label">과정</label>
|
||||
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Select", Model.CMs, new ViewDataDictionary { { "special", "reg" }, { "name", "Question.cmno" }, { "selected", Model.Question.cmno }, { "df", ":-과정선택" } })</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 col-md-2 control-label">교강사</label>
|
||||
<div class="col-sm-8 col-md-10">
|
||||
<a href="#" class="btn btn-info btn-find btn-xs data-find data-find-float" onclick="findusershow()"><i class="fa fa-search"></i></a>
|
||||
<ul class="selectgroupul" id="cmprdatabox">
|
||||
@if (!string.IsNullOrWhiteSpace(Model.Question.instructors))
|
||||
{
|
||||
<li class="instructor">[@(Model.Question.usertype == 11 ? "강사" : "운영자")]@Model.Question.instructors_name<a href="#" class="adel instructorsDel">X</a></li>
|
||||
}
|
||||
</ul>
|
||||
|
||||
@Html.HiddenFor(m => m.Question.instructors)
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (isqdiff)
|
||||
{<div class="line line-dashed line-lg pull-in"></div><div class="form-group"><label class="col-sm-4 col-md-2 control-label" id="lblqdiff">@qdiff.First().cgroupname</label><div class="col-sm-8 col-md-10">@Html.Radio(new NP.Model.InputRadio() { Name = "qdiff", Selected = Model.Question.qdiff.ToString(), ComCodes = Model.ComCodes.Where(w => w.cgroup == "ccdiff").ToList(), ChangeId = "Question_qdiff" })</div></div>}
|
||||
@if (isqt1)
|
||||
|
|
@ -139,6 +155,9 @@
|
|||
}
|
||||
</div>
|
||||
</div>
|
||||
@Html.Partial("./Partial/UserBoxSelect", "bindUser;강사/담당자 선택;999_1", new ViewDataDictionary { { "assigns", Model.Assigns }, { "userauths", Model.userauths } })
|
||||
|
||||
|
||||
@section styles{
|
||||
@Html.Partial("./Partial/SummerNoteStyle")
|
||||
<style type="text/css">
|
||||
|
|
@ -273,6 +292,11 @@
|
|||
if ('@Model.Question.atype' == '0') {
|
||||
$(".atype1box").hide();
|
||||
}
|
||||
|
||||
$(document).on("click", ".instructorsDel", function () {
|
||||
$(this).parent().remove();
|
||||
$("#Question_instructors").val("");
|
||||
});
|
||||
});
|
||||
var saveandnew = false;
|
||||
var imgids = [];
|
||||
|
|
@ -442,5 +466,26 @@
|
|||
else if (idx == 3) { location.href = "/cm/rs"; }
|
||||
}, t);
|
||||
}
|
||||
|
||||
function bindUser(ui) {
|
||||
$.each($(ui.split(';')), function (i, d) {
|
||||
if ($("#Question_instructors").val() != "") {
|
||||
if (d.split(':')[7] == $("#Question_instructors").val()) {
|
||||
alert("동일한 교강사입니다.");
|
||||
return;
|
||||
} else {
|
||||
if (!confirm("이미 등록된 교강사가 있습니다.\n선택한 교강사로 변경 하시겠습니까?")) {
|
||||
return;
|
||||
}
|
||||
$(".instructor").remove();
|
||||
}
|
||||
}
|
||||
|
||||
//if ($("#cmprdatabox li.no" + d.split(':')[0]).length < 1) {
|
||||
$("#cmprdatabox").append("<li class=\"instructor\">[" + (d.split(':')[1] == 11 ? "강사" : "운영자") + "]" + d.split(':')[2] + "<a href=\"#\" class=\"adel instructorsDel\">x</a></li>")
|
||||
$("#Question_instructors").val(d.split(':')[7]);
|
||||
//}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
}
|
||||
|
|
@ -16,8 +16,8 @@
|
|||
<div>
|
||||
<ul class="pagination pagination-md" style="margin: 0;">
|
||||
<li class=""><a href="#" onclick="gotab(1);" data-toggle="tab">학습콘텐츠</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(0);" data-toggle="tab">그룹코드관리</a></li>
|
||||
<li class="active"><a href="#" data-toggle="tab">문제</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(0);" data-toggle="tab">그룹코드관리</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(3);" data-toggle="tab">설문지</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -42,7 +42,7 @@
|
|||
{@Html.Partial("./Partial/Select", qt5, new ViewDataDictionary { { "name", "stringval7" }, { "selected", Model.stringval7 }, { "cssclass", "searchcon " }, { "df", ":" + qt5.First().cgroupname } })}
|
||||
<br /><br />
|
||||
@Html.Partial("./Partial/Select", Helpers.ValueText(":사용여부;1:사용;0:미사용"), Helpers.DicSelect(new NP.Model.SelectDic() { Name = "stringval8", Selected = Model.stringval8 }))
|
||||
@Html.Partial("./Partial/Select", Helpers.ValueText("qtextstring:문제명;qno:문제번호"), Helpers.DicSelect(new NP.Model.SelectDic() { Name = "searchtype", Selected = Model.searchtype }))
|
||||
@Html.Partial("./Partial/Select", Helpers.ValueText("qtextstring:문제명;qno:문제번호;instructors:교강사"), Helpers.DicSelect(new NP.Model.SelectDic() { Name = "searchtype", Selected = Model.searchtype }))
|
||||
@Html.Partial("./Partial/Text", Model.searchtext, Helpers.DicText(new NP.Model.TextDic() { Name = "searchtext", Value = Model.searchtext }))
|
||||
@Html.Partial("./Partial/Button", new NP.Model.Button() { Special = "search" })
|
||||
</div>
|
||||
|
|
@ -55,6 +55,7 @@
|
|||
<a href="~/Content/file/questions.xlsx" class="btn btn-s-xs btn-default">일괄등록양식다운로드</a>
|
||||
<a href="#" onclick="javascript:reg2(0);" class="btn btn-s-xs btn-info">개별등록</a>
|
||||
<a href="#" onclick="javascript:reg(-1);" class="btn btn-s-xs btn-info">일괄등록</a>
|
||||
<a href="~/Content/file/questions.xlsx" class="btn btn-info">일괄등록양식 다운로드</a>
|
||||
</div>
|
||||
<section class="panel panel-default">
|
||||
<header class="panel-heading">문제목록</header>
|
||||
|
|
@ -74,6 +75,7 @@
|
|||
@Html.Raw(isqt5 ? string.Format("<th>{0}</th>", qt5.First().cgroupname) : "")
|
||||
<th>유형</th>
|
||||
<th>문제명</th>
|
||||
<th>교강사</th>
|
||||
<th>수정일</th>
|
||||
<th>사용여부</th>
|
||||
</tr>
|
||||
|
|
@ -94,6 +96,7 @@
|
|||
@Html.Raw(isqt5 ? string.Format("<td>{0}</td>", item.ccname5) : "")
|
||||
<td>@item.atypename</td>
|
||||
<td class="link" style="max-width: 300px; overflow: hidden;"><a class="link" href="#" onclick="reg2(@item.qno);" style="white-space: nowrap; max-width: 300px; overflow: hidden;">@System.Text.RegularExpressions.Regex.Replace((item.qtextstring ?? "").Length < 30 ? (item.qtextstring ?? "") : (item.qtextstring ?? "").Substring(0, 30), @"[<][a-z|A-Z|/](.|)*?[>]", "")</a></td>
|
||||
<td>@item.instructors_name</td>
|
||||
<td>@item.udtymd2</td>
|
||||
<td>@item.isuseyn</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
<div>
|
||||
<ul class="pagination pagination-md" style="margin: 0;">
|
||||
<li class=""><a href="#" onclick="gotab(1);" data-toggle="tab">학습콘텐츠</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(0);" data-toggle="tab">그룹코드관리</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(2);" data-toggle="tab">문제</a></li>
|
||||
<li class=""><a href="#" onclick="gotab(0);" data-toggle="tab">그룹코드관리</a></li>
|
||||
<li class="active"><a href="#" data-toggle="tab">설문지</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -545,7 +545,7 @@
|
|||
select a.*
|
||||
from (
|
||||
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.sseq
|
||||
,a.cmisno value,date_format(a.estart,'%Y-%m-%d') text, a.comment
|
||||
,a.cmisno value,date_format(a.estart,'%Y-%m-%d') text, a.comment, a.instructors
|
||||
,b.scdtype
|
||||
,case when b.scdtype =1 then '온라인' else c.cname end studyplacename
|
||||
,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =1 and z.ischanged=0) regmem
|
||||
|
|
@ -583,14 +583,15 @@
|
|||
</insert>
|
||||
<insert id="cm.cminningscd.in" parameterClass="cminningscd">
|
||||
SELECT * FROM (SELECT LAST_INSERT_ID(0) col1) a WHERE col1 > 0;
|
||||
insert into cminningscd(cmino,estart,eend,quota,studyplace,sseq,comment,<include refid="sql.inc"></include>)
|
||||
values(#cmino#,#estart#,#eend#,#quota#,#studyplace#,#sseq#,#comment#,<include refid="sql.inv"></include>)
|
||||
insert into cminningscd(cmino,estart,eend,quota,studyplace,sseq,comment,instructors,<include refid="sql.inc"></include>)
|
||||
values(#cmino#,#estart#,#eend#,#quota#,#studyplace#,#sseq#,#comment#,#instructors#,<include refid="sql.inv"></include>)
|
||||
<selectKey type="post" property="cmisno" resultClass="long">SELECT last_insert_id()</selectKey>
|
||||
</insert>
|
||||
<update id="cm.cminningscd.up" parameterClass="cminningscd">
|
||||
update cminningscd a
|
||||
set <include refid="sql.up"></include>,cmino=#cmino#,estart=#estart#,eend=#eend#,quota=#quota#
|
||||
,studyplace=#studyplace#,sseq=#sseq#,comment=#comment#
|
||||
,instructors=#instructors#
|
||||
where a.cmisno=#cmisno#
|
||||
</update>
|
||||
<update id="cm.cminnings.up" parameterClass="cminning">
|
||||
|
|
@ -754,6 +755,9 @@
|
|||
select a.*
|
||||
from (
|
||||
select a.exno,a.cmno,a.extype,a.exname,a.edesc,a.etime,a.econdition,a.evtype,a.eqtype,a.israndq,a.israndqi,a.qcount,a.isblur,a.tpoint,a.relaylimit,a.isusebackup,a.isseq,a.isresultopen,a.isreexamable,a.cdt,a.udt
|
||||
,a.cmisno <!--//교육일정코드-->
|
||||
,DATE_FORMAT(a.testsdate, '%Y-%m-%d %H:%i') AS testsdate <!--//시헝응시 시작일-->
|
||||
,DATE_FORMAT(a.testedate, '%Y-%m-%d %H:%i') AS testedate <!--//시헝응시 종료일-->
|
||||
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.cdt</isNull>) rno
|
||||
,count(a.cno) over() pagetotalcount
|
||||
from cmex a
|
||||
|
|
@ -862,6 +866,9 @@
|
|||
,isseq =#isseq#
|
||||
,isreexamable =#isreexamable#
|
||||
,isresultopen=#isresultopen#
|
||||
,cmisno = #cmisno#
|
||||
,testsdate = #testsdate#
|
||||
,testedate = #testedate#
|
||||
where exno=#exno#
|
||||
</update>
|
||||
|
||||
|
|
@ -920,11 +927,14 @@
|
|||
,count(ued.exno) qcount
|
||||
,sum(case when ued.atext is not null then 1 else 0 end) ecount
|
||||
,case when sum(case when ued.atext is not null then 1 else 0 end) < 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
|
||||
,a.instructors
|
||||
,u.usertype
|
||||
,u.username AS instructors_name
|
||||
from (
|
||||
select a.*,b.cname
|
||||
from (
|
||||
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5, a.cdt,a.udt
|
||||
,a.ispassspace,a.isignorecase
|
||||
,a.ispassspace,a.isignorecase,a.instructors
|
||||
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
|
||||
,<include refid="sql.prc"></include>
|
||||
from question a
|
||||
|
|
@ -946,6 +956,7 @@
|
|||
<isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull>
|
||||
<isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull>
|
||||
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
|
||||
<isNotNull property="instructors" prepend="and">a.instructors like concat('%', #instructors#, '%')</isNotNull>
|
||||
</dynamic>
|
||||
) a
|
||||
left outer join cm b on b.cmno=a.cmno
|
||||
|
|
@ -953,7 +964,9 @@
|
|||
) a
|
||||
left outer join cmexq eq on eq.qno=a.qno
|
||||
left outer join lectexq ued on ued.eqno=eq.eqno
|
||||
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase
|
||||
<!--LEFT OUTER JOIN users u ON FIND_IN_SET(u.userid, a.instructors) > 0-->
|
||||
left outer join users u on u.userid = a.instructors
|
||||
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase,a.instructors
|
||||
order by a.RNO
|
||||
</select>
|
||||
<select id="cm.questions2" parameterClass="hashtable" resultClass="question">
|
||||
|
|
@ -962,10 +975,13 @@
|
|||
,count(ued.exno) qcount
|
||||
,sum(case when ued.atext is not null then 1 else 0 end) ecount
|
||||
,case when sum(case when ued.atext is not null then 1 else 0 end) < 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
|
||||
,a.instructors
|
||||
,u.usertype
|
||||
,u.username AS instructors_name
|
||||
from (
|
||||
select a.*
|
||||
from (
|
||||
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt
|
||||
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt,a.instructors
|
||||
,b.cname
|
||||
, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5
|
||||
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
|
||||
|
|
@ -999,18 +1015,20 @@
|
|||
) a
|
||||
left outer join cmexq eq on eq.qno=a.qno
|
||||
left outer join lectexq ued on ued.eqno=eq.eqno
|
||||
left outer join users u on u.userid = a.instructors
|
||||
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc
|
||||
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt
|
||||
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt,a.instructors
|
||||
<dynamic prepend="having">
|
||||
<isNotNull property="qcount" prepend="and">count(ued.examno)=#qcount#</isNotNull>
|
||||
<isNotNull property="ecount" prepend="and">sum(case when ued.atext is not null then 1 else 0 end)=#ecount#</isNotNull>
|
||||
<isNotNull property="rrate" prepend="and">case when sum(case when ued.atext is not null then 1 else 0 end) < 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end=#rrate#</isNotNull>
|
||||
<isNotNull property="instuctorName" prepend="and">u.username like concat('%', #instuctorName#, '%')</isNotNull>
|
||||
</dynamic>
|
||||
order by a.rno
|
||||
</select>
|
||||
<insert id="cm.question.in" parameterClass="question">
|
||||
INSERT INTO question (cmno, qdiff, cc1, cc2, cc3, cc4, cc5, isuse, atype, dpoint, qtext, qtextstring, qdesc, rightcount,ispassspace,isignorecase, <include refid="sql.inc"></include>)
|
||||
values (#cmno#, #qdiff#, #cc1#, #cc2#, #cc3#, #cc4#, #cc5#, #isuse#, #atype#, #dpoint#, #qtext#, #qtextstring#, #qdesc#, #rightcount#,#ispassspace#,#isignorecase#, <include refid="sql.inv"></include>);
|
||||
INSERT INTO question (cmno, qdiff, cc1, cc2, cc3, cc4, cc5, isuse, atype, dpoint, qtext, qtextstring, qdesc, rightcount,ispassspace,isignorecase, <include refid="sql.inc"></include>, instructors)
|
||||
values (#cmno#, #qdiff#, #cc1#, #cc2#, #cc3#, #cc4#, #cc5#, #isuse#, #atype#, #dpoint#, #qtext#, #qtextstring#, #qdesc#, #rightcount#,#ispassspace#,#isignorecase#, <include refid="sql.inv"></include>, #instructors#);
|
||||
<selectKey type="post" property="qno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
|
||||
</insert>
|
||||
<update id="cm.questionitem.in" parameterClass="question">
|
||||
|
|
@ -1105,7 +1123,7 @@
|
|||
<update id="cm.question.up" parameterClass="question">
|
||||
UPDATE question SET <include refid="sql.up"></include>
|
||||
,cmno=#cmno#,qdiff=#qdiff#,cc1=#cc1#,cc2=#cc2#,cc3=#cc3#,cc4=#cc4#,cc5=#cc5#,isuse=#isuse#,dpoint=#dpoint#,qtext=#qtext#,qtextstring=#qtextstring#,qdesc=#qdesc#,rightcount=#rightcount#
|
||||
,ispassspace=#ispassspace#,isignorecase=#isignorecase#
|
||||
,ispassspace=#ispassspace#,isignorecase=#isignorecase#,instructors=#instructors#
|
||||
where qno=#qno#
|
||||
</update>
|
||||
<update id="cm.question.uptop" parameterClass="question">
|
||||
|
|
@ -2232,5 +2250,82 @@
|
|||
<isNotNull property="year">and year(a.sstime)=#year#</isNotNull>
|
||||
order by a.sstime,a.setime
|
||||
</select>
|
||||
|
||||
<select id="cm.cminningscds.applyedu.my" parameterClass="hashtable" resultClass="cminningscd">
|
||||
select
|
||||
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment
|
||||
,a.studyplace, a.studyplacename,a.remainPeople
|
||||
,a.isselected, a.cmno,a.pcmno,a.cgcode
|
||||
<!--211220.통합테스트목록(644) 이미지난 교육종료일 변경불가-->
|
||||
,case WHEN a.estart > date_add(date_format(now(), '%Y-%m-%d 00:00:00'), interval - 1 second)
|
||||
<!--20220803
|
||||
or a.remainPeople <= 0 -->
|
||||
then 0 else 1 end isend
|
||||
from
|
||||
(
|
||||
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth
|
||||
,(a.quota - (select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status in (1,2) and z.ischanged=0)) remainPeople
|
||||
,a.studyplace, e.cname studyplacename
|
||||
,case when f.cmisno = a.cmisno then 1 else 0 end isselected, d.cmno,d.pcmno,cg.cgcode
|
||||
,a.comment
|
||||
,f.sdate
|
||||
from cminningscd a
|
||||
left outer join cminning c on c.cmino = a.cmino
|
||||
left outer join cm d on d.cmno = c.cmno
|
||||
left outer join cg cg on d.cgno = cg.cgno
|
||||
left outer join comcode e on e.ccode = a.studyplace
|
||||
left outer join lect f on f.lectno = #lectno#
|
||||
where DATE_ADD(f.sdate, INTERVAL 1 YEAR) > a.estart
|
||||
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
|
||||
)a
|
||||
WHERE a.estart > date_add(date_format(a.sdate, '%Y-%m-%d 00:00:00'), interval + 2 DAY)
|
||||
order by isend desc,a.estart
|
||||
</select>
|
||||
|
||||
<select id="cm.exlist" parameterClass="hashtable" resultClass="est">
|
||||
select 0 gubun,case when a.extype = 0 then 1 else 2 end estkind
|
||||
,a.exno,a.cmno,a.extype,a.exname,a.edesc,a.etime,a.econdition,a.evtype,a.eqtype,a.israndq,a.israndqi,a.qcount,a.isblur,a.tpoint,a.relaylimit,a.isusebackup,a.isseq
|
||||
,DATE_FORMAT(a.testsdate, '%Y-%m-%d %H:%i') AS testsdate
|
||||
,DATE_FORMAT(a.testedate, '%Y-%m-%d %H:%i') AS testedate
|
||||
,null sdno,null sdtype,null sdname,null sddesc,null sdcondition
|
||||
,null rsno,null rscno,null rstype,null rsname,null rscondition
|
||||
, row_number() over(partition by a.extype order by a.cdt) rno
|
||||
,null as iseq,null as teachername
|
||||
,b.cshape
|
||||
,c.cmisno
|
||||
,c.estart
|
||||
,c.eend
|
||||
,c.instructors
|
||||
from cmex a
|
||||
left join cm b ON b.cmno = a.cmno
|
||||
left join cminningscd c on c.cmisno = a.cmisno
|
||||
where a.cmno=#cmno# and a.isdel=0
|
||||
<isNotNull property="estart" prepend="and">c.estart >= concat(#estart#, ' 00:00:00')</isNotNull>
|
||||
<isNotNull property="eend" prepend="and">c.eend <= concat(#eend#, ' 23:59:59')</isNotNull>
|
||||
<isNotNull property="instructors" prepend="and">c.instructors like concat('%',#instructors#,'%')</isNotNull>
|
||||
</select>
|
||||
|
||||
<select id="cm.est2" parameterClass="int" resultClass="est">
|
||||
select 1 gubun,case when a.sdtype = 0 then 11 else 21 end estkind
|
||||
,a.sdno exno,a.cmno,a.sdtype extype,a.sdname exname,a.sddesc edesc,null etime,a.sdcondition econdition,null evtype,null eqtype,null israndq,null israndqi,null qcount,null isblur,a.tpoint,null relaylimit,null isusebackup,null isseq
|
||||
,a.sdno,a.sdtype,a.sdname,a.sddesc,a.sdcondition
|
||||
,null rsno,null rscno,null rstype,null rsname,null rscondition
|
||||
, row_number() over(partition by a.sdtype order by a.cdt) rno
|
||||
,null as iseq,null as teachername
|
||||
from cmsd a
|
||||
where a.cmno=#cmno# and a.isdel=0
|
||||
union all
|
||||
select 2 gubun,case when a.rstype = 0 then 32 else 31 end estkind
|
||||
,a.rsno exno,a.cmno,a.rstype extype,a.rsname exname,null edesc,null etime,a.rscondition econdition,null evtype,null eqtype,null israndq,null israndqi,null qcount,null isblur,null tpoint,null relaylimit,null isusebackup,null isseq
|
||||
,null sdno,null sdtype,null sdname,null sddesc,null sdcondition
|
||||
,a.rsno,a.rscno,a.rstype,a.rsname,a.rscondition
|
||||
, row_number() over(partition by a.rstype order by a.cdt) rno
|
||||
,b.iseq,c.username as teachername
|
||||
from cmrs a
|
||||
left outer join cminning b on a.cmino = b.cmino
|
||||
left outer join users c on b.userno = c.userno
|
||||
where a.cmno=#cmno# and a.isdel=0
|
||||
order by rsno<!--estkind,rno-->
|
||||
</select>
|
||||
</statements>
|
||||
</sqlMap>
|
||||
|
|
@ -2887,7 +2887,7 @@
|
|||
ON b.payno = e.PAYNO
|
||||
INNER JOIN pplog f
|
||||
ON b.USERNO = e.USERNO AND b.CMNO = f.CMNO AND e.PPLNO = f.PPLNO
|
||||
WHERE b.STATUS = 1
|
||||
WHERE b.STATUS IN(1, 2, 3)
|
||||
AND (e.PSTATUS = 1 OR e.PSTATUS = 22)
|
||||
AND b.USERNO = #uno#;
|
||||
]]>
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1578,7 +1578,8 @@ namespace NP.Base.Controllers
|
|||
}
|
||||
//문제코드 확인
|
||||
var cc = Dao.Get<ComCode>("sys.comcode.list", new Hashtable() { { "all", 1 } });
|
||||
var qds = data.Where(w => !string.IsNullOrEmpty(w.qdiffname.Trim())).ToList().Select(s => s.qdiffname).Distinct();
|
||||
var instructors = data.Where(w => !string.IsNullOrEmpty(w.instructors.Trim())).ToList().Select(s => s.instructors).Distinct(); //교강사
|
||||
var qds = data.Where(w => !string.IsNullOrEmpty(w.qdiffname.Trim())).ToList().Select(s => s.qdiffname).Distinct(); //난이도
|
||||
var qp1 = data.Where(w => !string.IsNullOrEmpty(w.ccname1.Trim())).ToList().Select(s => s.ccname1).Distinct();
|
||||
var qp2 = data.Where(w => !string.IsNullOrEmpty(w.ccname2.Trim())).ToList().Select(s => s.ccname2).Distinct();
|
||||
var qp3 = data.Where(w => !string.IsNullOrEmpty(w.ccname3.Trim())).ToList().Select(s => s.ccname3).Distinct();
|
||||
|
|
|
|||
|
|
@ -505,6 +505,10 @@ namespace NP.Base.Controllers
|
|||
vm.CMEX.qcount = vm.CMEX.cmexqs.Count();
|
||||
}
|
||||
}
|
||||
//2025-12-24 / KHJ / 시험응시 시작일/종료일 모델 바인딩
|
||||
vm.CMEX.testsdate = vm.stringval18 + " " + vm.stringval19 + ":" + vm.stringval20;
|
||||
vm.CMEX.testedate = vm.stringval21 + " " + vm.stringval22 + ":" + vm.stringval23;
|
||||
|
||||
return JsonOK(Dao.SaveExam(vm.CMEX), false);
|
||||
}
|
||||
/// <summary>
|
||||
|
|
@ -1066,6 +1070,83 @@ namespace NP.Base.Controllers
|
|||
return JsonBack(rtn);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 강좌설정 > 시험설정 > 시험목록
|
||||
/// </summary>
|
||||
/// <param name="cmno"></param>
|
||||
/// <param name="ctname"></param>
|
||||
/// <param name="pno"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public JsonResult ExamList(VMCM vm) {
|
||||
var p = new Hashtable();
|
||||
|
||||
p.Clear();
|
||||
p.Add("cmno", vm.CM.cmno);
|
||||
p.Add("estart", vm.CM.estart);
|
||||
p.Add("eend", vm.CM.eend);
|
||||
p.Add("instructors", vm.CM.instructors);
|
||||
vm.ESTs = Dao.Get<EST>("cm.exlist", p);
|
||||
|
||||
return JsonBackList(vm.ESTs);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 강좌 시험 저장 - 2025-12-26 / KHJ / 혹시 몰라서 최종평가(시험설정) 저장 로직을 따로 만들었음..ㅡㅡ
|
||||
/// </summary>
|
||||
/// <param name="vm"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public JsonResult CMEXSave2025(VMCM vm) {
|
||||
vm.CMEX.uip = GetUserIP();
|
||||
vm.CMEX.uno = SUserInfo.UserNo;
|
||||
//최종평가는 과정/강좌당 1개만
|
||||
//if (vm.CMEX.extype == 1 && Dao.Get<int>("cm.cmex.extype1count", new Hashtable() { { "cmno", vm.CMEX.cmno }, { "exno", vm.CMEX.exno } }).First() > 0) {
|
||||
// return JsonBack(new JsonRtn() { code = 1, obj = -1 });
|
||||
//}
|
||||
if (vm.CMEX.exno > 0 && ExamSaveValid(vm.CMEX.exno) != "") {
|
||||
//응시자데이터 존재하므로 일부데이터만 저장
|
||||
return JsonOK(Dao.Save("cm.cmex.savetop", vm.CMEX), false);
|
||||
}
|
||||
vm.CMEX.cmexqs = new List<CMEXQ>();
|
||||
vm.CMEX.cmexlayers = new List<CMEXLayer>();
|
||||
if (vm.CMEX.eqtype == 1 && !string.IsNullOrEmpty(vm.savedata)) {
|
||||
//임의문항
|
||||
foreach (String s in vm.savedata.Split(';')) {
|
||||
var s2 = s.Split(':');
|
||||
vm.CMEX.cmexlayers.Add(new CMEXLayer() {
|
||||
exno = vm.CMEX.exno,
|
||||
qdiff = GetInt(s2[0])
|
||||
,
|
||||
cc1 = GetInt(s2[1]),
|
||||
cc2 = GetInt(s2[2]),
|
||||
cc3 = GetInt(s2[3]),
|
||||
cc4 = GetInt(s2[4]),
|
||||
cc5 = GetInt(s2[5]),
|
||||
qcount = GetInt(s2[6]),
|
||||
rpoint = GetInt(s2[7])
|
||||
});
|
||||
vm.CMEX.tpoint += GetInt(s2[6]) * GetInt(s2[7]);
|
||||
vm.CMEX.qcount += GetInt(s2[6]);
|
||||
}
|
||||
}
|
||||
if (!string.IsNullOrEmpty(vm.savedata2)) {
|
||||
foreach (var q in vm.savedata2.Split(';')) {
|
||||
var qi = q.Split(':');
|
||||
vm.CMEX.cmexqs.Add(new CMEXQ() { eqno = GetInt(qi[0]), qseq = GetInt(qi[1]), qno = GetInt(qi[2]), rpoint = GetInt(qi[3]) });
|
||||
if (vm.CMEX.eqtype == 0) {
|
||||
vm.CMEX.tpoint += GetInt(qi[3]);
|
||||
}
|
||||
}
|
||||
if (vm.CMEX.eqtype == 0) {
|
||||
vm.CMEX.qcount = vm.CMEX.cmexqs.Count();
|
||||
}
|
||||
}
|
||||
//2025-12-24 / KHJ / 시험응시 시작일/종료일 모델 바인딩
|
||||
vm.CMEX.testsdate = vm.stringval18 + " " + vm.stringval19 + ":" + vm.stringval20;
|
||||
vm.CMEX.testedate = vm.stringval21 + " " + vm.stringval22 + ":" + vm.stringval23;
|
||||
|
||||
return JsonOK(Dao.SaveExam(vm.CMEX), false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -545,7 +545,7 @@
|
|||
select a.*
|
||||
from (
|
||||
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.sseq
|
||||
,a.cmisno value,date_format(a.estart,'%Y-%m-%d') text, a.comment
|
||||
,a.cmisno value,date_format(a.estart,'%Y-%m-%d') text, a.comment, a.instructors
|
||||
,b.scdtype
|
||||
,case when b.scdtype =1 then '온라인' else c.cname end studyplacename
|
||||
,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =1 and z.ischanged=0) regmem
|
||||
|
|
@ -583,14 +583,15 @@
|
|||
</insert>
|
||||
<insert id="cm.cminningscd.in" parameterClass="cminningscd">
|
||||
SELECT * FROM (SELECT LAST_INSERT_ID(0) col1) a WHERE col1 > 0;
|
||||
insert into cminningscd(cmino,estart,eend,quota,studyplace,sseq,comment,<include refid="sql.inc"></include>)
|
||||
values(#cmino#,#estart#,#eend#,#quota#,#studyplace#,#sseq#,#comment#,<include refid="sql.inv"></include>)
|
||||
insert into cminningscd(cmino,estart,eend,quota,studyplace,sseq,comment,instructors,<include refid="sql.inc"></include>)
|
||||
values(#cmino#,#estart#,#eend#,#quota#,#studyplace#,#sseq#,#comment#,#instructors#,<include refid="sql.inv"></include>)
|
||||
<selectKey type="post" property="cmisno" resultClass="long">SELECT last_insert_id()</selectKey>
|
||||
</insert>
|
||||
<update id="cm.cminningscd.up" parameterClass="cminningscd">
|
||||
update cminningscd a
|
||||
set <include refid="sql.up"></include>,cmino=#cmino#,estart=#estart#,eend=#eend#,quota=#quota#
|
||||
,studyplace=#studyplace#,sseq=#sseq#,comment=#comment#
|
||||
,instructors=#instructors#
|
||||
where a.cmisno=#cmisno#
|
||||
</update>
|
||||
<update id="cm.cminnings.up" parameterClass="cminning">
|
||||
|
|
@ -754,6 +755,9 @@
|
|||
select a.*
|
||||
from (
|
||||
select a.exno,a.cmno,a.extype,a.exname,a.edesc,a.etime,a.econdition,a.evtype,a.eqtype,a.israndq,a.israndqi,a.qcount,a.isblur,a.tpoint,a.relaylimit,a.isusebackup,a.isseq,a.isresultopen,a.isreexamable,a.cdt,a.udt
|
||||
,a.cmisno <!--//교육일정코드-->
|
||||
,DATE_FORMAT(a.testsdate, '%Y-%m-%d %H:%i') AS testsdate <!--//시헝응시 시작일-->
|
||||
,DATE_FORMAT(a.testedate, '%Y-%m-%d %H:%i') AS testedate <!--//시헝응시 종료일-->
|
||||
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.cdt</isNull>) rno
|
||||
,count(a.cno) over() pagetotalcount
|
||||
from cmex a
|
||||
|
|
@ -862,6 +866,9 @@
|
|||
,isseq =#isseq#
|
||||
,isreexamable =#isreexamable#
|
||||
,isresultopen=#isresultopen#
|
||||
,cmisno = #cmisno#
|
||||
,testsdate = #testsdate#
|
||||
,testedate = #testedate#
|
||||
where exno=#exno#
|
||||
</update>
|
||||
|
||||
|
|
@ -920,11 +927,14 @@
|
|||
,count(ued.exno) qcount
|
||||
,sum(case when ued.atext is not null then 1 else 0 end) ecount
|
||||
,case when sum(case when ued.atext is not null then 1 else 0 end) < 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
|
||||
,a.instructors
|
||||
,u.usertype
|
||||
,u.username AS instructors_name
|
||||
from (
|
||||
select a.*,b.cname
|
||||
from (
|
||||
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5, a.cdt,a.udt
|
||||
,a.ispassspace,a.isignorecase
|
||||
,a.ispassspace,a.isignorecase,a.instructors
|
||||
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
|
||||
,<include refid="sql.prc"></include>
|
||||
from question a
|
||||
|
|
@ -946,6 +956,7 @@
|
|||
<isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull>
|
||||
<isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull>
|
||||
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
|
||||
<isNotNull property="instructors" prepend="and">a.instructors like concat('%', #instructors#, '%')</isNotNull>
|
||||
</dynamic>
|
||||
) a
|
||||
left outer join cm b on b.cmno=a.cmno
|
||||
|
|
@ -953,7 +964,9 @@
|
|||
) a
|
||||
left outer join cmexq eq on eq.qno=a.qno
|
||||
left outer join lectexq ued on ued.eqno=eq.eqno
|
||||
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase
|
||||
<!--LEFT OUTER JOIN users u ON FIND_IN_SET(u.userid, a.instructors) > 0-->
|
||||
left outer join users u on u.userid = a.instructors
|
||||
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase,a.instructors
|
||||
order by a.RNO
|
||||
</select>
|
||||
<select id="cm.questions2" parameterClass="hashtable" resultClass="question">
|
||||
|
|
@ -962,10 +975,13 @@
|
|||
,count(ued.exno) qcount
|
||||
,sum(case when ued.atext is not null then 1 else 0 end) ecount
|
||||
,case when sum(case when ued.atext is not null then 1 else 0 end) < 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
|
||||
,a.instructors
|
||||
,u.usertype
|
||||
,u.username AS instructors_name
|
||||
from (
|
||||
select a.*
|
||||
from (
|
||||
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt
|
||||
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt,a.instructors
|
||||
,b.cname
|
||||
, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5
|
||||
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
|
||||
|
|
@ -999,18 +1015,20 @@
|
|||
) a
|
||||
left outer join cmexq eq on eq.qno=a.qno
|
||||
left outer join lectexq ued on ued.eqno=eq.eqno
|
||||
left outer join users u on u.userid = a.instructors
|
||||
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc
|
||||
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt
|
||||
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt,a.instructors
|
||||
<dynamic prepend="having">
|
||||
<isNotNull property="qcount" prepend="and">count(ued.examno)=#qcount#</isNotNull>
|
||||
<isNotNull property="ecount" prepend="and">sum(case when ued.atext is not null then 1 else 0 end)=#ecount#</isNotNull>
|
||||
<isNotNull property="rrate" prepend="and">case when sum(case when ued.atext is not null then 1 else 0 end) < 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end=#rrate#</isNotNull>
|
||||
<isNotNull property="instuctorName" prepend="and">u.username like concat('%', #instuctorName#, '%')</isNotNull>
|
||||
</dynamic>
|
||||
order by a.rno
|
||||
</select>
|
||||
<insert id="cm.question.in" parameterClass="question">
|
||||
INSERT INTO question (cmno, qdiff, cc1, cc2, cc3, cc4, cc5, isuse, atype, dpoint, qtext, qtextstring, qdesc, rightcount,ispassspace,isignorecase, <include refid="sql.inc"></include>)
|
||||
values (#cmno#, #qdiff#, #cc1#, #cc2#, #cc3#, #cc4#, #cc5#, #isuse#, #atype#, #dpoint#, #qtext#, #qtextstring#, #qdesc#, #rightcount#,#ispassspace#,#isignorecase#, <include refid="sql.inv"></include>);
|
||||
INSERT INTO question (cmno, qdiff, cc1, cc2, cc3, cc4, cc5, isuse, atype, dpoint, qtext, qtextstring, qdesc, rightcount,ispassspace,isignorecase, <include refid="sql.inc"></include>, instructors)
|
||||
values (#cmno#, #qdiff#, #cc1#, #cc2#, #cc3#, #cc4#, #cc5#, #isuse#, #atype#, #dpoint#, #qtext#, #qtextstring#, #qdesc#, #rightcount#,#ispassspace#,#isignorecase#, <include refid="sql.inv"></include>, #instructors#);
|
||||
<selectKey type="post" property="qno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
|
||||
</insert>
|
||||
<update id="cm.questionitem.in" parameterClass="question">
|
||||
|
|
@ -1105,7 +1123,7 @@
|
|||
<update id="cm.question.up" parameterClass="question">
|
||||
UPDATE question SET <include refid="sql.up"></include>
|
||||
,cmno=#cmno#,qdiff=#qdiff#,cc1=#cc1#,cc2=#cc2#,cc3=#cc3#,cc4=#cc4#,cc5=#cc5#,isuse=#isuse#,dpoint=#dpoint#,qtext=#qtext#,qtextstring=#qtextstring#,qdesc=#qdesc#,rightcount=#rightcount#
|
||||
,ispassspace=#ispassspace#,isignorecase=#isignorecase#
|
||||
,ispassspace=#ispassspace#,isignorecase=#isignorecase#,instructors=#instructors#
|
||||
where qno=#qno#
|
||||
</update>
|
||||
<update id="cm.question.uptop" parameterClass="question">
|
||||
|
|
@ -2232,5 +2250,82 @@
|
|||
<isNotNull property="year">and year(a.sstime)=#year#</isNotNull>
|
||||
order by a.sstime,a.setime
|
||||
</select>
|
||||
|
||||
<select id="cm.cminningscds.applyedu.my" parameterClass="hashtable" resultClass="cminningscd">
|
||||
select
|
||||
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment
|
||||
,a.studyplace, a.studyplacename,a.remainPeople
|
||||
,a.isselected, a.cmno,a.pcmno,a.cgcode
|
||||
<!--211220.통합테스트목록(644) 이미지난 교육종료일 변경불가-->
|
||||
,case WHEN a.estart > date_add(date_format(now(), '%Y-%m-%d 00:00:00'), interval - 1 second)
|
||||
<!--20220803
|
||||
or a.remainPeople <= 0 -->
|
||||
then 0 else 1 end isend
|
||||
from
|
||||
(
|
||||
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth
|
||||
,(a.quota - (select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status in (1,2) and z.ischanged=0)) remainPeople
|
||||
,a.studyplace, e.cname studyplacename
|
||||
,case when f.cmisno = a.cmisno then 1 else 0 end isselected, d.cmno,d.pcmno,cg.cgcode
|
||||
,a.comment
|
||||
,f.sdate
|
||||
from cminningscd a
|
||||
left outer join cminning c on c.cmino = a.cmino
|
||||
left outer join cm d on d.cmno = c.cmno
|
||||
left outer join cg cg on d.cgno = cg.cgno
|
||||
left outer join comcode e on e.ccode = a.studyplace
|
||||
left outer join lect f on f.lectno = #lectno#
|
||||
where DATE_ADD(f.sdate, INTERVAL 1 YEAR) > a.estart
|
||||
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
|
||||
)a
|
||||
WHERE a.estart > date_add(date_format(a.sdate, '%Y-%m-%d 00:00:00'), interval + 2 DAY)
|
||||
order by isend desc,a.estart
|
||||
</select>
|
||||
|
||||
<select id="cm.exlist" parameterClass="hashtable" resultClass="est">
|
||||
select 0 gubun,case when a.extype = 0 then 1 else 2 end estkind
|
||||
,a.exno,a.cmno,a.extype,a.exname,a.edesc,a.etime,a.econdition,a.evtype,a.eqtype,a.israndq,a.israndqi,a.qcount,a.isblur,a.tpoint,a.relaylimit,a.isusebackup,a.isseq
|
||||
,DATE_FORMAT(a.testsdate, '%Y-%m-%d %H:%i') AS testsdate
|
||||
,DATE_FORMAT(a.testedate, '%Y-%m-%d %H:%i') AS testedate
|
||||
,null sdno,null sdtype,null sdname,null sddesc,null sdcondition
|
||||
,null rsno,null rscno,null rstype,null rsname,null rscondition
|
||||
, row_number() over(partition by a.extype order by a.cdt) rno
|
||||
,null as iseq,null as teachername
|
||||
,b.cshape
|
||||
,c.cmisno
|
||||
,c.estart
|
||||
,c.eend
|
||||
,c.instructors
|
||||
from cmex a
|
||||
left join cm b ON b.cmno = a.cmno
|
||||
left join cminningscd c on c.cmisno = a.cmisno
|
||||
where a.cmno=#cmno# and a.isdel=0
|
||||
<isNotNull property="estart" prepend="and">c.estart >= concat(#estart#, ' 00:00:00')</isNotNull>
|
||||
<isNotNull property="eend" prepend="and">c.eend <= concat(#eend#, ' 23:59:59')</isNotNull>
|
||||
<isNotNull property="instructors" prepend="and">c.instructors like concat('%',#instructors#,'%')</isNotNull>
|
||||
</select>
|
||||
|
||||
<select id="cm.est2" parameterClass="int" resultClass="est">
|
||||
select 1 gubun,case when a.sdtype = 0 then 11 else 21 end estkind
|
||||
,a.sdno exno,a.cmno,a.sdtype extype,a.sdname exname,a.sddesc edesc,null etime,a.sdcondition econdition,null evtype,null eqtype,null israndq,null israndqi,null qcount,null isblur,a.tpoint,null relaylimit,null isusebackup,null isseq
|
||||
,a.sdno,a.sdtype,a.sdname,a.sddesc,a.sdcondition
|
||||
,null rsno,null rscno,null rstype,null rsname,null rscondition
|
||||
, row_number() over(partition by a.sdtype order by a.cdt) rno
|
||||
,null as iseq,null as teachername
|
||||
from cmsd a
|
||||
where a.cmno=#cmno# and a.isdel=0
|
||||
union all
|
||||
select 2 gubun,case when a.rstype = 0 then 32 else 31 end estkind
|
||||
,a.rsno exno,a.cmno,a.rstype extype,a.rsname exname,null edesc,null etime,a.rscondition econdition,null evtype,null eqtype,null israndq,null israndqi,null qcount,null isblur,null tpoint,null relaylimit,null isusebackup,null isseq
|
||||
,null sdno,null sdtype,null sdname,null sddesc,null sdcondition
|
||||
,a.rsno,a.rscno,a.rstype,a.rsname,a.rscondition
|
||||
, row_number() over(partition by a.rstype order by a.cdt) rno
|
||||
,b.iseq,c.username as teachername
|
||||
from cmrs a
|
||||
left outer join cminning b on a.cmino = b.cmino
|
||||
left outer join users c on b.userno = c.userno
|
||||
where a.cmno=#cmno# and a.isdel=0
|
||||
order by rsno<!--estkind,rno-->
|
||||
</select>
|
||||
</statements>
|
||||
</sqlMap>
|
||||
|
|
@ -459,9 +459,13 @@
|
|||
,0 rno
|
||||
,null time
|
||||
,null time2
|
||||
,null testsdate
|
||||
,null testedate
|
||||
from (select 1 col1) a
|
||||
where a.col1=0
|
||||
|
||||
union all
|
||||
|
||||
select -1 dtype
|
||||
,null strval,0 intval10
|
||||
,0 intval,0 intval2,0 intval3,0 intval4,a.attrate intval5
|
||||
|
|
@ -470,6 +474,8 @@
|
|||
,0 rno
|
||||
,null time
|
||||
,null time2
|
||||
,null testsdate
|
||||
,null testedate
|
||||
from lect a
|
||||
where a.lectno=#lectno# and a.userno=#userno#
|
||||
<isNotNull property="exam">
|
||||
|
|
@ -485,6 +491,8 @@
|
|||
,row_number() over (partition by b.extype order by b.extype, b.cdt) rno
|
||||
,a.edate time
|
||||
,a.sdate time2
|
||||
,b.testsdate
|
||||
,b.testedate
|
||||
from lect a
|
||||
inner join cm a2 on a2.cmno=a.cmno
|
||||
inner join cmex b on b.cmno=a.cmno and b.isdel=0
|
||||
|
|
@ -504,6 +512,8 @@
|
|||
,row_number() over (order by b.cdt) rno
|
||||
,a.edate time
|
||||
,a.sdate time2
|
||||
,null testsdate
|
||||
,null testedate
|
||||
from lect a
|
||||
inner join cm a2 on a2.cmno=a.cmno
|
||||
inner join cmsd b on b.cmno=a.cmno and b.sdtype=0 and b.isdel=0
|
||||
|
|
@ -523,6 +533,8 @@
|
|||
,row_number() over (order by b.cdt) rno
|
||||
,a.edate time
|
||||
,a.sdate time2
|
||||
,null testsdate
|
||||
,null testedate
|
||||
from lect a
|
||||
inner join cm a2 on a2.cmno=a.cmno
|
||||
inner join cmsd b on b.cmno=a.cmno and b.sdtype=1 and b.isdel=0
|
||||
|
|
@ -545,6 +557,8 @@
|
|||
,case when
|
||||
case when case when a.isrebate = 1 then f.midcutrfd else f.midcut end <= ifnull(e.ex0lectpoint,0) then 1 else 0 end = 1 and case when case when a.isrebate = 1 then f.finalcutrfd else f.finalcut end <= ifnull(e.ex1lectpoint,0) then 1 else 0 end = 1
|
||||
then 1 else 0 end ispass
|
||||
,c.testsdate
|
||||
,c.testedate
|
||||
from lect a
|
||||
inner join cm b on b.cmno=a.cmno
|
||||
inner join cmex c on c.exno=#exno#
|
||||
|
|
|
|||
|
|
@ -2887,7 +2887,7 @@
|
|||
ON b.payno = e.PAYNO
|
||||
INNER JOIN pplog f
|
||||
ON b.USERNO = e.USERNO AND b.CMNO = f.CMNO AND e.PPLNO = f.PPLNO
|
||||
WHERE b.STATUS = 1
|
||||
WHERE b.STATUS IN(1, 2, 3)
|
||||
AND (e.PSTATUS = 1 OR e.PSTATUS = 22)
|
||||
AND b.USERNO = #uno#;
|
||||
]]>
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -29,7 +29,9 @@ namespace NP.Dao
|
|||
Trans();
|
||||
try
|
||||
{
|
||||
if (e.exno < 1) { base.Insert<CMEX>("cm.cmex.in", e); if (e.exno < 1) { RollBack(); return 0; } }
|
||||
if (e.exno < 1) {
|
||||
base.Insert<CMEX>("cm.cmex.in", e); if (e.exno < 1) { RollBack(); return 0; }
|
||||
}
|
||||
else
|
||||
{
|
||||
if (base.Save("cm.cmex.up", e) < 1) { RollBack(); return 0; }
|
||||
|
|
|
|||
|
|
@ -545,7 +545,7 @@
|
|||
select a.*
|
||||
from (
|
||||
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.sseq
|
||||
,a.cmisno value,date_format(a.estart,'%Y-%m-%d') text, a.comment
|
||||
,a.cmisno value,date_format(a.estart,'%Y-%m-%d') text, a.comment, a.instructors
|
||||
,b.scdtype
|
||||
,case when b.scdtype =1 then '온라인' else c.cname end studyplacename
|
||||
,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =1 and z.ischanged=0) regmem
|
||||
|
|
@ -583,14 +583,15 @@
|
|||
</insert>
|
||||
<insert id="cm.cminningscd.in" parameterClass="cminningscd">
|
||||
SELECT * FROM (SELECT LAST_INSERT_ID(0) col1) a WHERE col1 > 0;
|
||||
insert into cminningscd(cmino,estart,eend,quota,studyplace,sseq,comment,<include refid="sql.inc"></include>)
|
||||
values(#cmino#,#estart#,#eend#,#quota#,#studyplace#,#sseq#,#comment#,<include refid="sql.inv"></include>)
|
||||
insert into cminningscd(cmino,estart,eend,quota,studyplace,sseq,comment,instructors,<include refid="sql.inc"></include>)
|
||||
values(#cmino#,#estart#,#eend#,#quota#,#studyplace#,#sseq#,#comment#,#instructors#,<include refid="sql.inv"></include>)
|
||||
<selectKey type="post" property="cmisno" resultClass="long">SELECT last_insert_id()</selectKey>
|
||||
</insert>
|
||||
<update id="cm.cminningscd.up" parameterClass="cminningscd">
|
||||
update cminningscd a
|
||||
set <include refid="sql.up"></include>,cmino=#cmino#,estart=#estart#,eend=#eend#,quota=#quota#
|
||||
,studyplace=#studyplace#,sseq=#sseq#,comment=#comment#
|
||||
,instructors=#instructors#
|
||||
where a.cmisno=#cmisno#
|
||||
</update>
|
||||
<update id="cm.cminnings.up" parameterClass="cminning">
|
||||
|
|
@ -754,6 +755,9 @@
|
|||
select a.*
|
||||
from (
|
||||
select a.exno,a.cmno,a.extype,a.exname,a.edesc,a.etime,a.econdition,a.evtype,a.eqtype,a.israndq,a.israndqi,a.qcount,a.isblur,a.tpoint,a.relaylimit,a.isusebackup,a.isseq,a.isresultopen,a.isreexamable,a.cdt,a.udt
|
||||
,a.cmisno <!--//교육일정코드-->
|
||||
,DATE_FORMAT(a.testsdate, '%Y-%m-%d %H:%i') AS testsdate <!--//시헝응시 시작일-->
|
||||
,DATE_FORMAT(a.testedate, '%Y-%m-%d %H:%i') AS testedate <!--//시헝응시 종료일-->
|
||||
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.cdt</isNull>) rno
|
||||
,count(a.cno) over() pagetotalcount
|
||||
from cmex a
|
||||
|
|
@ -862,6 +866,9 @@
|
|||
,isseq =#isseq#
|
||||
,isreexamable =#isreexamable#
|
||||
,isresultopen=#isresultopen#
|
||||
,cmisno = #cmisno#
|
||||
,testsdate = #testsdate#
|
||||
,testedate = #testedate#
|
||||
where exno=#exno#
|
||||
</update>
|
||||
|
||||
|
|
@ -920,11 +927,14 @@
|
|||
,count(ued.exno) qcount
|
||||
,sum(case when ued.atext is not null then 1 else 0 end) ecount
|
||||
,case when sum(case when ued.atext is not null then 1 else 0 end) < 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
|
||||
,a.instructors
|
||||
,u.usertype
|
||||
,u.username AS instructors_name
|
||||
from (
|
||||
select a.*,b.cname
|
||||
from (
|
||||
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5, a.cdt,a.udt
|
||||
,a.ispassspace,a.isignorecase
|
||||
,a.ispassspace,a.isignorecase,a.instructors
|
||||
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
|
||||
,<include refid="sql.prc"></include>
|
||||
from question a
|
||||
|
|
@ -946,6 +956,7 @@
|
|||
<isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull>
|
||||
<isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull>
|
||||
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
|
||||
<isNotNull property="instructors" prepend="and">a.instructors like concat('%', #instructors#, '%')</isNotNull>
|
||||
</dynamic>
|
||||
) a
|
||||
left outer join cm b on b.cmno=a.cmno
|
||||
|
|
@ -953,7 +964,9 @@
|
|||
) a
|
||||
left outer join cmexq eq on eq.qno=a.qno
|
||||
left outer join lectexq ued on ued.eqno=eq.eqno
|
||||
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase
|
||||
<!--LEFT OUTER JOIN users u ON FIND_IN_SET(u.userid, a.instructors) > 0-->
|
||||
left outer join users u on u.userid = a.instructors
|
||||
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase,a.instructors
|
||||
order by a.RNO
|
||||
</select>
|
||||
<select id="cm.questions2" parameterClass="hashtable" resultClass="question">
|
||||
|
|
@ -962,10 +975,13 @@
|
|||
,count(ued.exno) qcount
|
||||
,sum(case when ued.atext is not null then 1 else 0 end) ecount
|
||||
,case when sum(case when ued.atext is not null then 1 else 0 end) < 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
|
||||
,a.instructors
|
||||
,u.usertype
|
||||
,u.username AS instructors_name
|
||||
from (
|
||||
select a.*
|
||||
from (
|
||||
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt
|
||||
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt,a.instructors
|
||||
,b.cname
|
||||
, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5
|
||||
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
|
||||
|
|
@ -999,18 +1015,20 @@
|
|||
) a
|
||||
left outer join cmexq eq on eq.qno=a.qno
|
||||
left outer join lectexq ued on ued.eqno=eq.eqno
|
||||
left outer join users u on u.userid = a.instructors
|
||||
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc
|
||||
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt
|
||||
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt,a.instructors
|
||||
<dynamic prepend="having">
|
||||
<isNotNull property="qcount" prepend="and">count(ued.examno)=#qcount#</isNotNull>
|
||||
<isNotNull property="ecount" prepend="and">sum(case when ued.atext is not null then 1 else 0 end)=#ecount#</isNotNull>
|
||||
<isNotNull property="rrate" prepend="and">case when sum(case when ued.atext is not null then 1 else 0 end) < 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end=#rrate#</isNotNull>
|
||||
<isNotNull property="instuctorName" prepend="and">u.username like concat('%', #instuctorName#, '%')</isNotNull>
|
||||
</dynamic>
|
||||
order by a.rno
|
||||
</select>
|
||||
<insert id="cm.question.in" parameterClass="question">
|
||||
INSERT INTO question (cmno, qdiff, cc1, cc2, cc3, cc4, cc5, isuse, atype, dpoint, qtext, qtextstring, qdesc, rightcount,ispassspace,isignorecase, <include refid="sql.inc"></include>)
|
||||
values (#cmno#, #qdiff#, #cc1#, #cc2#, #cc3#, #cc4#, #cc5#, #isuse#, #atype#, #dpoint#, #qtext#, #qtextstring#, #qdesc#, #rightcount#,#ispassspace#,#isignorecase#, <include refid="sql.inv"></include>);
|
||||
INSERT INTO question (cmno, qdiff, cc1, cc2, cc3, cc4, cc5, isuse, atype, dpoint, qtext, qtextstring, qdesc, rightcount,ispassspace,isignorecase, <include refid="sql.inc"></include>, instructors)
|
||||
values (#cmno#, #qdiff#, #cc1#, #cc2#, #cc3#, #cc4#, #cc5#, #isuse#, #atype#, #dpoint#, #qtext#, #qtextstring#, #qdesc#, #rightcount#,#ispassspace#,#isignorecase#, <include refid="sql.inv"></include>, #instructors#);
|
||||
<selectKey type="post" property="qno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
|
||||
</insert>
|
||||
<update id="cm.questionitem.in" parameterClass="question">
|
||||
|
|
@ -1105,7 +1123,7 @@
|
|||
<update id="cm.question.up" parameterClass="question">
|
||||
UPDATE question SET <include refid="sql.up"></include>
|
||||
,cmno=#cmno#,qdiff=#qdiff#,cc1=#cc1#,cc2=#cc2#,cc3=#cc3#,cc4=#cc4#,cc5=#cc5#,isuse=#isuse#,dpoint=#dpoint#,qtext=#qtext#,qtextstring=#qtextstring#,qdesc=#qdesc#,rightcount=#rightcount#
|
||||
,ispassspace=#ispassspace#,isignorecase=#isignorecase#
|
||||
,ispassspace=#ispassspace#,isignorecase=#isignorecase#,instructors=#instructors#
|
||||
where qno=#qno#
|
||||
</update>
|
||||
<update id="cm.question.uptop" parameterClass="question">
|
||||
|
|
@ -2232,5 +2250,85 @@
|
|||
<isNotNull property="year">and year(a.sstime)=#year#</isNotNull>
|
||||
order by a.sstime,a.setime
|
||||
</select>
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
<select id="cm.cminningscds.applyedu.my" parameterClass="hashtable" resultClass="cminningscd">
|
||||
select
|
||||
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment
|
||||
,a.studyplace, a.studyplacename,a.remainPeople
|
||||
,a.isselected, a.cmno,a.pcmno,a.cgcode
|
||||
<!--211220.통합테스트목록(644) 이미지난 교육종료일 변경불가-->
|
||||
,case WHEN a.estart > date_add(date_format(now(), '%Y-%m-%d 00:00:00'), interval - 1 second)
|
||||
<!--20220803
|
||||
or a.remainPeople <= 0 -->
|
||||
then 0 else 1 end isend
|
||||
from
|
||||
(
|
||||
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth
|
||||
,(a.quota - (select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status in (1,2) and z.ischanged=0)) remainPeople
|
||||
,a.studyplace, e.cname studyplacename
|
||||
,case when f.cmisno = a.cmisno then 1 else 0 end isselected, d.cmno,d.pcmno,cg.cgcode
|
||||
,a.comment
|
||||
,f.sdate
|
||||
from cminningscd a
|
||||
left outer join cminning c on c.cmino = a.cmino
|
||||
left outer join cm d on d.cmno = c.cmno
|
||||
left outer join cg cg on d.cgno = cg.cgno
|
||||
left outer join comcode e on e.ccode = a.studyplace
|
||||
left outer join lect f on f.lectno = #lectno#
|
||||
where DATE_ADD(f.sdate, INTERVAL 1 YEAR) > a.estart
|
||||
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
|
||||
)a
|
||||
WHERE a.estart > date_add(date_format(a.sdate, '%Y-%m-%d 00:00:00'), interval + 2 DAY)
|
||||
order by isend desc,a.estart
|
||||
</select>
|
||||
|
||||
<select id="cm.exlist" parameterClass="hashtable" resultClass="est">
|
||||
select 0 gubun,case when a.extype = 0 then 1 else 2 end estkind
|
||||
,a.exno,a.cmno,a.extype,a.exname,a.edesc,a.etime,a.econdition,a.evtype,a.eqtype,a.israndq,a.israndqi,a.qcount,a.isblur,a.tpoint,a.relaylimit,a.isusebackup,a.isseq
|
||||
,DATE_FORMAT(a.testsdate, '%Y-%m-%d %H:%i') AS testsdate
|
||||
,DATE_FORMAT(a.testedate, '%Y-%m-%d %H:%i') AS testedate
|
||||
,null sdno,null sdtype,null sdname,null sddesc,null sdcondition
|
||||
,null rsno,null rscno,null rstype,null rsname,null rscondition
|
||||
, row_number() over(partition by a.extype order by a.cdt) rno
|
||||
,null as iseq,null as teachername
|
||||
,b.cshape
|
||||
,c.cmisno
|
||||
,c.estart
|
||||
,c.eend
|
||||
,c.instructors
|
||||
from cmex a
|
||||
left join cm b ON b.cmno = a.cmno
|
||||
left join cminningscd c on c.cmisno = a.cmisno
|
||||
where a.cmno=#cmno# and a.isdel=0
|
||||
<isNotNull property="estart" prepend="and">c.estart >= concat(#estart#, ' 00:00:00')</isNotNull>
|
||||
<isNotNull property="eend" prepend="and">c.eend <= concat(#eend#, ' 23:59:59')</isNotNull>
|
||||
<isNotNull property="instructors" prepend="and">c.instructors like concat('%',#instructors#,'%')</isNotNull>
|
||||
</select>
|
||||
|
||||
<select id="cm.est2" parameterClass="int" resultClass="est">
|
||||
select 1 gubun,case when a.sdtype = 0 then 11 else 21 end estkind
|
||||
,a.sdno exno,a.cmno,a.sdtype extype,a.sdname exname,a.sddesc edesc,null etime,a.sdcondition econdition,null evtype,null eqtype,null israndq,null israndqi,null qcount,null isblur,a.tpoint,null relaylimit,null isusebackup,null isseq
|
||||
,a.sdno,a.sdtype,a.sdname,a.sddesc,a.sdcondition
|
||||
,null rsno,null rscno,null rstype,null rsname,null rscondition
|
||||
, row_number() over(partition by a.sdtype order by a.cdt) rno
|
||||
,null as iseq,null as teachername
|
||||
from cmsd a
|
||||
where a.cmno=#cmno# and a.isdel=0
|
||||
union all
|
||||
select 2 gubun,case when a.rstype = 0 then 32 else 31 end estkind
|
||||
,a.rsno exno,a.cmno,a.rstype extype,a.rsname exname,null edesc,null etime,a.rscondition econdition,null evtype,null eqtype,null israndq,null israndqi,null qcount,null isblur,null tpoint,null relaylimit,null isusebackup,null isseq
|
||||
,null sdno,null sdtype,null sdname,null sddesc,null sdcondition
|
||||
,a.rsno,a.rscno,a.rstype,a.rsname,a.rscondition
|
||||
, row_number() over(partition by a.rstype order by a.cdt) rno
|
||||
,b.iseq,c.username as teachername
|
||||
from cmrs a
|
||||
left outer join cminning b on a.cmino = b.cmino
|
||||
left outer join users c on b.userno = c.userno
|
||||
where a.cmno=#cmno# and a.isdel=0
|
||||
order by rsno<!--estkind,rno-->
|
||||
</select>
|
||||
>>>>>>> ca8967d (추가개발1)
|
||||
</statements>
|
||||
</sqlMap>
|
||||
|
|
@ -459,9 +459,13 @@
|
|||
,0 rno
|
||||
,null time
|
||||
,null time2
|
||||
,null testsdate
|
||||
,null testedate
|
||||
from (select 1 col1) a
|
||||
where a.col1=0
|
||||
|
||||
union all
|
||||
|
||||
select -1 dtype
|
||||
,null strval,0 intval10
|
||||
,0 intval,0 intval2,0 intval3,0 intval4,a.attrate intval5
|
||||
|
|
@ -470,6 +474,8 @@
|
|||
,0 rno
|
||||
,null time
|
||||
,null time2
|
||||
,null testsdate
|
||||
,null testedate
|
||||
from lect a
|
||||
where a.lectno=#lectno# and a.userno=#userno#
|
||||
<isNotNull property="exam">
|
||||
|
|
@ -485,6 +491,8 @@
|
|||
,row_number() over (partition by b.extype order by b.extype, b.cdt) rno
|
||||
,a.edate time
|
||||
,a.sdate time2
|
||||
,b.testsdate
|
||||
,b.testedate
|
||||
from lect a
|
||||
inner join cm a2 on a2.cmno=a.cmno
|
||||
inner join cmex b on b.cmno=a.cmno and b.isdel=0
|
||||
|
|
@ -504,6 +512,8 @@
|
|||
,row_number() over (order by b.cdt) rno
|
||||
,a.edate time
|
||||
,a.sdate time2
|
||||
,null testsdate
|
||||
,null testedate
|
||||
from lect a
|
||||
inner join cm a2 on a2.cmno=a.cmno
|
||||
inner join cmsd b on b.cmno=a.cmno and b.sdtype=0 and b.isdel=0
|
||||
|
|
@ -523,6 +533,8 @@
|
|||
,row_number() over (order by b.cdt) rno
|
||||
,a.edate time
|
||||
,a.sdate time2
|
||||
,null testsdate
|
||||
,null testedate
|
||||
from lect a
|
||||
inner join cm a2 on a2.cmno=a.cmno
|
||||
inner join cmsd b on b.cmno=a.cmno and b.sdtype=1 and b.isdel=0
|
||||
|
|
@ -545,6 +557,8 @@
|
|||
,case when
|
||||
case when case when a.isrebate = 1 then f.midcutrfd else f.midcut end <= ifnull(e.ex0lectpoint,0) then 1 else 0 end = 1 and case when case when a.isrebate = 1 then f.finalcutrfd else f.finalcut end <= ifnull(e.ex1lectpoint,0) then 1 else 0 end = 1
|
||||
then 1 else 0 end ispass
|
||||
,c.testsdate
|
||||
,c.testedate
|
||||
from lect a
|
||||
inner join cm b on b.cmno=a.cmno
|
||||
inner join cmex c on c.exno=#exno#
|
||||
|
|
|
|||
|
|
@ -545,7 +545,7 @@
|
|||
select a.*
|
||||
from (
|
||||
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.sseq
|
||||
,a.cmisno value,date_format(a.estart,'%Y-%m-%d') text, a.comment
|
||||
,a.cmisno value,date_format(a.estart,'%Y-%m-%d') text, a.comment, a.instructors
|
||||
,b.scdtype
|
||||
,case when b.scdtype =1 then '온라인' else c.cname end studyplacename
|
||||
,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =1 and z.ischanged=0) regmem
|
||||
|
|
@ -583,14 +583,15 @@
|
|||
</insert>
|
||||
<insert id="cm.cminningscd.in" parameterClass="cminningscd">
|
||||
SELECT * FROM (SELECT LAST_INSERT_ID(0) col1) a WHERE col1 > 0;
|
||||
insert into cminningscd(cmino,estart,eend,quota,studyplace,sseq,comment,<include refid="sql.inc"></include>)
|
||||
values(#cmino#,#estart#,#eend#,#quota#,#studyplace#,#sseq#,#comment#,<include refid="sql.inv"></include>)
|
||||
insert into cminningscd(cmino,estart,eend,quota,studyplace,sseq,comment,instructors,<include refid="sql.inc"></include>)
|
||||
values(#cmino#,#estart#,#eend#,#quota#,#studyplace#,#sseq#,#comment#,#instructors#,<include refid="sql.inv"></include>)
|
||||
<selectKey type="post" property="cmisno" resultClass="long">SELECT last_insert_id()</selectKey>
|
||||
</insert>
|
||||
<update id="cm.cminningscd.up" parameterClass="cminningscd">
|
||||
update cminningscd a
|
||||
set <include refid="sql.up"></include>,cmino=#cmino#,estart=#estart#,eend=#eend#,quota=#quota#
|
||||
,studyplace=#studyplace#,sseq=#sseq#,comment=#comment#
|
||||
,instructors=#instructors#
|
||||
where a.cmisno=#cmisno#
|
||||
</update>
|
||||
<update id="cm.cminnings.up" parameterClass="cminning">
|
||||
|
|
@ -754,6 +755,9 @@
|
|||
select a.*
|
||||
from (
|
||||
select a.exno,a.cmno,a.extype,a.exname,a.edesc,a.etime,a.econdition,a.evtype,a.eqtype,a.israndq,a.israndqi,a.qcount,a.isblur,a.tpoint,a.relaylimit,a.isusebackup,a.isseq,a.isresultopen,a.isreexamable,a.cdt,a.udt
|
||||
,a.cmisno <!--//교육일정코드-->
|
||||
,DATE_FORMAT(a.testsdate, '%Y-%m-%d %H:%i') AS testsdate <!--//시헝응시 시작일-->
|
||||
,DATE_FORMAT(a.testedate, '%Y-%m-%d %H:%i') AS testedate <!--//시헝응시 종료일-->
|
||||
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.cdt</isNull>) rno
|
||||
,count(a.cno) over() pagetotalcount
|
||||
from cmex a
|
||||
|
|
@ -862,6 +866,9 @@
|
|||
,isseq =#isseq#
|
||||
,isreexamable =#isreexamable#
|
||||
,isresultopen=#isresultopen#
|
||||
,cmisno = #cmisno#
|
||||
,testsdate = #testsdate#
|
||||
,testedate = #testedate#
|
||||
where exno=#exno#
|
||||
</update>
|
||||
|
||||
|
|
@ -920,11 +927,14 @@
|
|||
,count(ued.exno) qcount
|
||||
,sum(case when ued.atext is not null then 1 else 0 end) ecount
|
||||
,case when sum(case when ued.atext is not null then 1 else 0 end) < 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
|
||||
,a.instructors
|
||||
,u.usertype
|
||||
,u.username AS instructors_name
|
||||
from (
|
||||
select a.*,b.cname
|
||||
from (
|
||||
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5, a.cdt,a.udt
|
||||
,a.ispassspace,a.isignorecase
|
||||
,a.ispassspace,a.isignorecase,a.instructors
|
||||
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
|
||||
,<include refid="sql.prc"></include>
|
||||
from question a
|
||||
|
|
@ -946,6 +956,7 @@
|
|||
<isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull>
|
||||
<isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull>
|
||||
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
|
||||
<isNotNull property="instructors" prepend="and">a.instructors like concat('%', #instructors#, '%')</isNotNull>
|
||||
</dynamic>
|
||||
) a
|
||||
left outer join cm b on b.cmno=a.cmno
|
||||
|
|
@ -953,7 +964,9 @@
|
|||
) a
|
||||
left outer join cmexq eq on eq.qno=a.qno
|
||||
left outer join lectexq ued on ued.eqno=eq.eqno
|
||||
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase
|
||||
<!--LEFT OUTER JOIN users u ON FIND_IN_SET(u.userid, a.instructors) > 0-->
|
||||
left outer join users u on u.userid = a.instructors
|
||||
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase,a.instructors
|
||||
order by a.RNO
|
||||
</select>
|
||||
<select id="cm.questions2" parameterClass="hashtable" resultClass="question">
|
||||
|
|
@ -962,10 +975,13 @@
|
|||
,count(ued.exno) qcount
|
||||
,sum(case when ued.atext is not null then 1 else 0 end) ecount
|
||||
,case when sum(case when ued.atext is not null then 1 else 0 end) < 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
|
||||
,a.instructors
|
||||
,u.usertype
|
||||
,u.username AS instructors_name
|
||||
from (
|
||||
select a.*
|
||||
from (
|
||||
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt
|
||||
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt,a.instructors
|
||||
,b.cname
|
||||
, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5
|
||||
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
|
||||
|
|
@ -999,18 +1015,20 @@
|
|||
) a
|
||||
left outer join cmexq eq on eq.qno=a.qno
|
||||
left outer join lectexq ued on ued.eqno=eq.eqno
|
||||
left outer join users u on u.userid = a.instructors
|
||||
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc
|
||||
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt
|
||||
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt,a.instructors
|
||||
<dynamic prepend="having">
|
||||
<isNotNull property="qcount" prepend="and">count(ued.examno)=#qcount#</isNotNull>
|
||||
<isNotNull property="ecount" prepend="and">sum(case when ued.atext is not null then 1 else 0 end)=#ecount#</isNotNull>
|
||||
<isNotNull property="rrate" prepend="and">case when sum(case when ued.atext is not null then 1 else 0 end) < 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end=#rrate#</isNotNull>
|
||||
<isNotNull property="instuctorName" prepend="and">u.username like concat('%', #instuctorName#, '%')</isNotNull>
|
||||
</dynamic>
|
||||
order by a.rno
|
||||
</select>
|
||||
<insert id="cm.question.in" parameterClass="question">
|
||||
INSERT INTO question (cmno, qdiff, cc1, cc2, cc3, cc4, cc5, isuse, atype, dpoint, qtext, qtextstring, qdesc, rightcount,ispassspace,isignorecase, <include refid="sql.inc"></include>)
|
||||
values (#cmno#, #qdiff#, #cc1#, #cc2#, #cc3#, #cc4#, #cc5#, #isuse#, #atype#, #dpoint#, #qtext#, #qtextstring#, #qdesc#, #rightcount#,#ispassspace#,#isignorecase#, <include refid="sql.inv"></include>);
|
||||
INSERT INTO question (cmno, qdiff, cc1, cc2, cc3, cc4, cc5, isuse, atype, dpoint, qtext, qtextstring, qdesc, rightcount,ispassspace,isignorecase, <include refid="sql.inc"></include>, instructors)
|
||||
values (#cmno#, #qdiff#, #cc1#, #cc2#, #cc3#, #cc4#, #cc5#, #isuse#, #atype#, #dpoint#, #qtext#, #qtextstring#, #qdesc#, #rightcount#,#ispassspace#,#isignorecase#, <include refid="sql.inv"></include>, #instructors#);
|
||||
<selectKey type="post" property="qno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
|
||||
</insert>
|
||||
<update id="cm.questionitem.in" parameterClass="question">
|
||||
|
|
@ -1105,7 +1123,7 @@
|
|||
<update id="cm.question.up" parameterClass="question">
|
||||
UPDATE question SET <include refid="sql.up"></include>
|
||||
,cmno=#cmno#,qdiff=#qdiff#,cc1=#cc1#,cc2=#cc2#,cc3=#cc3#,cc4=#cc4#,cc5=#cc5#,isuse=#isuse#,dpoint=#dpoint#,qtext=#qtext#,qtextstring=#qtextstring#,qdesc=#qdesc#,rightcount=#rightcount#
|
||||
,ispassspace=#ispassspace#,isignorecase=#isignorecase#
|
||||
,ispassspace=#ispassspace#,isignorecase=#isignorecase#,instructors=#instructors#
|
||||
where qno=#qno#
|
||||
</update>
|
||||
<update id="cm.question.uptop" parameterClass="question">
|
||||
|
|
@ -2232,5 +2250,82 @@
|
|||
<isNotNull property="year">and year(a.sstime)=#year#</isNotNull>
|
||||
order by a.sstime,a.setime
|
||||
</select>
|
||||
|
||||
<select id="cm.cminningscds.applyedu.my" parameterClass="hashtable" resultClass="cminningscd">
|
||||
select
|
||||
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment
|
||||
,a.studyplace, a.studyplacename,a.remainPeople
|
||||
,a.isselected, a.cmno,a.pcmno,a.cgcode
|
||||
<!--211220.통합테스트목록(644) 이미지난 교육종료일 변경불가-->
|
||||
,case WHEN a.estart > date_add(date_format(now(), '%Y-%m-%d 00:00:00'), interval - 1 second)
|
||||
<!--20220803
|
||||
or a.remainPeople <= 0 -->
|
||||
then 0 else 1 end isend
|
||||
from
|
||||
(
|
||||
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth
|
||||
,(a.quota - (select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status in (1,2) and z.ischanged=0)) remainPeople
|
||||
,a.studyplace, e.cname studyplacename
|
||||
,case when f.cmisno = a.cmisno then 1 else 0 end isselected, d.cmno,d.pcmno,cg.cgcode
|
||||
,a.comment
|
||||
,f.sdate
|
||||
from cminningscd a
|
||||
left outer join cminning c on c.cmino = a.cmino
|
||||
left outer join cm d on d.cmno = c.cmno
|
||||
left outer join cg cg on d.cgno = cg.cgno
|
||||
left outer join comcode e on e.ccode = a.studyplace
|
||||
left outer join lect f on f.lectno = #lectno#
|
||||
where DATE_ADD(f.sdate, INTERVAL 1 YEAR) > a.estart
|
||||
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
|
||||
)a
|
||||
WHERE a.estart > date_add(date_format(a.sdate, '%Y-%m-%d 00:00:00'), interval + 2 DAY)
|
||||
order by isend desc,a.estart
|
||||
</select>
|
||||
|
||||
<select id="cm.exlist" parameterClass="hashtable" resultClass="est">
|
||||
select 0 gubun,case when a.extype = 0 then 1 else 2 end estkind
|
||||
,a.exno,a.cmno,a.extype,a.exname,a.edesc,a.etime,a.econdition,a.evtype,a.eqtype,a.israndq,a.israndqi,a.qcount,a.isblur,a.tpoint,a.relaylimit,a.isusebackup,a.isseq
|
||||
,DATE_FORMAT(a.testsdate, '%Y-%m-%d %H:%i') AS testsdate
|
||||
,DATE_FORMAT(a.testedate, '%Y-%m-%d %H:%i') AS testedate
|
||||
,null sdno,null sdtype,null sdname,null sddesc,null sdcondition
|
||||
,null rsno,null rscno,null rstype,null rsname,null rscondition
|
||||
, row_number() over(partition by a.extype order by a.cdt) rno
|
||||
,null as iseq,null as teachername
|
||||
,b.cshape
|
||||
,c.cmisno
|
||||
,c.estart
|
||||
,c.eend
|
||||
,c.instructors
|
||||
from cmex a
|
||||
left join cm b ON b.cmno = a.cmno
|
||||
left join cminningscd c on c.cmisno = a.cmisno
|
||||
where a.cmno=#cmno# and a.isdel=0
|
||||
<isNotNull property="estart" prepend="and">c.estart >= concat(#estart#, ' 00:00:00')</isNotNull>
|
||||
<isNotNull property="eend" prepend="and">c.eend <= concat(#eend#, ' 23:59:59')</isNotNull>
|
||||
<isNotNull property="instructors" prepend="and">c.instructors like concat('%',#instructors#,'%')</isNotNull>
|
||||
</select>
|
||||
|
||||
<select id="cm.est2" parameterClass="int" resultClass="est">
|
||||
select 1 gubun,case when a.sdtype = 0 then 11 else 21 end estkind
|
||||
,a.sdno exno,a.cmno,a.sdtype extype,a.sdname exname,a.sddesc edesc,null etime,a.sdcondition econdition,null evtype,null eqtype,null israndq,null israndqi,null qcount,null isblur,a.tpoint,null relaylimit,null isusebackup,null isseq
|
||||
,a.sdno,a.sdtype,a.sdname,a.sddesc,a.sdcondition
|
||||
,null rsno,null rscno,null rstype,null rsname,null rscondition
|
||||
, row_number() over(partition by a.sdtype order by a.cdt) rno
|
||||
,null as iseq,null as teachername
|
||||
from cmsd a
|
||||
where a.cmno=#cmno# and a.isdel=0
|
||||
union all
|
||||
select 2 gubun,case when a.rstype = 0 then 32 else 31 end estkind
|
||||
,a.rsno exno,a.cmno,a.rstype extype,a.rsname exname,null edesc,null etime,a.rscondition econdition,null evtype,null eqtype,null israndq,null israndqi,null qcount,null isblur,null tpoint,null relaylimit,null isusebackup,null isseq
|
||||
,null sdno,null sdtype,null sdname,null sddesc,null sdcondition
|
||||
,a.rsno,a.rscno,a.rstype,a.rsname,a.rscondition
|
||||
, row_number() over(partition by a.rstype order by a.cdt) rno
|
||||
,b.iseq,c.username as teachername
|
||||
from cmrs a
|
||||
left outer join cminning b on a.cmino = b.cmino
|
||||
left outer join users c on b.userno = c.userno
|
||||
where a.cmno=#cmno# and a.isdel=0
|
||||
order by rsno<!--estkind,rno-->
|
||||
</select>
|
||||
</statements>
|
||||
</sqlMap>
|
||||
|
|
@ -459,9 +459,13 @@
|
|||
,0 rno
|
||||
,null time
|
||||
,null time2
|
||||
,null testsdate
|
||||
,null testedate
|
||||
from (select 1 col1) a
|
||||
where a.col1=0
|
||||
|
||||
union all
|
||||
|
||||
select -1 dtype
|
||||
,null strval,0 intval10
|
||||
,0 intval,0 intval2,0 intval3,0 intval4,a.attrate intval5
|
||||
|
|
@ -470,6 +474,8 @@
|
|||
,0 rno
|
||||
,null time
|
||||
,null time2
|
||||
,null testsdate
|
||||
,null testedate
|
||||
from lect a
|
||||
where a.lectno=#lectno# and a.userno=#userno#
|
||||
<isNotNull property="exam">
|
||||
|
|
@ -485,6 +491,8 @@
|
|||
,row_number() over (partition by b.extype order by b.extype, b.cdt) rno
|
||||
,a.edate time
|
||||
,a.sdate time2
|
||||
,b.testsdate
|
||||
,b.testedate
|
||||
from lect a
|
||||
inner join cm a2 on a2.cmno=a.cmno
|
||||
inner join cmex b on b.cmno=a.cmno and b.isdel=0
|
||||
|
|
@ -504,6 +512,8 @@
|
|||
,row_number() over (order by b.cdt) rno
|
||||
,a.edate time
|
||||
,a.sdate time2
|
||||
,null testsdate
|
||||
,null testedate
|
||||
from lect a
|
||||
inner join cm a2 on a2.cmno=a.cmno
|
||||
inner join cmsd b on b.cmno=a.cmno and b.sdtype=0 and b.isdel=0
|
||||
|
|
@ -523,6 +533,8 @@
|
|||
,row_number() over (order by b.cdt) rno
|
||||
,a.edate time
|
||||
,a.sdate time2
|
||||
,null testsdate
|
||||
,null testedate
|
||||
from lect a
|
||||
inner join cm a2 on a2.cmno=a.cmno
|
||||
inner join cmsd b on b.cmno=a.cmno and b.sdtype=1 and b.isdel=0
|
||||
|
|
@ -545,6 +557,8 @@
|
|||
,case when
|
||||
case when case when a.isrebate = 1 then f.midcutrfd else f.midcut end <= ifnull(e.ex0lectpoint,0) then 1 else 0 end = 1 and case when case when a.isrebate = 1 then f.finalcutrfd else f.finalcut end <= ifnull(e.ex1lectpoint,0) then 1 else 0 end = 1
|
||||
then 1 else 0 end ispass
|
||||
,c.testsdate
|
||||
,c.testedate
|
||||
from lect a
|
||||
inner join cm b on b.cmno=a.cmno
|
||||
inner join cmex c on c.exno=#exno#
|
||||
|
|
|
|||
|
|
@ -2887,7 +2887,7 @@
|
|||
ON b.payno = e.PAYNO
|
||||
INNER JOIN pplog f
|
||||
ON b.USERNO = e.USERNO AND b.CMNO = f.CMNO AND e.PPLNO = f.PPLNO
|
||||
WHERE b.STATUS = 1
|
||||
WHERE b.STATUS IN(1, 2, 3)
|
||||
AND (e.PSTATUS = 1 OR e.PSTATUS = 22)
|
||||
AND b.USERNO = #uno#;
|
||||
]]>
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -101,15 +101,21 @@
|
|||
@if (d.dtype == 1)
|
||||
{
|
||||
// 최총 평가일 때
|
||||
//if ((currentProgresRate >= d.intval2) // 조건 ①
|
||||
// && IsDateInRange(d.testsdate, d.testedate) // 조건 ②
|
||||
// && (ViewBag.exCheck || dType1CmStudyTime == 16)) // 조건 ③ 또는 조건 ④ <-- 요 부분을 다시 물어보자
|
||||
if ((currentProgresRate >= d.intval2) // 조건 ①
|
||||
&& IsDateInRange(d.time2, d.time) // 조건 ②
|
||||
&& (ViewBag.exCheck || dType1CmStudyTime == 16)) // 조건 ③ 또는 조건 ④ <-- 요 부분을 다시 물어보자
|
||||
&& IsDateInRange(d.testsdate, d.testedate)) // 조건 ②
|
||||
|
||||
{
|
||||
<td>
|
||||
<input type="hidden" name="cmEcondition" value="@d.intval2" />
|
||||
<input type="hidden" name="lectSDate" value="@d.time2" />
|
||||
<input type="hidden" name="lectEDate" value="@d.time" />
|
||||
<input type="hidden" name="isDateInRange" value="@IsDateInRange(d.time2, d.time).ToString()" />
|
||||
@*<input type="hidden" name="lectSDate" value="@d.time2" />
|
||||
<input type="hidden" name="lectEDate" value="@d.time" />*@
|
||||
@*<input type="hidden" name="isDateInRange" value="@IsDateInRange(d.time2, d.time).ToString()" />*@
|
||||
<input type="hidden" name="lectSDate" value="@d.testsdate" />
|
||||
<input type="hidden" name="lectEDate" value="@d.testedate" />
|
||||
<input type="hidden" name="isDateInRange" value="@IsDateInRange(d.testsdate, d.testedate).ToString()" />
|
||||
<a href="javascript:;" onclick="eva(@d.dtype, @d.intval10, @(d.intval4 == 1 ? 4 : d.intval3 == 1 ? 3 : d.intval3 == 0 && d.intval >= d.intval2 ? 2 : 1))"
|
||||
class="@GetEvaTypeClass(d.intval, d.intval2, d.intval3, d.intval4, currentLectIsComplete)">@GetEvaStatusText(d.intval, d.intval2, d.intval3, d.intval4, currentLectIsComplete)
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@
|
|||
<tr><th>시험내용</th><td>@Html.Raw((Model.LectEX.edesc ?? "").Replace(System.Environment.NewLine, "<br />"))</td></tr>
|
||||
<tr><th>평가점수</th><td>@(Model.LectEX.tpoint + "점")</td></tr>
|
||||
<tr><th>제한시간</th><td>@(Model.LectEX.etime == 0 ? "제한없음" : string.Format("{0} 분", Model.LectEX.etime))</td></tr>
|
||||
<tr><th>응시기간</th><td>@(Model.LectEX.sdate.Value.ToString("yy-MM-dd hh:mm")) ~ @(Model.LectEX.edate.Value.ToString("yy-MM-dd hh:mm"))까지(진도율 @(Model.LectEX.econdition)%이상 응시가능)</td></tr>
|
||||
@*<tr><th>응시기간</th><td>@(Model.LectEX.sdate.Value.ToString("yy-MM-dd hh:mm")) ~ @(Model.LectEX.edate.Value.ToString("yy-MM-dd hh:mm"))까지(진도율 @(Model.LectEX.econdition)%이상 응시가능)</td></tr>*@
|
||||
<tr><th>응시기간</th><td>@(Convert.ToDateTime(Model.LectEX.testsdate).ToString("yyyy-MM-dd hh:mm")) ~ @(Convert.ToDateTime(Model.LectEX.testedate).ToString("yyyy-MM-dd hh:mm"))까지(진도율 @(Model.LectEX.econdition)%이상 응시가능)</td></tr>
|
||||
<tr><th>재응시여부</th><td>@(Model.LectEX.isreexamable == 0 ? "불가능" : "가능")</td></tr>
|
||||
<tr><th>응시상태</th><td>@(Model.LectEX.estart == null ? ("응시전" + (Model.LectEX.recount > 0 ? string.Format(" (재응시승인 {0}회)", Model.LectEX.recount) : "")) : Model.LectEX.eend != null ? "응시완료" : Model.LectEX.rtime < 1 ? "응시시간초과" : ("응시시작 (남은시간 " + Model.LectEX.rtime + "분)" + (Model.LectEX.relaylimit.Value <= Model.LectEX.entercount ? ", [이어보기 초과]" : "")))</td></tr>
|
||||
@if (Model.LectEX.estart != null)
|
||||
|
|
@ -56,7 +57,8 @@
|
|||
var openedexam = false;
|
||||
function goexam() {
|
||||
if (@(Model.LectEX.eend == null && (Model.LectEX.estart == null || Model.LectEX.relaylimit.Value >= Model.LectEX.entercount) ? 1 : 0) == 1) {
|
||||
if (@(Model.LectEX.sdate.Value > DateTime.Now || Convert.ToDateTime(Model.LectEX.edate.Value.ToString("yyyy-MM-dd")).AddDays(1).AddSeconds(-1) < DateTime.Now?0:1)== 0) {
|
||||
if (@(Convert.ToDateTime(Model.LectEX.testsdate) > DateTime.Now
|
||||
|| Convert.ToDateTime(Convert.ToDateTime(Model.LectEX.testedate).ToString("yyyy-MM-dd")).AddDays(1).AddSeconds(-1) < DateTime.Now ? 0 : 1) == 0) {
|
||||
msg("응시기간이 아닙니다.");
|
||||
} else if (@Model.LectEX.rtime < 1 && @Model.LectEX.etime > 0) {
|
||||
msg("응시시간이 초과되었습니다.");
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ width: 8px;height: 15px;border: solid white;border-width: 0 3px 3px 0;transform:
|
|||
</form>
|
||||
</div>
|
||||
<br />
|
||||
@if (Model.stringval2 == "2" && Model.stringval4 == "32") {
|
||||
@if (Model.stringval2 == "2" && (Model.stringval4 == "32" || Model.stringval4 == "108")) {
|
||||
<p class='' style="font-weight: bold; font-size: 14pt;">※ 현재 신청중인 교육은 <span style='color: red; font-weight: bold'>집체교육 참석없이</span> 교육종료일까지 수료조건을 만족하시면 됩니다.</p>
|
||||
} else if (Model.stringval2 == "2") {
|
||||
<p class='' style="font-weight: bold; font-size: 14pt;">※ 현재 신청중인 교육은 <span style='color: red; font-weight: bold'>온라인교육(동영상강의28시간 + 집체참석7시간)</span> 교육입니다.</p>
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -29,28 +29,39 @@ Global
|
|||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Staging|Any CPU = Staging|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{7D8C3282-ED23-4275-A8B6-C2533B06E30C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7D8C3282-ED23-4275-A8B6-C2533B06E30C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7D8C3282-ED23-4275-A8B6-C2533B06E30C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7D8C3282-ED23-4275-A8B6-C2533B06E30C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7D8C3282-ED23-4275-A8B6-C2533B06E30C}.Staging|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7D8C3282-ED23-4275-A8B6-C2533B06E30C}.Staging|Any CPU.Build.0 = Debug|Any CPU
|
||||
{707F0AAA-F7B7-414D-B763-33DE10980702}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{707F0AAA-F7B7-414D-B763-33DE10980702}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{707F0AAA-F7B7-414D-B763-33DE10980702}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{707F0AAA-F7B7-414D-B763-33DE10980702}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{707F0AAA-F7B7-414D-B763-33DE10980702}.Staging|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{707F0AAA-F7B7-414D-B763-33DE10980702}.Staging|Any CPU.Build.0 = Debug|Any CPU
|
||||
{748E363F-863F-4CAA-BB9B-B3BE3BE7607E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{748E363F-863F-4CAA-BB9B-B3BE3BE7607E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{748E363F-863F-4CAA-BB9B-B3BE3BE7607E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{748E363F-863F-4CAA-BB9B-B3BE3BE7607E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{748E363F-863F-4CAA-BB9B-B3BE3BE7607E}.Staging|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{748E363F-863F-4CAA-BB9B-B3BE3BE7607E}.Staging|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ED9C46ED-D635-4F9B-8372-599EEB050673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{ED9C46ED-D635-4F9B-8372-599EEB050673}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ED9C46ED-D635-4F9B-8372-599EEB050673}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ED9C46ED-D635-4F9B-8372-599EEB050673}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{ED9C46ED-D635-4F9B-8372-599EEB050673}.Staging|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{ED9C46ED-D635-4F9B-8372-599EEB050673}.Staging|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CCAA0B88-D2FD-450C-8EF3-D5F9C6C93B25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CCAA0B88-D2FD-450C-8EF3-D5F9C6C93B25}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CCAA0B88-D2FD-450C-8EF3-D5F9C6C93B25}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CCAA0B88-D2FD-450C-8EF3-D5F9C6C93B25}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{CCAA0B88-D2FD-450C-8EF3-D5F9C6C93B25}.Staging|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CCAA0B88-D2FD-450C-8EF3-D5F9C6C93B25}.Staging|Any CPU.Build.0 = Debug|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
|
|||
|
|
@ -571,6 +571,8 @@ namespace NP.Model
|
|||
public DateTime time4 { get; set; }
|
||||
public DateTime time5 { get; set; }
|
||||
public DateTime time6 { get; set; }
|
||||
public DateTime testsdate { get; set; }
|
||||
public DateTime testedate { get; set; }
|
||||
}
|
||||
|
||||
//public class Data
|
||||
|
|
|
|||
37
Model/CM.cs
37
Model/CM.cs
|
|
@ -510,6 +510,14 @@ namespace NP.Model
|
|||
/// 일일 학습 회차 제한(0:무제한)
|
||||
/// </summary>
|
||||
public int daylectinninglimit { get; set; }
|
||||
/// <summary>
|
||||
/// 강좌설정 > 시험설정 파라미터
|
||||
/// </summary>
|
||||
public string estart { get; set; } // 집체교육 시작일
|
||||
public string eend { get; set; } // 집체교육 종료일
|
||||
public string instructors { get; set; } // 교강사
|
||||
public string testsdate { get; set; } // 시험응시 시작날짜
|
||||
public string testedate { get; set; } // 시험응시 종료날짜
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
|
|
@ -2069,6 +2077,20 @@ namespace NP.Model
|
|||
/// </summary>
|
||||
public int iseq { get; set; }
|
||||
public string teachername { get; set; }
|
||||
/// <summary>강의유형</summary>
|
||||
public int cshape { get; set; }
|
||||
/// <summary>회차키</summary>
|
||||
public int cmisno { get; set; }
|
||||
/// <summary>집체교육 시작일</summary>
|
||||
public string estart { get; set; }
|
||||
/// <summary>집체교육 종료일</summary>
|
||||
public string eend { get; set; }
|
||||
/// <summary>교강사</summary>
|
||||
public string instructors { get; set; }
|
||||
/// <summary>시험응시 시작날짜</summary>
|
||||
public string testsdate { get; set; }
|
||||
/// <summary>시험응시 종료날짜</summary>
|
||||
public string testedate { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -2155,7 +2177,12 @@ namespace NP.Model
|
|||
public IList<CMEXLayer> cmexlayers { get; set; }
|
||||
public IList<CMEXQ> cmexqs { get; set; }
|
||||
public DateTime? estart { get; set; }
|
||||
|
||||
/// <summary>교육일정코드</summary>
|
||||
public int cmisno { get; set; }
|
||||
/// <summary>시험응시 시작일</summary>
|
||||
public string testsdate { get; set; }
|
||||
/// <summary>시험응시 종료일</summary>
|
||||
public string testedate { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -2359,6 +2386,12 @@ namespace NP.Model
|
|||
public String qitext8 { get; set; }
|
||||
public String qitext9 { get; set; }
|
||||
public String qitext10 { get; set; }
|
||||
/// <summary>교강사</summary>
|
||||
public string instructors { get; set; }
|
||||
/// <summary>강사명</summary>
|
||||
public string instructors_name { get; set; }
|
||||
/// <summary>회원타입</summary>
|
||||
public int usertype { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -4231,6 +4264,8 @@ namespace NP.Model
|
|||
public Int64 pcmno { get; set; }
|
||||
public Int64 cgcode { get; set; }
|
||||
public String comment { get; set; } // 안내문구
|
||||
/// <summary>담당자/교강사</summary>
|
||||
public String instructors { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -62,6 +62,5 @@ namespace NP.Model
|
|||
public Excellog excellog { get; set; }
|
||||
|
||||
public IList<Excellog> excelloglook { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue