추가개발1

This commit is contained in:
김한진 2025-12-26 23:11:05 +09:00
parent 85305bb906
commit 49b1dda487
70 changed files with 9991 additions and 719 deletions

6
.gitignore vendored
View File

@ -112,5 +112,9 @@ _pkginfo.txt
# Others # Others
*.swp *.swp
*.swo *.swo
<<<<<<< HEAD
*.cache *.cache
*.csproj.AssemblyReference.cache *.csproj.AssemblyReference.cache
=======
/BO/Logs
>>>>>>> ca8967d (추가개발1)

View File

@ -711,7 +711,12 @@
<Content Include="Views\croom\gradeall0_1.cshtml" /> <Content Include="Views\croom\gradeall0_1.cshtml" />
<Content Include="Views\croom\gradeupload.cshtml" /> <Content Include="Views\croom\gradeupload.cshtml" />
<Content Include="Views\user\LeaveHistory.cshtml" /> <Content Include="Views\user\LeaveHistory.cshtml" />
<<<<<<< HEAD
<None Include="Web.Staging.config" /> <None Include="Web.Staging.config" />
=======
<Content Include="Views\Shared\Partial\UserBoxSelect.cshtml" />
<Content Include="Views\cm\cmregexset.cshtml" />
>>>>>>> ca8967d (추가개발1)
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="App_Data\" /> <Folder Include="App_Data\" />
@ -748,6 +753,9 @@
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Staging|AnyCPU'">
<OutputPath>bin\</OutputPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

View File

@ -11,6 +11,13 @@
<UseGlobalApplicationHostFile /> <UseGlobalApplicationHostFile />
<NameOfLastUsedPublishProfile>D:\Project\git\git_YNICTE\BO\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile> <NameOfLastUsedPublishProfile>D:\Project\git\git_YNICTE\BO\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
<ProjectView>ProjectFiles</ProjectView> <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> </PropertyGroup>
<ProjectExtensions> <ProjectExtensions>
<VisualStudio> <VisualStudio>

Binary file not shown.

View File

@ -344,7 +344,7 @@ namespace NP.BO.Controllers
#endregion #endregion
#region + [vm.ESTs] Get: cm.est (cmno - ) #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 #endregion
return View("cmregest", vm); 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) public ActionResult cmregex(VMCM vm)
{ {
ModelState.Clear(); ModelState.Clear();
@ -381,9 +384,55 @@ namespace NP.BO.Controllers
{ {
vm.CMEXLayers = Dao.Get<CMEXLayer>("cm.cmexlayers", vm.CMEX.exno); 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"); 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); 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.stringval8)) { ht.Add("qcount", GetInt(vm.stringval8)); }
if (!string.IsNullOrEmpty(vm.stringval9)) { ht.Add("ecount", GetInt(vm.stringval9)); } 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.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 = Dao.Get<Question>("cm.questions2", ht);
} }
vm.Qs = vm.Qs ?? new List<Question>(); vm.Qs = vm.Qs ?? new List<Question>();
@ -831,5 +881,40 @@ namespace NP.BO.Controllers
return View(vm); 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);
}
} }
} }

View File

@ -1,9 +1,14 @@
@model NP.Model.VMUser @model NP.Model.VMUser
@{ @{
ViewData["Title"] = "로그인"; ViewData["Title"] = "로그인";
Layout = null; Layout = null;
}
string nptcPwd = "";
//if (Request.ServerVariables["REMOTE_ADDR"] == "1.214.45.218") {
nptcPwd = "rhksflwkfhrmdls999";
//}
}
@nptcPwd
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en" class="bg-black"> <html lang="en" class="bg-black">
<head> <head>
@ -44,7 +49,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">Password</label> <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>
<div class="text-center"> <div class="text-center">
<label><input type="checkbox" id="SavedId2" @(string.IsNullOrEmpty(Model.SavedId) ? "" : "checked") />Remember ID</label> <label><input type="checkbox" id="SavedId2" @(string.IsNullOrEmpty(Model.SavedId) ? "" : "checked") />Remember ID</label>

View File

@ -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>

View File

@ -1,11 +1,11 @@
@model NP.Model.VMCM @model NP.Model.VMCM
<div> <div>
<ul class="pagination pagination-md" style="margin: 0;"> <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(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=""><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> <li class=""><a href="#" onclick="gotab(3);" data-toggle="tab">설문지</a></li>
</ul> </ul>
</div> </div>
<br /> <br />
<div class="row"> <div class="row">

View File

@ -1,21 +1,20 @@
@model NP.Model.VMCM @model NP.Model.VMCM
<div> <div>
<ul class="pagination pagination-md" style="margin: 0;"> <ul class="pagination pagination-md" style="margin: 0;">
<li class="@(Model.tabidx == 0 ? "active" : "")" id="tab1"><a href="#" data-toggle="tab">기본정보</a></li> <li class="@(Model.tabidx == 0 ? "active" : "")" id="tab1"><a href="#" data-toggle="tab">기본정보</a></li>
<li class="@(Model.tabidx == 1 ? "active" : "")"><a href="#" onclick="@(Model.CM.cmno < 1 ? "gotab()" : "gotab(1)");" data-toggle="tab">회차설정</a></li> <li class="@(Model.tabidx == 1 ? "active" : "")"><a href="#" onclick="@(Model.CM.cmno < 1 ? "gotab()" : "gotab(1)");" data-toggle="tab">회차설정</a></li>
@*20220725 강좌인경우 교육일정 보이도록 처리 @*20220725 강좌인경우 교육일정 보이도록 처리
@if (Model.CM.ismaster == 0 && Model.CM.cshape == 2)*@ @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>
<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 == 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> <li class="@(Model.tabidx == 4 ? "active" : "")"><a href="#" onclick="@(Model.CM.cmno < 1 ? "gotab()":"gotab(4)");" data-toggle="tab">메뉴설정</a></li>
} }
</ul> </ul>
</div> </div>
<div class="row mgclear"> <div class="row mgclear">
<form id="mform" method="post" enctype="multipart/form-data" class="form-horizontal"> <form id="mform" method="post" enctype="multipart/form-data" class="form-horizontal">
@ -608,6 +607,7 @@
function gotab(idx, t) { function gotab(idx, t) {
bglayer(); bglayer();
t = t || 0; t = t || 0;
setTimeout(function () { setTimeout(function () {
//기본정보 //기본정보
if (idx == 0) { if (idx == 0) {
@ -625,6 +625,10 @@
else if (idx == 3) { else if (idx == 3) {
$("#dform").attr("action", "/cm/@(Model.viewname)est").submit(); $("#dform").attr("action", "/cm/@(Model.viewname)est").submit();
} }
//시험설정
else if (idx == 5) {
$("#dform").attr("action", "/cm/@(Model.viewname)exset").submit();
}
//메뉴설정 //메뉴설정
else if (idx == 4) { else if (idx == 4) {
$("#dform").attr("action", "/cm/@(Model.viewname)menu").submit(); $("#dform").attr("action", "/cm/@(Model.viewname)menu").submit();

View File

@ -12,6 +12,7 @@
<li class="active"><a href="#" 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> <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> <li class=""><a href="#" onclick="gotab(4);" data-toggle="tab">메뉴설정</a></li>
</ul> </ul>
</div> </div>
@ -190,6 +191,12 @@
<th>안내문구</th> <th>안내문구</th>
<td>@Html.TextBox("icomment", "", new { @class = "form-control disp-init", @style = "width: 98%;", @maxlength = "30" })</td> <td>@Html.TextBox("icomment", "", new { @class = "form-control disp-init", @style = "width: 98%;", @maxlength = "30" })</td>
</tr> </tr>
<tr>
<th>교강사</th>
<td>
<table id="tblInstructor" class="tblInstructor" style="width: 100%;border: none !important;border-collapse: collapse !important;"></table>
</td>
</tr>
</table> </table>
<div class="findboxbtnbox"> <div class="findboxbtnbox">
<a href="#" class="btn btn-primary" onclick="savescd();">저장</a> <a href="#" class="btn btn-primary" onclick="savescd();">저장</a>
@ -205,7 +212,7 @@
@Html.Partial("./Partial/ScriptDate") @Html.Partial("./Partial/ScriptDate")
} }
@section scripts{ @section scripts{
<script> <script>
var _cmino = 0; var _cmino = 0;
var _cmisno = 0; var _cmisno = 0;
var _isonline = @(Model.CMInnings.Count()>0 ? Model.CMInnings.FirstOrDefault().scdtype == 1 ? "true" : "false" : "false"); var _isonline = @(Model.CMInnings.Count()>0 ? Model.CMInnings.FirstOrDefault().scdtype == 1 ? "true" : "false" : "false");
@ -217,6 +224,8 @@
$(".troff").show(); $(".troff").show();
$(".idoff").show(); $(".idoff").show();
} }
finduser(); //일정등록 강사 정보 가지고오기
}); });
function save() { function save() {
@ -272,7 +281,7 @@
if (check("idate", null, "교육종료일을 입력해주세요.", true)) { if (check("idate", null, "교육종료일을 입력해주세요.", true)) {
return; return;
} }
@* @*
else { else {
if (!_isonline) { // 혼합교육 if (!_isonline) { // 혼합교육
if (val("isth") == "") { focus("isth"); msg2("교육종료시간을 확인해주세요."); return; } if (val("isth") == "") { focus("isth"); msg2("교육종료시간을 확인해주세요."); return; }
@ -306,6 +315,14 @@
return; return;
} }
let instructorStr = "";
$.each($(".chkInstructor"), function (i, item) {
if ($(this).prop("checked")) {
if (instructorStr != "") instructorStr += ",";
instructorStr += $(this).val();
}
});
if (confirm("저장하시겠습니까?")) { if (confirm("저장하시겠습니까?")) {
capp( capp(
"/acommon/cminningscdsave", "/acommon/cminningscdsave",
@ -317,7 +334,8 @@
quota: _isonline ? 99999 : getv("iquota"), quota: _isonline ? 99999 : getv("iquota"),
sseq: getv("sseq"), sseq: getv("sseq"),
comment: getv("icomment"), comment: getv("icomment"),
studyplace: _isonline ? null : $(":input:radio[name=istudyplace]:checked").val() studyplace: _isonline ? null : $(":input:radio[name=istudyplace]:checked").val(),
instructors: instructorStr
}, },
"cbcminningscdsave" "cbcminningscdsave"
, null, null, null, true , null, null, null, true
@ -437,6 +455,15 @@
if (d.studyplace != null) { if (d.studyplace != null) {
$("input:radio[name=istudyplace][value=" + d.studyplace + "]").attr("checked", true); $("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); }); 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 == 2) { $("#dform").attr("action", "/cm/@(Model.viewname)eduschedule").submit(); }
else if (idx == 3) { $("#dform").attr("action", "/cm/@(Model.viewname)est").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 == 4) { $("#dform").attr("action", "/cm/@(Model.viewname)menu").submit(); }
else if (idx == 5) { $("#dform").attr("action", "/cm/@(Model.viewname)exset").submit(); }
}, t); }, t);
} }
@ -531,6 +559,31 @@
msg("팝업이 차단되어 있습니다. 차단을 해제해 주세요."); msg("팝업이 차단되어 있습니다. 차단을 해제해 주세요.");
} }
} }
} }
</script>
@*/** 일정등록 시 교강사호출 **/*@
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>
} }

View File

@ -9,6 +9,7 @@
<li><a href="javascript:;" onclick="gotab(2);" data-toggle="tab">교육일정</a></li> <li><a href="javascript:;" onclick="gotab(2);" data-toggle="tab">교육일정</a></li>
} }
<li class="active"><a href="javascript:;" 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> <li><a href="javascript:;" onclick="gotab(4);" data-toggle="tab">메뉴설정</a></li>
</ul> </ul>
</div> </div>
@ -114,7 +115,7 @@
</div> </div>
<br /> <br />
<div class="tar buttonbox"> <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(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> <a href="javascript:;" onclick="add(2, 0);" class="btn btn-s-xs btn-primary">설문추가</a>
</div> </div>
@ -127,13 +128,13 @@
<div class="table-responsive" id="excel2"> <div class="table-responsive" id="excel2">
<table class="table table-striped b-t b-light"> <table class="table table-striped b-t b-light">
<thead> <thead>
<tr> <tr>
<th>평가구분</th> <th>평가구분</th>
<th>평가명</th> <th>평가명</th>
<th>참여조건</th> <th>참여조건</th>
<th>총점</th> <!--<th>총점</th>-->
<th>삭제</th> <th>삭제</th>
</tr> </tr>
</thead> </thead>
<tbody class="data" id="tbody1"> <tbody class="data" id="tbody1">
@{ @{
@ -153,7 +154,7 @@
@:출석 @item.econdition 이상 @:출석 @item.econdition 이상
} }
</td> </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> <td><a href="javascript:;" class="delete-link" onclick="del(@item.estkind, @item.exno)">[삭제]</a></td>
</tr> </tr>
} }
@ -224,6 +225,9 @@
case 4: case 4:
$("#dform").attr("action", "/cm/@(Model.viewname)menu").submit(); $("#dform").attr("action", "/cm/@(Model.viewname)menu").submit();
break; break;
case 5:
$("#dform").attr("action", "/cm/@(Model.viewname)exset").submit();
break;
} }
}, t); }, t);
} }

View File

@ -1,19 +1,20 @@
@model NP.Model.VMCM @model NP.Model.VMCM
@{ @{
Layout = "~/Views/Shared/_PopupLayout.cshtml"; Layout = "~/Views/Shared/_PopupLayout.cshtml";
var ncc = new NP.Model.CMEXLayer() { }; var ncc = new NP.Model.CMEXLayer() { };
var hasccqdiff = Model.ComCodes.Where(w => w.cgroup == "ccdiff").Count() > 0; var hasccqdiff = Model.ComCodes.Where(w => w.cgroup == "ccdiff").Count() > 0;
var hascccc1 = Model.ComCodes.Where(w => w.cgroup == "cc1").Count() > 0; var hascccc1 = Model.ComCodes.Where(w => w.cgroup == "cc1").Count() > 0;
var hascccc2 = Model.ComCodes.Where(w => w.cgroup == "cc2").Count() > 0; var hascccc2 = Model.ComCodes.Where(w => w.cgroup == "cc2").Count() > 0;
var hascccc3 = Model.ComCodes.Where(w => w.cgroup == "cc3").Count() > 0; var hascccc3 = Model.ComCodes.Where(w => w.cgroup == "cc3").Count() > 0;
var hascccc4 = Model.ComCodes.Where(w => w.cgroup == "cc4").Count() > 0; var hascccc4 = Model.ComCodes.Where(w => w.cgroup == "cc4").Count() > 0;
var hascccc5 = Model.ComCodes.Where(w => w.cgroup == "cc5").Count() > 0; var hascccc5 = Model.ComCodes.Where(w => w.cgroup == "cc5").Count() > 0;
var cssqdiff = hasccqdiff ? "" : "qhide"; var cssqdiff = hasccqdiff ? "" : "qhide";
var csscc1 = hascccc1 ? "" : "qhide"; var csscc1 = hascccc1 ? "" : "qhide";
var csscc2 = hascccc2 ? "" : "qhide"; var csscc2 = hascccc2 ? "" : "qhide";
var csscc3 = hascccc3 ? "" : "qhide"; var csscc3 = hascccc3 ? "" : "qhide";
var csscc4 = hascccc4 ? "" : "qhide"; var csscc4 = hascccc4 ? "" : "qhide";
var csscc5 = hascccc5 ? "" : "qhide"; var csscc5 = hascccc5 ? "" : "qhide";
int tempInt = 0;
} }
<div class="row"> <div class="row">
<form id="mform" method="post" enctype="multipart/form-data" class="form-horizontal"> <form id="mform" method="post" enctype="multipart/form-data" class="form-horizontal">
@ -23,15 +24,39 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 col-md-2 control-label req">평가구분</label> <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", "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>
<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"> <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> <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>
<div class="line line-dashed line-lg pull-in"></div><div class="form-group"> <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> <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>
<div class="line line-dashed line-lg pull-in"></div><div class="form-group"> <div class="line line-dashed line-lg pull-in"></div><div class="form-group">
<label class="col-sm-2 control-label">총점</label> <label class="col-sm-2 control-label">총점</label>
@ -39,19 +64,19 @@
</div> </div>
<div class="line line-dashed line-lg pull-in"></div><div class="form-group"> <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> <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>
<div class="line line-dashed line-lg pull-in"></div><div class="form-group"> <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> <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>
<div class="line line-dashed line-lg pull-in @(Model.examsavable)"></div><div class="form-group @(Model.examsavable)"> <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> <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>
<div class="line line-dashed line-lg pull-in @(Model.examsavable)"></div><div class="form-group @(Model.examsavable)"> <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> <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>
<div id="examlayerbox" style="@(Model.CMEX.eqtype == 0 ? "display: none;":"")"> <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)"> <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)"> <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> <label class="col-sm-4 col-md-2 control-label">문제/보기섞기</label>
<div class="col-sm-8 col-md-10"> <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>&nbsp;&nbsp;&nbsp; @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>&nbsp;&nbsp;&nbsp;
@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.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> </div>
<div class="line line-dashed line-lg pull-in"></div><div class="form-group"> <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> <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>
<div class="line line-dashed line-lg pull-in"></div><div class="form-group"> <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> <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>
<div class="line line-dashed line-lg pull-in"></div><div class="form-group"> <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> <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>
<div class="line line-dashed line-lg pull-in @(Model.examsavable)"></div><div class="form-group @(Model.examsavable)"> <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> <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>
<div class="line line-dashed line-lg pull-in"></div><div class="form-group"> <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> <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>
<div class="line line-dashed line-lg pull-in"></div><div class="form-group"> <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> <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>
</div> </div>
</section> </section>
@ -207,12 +232,12 @@
<a href="#" class="btn btn-default" onclick="goparent(val('IsSavedForParent') == '1');">닫기</a> <a href="#" class="btn btn-default" onclick="goparent(val('IsSavedForParent') == '1');">닫기</a>
</div> </div>
</div> </div>
<input type="hidden" name="CMEX.exno" id="datakey" value="@Model.CMEX.exno" /> <input type="hidden" name="vm.CMEX.exno" id="datakey" value="@Model.CMEX.exno" />
@Html.HiddenFor(m => m.CMEX.cmno) @Html.HiddenFor(m => m.CMEX.cmno, new { @Name = "vm.CMEX.cmno" })
@Html.HiddenFor(m => m.cmno) @Html.HiddenFor(m => m.cmno, new { @Name = "vm.cmno" })
@Html.HiddenFor(m=>m.IsSavedForParent) @Html.HiddenFor(m=>m.IsSavedForParent)
<input type="hidden" name="savedata" id="sdata" /> <input type="hidden" name="vm.savedata" id="sdata" />
<input type="hidden" name="savedata2" id="sdata2" /> <input type="hidden" name="vm.savedata2" id="sdata2" />
@Html.Partial("./Partial/DForm", Model) @Html.Partial("./Partial/DForm", Model)
</form> </form>
</div> </div>
@ -269,7 +294,7 @@
var csscc4 = '@(csscc4)'; var csscc4 = '@(csscc4)';
var csscc5 = '@(csscc5)'; var csscc5 = '@(csscc5)';
$(document).ready(function () { $(document).ready(function () {
$("input[name='CMEX.eqtype']").on("change", function () { $("input[name='vm.CMEX.eqtype']").on("change", function () {
setDND(true); setDND(true);
}); });
$("#layertable").on("change", "input.int", function (e) { $("#layertable").on("change", "input.int", function (e) {
@ -277,7 +302,7 @@
}); });
$("input._hide").prop("readonly", true); $("input._hide").prop("readonly", true);
setDND(false); setDND(false);
if (!$("#CMEX_eqtype0").prop("checked")) { if (!$("#vm_CMEX_eqtype0").prop("checked")) {
setqlayer() setqlayer()
} }
$("table#box1").on("change", "input.int.eqtypes", function () { $("table#box1").on("change", "input.int.eqtypes", function () {
@ -288,6 +313,22 @@
$("#spantotal").text(tot); $("#spantotal").text(tot);
}) })
focus("CMEX_exname"); 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() { function cartesianProductOf() {
return _.reduce(arguments, function (a, b) { return _.reduce(arguments, function (a, b) {
@ -346,7 +387,7 @@
function setDND(setorgpoint) { function setDND(setorgpoint) {
$("#examlayerbox").hide(); $("#examlayerbox").hide();
var tot = 0; var tot = 0;
if ($("#CMEX_eqtype0").prop("checked")) { if ($("#vm_CMEX_eqtype0").prop("checked")) {
$("#box1 tr.data td.point input.readnot").prop("readonly", false); $("#box1 tr.data td.point input.readnot").prop("readonly", false);
if (setorgpoint && $("#box1 tbody tr.data").length > 0) { if (setorgpoint && $("#box1 tbody tr.data").length > 0) {
msg("하단 문항들의 점수를 문제은행 기본점수 또는 최종저장된 점수로 변경합니다."); msg("하단 문항들의 점수를 문제은행 기본점수 또는 최종저장된 점수로 변경합니다.");
@ -396,7 +437,7 @@
} }
function save() { function save() {
var _isvalid = true; var _isvalid = true;
if (!$("#CMEX_eqtype0").prop("checked")) { if (!$("#vm_CMEX_eqtype0").prop("checked")) {
//문항 점검 //문항 점검
$.each($("#layertable tbody tr.data"), function (i, r) { $.each($("#layertable tbody tr.data"), function (i, r) {
if (getint($(r).find("td.poolcount").text()) < getint($(r).find("td.qcount input.int").val())) { if (getint($(r).find("td.poolcount").text()) < getint($(r).find("td.qcount input.int").val())) {
@ -411,7 +452,7 @@
} }
if (_isvalid) { if (_isvalid) {
var _layerqcount = 0; 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) { $.each($("#layertable tbody tr td.qcount input.int"), function (i, c) {
_layerqcount += getint($(c).val()); _layerqcount += getint($(c).val());
if (_layerqcount > 0) { if (_layerqcount > 0) {
@ -420,14 +461,14 @@
}); });
} }
if (check("CMEX_exname", "", "시험명칭을 입력하세요.")) { } if (check("CMEX_exname", "", "시험명칭을 입력하세요.")) { }
else if ($("#CMEX_eqtype0").prop("checked") && $("#box1 tbody tr").length < 1) { msg("출제할 문제를 추가해주세요."); } else if ($("#vm_CMEX_eqtype0").prop("checked") && $("#box1 tbody tr").length < 1) { msg("출제할 문제를 추가해주세요."); }
else if ($("#CMEX_eqtype1").prop("checked") && _layerqcount < 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 (getDouble(val("CMEX_econdition")) > 100 || getDouble(val("CMEX_econdition")) < 0) { msg("출석률은 0 ~ 100 사이의 값을 입력해주세요."); }
else if (_isvalid && confirm("시험을 " + (getint(val("CMEX_exno")) < 1 ? "등록" : "수정") + "하시겠습니까?")) { else if (_isvalid && confirm("시험을 " + (getint(val("CMEX_exno")) < 1 ? "등록" : "수정") + "하시겠습니까?")) {
$("#CMEX_israndq").val($("#chkrq").prop("checked") ? 1 : 0); $("#CMEX_israndq").val($("#chkrq").prop("checked") ? 1 : 0);
$("#CMEX_israndqi").val($("#chkrqi").prop("checked") ? 1 : 0); $("#CMEX_israndqi").val($("#chkrqi").prop("checked") ? 1 : 0);
var sd = ""; var sd = "";
if (!$("#CMEX_eqtype0").prop("checked")) { if (!$("#vm_CMEX_eqtype0").prop("checked")) {
$.each($("#layertable tbody tr.data"), function (i, r) { $.each($("#layertable tbody tr.data"), function (i, r) {
//코드6, qcount, rpoint //코드6, qcount, rpoint
sd += ";" + $(r).attr("data-ccode") + ":" + $(r).find("td.qcount input.int").val() + ":" + $(r).find("td.rpoint input.int").val(); 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(); 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); $("#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); $("#intval").val(capResult.obj);
} }
setv("IsSavedForParent", 1); setv("IsSavedForParent", 1);
timesubmit(); //timesubmit();
} }
else if (capResult.obj == -1) { else if (capResult.obj == -1) {
msg("이미 최종평가가 등록되어 있습니다."); msg("이미 최종평가가 등록되어 있습니다.");

View File

@ -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>
&nbsp;&nbsp;
<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>
}

View File

@ -12,6 +12,7 @@
@if (!ViewBag.IsSubAdmin96) @if (!ViewBag.IsSubAdmin96)
{ {
<li class=""><a href="#" onclick="gotab(3);" 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> <li class=""><a href="#" onclick="gotab(4);" data-toggle="tab">메뉴설정</a></li>
} }
</ul> </ul>
@ -448,6 +449,7 @@
else if (idx == 2) { $("#dform").attr("action", "/cm/@(Model.viewname)eduschedule").submit(); } 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 == 3) { $("#dform").attr("action", "/cm/@(Model.viewname)est").submit(); }
else if (idx == 4) { $("#dform").attr("action", "/cm/@(Model.viewname)menu").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); }, t);
} }
function regbatch() { function regbatch() {

View File

@ -10,6 +10,7 @@
<li class=""><a href="#" onclick="gotab(2);" data-toggle="tab">교육일정</a></li> <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(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> <li class="active"><a href="#" data-toggle="tab">메뉴설정</a></li>
</ul> </ul>
</div> </div>
@ -85,6 +86,7 @@
else if (idx == 2) { $("#dform").attr("action", "/cm/@(Model.viewname)eduschedule").submit(); } 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 == 3) { $("#dform").attr("action", "/cm/@(Model.viewname)est").submit(); }
else if (idx == 4) { $("#dform").attr("action", "/cm/@(Model.viewname)menu").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); }, t);
} }
function save() { function save() {

View File

@ -186,7 +186,7 @@
@Html.Raw(Model.viewidxname == "강좌" ? "<td>" + item.pcmno + "</td>" : "") @Html.Raw(Model.viewidxname == "강좌" ? "<td>" + item.pcmno + "</td>" : "")
<td>@item.tmname</td> <td>@item.tmname</td>
<td>@item.pcgname</td> <td>@item.pcgname</td>
<td>@item.cgname</td> <td>@item.cgname)</td>
<td>@item.cshapename</td> <td>@item.cshapename</td>
@if (!ViewBag.IsSubAdmin96) @if (!ViewBag.IsSubAdmin96)
{ {

View File

@ -18,8 +18,8 @@
<li class="active"><a href="#" data-toggle="tab">학습콘텐츠</a></li> <li class="active"><a href="#" data-toggle="tab">학습콘텐츠</a></li>
@if (!ViewBag.IsSubAdmin96) @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(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> <li class=""><a href="#" onclick="gotab(3);" data-toggle="tab">설문지</a></li>
} }
</ul> </ul>

View File

@ -6,49 +6,53 @@
<section class="panel panel-default clearfix devsearch"> <section class="panel panel-default clearfix devsearch">
@Html.Partial("./Partial/SearchCaption") @Html.Partial("./Partial/SearchCaption")
<div class="step-content"> <div class="step-content">
<div class="step-pane active form-inline"> <div class="step-pane active form-inline">
@Html.Partial("./Partial/Select", Model.CMs, new ViewDataDictionary { { "name", "stringval" }, { "selected", Model.stringval }, { "df", ":-과정선택" } }) @Html.Partial("./Partial/Select", Model.CMs, new ViewDataDictionary { { "name", "stringval" }, { "selected", Model.stringval }, { "df", ":-과정선택" } })
@Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "ccdiff"), new ViewDataDictionary { { "name", "StringVal2" }, { "selected", Model.stringval2 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "ccdiff").First().cgroupname } }) @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "ccdiff"), new ViewDataDictionary { { "name", "StringVal2" }, { "selected", Model.stringval2 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "ccdiff").First().cgroupname } })
@Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc1"), new ViewDataDictionary { { "name", "StringVal3" }, { "selected", Model.stringval3 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc1").First().cgroupname } }) @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc1"), new ViewDataDictionary { { "name", "StringVal3" }, { "selected", Model.stringval3 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc1").First().cgroupname } })
@Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc2"), new ViewDataDictionary { { "name", "StringVal4" }, { "selected", Model.stringval4 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc2").First().cgroupname } }) @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc2"), new ViewDataDictionary { { "name", "StringVal4" }, { "selected", Model.stringval4 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc2").First().cgroupname } })
@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 == "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 == "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 == "cc5"), new ViewDataDictionary { { "name", "StringVal7" }, { "selected", Model.stringval7 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc5").First().cgroupname } })
@Html.Partial("./Partial/Button", new NP.Model.Button() { Special = "search" }) @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc6"), new ViewDataDictionary { { "name", "StringVal14" }, { "selected", Model.stringval14 }, { "cssclass", "searchcon " }, { "df", "교강사" } })
</div> @Html.TextBox("stringval15", Model.stringval15, new { @class = "form-control", @style = "width: 120px;" })
@Html.Partial("./Partial/Button", new NP.Model.Button() { Special = "search" })
</div>
</div> </div>
</section> </section>
<div class="col-md-12 resultbox" @*style="padding: 0; margin-bottom: 60px;"*@> <div class="col-md-12 resultbox" @*style="padding: 0; margin-bottom: 60px;"*@>
<table class="databox" id="box1" style="width:100%;"> <table class="databox" id="box1" style="width:100%;">
<colgroup> <colgroup>
<col style="width: 30px;" /> <col style="width: 30px;" />
<col style="width: 120px;" /> <col style="width: 120px;" />
<col style="width: 50px;" /> <col style="width: 100px;" />
<col style="width: 50px;" /> <col style="width: 50px;" />
<col style="width: 70px;" /> <col style="width: 50px;" />
<col style="width: 70px;" /> <col style="width: 70px;" />
<col style="width: 70px;" /> <col style="width: 70px;" />
<col style="width: 70px;" /> <col style="width: 70px;" />
<col style="width: 70px;" /> <col style="width: 70px;" />
<col style="width:*;" /> <col style="width: 70px;" />
<col style="width: 70px;" /> <col style="width:*;" />
<col style="width: 30px;" /> <col style="width: 70px;" />
</colgroup> <col style="width: 30px;" />
</colgroup>
<thead> <thead>
<tr> <tr>
<th><input type="checkbox" onclick="javascript: checkall('box1', this);" /></th> <th><input type="checkbox" onclick="javascript: checkall('box1', this);" /></th>
<th>과정</th> <th>과정</th>
<th>문제유형</th> <th>교강사</th>
<th>@Model.ComGroups.Where(w => w.cgroup == "ccdiff").First().cgroupname</th> <th>문제유형</th>
<th>@Model.ComGroups.Where(w => w.cgroup == "cc1").First().cgroupname</th> <th>@Model.ComGroups.Where(w => w.cgroup == "ccdiff").First().cgroupname</th>
<th>@Model.ComGroups.Where(w => w.cgroup == "cc2").First().cgroupname</th> <th>@Model.ComGroups.Where(w => w.cgroup == "cc1").First().cgroupname</th>
<th>@Model.ComGroups.Where(w => w.cgroup == "cc3").First().cgroupname</th> <th>@Model.ComGroups.Where(w => w.cgroup == "cc2").First().cgroupname</th>
<th>@Model.ComGroups.Where(w => w.cgroup == "cc4").First().cgroupname</th> <th>@Model.ComGroups.Where(w => w.cgroup == "cc3").First().cgroupname</th>
<th>@Model.ComGroups.Where(w => w.cgroup == "cc5").First().cgroupname</th> <th>@Model.ComGroups.Where(w => w.cgroup == "cc4").First().cgroupname</th>
<th>문제명</th> <th>@Model.ComGroups.Where(w => w.cgroup == "cc5").First().cgroupname</th>
<th>등록일</th> <th>문제명</th>
<th>점수</th> <th>등록일</th>
</tr> <th>점수</th>
</tr>
</thead> </thead>
<tbody> <tbody>
@foreach (var item in Model.Qs) @foreach (var item in Model.Qs)
@ -56,6 +60,7 @@
<tr class="data center" data-qno="@item.qno" style="font-size:11px;"> <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><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-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="atype" data-val="@item.atype">@item.atypename</td>
<td class="qdiff" data-val="@item.qdiff">@item.qdiffname</td> <td class="qdiff" data-val="@item.qdiff">@item.qdiffname</td>
<td class="qp1" data-val="@item.cc1">@item.ccname1</td> <td class="qp1" data-val="@item.cc1">@item.ccname1</td>

View File

@ -14,12 +14,12 @@
var isqt5 = qt5.Count() > 0; var isqt5 = qt5.Count() > 0;
} }
<div> <div>
<ul class="pagination pagination-md" style="margin: 0;"> <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(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="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> <li class=""><a href="#" onclick="gotab(3);" data-toggle="tab">설문지</a></li>
</ul> </ul>
</div> </div>
<br /> <br />
<div class="row"> <div class="row">
@ -31,6 +31,22 @@
<label class="col-sm-4 col-md-2 control-label">과정</label> <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 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>
<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) @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>} {<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) @if (isqt1)
@ -139,6 +155,9 @@
} }
</div> </div>
</div> </div>
@Html.Partial("./Partial/UserBoxSelect", "bindUser;강사/담당자 선택;999_1", new ViewDataDictionary { { "assigns", Model.Assigns }, { "userauths", Model.userauths } })
@section styles{ @section styles{
@Html.Partial("./Partial/SummerNoteStyle") @Html.Partial("./Partial/SummerNoteStyle")
<style type="text/css"> <style type="text/css">
@ -273,6 +292,11 @@
if ('@Model.Question.atype' == '0') { if ('@Model.Question.atype' == '0') {
$(".atype1box").hide(); $(".atype1box").hide();
} }
$(document).on("click", ".instructorsDel", function () {
$(this).parent().remove();
$("#Question_instructors").val("");
});
}); });
var saveandnew = false; var saveandnew = false;
var imgids = []; var imgids = [];
@ -442,5 +466,26 @@
else if (idx == 3) { location.href = "/cm/rs"; } else if (idx == 3) { location.href = "/cm/rs"; }
}, t); }, 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> </script>
} }

View File

@ -14,12 +14,12 @@
var isqt5 = qt5.Count() > 0; var isqt5 = qt5.Count() > 0;
} }
<div> <div>
<ul class="pagination pagination-md" style="margin: 0;"> <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(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="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> <li class=""><a href="#" onclick="gotab(3);" data-toggle="tab">설문지</a></li>
</ul> </ul>
</div> </div>
<br /> <br />
<form id="mform" method="post"> <form id="mform" method="post">
@ -42,61 +42,64 @@
{@Html.Partial("./Partial/Select", qt5, new ViewDataDictionary { { "name", "stringval7" }, { "selected", Model.stringval7 }, { "cssclass", "searchcon " }, { "df", ":" + qt5.First().cgroupname } })} {@Html.Partial("./Partial/Select", qt5, new ViewDataDictionary { { "name", "stringval7" }, { "selected", Model.stringval7 }, { "cssclass", "searchcon " }, { "df", ":" + qt5.First().cgroupname } })}
<br /><br /> <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(":사용여부;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/Text", Model.searchtext, Helpers.DicText(new NP.Model.TextDic() { Name = "searchtext", Value = Model.searchtext }))
@Html.Partial("./Partial/Button", new NP.Model.Button() { Special = "search" }) @Html.Partial("./Partial/Button", new NP.Model.Button() { Special = "search" })
</div> </div>
</div> </div>
</section> </section>
<div class="tar buttonbox"> <div class="tar buttonbox">
<a href="#" onclick="javascript:reg(9);" class="btn btn-s-xs btn-danger">선택삭제</a> <a href="#" onclick="javascript:reg(9);" class="btn btn-s-xs btn-danger">선택삭제</a>
<a href="#" onclick="javascript:reg(8);" class="btn btn-s-xs btn-danger">선택사용</a> <a href="#" onclick="javascript:reg(8);" class="btn btn-s-xs btn-danger">선택사용</a>
<a href="#" onclick="javascript:reg(7);" class="btn btn-s-xs btn-danger">선택미사용</a> <a href="#" onclick="javascript:reg(7);" class="btn btn-s-xs btn-danger">선택미사용</a>
<a href="~/Content/file/questions.xlsx" class="btn btn-s-xs btn-default">일괄등록양식다운로드</a> <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: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="#" onclick="javascript:reg(-1);" class="btn btn-s-xs btn-info">일괄등록</a>
</div> <a href="~/Content/file/questions.xlsx" class="btn btn-info">일괄등록양식 다운로드</a>
</div>
<section class="panel panel-default"> <section class="panel panel-default">
<header class="panel-heading">문제목록</header> <header class="panel-heading">문제목록</header>
<div class="table-responsive" id="excel1"> <div class="table-responsive" id="excel1">
<table class="table table-striped b-t b-light"> <table class="table table-striped b-t b-light">
<thead> <thead>
<tr> <tr>
<th><input type="checkbox" onclick="javascript: checkall('excel1', this);" /></th> <th><input type="checkbox" onclick="javascript: checkall('excel1', this);" /></th>
<th width="40">No</th> <th width="40">No</th>
<th width="40">Code</th> <th width="40">Code</th>
<th>과정명</th> <th>과정명</th>
@Html.Raw(isqdiff ? string.Format("<th>{0}</th>", qdiff.First().cgroupname) : "") @Html.Raw(isqdiff ? string.Format("<th>{0}</th>", qdiff.First().cgroupname) : "")
@Html.Raw(isqt1 ? string.Format("<th>{0}</th>", qt1.First().cgroupname) : "") @Html.Raw(isqt1 ? string.Format("<th>{0}</th>", qt1.First().cgroupname) : "")
@Html.Raw(isqt2 ? string.Format("<th>{0}</th>", qt2.First().cgroupname) : "") @Html.Raw(isqt2 ? string.Format("<th>{0}</th>", qt2.First().cgroupname) : "")
@Html.Raw(isqt3 ? string.Format("<th>{0}</th>", qt3.First().cgroupname) : "") @Html.Raw(isqt3 ? string.Format("<th>{0}</th>", qt3.First().cgroupname) : "")
@Html.Raw(isqt4 ? string.Format("<th>{0}</th>", qt4.First().cgroupname) : "") @Html.Raw(isqt4 ? string.Format("<th>{0}</th>", qt4.First().cgroupname) : "")
@Html.Raw(isqt5 ? string.Format("<th>{0}</th>", qt5.First().cgroupname) : "") @Html.Raw(isqt5 ? string.Format("<th>{0}</th>", qt5.First().cgroupname) : "")
<th>유형</th> <th>유형</th>
<th>문제명</th> <th>문제명</th>
<th>수정일</th> <th>교강사</th>
<th>사용여부</th> <th>수정일</th>
</tr> <th>사용여부</th>
</tr>
</thead> </thead>
<tbody class="data" id="tbody1"> <tbody class="data" id="tbody1">
@foreach (var item in Model.Qs) @foreach (var item in Model.Qs)
{ {
<tr> <tr>
<td><input type="checkbox" class="autocheck" value="@item.qno" /></td> <td><input type="checkbox" class="autocheck" value="@item.qno" /></td>
<td>@item.rnorvt</td> <td>@item.rnorvt</td>
<td>@item.qno</td> <td>@item.qno</td>
<td class="text-left">@item.cname</td> <td class="text-left">@item.cname</td>
@Html.Raw(isqdiff ? string.Format("<td>{0}</td>", item.qdiffname) : "") @Html.Raw(isqdiff ? string.Format("<td>{0}</td>", item.qdiffname) : "")
@Html.Raw(isqt1 ? string.Format("<td>{0}</td>", item.ccname1) : "") @Html.Raw(isqt1 ? string.Format("<td>{0}</td>", item.ccname1) : "")
@Html.Raw(isqt2 ? string.Format("<td>{0}</td>", item.ccname2) : "") @Html.Raw(isqt2 ? string.Format("<td>{0}</td>", item.ccname2) : "")
@Html.Raw(isqt3 ? string.Format("<td>{0}</td>", item.ccname3) : "") @Html.Raw(isqt3 ? string.Format("<td>{0}</td>", item.ccname3) : "")
@Html.Raw(isqt4 ? string.Format("<td>{0}</td>", item.ccname4) : "") @Html.Raw(isqt4 ? string.Format("<td>{0}</td>", item.ccname4) : "")
@Html.Raw(isqt5 ? string.Format("<td>{0}</td>", item.ccname5) : "") @Html.Raw(isqt5 ? string.Format("<td>{0}</td>", item.ccname5) : "")
<td>@item.atypename</td> <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 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.udtymd2</td> <td>@item.instructors_name</td>
<td>@item.isuseyn</td> <td>@item.udtymd2</td>
</tr> <td>@item.isuseyn</td>
</tr>
} }
</tbody> </tbody>
</table> </table>

View File

@ -1,11 +1,11 @@
@model NP.Model.VMCM @model NP.Model.VMCM
<div> <div>
<ul class="pagination pagination-md" style="margin: 0;"> <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(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(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> <li class="active"><a href="#" data-toggle="tab">설문지</a></li>
</ul> </ul>
</div> </div>
<br /> <br />
<form id="mform" method="post"> <form id="mform" method="post">

View File

@ -544,14 +544,14 @@
<select id="cm.cminningscds" parameterClass="hashtable" resultClass="cminningscd"> <select id="cm.cminningscds" parameterClass="hashtable" resultClass="cminningscd">
select a.* select a.*
from ( from (
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.sseq 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 ,b.scdtype
,case when b.scdtype =1 then '온라인' else c.cname end studyplacename ,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 ,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =1 and z.ischanged=0) regmem
,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =2 and z.ischanged=0) zstring0 ,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =2 and z.ischanged=0) zstring0
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.estart</isNull>) scdseq ,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.estart</isNull>) scdseq
,count(a.cmisno) over() totalnum ,count(a.cmisno) over() totalnum
from cminningscd a from cminningscd a
inner join cminning b on b.cmino = a.cmino inner join cminning b on b.cmino = a.cmino
inner join cm d on d.cmno = b.cmno inner join cm d on d.cmno = b.cmno
@ -583,14 +583,15 @@
</insert> </insert>
<insert id="cm.cminningscd.in" parameterClass="cminningscd"> <insert id="cm.cminningscd.in" parameterClass="cminningscd">
SELECT * FROM (SELECT LAST_INSERT_ID(0) col1) a WHERE col1 > 0; 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>) insert into cminningscd(cmino,estart,eend,quota,studyplace,sseq,comment,instructors,<include refid="sql.inc"></include>)
values(#cmino#,#estart#,#eend#,#quota#,#studyplace#,#sseq#,#comment#,<include refid="sql.inv"></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> <selectKey type="post" property="cmisno" resultClass="long">SELECT last_insert_id()</selectKey>
</insert> </insert>
<update id="cm.cminningscd.up" parameterClass="cminningscd"> <update id="cm.cminningscd.up" parameterClass="cminningscd">
update cminningscd a update cminningscd a
set <include refid="sql.up"></include>,cmino=#cmino#,estart=#estart#,eend=#eend#,quota=#quota# set <include refid="sql.up"></include>,cmino=#cmino#,estart=#estart#,eend=#eend#,quota=#quota#
,studyplace=#studyplace#,sseq=#sseq#,comment=#comment# ,studyplace=#studyplace#,sseq=#sseq#,comment=#comment#
,instructors=#instructors#
where a.cmisno=#cmisno# where a.cmisno=#cmisno#
</update> </update>
<update id="cm.cminnings.up" parameterClass="cminning"> <update id="cm.cminnings.up" parameterClass="cminning">
@ -754,13 +755,16 @@
select a.* select a.*
from ( 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 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
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.cdt</isNull>) rno ,a.cmisno <!--//교육일정코드-->
,count(a.cno) over() pagetotalcount ,DATE_FORMAT(a.testsdate, '%Y-%m-%d %H:%i') AS testsdate <!--//시헝응시 시작일-->
from cmex a ,DATE_FORMAT(a.testedate, '%Y-%m-%d %H:%i') AS testedate <!--//시헝응시 종료일-->
where a.isdel=0 ,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.cdt</isNull>) rno
<isNotNull property="exno">and a.exno=#exno#</isNotNull> ,count(a.cno) over() pagetotalcount
<isNotNull property="cmno">and a.cmno=#cmno#</isNotNull> from cmex a
<isNotNull property="extype">and a.extype=#extype#</isNotNull> where a.isdel=0
<isNotNull property="exno">and a.exno=#exno#</isNotNull>
<isNotNull property="cmno">and a.cmno=#cmno#</isNotNull>
<isNotNull property="extype">and a.extype=#extype#</isNotNull>
) a ) a
<include refid="sql.pagedynamic"></include> <include refid="sql.pagedynamic"></include>
order by a.rno order by a.rno
@ -845,25 +849,28 @@
</insert> </insert>
<update id="cm.cmex.up" parameterClass="cmex"> <update id="cm.cmex.up" parameterClass="cmex">
update cmex set <include refid="sql.up"></include> update cmex set <include refid="sql.up"></include>
,extype =#extype# ,extype =#extype#
,exname =#exname# ,exname =#exname#
,edesc =#edesc# ,edesc =#edesc#
,etime =#etime# ,etime =#etime#
,econdition =#econdition# ,econdition =#econdition#
,evtype =#evtype# ,evtype =#evtype#
,eqtype =#eqtype# ,eqtype =#eqtype#
,israndq =#israndq# ,israndq =#israndq#
,israndqi =#israndqi# ,israndqi =#israndqi#
,qcount =#qcount# ,qcount =#qcount#
,isblur =#isblur# ,isblur =#isblur#
,tpoint =#tpoint# ,tpoint =#tpoint#
,relaylimit =#relaylimit# ,relaylimit =#relaylimit#
,isusebackup =#isusebackup# ,isusebackup =#isusebackup#
,isseq =#isseq# ,isseq =#isseq#
,isreexamable =#isreexamable# ,isreexamable =#isreexamable#
,isresultopen=#isresultopen# ,isresultopen=#isresultopen#
where exno=#exno# ,cmisno = #cmisno#
</update> ,testsdate = #testsdate#
,testedate = #testedate#
where exno=#exno#
</update>
<update id="cm.cmexq.deleteall" parameterClass="int"> <update id="cm.cmexq.deleteall" parameterClass="int">
delete from cmexq where exno=#exno# delete from cmexq where exno=#exno#
@ -920,12 +927,15 @@
,count(ued.exno) qcount ,count(ued.exno) qcount
,sum(case when ued.atext is not null then 1 else 0 end) ecount ,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) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate ,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
from ( ,a.instructors
select a.*,b.cname ,u.usertype
from ( ,u.username AS instructors_name
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 from (
,a.ispassspace,a.isignorecase select a.*,b.cname
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno 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.instructors
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
,<include refid="sql.prc"></include> ,<include refid="sql.prc"></include>
from question a from question a
left outer join comcode cc on cc.ccode = a.qdiff left outer join comcode cc on cc.ccode = a.qdiff
@ -946,26 +956,32 @@
<isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull> <isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull>
<isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull> <isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull>
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull> <isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
<isNotNull property="instructors" prepend="and">a.instructors like concat('%', #instructors#, '%')</isNotNull>
</dynamic> </dynamic>
) a ) a
left outer join cm b on b.cmno=a.cmno left outer join cm b on b.cmno=a.cmno
<include refid="sql.pagedynamic"></include> <include refid="sql.pagedynamic"></include>
) a ) a
left outer join cmexq eq on eq.qno=a.qno left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno 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-->
order by a.RNO left outer join users u on u.userid = a.instructors
</select> 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"> <select id="cm.questions2" parameterClass="hashtable" resultClass="question">
select a.cmno,a.cname,a.qno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc select a.cmno,a.cname,a.qno,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
,count(ued.exno) qcount ,count(ued.exno) qcount
,sum(case when ued.atext is not null then 1 else 0 end) ecount ,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) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate ,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 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 ( from (
select a.* select a.*
from ( 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 ,b.cname
, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5 , 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 , Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
@ -996,22 +1012,24 @@
</dynamic> </dynamic>
) a ) a
<include refid="sql.pagedynamic"></include> <include refid="sql.pagedynamic"></include>
) a ) a
left outer join cmexq eq on eq.qno=a.qno left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno 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 left outer join users u on u.userid = a.instructors
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt 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
<dynamic prepend="having"> ,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="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="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) &lt; 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="rrate" prepend="and">case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 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> </dynamic>
order by a.rno order by a.rno
</select> </select>
<insert id="cm.question.in" parameterClass="question"> <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>) 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>); 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> <selectKey type="post" property="qno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
</insert> </insert>
<update id="cm.questionitem.in" parameterClass="question"> <update id="cm.questionitem.in" parameterClass="question">
INSERT INTO questionitem (qno, fgno, isright, qitext, isdel, <include refid="sql.inc"></include>) INSERT INTO questionitem (qno, fgno, isright, qitext, isdel, <include refid="sql.inc"></include>)
@ -1104,10 +1122,10 @@
</update> </update>
<update id="cm.question.up" parameterClass="question"> <update id="cm.question.up" parameterClass="question">
UPDATE question SET <include refid="sql.up"></include> 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# ,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# where qno=#qno#
</update> </update>
<update id="cm.question.uptop" parameterClass="question"> <update id="cm.question.uptop" parameterClass="question">
UPDATE question SET <include refid="sql.up"></include> UPDATE question SET <include refid="sql.up"></include>
,cmno=#cmno#,isuse=#isuse#,qtext=#qtext#,qtextstring=#qtextstring#,qdesc=#qdesc#,rightcount=#rightcount# ,cmno=#cmno#,isuse=#isuse#,qtext=#qtext#,qtextstring=#qtextstring#,qdesc=#qdesc#,rightcount=#rightcount#
@ -1914,27 +1932,27 @@
<select id="cm.cminningscds.applyedu.admin" parameterClass="hashtable" resultClass="cminningscd"> <select id="cm.cminningscds.applyedu.admin" parameterClass="hashtable" resultClass="cminningscd">
select a.* select a.*
from ( from (
select select
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment
,a.remainPeople ,a.remainPeople
,a.isselected ,a.isselected
<!--,case when a.remainPeople &lt;= 0 then 0 else 1 end isend--> <!--,case when a.remainPeople &lt;= 0 then 0 else 1 end isend-->
, 1 isend , 1 isend
from from
( (
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth 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.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,case when c.scdtype =1 then '온라인' else e.cname end studyplacename ,a.studyplace,case when c.scdtype =1 then '온라인' else e.cname end studyplacename
,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected ,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected
,a.comment ,a.comment
from cminningscd a from cminningscd a
left outer join cminning c on c.cmino = a.cmino left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno left outer join cm d on d.cmno = c.cmno
left outer join comcode e on e.ccode = a.studyplace left outer join comcode e on e.ccode = a.studyplace
<dynamic prepend="where"> <dynamic prepend="where">
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull> <isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
</dynamic> </dynamic>
)a ) a
<dynamic prepend="where"> <dynamic prepend="where">
<isNotNull property="month" prepend="and">a.startmonth=#month#</isNotNull> <isNotNull property="month" prepend="and">a.startmonth=#month#</isNotNull>
</dynamic> </dynamic>
@ -2035,28 +2053,28 @@
<select id="cm.cminningscds.applyedu.lectno" parameterClass="hashtable" resultClass="cminningscd"> <select id="cm.cminningscds.applyedu.lectno" parameterClass="hashtable" resultClass="cminningscd">
select select
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment 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.studyplace, a.studyplacename,a.remainPeople
,a.isselected, a.cmno,a.pcmno,a.cgcode ,a.isselected, a.cmno,a.pcmno,a.cgcode
<!--211220.통합테스트목록(644) 이미지난 교육종료일 변경불가--> <!--211220.통합테스트목록(644) 이미지난 교육종료일 변경불가-->
,case when a.estart &lt; date_add(date_format(now() ,'%Y-%m-%d 00:00:00'),interval -1 second) ,case when a.estart &lt; date_add(date_format(now() ,'%Y-%m-%d 00:00:00'),interval -1 second)
<!--20220803 <!--20220803
or a.remainPeople &lt;= 0 --> or a.remainPeople &lt;= 0 -->
then 0 else 1 end isend then 0 else 1 end isend
from from
( (
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth 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.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 ,a.studyplace, e.cname studyplacename
,case when f.cmisno = a.cmisno then 1 else 0 end isselected, d.cmno,d.pcmno,cg.cgcode ,case when f.cmisno = a.cmisno then 1 else 0 end isselected, d.cmno,d.pcmno,cg.cgcode
,a.comment ,a.comment
from cminningscd a from cminningscd a
left outer join cminning c on c.cmino = a.cmino left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno left outer join cm d on d.cmno = c.cmno
left outer join cg cg on d.cgno = cg.cgno left outer join cg cg on d.cgno = cg.cgno
left outer join comcode e on e.ccode = a.studyplace left outer join comcode e on e.ccode = a.studyplace
left outer join lect f on f.lectno = #lectno# left outer join lect f on f.lectno = #lectno#
where DATE_ADD(f.sdate, INTERVAL 1 YEAR) > a.estart where DATE_ADD(f.sdate, INTERVAL 1 YEAR) > a.estart
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull> <isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
)a )a
<dynamic prepend="where"> <dynamic prepend="where">
@ -2232,5 +2250,82 @@
<isNotNull property="year">and year(a.sstime)=#year#</isNotNull> <isNotNull property="year">and year(a.sstime)=#year#</isNotNull>
order by a.sstime,a.setime order by a.sstime,a.setime
</select> </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 &gt; date_add(date_format(now(), '%Y-%m-%d 00:00:00'), interval - 1 second)
<!--20220803
or a.remainPeople &lt;= 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) &gt; a.estart
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
)a
WHERE a.estart &gt; 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 &gt;= concat(#estart#, ' 00:00:00')</isNotNull>
<isNotNull property="eend" prepend="and">c.eend &lt;= 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> </statements>
</sqlMap> </sqlMap>

View File

@ -2887,7 +2887,7 @@
ON b.payno = e.PAYNO ON b.payno = e.PAYNO
INNER JOIN pplog f INNER JOIN pplog f
ON b.USERNO = e.USERNO AND b.CMNO = f.CMNO AND e.PPLNO = f.PPLNO 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 (e.PSTATUS = 1 OR e.PSTATUS = 22)
AND b.USERNO = #uno#; AND b.USERNO = #uno#;
]]> ]]>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1578,7 +1578,8 @@ namespace NP.Base.Controllers
} }
//문제코드 확인 //문제코드 확인
var cc = Dao.Get<ComCode>("sys.comcode.list", new Hashtable() { { "all", 1 } }); 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 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 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(); var qp3 = data.Where(w => !string.IsNullOrEmpty(w.ccname3.Trim())).ToList().Select(s => s.ccname3).Distinct();

View File

@ -505,6 +505,10 @@ namespace NP.Base.Controllers
vm.CMEX.qcount = vm.CMEX.cmexqs.Count(); 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); return JsonOK(Dao.SaveExam(vm.CMEX), false);
} }
/// <summary> /// <summary>
@ -1066,6 +1070,83 @@ namespace NP.Base.Controllers
return JsonBack(rtn); 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);
}
}
} }

View File

@ -544,14 +544,14 @@
<select id="cm.cminningscds" parameterClass="hashtable" resultClass="cminningscd"> <select id="cm.cminningscds" parameterClass="hashtable" resultClass="cminningscd">
select a.* select a.*
from ( from (
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.sseq 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 ,b.scdtype
,case when b.scdtype =1 then '온라인' else c.cname end studyplacename ,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 ,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =1 and z.ischanged=0) regmem
,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =2 and z.ischanged=0) zstring0 ,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =2 and z.ischanged=0) zstring0
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.estart</isNull>) scdseq ,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.estart</isNull>) scdseq
,count(a.cmisno) over() totalnum ,count(a.cmisno) over() totalnum
from cminningscd a from cminningscd a
inner join cminning b on b.cmino = a.cmino inner join cminning b on b.cmino = a.cmino
inner join cm d on d.cmno = b.cmno inner join cm d on d.cmno = b.cmno
@ -583,14 +583,15 @@
</insert> </insert>
<insert id="cm.cminningscd.in" parameterClass="cminningscd"> <insert id="cm.cminningscd.in" parameterClass="cminningscd">
SELECT * FROM (SELECT LAST_INSERT_ID(0) col1) a WHERE col1 > 0; 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>) insert into cminningscd(cmino,estart,eend,quota,studyplace,sseq,comment,instructors,<include refid="sql.inc"></include>)
values(#cmino#,#estart#,#eend#,#quota#,#studyplace#,#sseq#,#comment#,<include refid="sql.inv"></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> <selectKey type="post" property="cmisno" resultClass="long">SELECT last_insert_id()</selectKey>
</insert> </insert>
<update id="cm.cminningscd.up" parameterClass="cminningscd"> <update id="cm.cminningscd.up" parameterClass="cminningscd">
update cminningscd a update cminningscd a
set <include refid="sql.up"></include>,cmino=#cmino#,estart=#estart#,eend=#eend#,quota=#quota# set <include refid="sql.up"></include>,cmino=#cmino#,estart=#estart#,eend=#eend#,quota=#quota#
,studyplace=#studyplace#,sseq=#sseq#,comment=#comment# ,studyplace=#studyplace#,sseq=#sseq#,comment=#comment#
,instructors=#instructors#
where a.cmisno=#cmisno# where a.cmisno=#cmisno#
</update> </update>
<update id="cm.cminnings.up" parameterClass="cminning"> <update id="cm.cminnings.up" parameterClass="cminning">
@ -754,13 +755,16 @@
select a.* select a.*
from ( 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 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
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.cdt</isNull>) rno ,a.cmisno <!--//교육일정코드-->
,count(a.cno) over() pagetotalcount ,DATE_FORMAT(a.testsdate, '%Y-%m-%d %H:%i') AS testsdate <!--//시헝응시 시작일-->
from cmex a ,DATE_FORMAT(a.testedate, '%Y-%m-%d %H:%i') AS testedate <!--//시헝응시 종료일-->
where a.isdel=0 ,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.cdt</isNull>) rno
<isNotNull property="exno">and a.exno=#exno#</isNotNull> ,count(a.cno) over() pagetotalcount
<isNotNull property="cmno">and a.cmno=#cmno#</isNotNull> from cmex a
<isNotNull property="extype">and a.extype=#extype#</isNotNull> where a.isdel=0
<isNotNull property="exno">and a.exno=#exno#</isNotNull>
<isNotNull property="cmno">and a.cmno=#cmno#</isNotNull>
<isNotNull property="extype">and a.extype=#extype#</isNotNull>
) a ) a
<include refid="sql.pagedynamic"></include> <include refid="sql.pagedynamic"></include>
order by a.rno order by a.rno
@ -845,25 +849,28 @@
</insert> </insert>
<update id="cm.cmex.up" parameterClass="cmex"> <update id="cm.cmex.up" parameterClass="cmex">
update cmex set <include refid="sql.up"></include> update cmex set <include refid="sql.up"></include>
,extype =#extype# ,extype =#extype#
,exname =#exname# ,exname =#exname#
,edesc =#edesc# ,edesc =#edesc#
,etime =#etime# ,etime =#etime#
,econdition =#econdition# ,econdition =#econdition#
,evtype =#evtype# ,evtype =#evtype#
,eqtype =#eqtype# ,eqtype =#eqtype#
,israndq =#israndq# ,israndq =#israndq#
,israndqi =#israndqi# ,israndqi =#israndqi#
,qcount =#qcount# ,qcount =#qcount#
,isblur =#isblur# ,isblur =#isblur#
,tpoint =#tpoint# ,tpoint =#tpoint#
,relaylimit =#relaylimit# ,relaylimit =#relaylimit#
,isusebackup =#isusebackup# ,isusebackup =#isusebackup#
,isseq =#isseq# ,isseq =#isseq#
,isreexamable =#isreexamable# ,isreexamable =#isreexamable#
,isresultopen=#isresultopen# ,isresultopen=#isresultopen#
where exno=#exno# ,cmisno = #cmisno#
</update> ,testsdate = #testsdate#
,testedate = #testedate#
where exno=#exno#
</update>
<update id="cm.cmexq.deleteall" parameterClass="int"> <update id="cm.cmexq.deleteall" parameterClass="int">
delete from cmexq where exno=#exno# delete from cmexq where exno=#exno#
@ -920,12 +927,15 @@
,count(ued.exno) qcount ,count(ued.exno) qcount
,sum(case when ued.atext is not null then 1 else 0 end) ecount ,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) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate ,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
from ( ,a.instructors
select a.*,b.cname ,u.usertype
from ( ,u.username AS instructors_name
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 from (
,a.ispassspace,a.isignorecase select a.*,b.cname
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno 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.instructors
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
,<include refid="sql.prc"></include> ,<include refid="sql.prc"></include>
from question a from question a
left outer join comcode cc on cc.ccode = a.qdiff left outer join comcode cc on cc.ccode = a.qdiff
@ -946,26 +956,32 @@
<isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull> <isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull>
<isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull> <isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull>
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull> <isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
<isNotNull property="instructors" prepend="and">a.instructors like concat('%', #instructors#, '%')</isNotNull>
</dynamic> </dynamic>
) a ) a
left outer join cm b on b.cmno=a.cmno left outer join cm b on b.cmno=a.cmno
<include refid="sql.pagedynamic"></include> <include refid="sql.pagedynamic"></include>
) a ) a
left outer join cmexq eq on eq.qno=a.qno left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno 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-->
order by a.RNO left outer join users u on u.userid = a.instructors
</select> 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"> <select id="cm.questions2" parameterClass="hashtable" resultClass="question">
select a.cmno,a.cname,a.qno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc select a.cmno,a.cname,a.qno,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
,count(ued.exno) qcount ,count(ued.exno) qcount
,sum(case when ued.atext is not null then 1 else 0 end) ecount ,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) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate ,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 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 ( from (
select a.* select a.*
from ( 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 ,b.cname
, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5 , 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 , Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
@ -996,22 +1012,24 @@
</dynamic> </dynamic>
) a ) a
<include refid="sql.pagedynamic"></include> <include refid="sql.pagedynamic"></include>
) a ) a
left outer join cmexq eq on eq.qno=a.qno left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno 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 left outer join users u on u.userid = a.instructors
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt 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
<dynamic prepend="having"> ,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="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="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) &lt; 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="rrate" prepend="and">case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 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> </dynamic>
order by a.rno order by a.rno
</select> </select>
<insert id="cm.question.in" parameterClass="question"> <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>) 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>); 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> <selectKey type="post" property="qno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
</insert> </insert>
<update id="cm.questionitem.in" parameterClass="question"> <update id="cm.questionitem.in" parameterClass="question">
INSERT INTO questionitem (qno, fgno, isright, qitext, isdel, <include refid="sql.inc"></include>) INSERT INTO questionitem (qno, fgno, isright, qitext, isdel, <include refid="sql.inc"></include>)
@ -1104,10 +1122,10 @@
</update> </update>
<update id="cm.question.up" parameterClass="question"> <update id="cm.question.up" parameterClass="question">
UPDATE question SET <include refid="sql.up"></include> 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# ,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# where qno=#qno#
</update> </update>
<update id="cm.question.uptop" parameterClass="question"> <update id="cm.question.uptop" parameterClass="question">
UPDATE question SET <include refid="sql.up"></include> UPDATE question SET <include refid="sql.up"></include>
,cmno=#cmno#,isuse=#isuse#,qtext=#qtext#,qtextstring=#qtextstring#,qdesc=#qdesc#,rightcount=#rightcount# ,cmno=#cmno#,isuse=#isuse#,qtext=#qtext#,qtextstring=#qtextstring#,qdesc=#qdesc#,rightcount=#rightcount#
@ -1914,27 +1932,27 @@
<select id="cm.cminningscds.applyedu.admin" parameterClass="hashtable" resultClass="cminningscd"> <select id="cm.cminningscds.applyedu.admin" parameterClass="hashtable" resultClass="cminningscd">
select a.* select a.*
from ( from (
select select
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment
,a.remainPeople ,a.remainPeople
,a.isselected ,a.isselected
<!--,case when a.remainPeople &lt;= 0 then 0 else 1 end isend--> <!--,case when a.remainPeople &lt;= 0 then 0 else 1 end isend-->
, 1 isend , 1 isend
from from
( (
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth 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.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,case when c.scdtype =1 then '온라인' else e.cname end studyplacename ,a.studyplace,case when c.scdtype =1 then '온라인' else e.cname end studyplacename
,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected ,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected
,a.comment ,a.comment
from cminningscd a from cminningscd a
left outer join cminning c on c.cmino = a.cmino left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno left outer join cm d on d.cmno = c.cmno
left outer join comcode e on e.ccode = a.studyplace left outer join comcode e on e.ccode = a.studyplace
<dynamic prepend="where"> <dynamic prepend="where">
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull> <isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
</dynamic> </dynamic>
)a ) a
<dynamic prepend="where"> <dynamic prepend="where">
<isNotNull property="month" prepend="and">a.startmonth=#month#</isNotNull> <isNotNull property="month" prepend="and">a.startmonth=#month#</isNotNull>
</dynamic> </dynamic>
@ -2035,28 +2053,28 @@
<select id="cm.cminningscds.applyedu.lectno" parameterClass="hashtable" resultClass="cminningscd"> <select id="cm.cminningscds.applyedu.lectno" parameterClass="hashtable" resultClass="cminningscd">
select select
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment 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.studyplace, a.studyplacename,a.remainPeople
,a.isselected, a.cmno,a.pcmno,a.cgcode ,a.isselected, a.cmno,a.pcmno,a.cgcode
<!--211220.통합테스트목록(644) 이미지난 교육종료일 변경불가--> <!--211220.통합테스트목록(644) 이미지난 교육종료일 변경불가-->
,case when a.estart &lt; date_add(date_format(now() ,'%Y-%m-%d 00:00:00'),interval -1 second) ,case when a.estart &lt; date_add(date_format(now() ,'%Y-%m-%d 00:00:00'),interval -1 second)
<!--20220803 <!--20220803
or a.remainPeople &lt;= 0 --> or a.remainPeople &lt;= 0 -->
then 0 else 1 end isend then 0 else 1 end isend
from from
( (
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth 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.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 ,a.studyplace, e.cname studyplacename
,case when f.cmisno = a.cmisno then 1 else 0 end isselected, d.cmno,d.pcmno,cg.cgcode ,case when f.cmisno = a.cmisno then 1 else 0 end isselected, d.cmno,d.pcmno,cg.cgcode
,a.comment ,a.comment
from cminningscd a from cminningscd a
left outer join cminning c on c.cmino = a.cmino left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno left outer join cm d on d.cmno = c.cmno
left outer join cg cg on d.cgno = cg.cgno left outer join cg cg on d.cgno = cg.cgno
left outer join comcode e on e.ccode = a.studyplace left outer join comcode e on e.ccode = a.studyplace
left outer join lect f on f.lectno = #lectno# left outer join lect f on f.lectno = #lectno#
where DATE_ADD(f.sdate, INTERVAL 1 YEAR) > a.estart where DATE_ADD(f.sdate, INTERVAL 1 YEAR) > a.estart
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull> <isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
)a )a
<dynamic prepend="where"> <dynamic prepend="where">
@ -2232,5 +2250,82 @@
<isNotNull property="year">and year(a.sstime)=#year#</isNotNull> <isNotNull property="year">and year(a.sstime)=#year#</isNotNull>
order by a.sstime,a.setime order by a.sstime,a.setime
</select> </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 &gt; date_add(date_format(now(), '%Y-%m-%d 00:00:00'), interval - 1 second)
<!--20220803
or a.remainPeople &lt;= 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) &gt; a.estart
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
)a
WHERE a.estart &gt; 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 &gt;= concat(#estart#, ' 00:00:00')</isNotNull>
<isNotNull property="eend" prepend="and">c.eend &lt;= 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> </statements>
</sqlMap> </sqlMap>

View File

@ -451,40 +451,48 @@
<select id="cr.myestimation" parameterClass="hashtable" resultClass="data"> <select id="cr.myestimation" parameterClass="hashtable" resultClass="data">
select a.* select a.*
from ( from (
select 0 dtype select 0 dtype
,null strval,0 intval10 ,null strval,0 intval10
,0 intval,0 intval2,0 intval3,0 intval4,0 intval5 ,0 intval,0 intval2,0 intval3,0 intval4,0 intval5
,0 intval6 ,0 intval6
,0 intval7 ,0 intval7
,0 rno ,0 rno
,null time ,null time
,null time2 ,null time2
from (select 1 col1) a ,null testsdate
where a.col1=0 ,null testedate
union all from (select 1 col1) a
select -1 dtype where a.col1=0
,null strval,0 intval10
,0 intval,0 intval2,0 intval3,0 intval4,a.attrate intval5 union all
,0 intval6
,a.iscomplete intval7 select -1 dtype
,0 rno ,null strval,0 intval10
,null time ,0 intval,0 intval2,0 intval3,0 intval4,a.attrate intval5
,null time2 ,0 intval6
from lect a ,a.iscomplete intval7
where a.lectno=#lectno# and a.userno=#userno# ,0 rno
,null time
,null time2
,null testsdate
,null testedate
from lect a
where a.lectno=#lectno# and a.userno=#userno#
<isNotNull property="exam"> <isNotNull property="exam">
union all union all
select b.extype dtype select b.extype dtype
,b.exname strval,b.exno intval10 ,b.exname strval,b.exno intval10
,case when a.sdate &lt; now() and a.edate &gt; now() then a.attrate else -1 end intval,b.econdition intval2 ,case when a.sdate &lt; now() and a.edate &gt; now() then a.attrate else -1 end intval,b.econdition intval2
,case when c.eend is null then 0 else 1 end intval3 ,case when c.eend is null then 0 else 1 end intval3
,a.attrate intval5 ,a.attrate intval5
,null intval4 ,null intval4
,a2.studytime intval6 ,a2.studytime intval6
,a.iscomplete intval7 ,a.iscomplete intval7
,row_number() over (partition by b.extype order by b.extype, b.cdt) rno ,row_number() over (partition by b.extype order by b.extype, b.cdt) rno
,a.edate time ,a.edate time
,a.sdate time2 ,a.sdate time2
,b.testsdate
,b.testedate
from lect a from lect a
inner join cm a2 on a2.cmno=a.cmno inner join cm a2 on a2.cmno=a.cmno
inner join cmex b on b.cmno=a.cmno and b.isdel=0 inner join cmex b on b.cmno=a.cmno and b.isdel=0
@ -494,16 +502,18 @@
<isNotNull property="subject"> <isNotNull property="subject">
union all union all
select 2 dtype select 2 dtype
,b.sdname strval,b.sdno intval10 ,b.sdname strval,b.sdno intval10
,case when a.sdate &lt; now() and a.edate &gt; now() then a.attrate else -1 end intval,b.sdcondition intval2 ,case when a.sdate &lt; now() and a.edate &gt; now() then a.attrate else -1 end intval,b.sdcondition intval2
,case when c.submittime is null then 0 else 1 end intval3 ,case when c.submittime is null then 0 else 1 end intval3
,case when c.checktime is null then 0 else 1 end intval4 ,case when c.checktime is null then 0 else 1 end intval4
,a.attrate intval5 ,a.attrate intval5
,a2.studytime intval6 ,a2.studytime intval6
,a.iscomplete intval7 ,a.iscomplete intval7
,row_number() over (order by b.cdt) rno ,row_number() over (order by b.cdt) rno
,a.edate time ,a.edate time
,a.sdate time2 ,a.sdate time2
,null testsdate
,null testedate
from lect a from lect a
inner join cm a2 on a2.cmno=a.cmno 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 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 ,row_number() over (order by b.cdt) rno
,a.edate time ,a.edate time
,a.sdate time2 ,a.sdate time2
,null testsdate
,null testedate
from lect a from lect a
inner join cm a2 on a2.cmno=a.cmno 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 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 case when a.isrebate = 1 then f.midcutrfd else f.midcut end &lt;= 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 &lt;= ifnull(e.ex1lectpoint,0) then 1 else 0 end = 1 case when case when a.isrebate = 1 then f.midcutrfd else f.midcut end &lt;= 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 &lt;= ifnull(e.ex1lectpoint,0) then 1 else 0 end = 1
then 1 else 0 end ispass then 1 else 0 end ispass
,c.testsdate
,c.testedate
from lect a from lect a
inner join cm b on b.cmno=a.cmno inner join cm b on b.cmno=a.cmno
inner join cmex c on c.exno=#exno# inner join cmex c on c.exno=#exno#

View File

@ -2887,7 +2887,7 @@
ON b.payno = e.PAYNO ON b.payno = e.PAYNO
INNER JOIN pplog f INNER JOIN pplog f
ON b.USERNO = e.USERNO AND b.CMNO = f.CMNO AND e.PPLNO = f.PPLNO 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 (e.PSTATUS = 1 OR e.PSTATUS = 22)
AND b.USERNO = #uno#; 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.

BIN
Base/obj/Debug/NP.Base.dll Normal file

Binary file not shown.

BIN
Base/obj/Debug/NP.Base.pdb Normal file

Binary file not shown.

View File

@ -29,7 +29,9 @@ namespace NP.Dao
Trans(); Trans();
try 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 else
{ {
if (base.Save("cm.cmex.up", e) < 1) { RollBack(); return 0; } if (base.Save("cm.cmex.up", e) < 1) { RollBack(); return 0; }

View File

@ -544,14 +544,14 @@
<select id="cm.cminningscds" parameterClass="hashtable" resultClass="cminningscd"> <select id="cm.cminningscds" parameterClass="hashtable" resultClass="cminningscd">
select a.* select a.*
from ( from (
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.sseq 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 ,b.scdtype
,case when b.scdtype =1 then '온라인' else c.cname end studyplacename ,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 ,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =1 and z.ischanged=0) regmem
,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =2 and z.ischanged=0) zstring0 ,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =2 and z.ischanged=0) zstring0
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.estart</isNull>) scdseq ,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.estart</isNull>) scdseq
,count(a.cmisno) over() totalnum ,count(a.cmisno) over() totalnum
from cminningscd a from cminningscd a
inner join cminning b on b.cmino = a.cmino inner join cminning b on b.cmino = a.cmino
inner join cm d on d.cmno = b.cmno inner join cm d on d.cmno = b.cmno
@ -583,14 +583,15 @@
</insert> </insert>
<insert id="cm.cminningscd.in" parameterClass="cminningscd"> <insert id="cm.cminningscd.in" parameterClass="cminningscd">
SELECT * FROM (SELECT LAST_INSERT_ID(0) col1) a WHERE col1 > 0; 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>) insert into cminningscd(cmino,estart,eend,quota,studyplace,sseq,comment,instructors,<include refid="sql.inc"></include>)
values(#cmino#,#estart#,#eend#,#quota#,#studyplace#,#sseq#,#comment#,<include refid="sql.inv"></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> <selectKey type="post" property="cmisno" resultClass="long">SELECT last_insert_id()</selectKey>
</insert> </insert>
<update id="cm.cminningscd.up" parameterClass="cminningscd"> <update id="cm.cminningscd.up" parameterClass="cminningscd">
update cminningscd a update cminningscd a
set <include refid="sql.up"></include>,cmino=#cmino#,estart=#estart#,eend=#eend#,quota=#quota# set <include refid="sql.up"></include>,cmino=#cmino#,estart=#estart#,eend=#eend#,quota=#quota#
,studyplace=#studyplace#,sseq=#sseq#,comment=#comment# ,studyplace=#studyplace#,sseq=#sseq#,comment=#comment#
,instructors=#instructors#
where a.cmisno=#cmisno# where a.cmisno=#cmisno#
</update> </update>
<update id="cm.cminnings.up" parameterClass="cminning"> <update id="cm.cminnings.up" parameterClass="cminning">
@ -754,13 +755,16 @@
select a.* select a.*
from ( 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 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
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.cdt</isNull>) rno ,a.cmisno <!--//교육일정코드-->
,count(a.cno) over() pagetotalcount ,DATE_FORMAT(a.testsdate, '%Y-%m-%d %H:%i') AS testsdate <!--//시헝응시 시작일-->
from cmex a ,DATE_FORMAT(a.testedate, '%Y-%m-%d %H:%i') AS testedate <!--//시헝응시 종료일-->
where a.isdel=0 ,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.cdt</isNull>) rno
<isNotNull property="exno">and a.exno=#exno#</isNotNull> ,count(a.cno) over() pagetotalcount
<isNotNull property="cmno">and a.cmno=#cmno#</isNotNull> from cmex a
<isNotNull property="extype">and a.extype=#extype#</isNotNull> where a.isdel=0
<isNotNull property="exno">and a.exno=#exno#</isNotNull>
<isNotNull property="cmno">and a.cmno=#cmno#</isNotNull>
<isNotNull property="extype">and a.extype=#extype#</isNotNull>
) a ) a
<include refid="sql.pagedynamic"></include> <include refid="sql.pagedynamic"></include>
order by a.rno order by a.rno
@ -845,25 +849,28 @@
</insert> </insert>
<update id="cm.cmex.up" parameterClass="cmex"> <update id="cm.cmex.up" parameterClass="cmex">
update cmex set <include refid="sql.up"></include> update cmex set <include refid="sql.up"></include>
,extype =#extype# ,extype =#extype#
,exname =#exname# ,exname =#exname#
,edesc =#edesc# ,edesc =#edesc#
,etime =#etime# ,etime =#etime#
,econdition =#econdition# ,econdition =#econdition#
,evtype =#evtype# ,evtype =#evtype#
,eqtype =#eqtype# ,eqtype =#eqtype#
,israndq =#israndq# ,israndq =#israndq#
,israndqi =#israndqi# ,israndqi =#israndqi#
,qcount =#qcount# ,qcount =#qcount#
,isblur =#isblur# ,isblur =#isblur#
,tpoint =#tpoint# ,tpoint =#tpoint#
,relaylimit =#relaylimit# ,relaylimit =#relaylimit#
,isusebackup =#isusebackup# ,isusebackup =#isusebackup#
,isseq =#isseq# ,isseq =#isseq#
,isreexamable =#isreexamable# ,isreexamable =#isreexamable#
,isresultopen=#isresultopen# ,isresultopen=#isresultopen#
where exno=#exno# ,cmisno = #cmisno#
</update> ,testsdate = #testsdate#
,testedate = #testedate#
where exno=#exno#
</update>
<update id="cm.cmexq.deleteall" parameterClass="int"> <update id="cm.cmexq.deleteall" parameterClass="int">
delete from cmexq where exno=#exno# delete from cmexq where exno=#exno#
@ -920,12 +927,15 @@
,count(ued.exno) qcount ,count(ued.exno) qcount
,sum(case when ued.atext is not null then 1 else 0 end) ecount ,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) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate ,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
from ( ,a.instructors
select a.*,b.cname ,u.usertype
from ( ,u.username AS instructors_name
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 from (
,a.ispassspace,a.isignorecase select a.*,b.cname
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno 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.instructors
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
,<include refid="sql.prc"></include> ,<include refid="sql.prc"></include>
from question a from question a
left outer join comcode cc on cc.ccode = a.qdiff left outer join comcode cc on cc.ccode = a.qdiff
@ -946,26 +956,32 @@
<isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull> <isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull>
<isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull> <isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull>
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull> <isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
<isNotNull property="instructors" prepend="and">a.instructors like concat('%', #instructors#, '%')</isNotNull>
</dynamic> </dynamic>
) a ) a
left outer join cm b on b.cmno=a.cmno left outer join cm b on b.cmno=a.cmno
<include refid="sql.pagedynamic"></include> <include refid="sql.pagedynamic"></include>
) a ) a
left outer join cmexq eq on eq.qno=a.qno left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno 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-->
order by a.RNO left outer join users u on u.userid = a.instructors
</select> 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"> <select id="cm.questions2" parameterClass="hashtable" resultClass="question">
select a.cmno,a.cname,a.qno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc select a.cmno,a.cname,a.qno,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
,count(ued.exno) qcount ,count(ued.exno) qcount
,sum(case when ued.atext is not null then 1 else 0 end) ecount ,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) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate ,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 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 ( from (
select a.* select a.*
from ( 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 ,b.cname
, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5 , 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 , Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
@ -996,22 +1012,24 @@
</dynamic> </dynamic>
) a ) a
<include refid="sql.pagedynamic"></include> <include refid="sql.pagedynamic"></include>
) a ) a
left outer join cmexq eq on eq.qno=a.qno left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno 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 left outer join users u on u.userid = a.instructors
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt 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
<dynamic prepend="having"> ,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="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="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) &lt; 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="rrate" prepend="and">case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 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> </dynamic>
order by a.rno order by a.rno
</select> </select>
<insert id="cm.question.in" parameterClass="question"> <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>) 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>); 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> <selectKey type="post" property="qno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
</insert> </insert>
<update id="cm.questionitem.in" parameterClass="question"> <update id="cm.questionitem.in" parameterClass="question">
INSERT INTO questionitem (qno, fgno, isright, qitext, isdel, <include refid="sql.inc"></include>) INSERT INTO questionitem (qno, fgno, isright, qitext, isdel, <include refid="sql.inc"></include>)
@ -1104,10 +1122,10 @@
</update> </update>
<update id="cm.question.up" parameterClass="question"> <update id="cm.question.up" parameterClass="question">
UPDATE question SET <include refid="sql.up"></include> 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# ,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# where qno=#qno#
</update> </update>
<update id="cm.question.uptop" parameterClass="question"> <update id="cm.question.uptop" parameterClass="question">
UPDATE question SET <include refid="sql.up"></include> UPDATE question SET <include refid="sql.up"></include>
,cmno=#cmno#,isuse=#isuse#,qtext=#qtext#,qtextstring=#qtextstring#,qdesc=#qdesc#,rightcount=#rightcount# ,cmno=#cmno#,isuse=#isuse#,qtext=#qtext#,qtextstring=#qtextstring#,qdesc=#qdesc#,rightcount=#rightcount#
@ -1914,27 +1932,27 @@
<select id="cm.cminningscds.applyedu.admin" parameterClass="hashtable" resultClass="cminningscd"> <select id="cm.cminningscds.applyedu.admin" parameterClass="hashtable" resultClass="cminningscd">
select a.* select a.*
from ( from (
select select
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment
,a.remainPeople ,a.remainPeople
,a.isselected ,a.isselected
<!--,case when a.remainPeople &lt;= 0 then 0 else 1 end isend--> <!--,case when a.remainPeople &lt;= 0 then 0 else 1 end isend-->
, 1 isend , 1 isend
from from
( (
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth 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.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,case when c.scdtype =1 then '온라인' else e.cname end studyplacename ,a.studyplace,case when c.scdtype =1 then '온라인' else e.cname end studyplacename
,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected ,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected
,a.comment ,a.comment
from cminningscd a from cminningscd a
left outer join cminning c on c.cmino = a.cmino left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno left outer join cm d on d.cmno = c.cmno
left outer join comcode e on e.ccode = a.studyplace left outer join comcode e on e.ccode = a.studyplace
<dynamic prepend="where"> <dynamic prepend="where">
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull> <isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
</dynamic> </dynamic>
)a ) a
<dynamic prepend="where"> <dynamic prepend="where">
<isNotNull property="month" prepend="and">a.startmonth=#month#</isNotNull> <isNotNull property="month" prepend="and">a.startmonth=#month#</isNotNull>
</dynamic> </dynamic>
@ -2232,5 +2250,85 @@
<isNotNull property="year">and year(a.sstime)=#year#</isNotNull> <isNotNull property="year">and year(a.sstime)=#year#</isNotNull>
order by a.sstime,a.setime order by a.sstime,a.setime
</select> </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 &gt; date_add(date_format(now(), '%Y-%m-%d 00:00:00'), interval - 1 second)
<!--20220803
or a.remainPeople &lt;= 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) &gt; a.estart
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
)a
WHERE a.estart &gt; 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 &gt;= concat(#estart#, ' 00:00:00')</isNotNull>
<isNotNull property="eend" prepend="and">c.eend &lt;= 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> </statements>
</sqlMap> </sqlMap>

View File

@ -451,40 +451,48 @@
<select id="cr.myestimation" parameterClass="hashtable" resultClass="data"> <select id="cr.myestimation" parameterClass="hashtable" resultClass="data">
select a.* select a.*
from ( from (
select 0 dtype select 0 dtype
,null strval,0 intval10 ,null strval,0 intval10
,0 intval,0 intval2,0 intval3,0 intval4,0 intval5 ,0 intval,0 intval2,0 intval3,0 intval4,0 intval5
,0 intval6 ,0 intval6
,0 intval7 ,0 intval7
,0 rno ,0 rno
,null time ,null time
,null time2 ,null time2
from (select 1 col1) a ,null testsdate
where a.col1=0 ,null testedate
union all from (select 1 col1) a
select -1 dtype where a.col1=0
,null strval,0 intval10
,0 intval,0 intval2,0 intval3,0 intval4,a.attrate intval5 union all
,0 intval6
,a.iscomplete intval7 select -1 dtype
,0 rno ,null strval,0 intval10
,null time ,0 intval,0 intval2,0 intval3,0 intval4,a.attrate intval5
,null time2 ,0 intval6
from lect a ,a.iscomplete intval7
where a.lectno=#lectno# and a.userno=#userno# ,0 rno
,null time
,null time2
,null testsdate
,null testedate
from lect a
where a.lectno=#lectno# and a.userno=#userno#
<isNotNull property="exam"> <isNotNull property="exam">
union all union all
select b.extype dtype select b.extype dtype
,b.exname strval,b.exno intval10 ,b.exname strval,b.exno intval10
,case when a.sdate &lt; now() and a.edate &gt; now() then a.attrate else -1 end intval,b.econdition intval2 ,case when a.sdate &lt; now() and a.edate &gt; now() then a.attrate else -1 end intval,b.econdition intval2
,case when c.eend is null then 0 else 1 end intval3 ,case when c.eend is null then 0 else 1 end intval3
,a.attrate intval5 ,a.attrate intval5
,null intval4 ,null intval4
,a2.studytime intval6 ,a2.studytime intval6
,a.iscomplete intval7 ,a.iscomplete intval7
,row_number() over (partition by b.extype order by b.extype, b.cdt) rno ,row_number() over (partition by b.extype order by b.extype, b.cdt) rno
,a.edate time ,a.edate time
,a.sdate time2 ,a.sdate time2
,b.testsdate
,b.testedate
from lect a from lect a
inner join cm a2 on a2.cmno=a.cmno inner join cm a2 on a2.cmno=a.cmno
inner join cmex b on b.cmno=a.cmno and b.isdel=0 inner join cmex b on b.cmno=a.cmno and b.isdel=0
@ -494,16 +502,18 @@
<isNotNull property="subject"> <isNotNull property="subject">
union all union all
select 2 dtype select 2 dtype
,b.sdname strval,b.sdno intval10 ,b.sdname strval,b.sdno intval10
,case when a.sdate &lt; now() and a.edate &gt; now() then a.attrate else -1 end intval,b.sdcondition intval2 ,case when a.sdate &lt; now() and a.edate &gt; now() then a.attrate else -1 end intval,b.sdcondition intval2
,case when c.submittime is null then 0 else 1 end intval3 ,case when c.submittime is null then 0 else 1 end intval3
,case when c.checktime is null then 0 else 1 end intval4 ,case when c.checktime is null then 0 else 1 end intval4
,a.attrate intval5 ,a.attrate intval5
,a2.studytime intval6 ,a2.studytime intval6
,a.iscomplete intval7 ,a.iscomplete intval7
,row_number() over (order by b.cdt) rno ,row_number() over (order by b.cdt) rno
,a.edate time ,a.edate time
,a.sdate time2 ,a.sdate time2
,null testsdate
,null testedate
from lect a from lect a
inner join cm a2 on a2.cmno=a.cmno 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 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 ,row_number() over (order by b.cdt) rno
,a.edate time ,a.edate time
,a.sdate time2 ,a.sdate time2
,null testsdate
,null testedate
from lect a from lect a
inner join cm a2 on a2.cmno=a.cmno 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 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 case when a.isrebate = 1 then f.midcutrfd else f.midcut end &lt;= 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 &lt;= ifnull(e.ex1lectpoint,0) then 1 else 0 end = 1 case when case when a.isrebate = 1 then f.midcutrfd else f.midcut end &lt;= 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 &lt;= ifnull(e.ex1lectpoint,0) then 1 else 0 end = 1
then 1 else 0 end ispass then 1 else 0 end ispass
,c.testsdate
,c.testedate
from lect a from lect a
inner join cm b on b.cmno=a.cmno inner join cm b on b.cmno=a.cmno
inner join cmex c on c.exno=#exno# inner join cmex c on c.exno=#exno#
@ -567,16 +581,16 @@
<include refid="lectexcreate"></include> <include refid="lectexcreate"></include>
select case when a.etime = 0 then 99999999 else TIMESTAMPDIFF(MINUTE, now(), date_add(ifnull(b.estart, now()), interval a.etime MINUTE)) end etime select case when a.etime = 0 then 99999999 else TIMESTAMPDIFF(MINUTE, now(), date_add(ifnull(b.estart, now()), interval a.etime MINUTE)) end etime
,a.qcount,a.evtype,a.israndqi,a.tpoint,a.isblur,a.isusebackup,a.isseq ,a.qcount,a.evtype,a.israndqi,a.tpoint,a.isblur,a.isusebackup,a.isseq
,b.cblock ,b.cblock
,c.atext,c.qseq ,c.atext,c.qseq
,d.eqno,d.rpoint ,d.eqno,d.rpoint
,e.atype,e.qtext,e.qno,e.rightcount,e.ispassspace,e.isignorecase ,e.atype,e.qtext,e.qno,e.rightcount,e.ispassspace,e.isignorecase
from cmex a from cmex a
inner join cm a3 on a3.cmno=a.cmno inner join cm a3 on a3.cmno=a.cmno
inner join lect a2 on a2.lectno=#lectno# and a2.userno=#userno# inner join lect a2 on a2.lectno=#lectno# and a2.userno=#userno#
inner join lectex b on b.lectno=a2.lectno and b.exno=a.exno and b.eend is null and (a.etime = 0 or date_add(ifnull(b.estart, now()), interval a.etime MINUTE) &gt; now()) inner join lectex b on b.lectno=a2.lectno and b.exno=a.exno and b.eend is null and (a.etime = 0 or date_add(ifnull(b.estart, now()), interval a.etime MINUTE) &gt; now())
and ifnull(b.entercount,0) &lt;= ifnull(a.relaylimit, 999) and ifnull(b.entercount,0) &lt;= ifnull(a.relaylimit, 999)
inner join lectexq c on c.lectno=b.lectno and c.exno=b.exno inner join lectexq c on c.lectno=b.lectno and c.exno=b.exno
inner join cmexq d on d.eqno=c.eqno inner join cmexq d on d.eqno=c.eqno
inner join question e on e.qno=d.qno inner join question e on e.qno=d.qno
@ -587,11 +601,11 @@
inner join lect a2 on a2.lectno=a.lectno and a2.userno=#userno# inner join lect a2 on a2.lectno=a.lectno and a2.userno=#userno#
inner join cmex b on b.exno=a.exno inner join cmex b on b.exno=a.exno
set set
a.estart=case when a.estart is null then now() else a.estart end a.estart=case when a.estart is null then now() else a.estart end
,a.entercount=ifnull(a.entercount,0)+1 ,a.entercount=ifnull(a.entercount,0)+1
,a.uno=#uno# ,a.uno=#uno#
,a.uip=#uip# ,a.uip=#uip#
,a.eip=#uip# ,a.eip=#uip#
where a.lectno=#lectno# and a.exno=#exno# and a.eend is null and ifnull(a.entercount,0) &lt;= ifnull(b.relaylimit, 999) where a.lectno=#lectno# and a.exno=#exno# and a.eend is null and ifnull(a.entercount,0) &lt;= ifnull(b.relaylimit, 999)
</select> </select>
<select id="cr.userexamquestionitem.get" parameterClass="hashtable" resultClass="questionitem"> <select id="cr.userexamquestionitem.get" parameterClass="hashtable" resultClass="questionitem">

View File

@ -544,14 +544,14 @@
<select id="cm.cminningscds" parameterClass="hashtable" resultClass="cminningscd"> <select id="cm.cminningscds" parameterClass="hashtable" resultClass="cminningscd">
select a.* select a.*
from ( from (
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.sseq 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 ,b.scdtype
,case when b.scdtype =1 then '온라인' else c.cname end studyplacename ,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 ,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =1 and z.ischanged=0) regmem
,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =2 and z.ischanged=0) zstring0 ,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =2 and z.ischanged=0) zstring0
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.estart</isNull>) scdseq ,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.estart</isNull>) scdseq
,count(a.cmisno) over() totalnum ,count(a.cmisno) over() totalnum
from cminningscd a from cminningscd a
inner join cminning b on b.cmino = a.cmino inner join cminning b on b.cmino = a.cmino
inner join cm d on d.cmno = b.cmno inner join cm d on d.cmno = b.cmno
@ -583,14 +583,15 @@
</insert> </insert>
<insert id="cm.cminningscd.in" parameterClass="cminningscd"> <insert id="cm.cminningscd.in" parameterClass="cminningscd">
SELECT * FROM (SELECT LAST_INSERT_ID(0) col1) a WHERE col1 > 0; 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>) insert into cminningscd(cmino,estart,eend,quota,studyplace,sseq,comment,instructors,<include refid="sql.inc"></include>)
values(#cmino#,#estart#,#eend#,#quota#,#studyplace#,#sseq#,#comment#,<include refid="sql.inv"></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> <selectKey type="post" property="cmisno" resultClass="long">SELECT last_insert_id()</selectKey>
</insert> </insert>
<update id="cm.cminningscd.up" parameterClass="cminningscd"> <update id="cm.cminningscd.up" parameterClass="cminningscd">
update cminningscd a update cminningscd a
set <include refid="sql.up"></include>,cmino=#cmino#,estart=#estart#,eend=#eend#,quota=#quota# set <include refid="sql.up"></include>,cmino=#cmino#,estart=#estart#,eend=#eend#,quota=#quota#
,studyplace=#studyplace#,sseq=#sseq#,comment=#comment# ,studyplace=#studyplace#,sseq=#sseq#,comment=#comment#
,instructors=#instructors#
where a.cmisno=#cmisno# where a.cmisno=#cmisno#
</update> </update>
<update id="cm.cminnings.up" parameterClass="cminning"> <update id="cm.cminnings.up" parameterClass="cminning">
@ -754,13 +755,16 @@
select a.* select a.*
from ( 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 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
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.cdt</isNull>) rno ,a.cmisno <!--//교육일정코드-->
,count(a.cno) over() pagetotalcount ,DATE_FORMAT(a.testsdate, '%Y-%m-%d %H:%i') AS testsdate <!--//시헝응시 시작일-->
from cmex a ,DATE_FORMAT(a.testedate, '%Y-%m-%d %H:%i') AS testedate <!--//시헝응시 종료일-->
where a.isdel=0 ,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.cdt</isNull>) rno
<isNotNull property="exno">and a.exno=#exno#</isNotNull> ,count(a.cno) over() pagetotalcount
<isNotNull property="cmno">and a.cmno=#cmno#</isNotNull> from cmex a
<isNotNull property="extype">and a.extype=#extype#</isNotNull> where a.isdel=0
<isNotNull property="exno">and a.exno=#exno#</isNotNull>
<isNotNull property="cmno">and a.cmno=#cmno#</isNotNull>
<isNotNull property="extype">and a.extype=#extype#</isNotNull>
) a ) a
<include refid="sql.pagedynamic"></include> <include refid="sql.pagedynamic"></include>
order by a.rno order by a.rno
@ -845,25 +849,28 @@
</insert> </insert>
<update id="cm.cmex.up" parameterClass="cmex"> <update id="cm.cmex.up" parameterClass="cmex">
update cmex set <include refid="sql.up"></include> update cmex set <include refid="sql.up"></include>
,extype =#extype# ,extype =#extype#
,exname =#exname# ,exname =#exname#
,edesc =#edesc# ,edesc =#edesc#
,etime =#etime# ,etime =#etime#
,econdition =#econdition# ,econdition =#econdition#
,evtype =#evtype# ,evtype =#evtype#
,eqtype =#eqtype# ,eqtype =#eqtype#
,israndq =#israndq# ,israndq =#israndq#
,israndqi =#israndqi# ,israndqi =#israndqi#
,qcount =#qcount# ,qcount =#qcount#
,isblur =#isblur# ,isblur =#isblur#
,tpoint =#tpoint# ,tpoint =#tpoint#
,relaylimit =#relaylimit# ,relaylimit =#relaylimit#
,isusebackup =#isusebackup# ,isusebackup =#isusebackup#
,isseq =#isseq# ,isseq =#isseq#
,isreexamable =#isreexamable# ,isreexamable =#isreexamable#
,isresultopen=#isresultopen# ,isresultopen=#isresultopen#
where exno=#exno# ,cmisno = #cmisno#
</update> ,testsdate = #testsdate#
,testedate = #testedate#
where exno=#exno#
</update>
<update id="cm.cmexq.deleteall" parameterClass="int"> <update id="cm.cmexq.deleteall" parameterClass="int">
delete from cmexq where exno=#exno# delete from cmexq where exno=#exno#
@ -920,12 +927,15 @@
,count(ued.exno) qcount ,count(ued.exno) qcount
,sum(case when ued.atext is not null then 1 else 0 end) ecount ,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) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate ,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
from ( ,a.instructors
select a.*,b.cname ,u.usertype
from ( ,u.username AS instructors_name
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 from (
,a.ispassspace,a.isignorecase select a.*,b.cname
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno 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.instructors
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
,<include refid="sql.prc"></include> ,<include refid="sql.prc"></include>
from question a from question a
left outer join comcode cc on cc.ccode = a.qdiff left outer join comcode cc on cc.ccode = a.qdiff
@ -946,26 +956,32 @@
<isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull> <isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull>
<isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull> <isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull>
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull> <isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
<isNotNull property="instructors" prepend="and">a.instructors like concat('%', #instructors#, '%')</isNotNull>
</dynamic> </dynamic>
) a ) a
left outer join cm b on b.cmno=a.cmno left outer join cm b on b.cmno=a.cmno
<include refid="sql.pagedynamic"></include> <include refid="sql.pagedynamic"></include>
) a ) a
left outer join cmexq eq on eq.qno=a.qno left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno 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-->
order by a.RNO left outer join users u on u.userid = a.instructors
</select> 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"> <select id="cm.questions2" parameterClass="hashtable" resultClass="question">
select a.cmno,a.cname,a.qno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc select a.cmno,a.cname,a.qno,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
,count(ued.exno) qcount ,count(ued.exno) qcount
,sum(case when ued.atext is not null then 1 else 0 end) ecount ,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) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate ,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 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 ( from (
select a.* select a.*
from ( 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 ,b.cname
, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5 , 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 , Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
@ -996,22 +1012,24 @@
</dynamic> </dynamic>
) a ) a
<include refid="sql.pagedynamic"></include> <include refid="sql.pagedynamic"></include>
) a ) a
left outer join cmexq eq on eq.qno=a.qno left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno 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 left outer join users u on u.userid = a.instructors
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt 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
<dynamic prepend="having"> ,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="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="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) &lt; 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="rrate" prepend="and">case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 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> </dynamic>
order by a.rno order by a.rno
</select> </select>
<insert id="cm.question.in" parameterClass="question"> <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>) 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>); 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> <selectKey type="post" property="qno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
</insert> </insert>
<update id="cm.questionitem.in" parameterClass="question"> <update id="cm.questionitem.in" parameterClass="question">
INSERT INTO questionitem (qno, fgno, isright, qitext, isdel, <include refid="sql.inc"></include>) INSERT INTO questionitem (qno, fgno, isright, qitext, isdel, <include refid="sql.inc"></include>)
@ -1104,10 +1122,10 @@
</update> </update>
<update id="cm.question.up" parameterClass="question"> <update id="cm.question.up" parameterClass="question">
UPDATE question SET <include refid="sql.up"></include> 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# ,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# where qno=#qno#
</update> </update>
<update id="cm.question.uptop" parameterClass="question"> <update id="cm.question.uptop" parameterClass="question">
UPDATE question SET <include refid="sql.up"></include> UPDATE question SET <include refid="sql.up"></include>
,cmno=#cmno#,isuse=#isuse#,qtext=#qtext#,qtextstring=#qtextstring#,qdesc=#qdesc#,rightcount=#rightcount# ,cmno=#cmno#,isuse=#isuse#,qtext=#qtext#,qtextstring=#qtextstring#,qdesc=#qdesc#,rightcount=#rightcount#
@ -1914,27 +1932,27 @@
<select id="cm.cminningscds.applyedu.admin" parameterClass="hashtable" resultClass="cminningscd"> <select id="cm.cminningscds.applyedu.admin" parameterClass="hashtable" resultClass="cminningscd">
select a.* select a.*
from ( from (
select select
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment
,a.remainPeople ,a.remainPeople
,a.isselected ,a.isselected
<!--,case when a.remainPeople &lt;= 0 then 0 else 1 end isend--> <!--,case when a.remainPeople &lt;= 0 then 0 else 1 end isend-->
, 1 isend , 1 isend
from from
( (
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth 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.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,case when c.scdtype =1 then '온라인' else e.cname end studyplacename ,a.studyplace,case when c.scdtype =1 then '온라인' else e.cname end studyplacename
,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected ,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected
,a.comment ,a.comment
from cminningscd a from cminningscd a
left outer join cminning c on c.cmino = a.cmino left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno left outer join cm d on d.cmno = c.cmno
left outer join comcode e on e.ccode = a.studyplace left outer join comcode e on e.ccode = a.studyplace
<dynamic prepend="where"> <dynamic prepend="where">
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull> <isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
</dynamic> </dynamic>
)a ) a
<dynamic prepend="where"> <dynamic prepend="where">
<isNotNull property="month" prepend="and">a.startmonth=#month#</isNotNull> <isNotNull property="month" prepend="and">a.startmonth=#month#</isNotNull>
</dynamic> </dynamic>
@ -2035,28 +2053,28 @@
<select id="cm.cminningscds.applyedu.lectno" parameterClass="hashtable" resultClass="cminningscd"> <select id="cm.cminningscds.applyedu.lectno" parameterClass="hashtable" resultClass="cminningscd">
select select
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth,a.comment 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.studyplace, a.studyplacename,a.remainPeople
,a.isselected, a.cmno,a.pcmno,a.cgcode ,a.isselected, a.cmno,a.pcmno,a.cgcode
<!--211220.통합테스트목록(644) 이미지난 교육종료일 변경불가--> <!--211220.통합테스트목록(644) 이미지난 교육종료일 변경불가-->
,case when a.estart &lt; date_add(date_format(now() ,'%Y-%m-%d 00:00:00'),interval -1 second) ,case when a.estart &lt; date_add(date_format(now() ,'%Y-%m-%d 00:00:00'),interval -1 second)
<!--20220803 <!--20220803
or a.remainPeople &lt;= 0 --> or a.remainPeople &lt;= 0 -->
then 0 else 1 end isend then 0 else 1 end isend
from from
( (
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth 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.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 ,a.studyplace, e.cname studyplacename
,case when f.cmisno = a.cmisno then 1 else 0 end isselected, d.cmno,d.pcmno,cg.cgcode ,case when f.cmisno = a.cmisno then 1 else 0 end isselected, d.cmno,d.pcmno,cg.cgcode
,a.comment ,a.comment
from cminningscd a from cminningscd a
left outer join cminning c on c.cmino = a.cmino left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno left outer join cm d on d.cmno = c.cmno
left outer join cg cg on d.cgno = cg.cgno left outer join cg cg on d.cgno = cg.cgno
left outer join comcode e on e.ccode = a.studyplace left outer join comcode e on e.ccode = a.studyplace
left outer join lect f on f.lectno = #lectno# left outer join lect f on f.lectno = #lectno#
where DATE_ADD(f.sdate, INTERVAL 1 YEAR) > a.estart where DATE_ADD(f.sdate, INTERVAL 1 YEAR) > a.estart
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull> <isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
)a )a
<dynamic prepend="where"> <dynamic prepend="where">
@ -2232,5 +2250,82 @@
<isNotNull property="year">and year(a.sstime)=#year#</isNotNull> <isNotNull property="year">and year(a.sstime)=#year#</isNotNull>
order by a.sstime,a.setime order by a.sstime,a.setime
</select> </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 &gt; date_add(date_format(now(), '%Y-%m-%d 00:00:00'), interval - 1 second)
<!--20220803
or a.remainPeople &lt;= 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) &gt; a.estart
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
)a
WHERE a.estart &gt; 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 &gt;= concat(#estart#, ' 00:00:00')</isNotNull>
<isNotNull property="eend" prepend="and">c.eend &lt;= 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> </statements>
</sqlMap> </sqlMap>

View File

@ -451,40 +451,48 @@
<select id="cr.myestimation" parameterClass="hashtable" resultClass="data"> <select id="cr.myestimation" parameterClass="hashtable" resultClass="data">
select a.* select a.*
from ( from (
select 0 dtype select 0 dtype
,null strval,0 intval10 ,null strval,0 intval10
,0 intval,0 intval2,0 intval3,0 intval4,0 intval5 ,0 intval,0 intval2,0 intval3,0 intval4,0 intval5
,0 intval6 ,0 intval6
,0 intval7 ,0 intval7
,0 rno ,0 rno
,null time ,null time
,null time2 ,null time2
from (select 1 col1) a ,null testsdate
where a.col1=0 ,null testedate
union all from (select 1 col1) a
select -1 dtype where a.col1=0
,null strval,0 intval10
,0 intval,0 intval2,0 intval3,0 intval4,a.attrate intval5 union all
,0 intval6
,a.iscomplete intval7 select -1 dtype
,0 rno ,null strval,0 intval10
,null time ,0 intval,0 intval2,0 intval3,0 intval4,a.attrate intval5
,null time2 ,0 intval6
from lect a ,a.iscomplete intval7
where a.lectno=#lectno# and a.userno=#userno# ,0 rno
,null time
,null time2
,null testsdate
,null testedate
from lect a
where a.lectno=#lectno# and a.userno=#userno#
<isNotNull property="exam"> <isNotNull property="exam">
union all union all
select b.extype dtype select b.extype dtype
,b.exname strval,b.exno intval10 ,b.exname strval,b.exno intval10
,case when a.sdate &lt; now() and a.edate &gt; now() then a.attrate else -1 end intval,b.econdition intval2 ,case when a.sdate &lt; now() and a.edate &gt; now() then a.attrate else -1 end intval,b.econdition intval2
,case when c.eend is null then 0 else 1 end intval3 ,case when c.eend is null then 0 else 1 end intval3
,a.attrate intval5 ,a.attrate intval5
,null intval4 ,null intval4
,a2.studytime intval6 ,a2.studytime intval6
,a.iscomplete intval7 ,a.iscomplete intval7
,row_number() over (partition by b.extype order by b.extype, b.cdt) rno ,row_number() over (partition by b.extype order by b.extype, b.cdt) rno
,a.edate time ,a.edate time
,a.sdate time2 ,a.sdate time2
,b.testsdate
,b.testedate
from lect a from lect a
inner join cm a2 on a2.cmno=a.cmno inner join cm a2 on a2.cmno=a.cmno
inner join cmex b on b.cmno=a.cmno and b.isdel=0 inner join cmex b on b.cmno=a.cmno and b.isdel=0
@ -494,16 +502,18 @@
<isNotNull property="subject"> <isNotNull property="subject">
union all union all
select 2 dtype select 2 dtype
,b.sdname strval,b.sdno intval10 ,b.sdname strval,b.sdno intval10
,case when a.sdate &lt; now() and a.edate &gt; now() then a.attrate else -1 end intval,b.sdcondition intval2 ,case when a.sdate &lt; now() and a.edate &gt; now() then a.attrate else -1 end intval,b.sdcondition intval2
,case when c.submittime is null then 0 else 1 end intval3 ,case when c.submittime is null then 0 else 1 end intval3
,case when c.checktime is null then 0 else 1 end intval4 ,case when c.checktime is null then 0 else 1 end intval4
,a.attrate intval5 ,a.attrate intval5
,a2.studytime intval6 ,a2.studytime intval6
,a.iscomplete intval7 ,a.iscomplete intval7
,row_number() over (order by b.cdt) rno ,row_number() over (order by b.cdt) rno
,a.edate time ,a.edate time
,a.sdate time2 ,a.sdate time2
,null testsdate
,null testedate
from lect a from lect a
inner join cm a2 on a2.cmno=a.cmno 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 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 ,row_number() over (order by b.cdt) rno
,a.edate time ,a.edate time
,a.sdate time2 ,a.sdate time2
,null testsdate
,null testedate
from lect a from lect a
inner join cm a2 on a2.cmno=a.cmno 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 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 case when a.isrebate = 1 then f.midcutrfd else f.midcut end &lt;= 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 &lt;= ifnull(e.ex1lectpoint,0) then 1 else 0 end = 1 case when case when a.isrebate = 1 then f.midcutrfd else f.midcut end &lt;= 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 &lt;= ifnull(e.ex1lectpoint,0) then 1 else 0 end = 1
then 1 else 0 end ispass then 1 else 0 end ispass
,c.testsdate
,c.testedate
from lect a from lect a
inner join cm b on b.cmno=a.cmno inner join cm b on b.cmno=a.cmno
inner join cmex c on c.exno=#exno# inner join cmex c on c.exno=#exno#

View File

@ -2887,7 +2887,7 @@
ON b.payno = e.PAYNO ON b.payno = e.PAYNO
INNER JOIN pplog f INNER JOIN pplog f
ON b.USERNO = e.USERNO AND b.CMNO = f.CMNO AND e.PPLNO = f.PPLNO 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 (e.PSTATUS = 1 OR e.PSTATUS = 22)
AND b.USERNO = #uno#; 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.

547
FO/Logs/query.txt Normal file

File diff suppressed because one or more lines are too long

7419
FO/Logs/query.txt.2 Normal file

File diff suppressed because one or more lines are too long

View File

@ -101,15 +101,21 @@
@if (d.dtype == 1) @if (d.dtype == 1)
{ {
// 최총 평가일 때 // 최총 평가일 때
//if ((currentProgresRate >= d.intval2) // 조건 ①
// && IsDateInRange(d.testsdate, d.testedate) // 조건 ②
// && (ViewBag.exCheck || dType1CmStudyTime == 16)) // 조건 ③ 또는 조건 ④ <-- 요 부분을 다시 물어보자
if ((currentProgresRate >= d.intval2) // 조건 ① if ((currentProgresRate >= d.intval2) // 조건 ①
&& IsDateInRange(d.time2, d.time) // 조건 ② && IsDateInRange(d.testsdate, d.testedate)) // 조건 ②
&& (ViewBag.exCheck || dType1CmStudyTime == 16)) // 조건 ③ 또는 조건 ④ <-- 요 부분을 다시 물어보자
{ {
<td> <td>
<input type="hidden" name="cmEcondition" value="@d.intval2" /> <input type="hidden" name="cmEcondition" value="@d.intval2" />
<input type="hidden" name="lectSDate" value="@d.time2" /> @*<input type="hidden" name="lectSDate" value="@d.time2" />
<input type="hidden" name="lectEDate" value="@d.time" /> <input type="hidden" name="lectEDate" value="@d.time" />*@
<input type="hidden" name="isDateInRange" value="@IsDateInRange(d.time2, d.time).ToString()" /> @*<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))" <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) class="@GetEvaTypeClass(d.intval, d.intval2, d.intval3, d.intval4, currentLectIsComplete)">@GetEvaStatusText(d.intval, d.intval2, d.intval3, d.intval4, currentLectIsComplete)
</a> </a>

View File

@ -9,7 +9,8 @@
<tr><th>시험내용</th><td>@Html.Raw((Model.LectEX.edesc ?? "").Replace(System.Environment.NewLine, "<br />"))</td></tr> <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.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.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.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> <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) @if (Model.LectEX.estart != null)
@ -56,7 +57,8 @@
var openedexam = false; var openedexam = false;
function goexam() { function goexam() {
if (@(Model.LectEX.eend == null && (Model.LectEX.estart == null || Model.LectEX.relaylimit.Value >= Model.LectEX.entercount) ? 1 : 0) == 1) { 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("응시기간이 아닙니다."); msg("응시기간이 아닙니다.");
} else if (@Model.LectEX.rtime < 1 && @Model.LectEX.etime > 0) { } else if (@Model.LectEX.rtime < 1 && @Model.LectEX.etime > 0) {
msg("응시시간이 초과되었습니다."); msg("응시시간이 초과되었습니다.");

View File

@ -168,7 +168,7 @@ width: 8px;height: 15px;border: solid white;border-width: 0 3px 3px 0;transform:
</form> </form>
</div> </div>
<br /> <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> <p class='' style="font-weight: bold; font-size: 14pt;">※ 현재 신청중인 교육은 <span style='color: red; font-weight: bold'>집체교육 참석없이</span> 교육종료일까지 수료조건을 만족하시면 됩니다.</p>
} else if (Model.stringval2 == "2") { } 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> <p class='' style="font-weight: bold; font-size: 14pt;">※ 현재 신청중인 교육은 <span style='color: red; font-weight: bold'>온라인교육(동영상강의28시간 + 집체참석7시간)</span> 교육입니다.</p>

View File

@ -29,28 +29,39 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
Staging|Any CPU = Staging|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7D8C3282-ED23-4275-A8B6-C2533B06E30C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {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}.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.ActiveCfg = Release|Any CPU
{7D8C3282-ED23-4275-A8B6-C2533B06E30C}.Release|Any CPU.Build.0 = 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.ActiveCfg = Debug|Any CPU
{707F0AAA-F7B7-414D-B763-33DE10980702}.Debug|Any CPU.Build.0 = 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.ActiveCfg = Release|Any CPU
{707F0AAA-F7B7-414D-B763-33DE10980702}.Release|Any CPU.Build.0 = 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.ActiveCfg = Debug|Any CPU
{748E363F-863F-4CAA-BB9B-B3BE3BE7607E}.Debug|Any CPU.Build.0 = 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.ActiveCfg = Release|Any CPU
{748E363F-863F-4CAA-BB9B-B3BE3BE7607E}.Release|Any CPU.Build.0 = 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.ActiveCfg = Debug|Any CPU
{ED9C46ED-D635-4F9B-8372-599EEB050673}.Debug|Any CPU.Build.0 = 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.ActiveCfg = Release|Any CPU
{ED9C46ED-D635-4F9B-8372-599EEB050673}.Release|Any CPU.Build.0 = 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.ActiveCfg = Debug|Any CPU
{CCAA0B88-D2FD-450C-8EF3-D5F9C6C93B25}.Debug|Any CPU.Build.0 = 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.ActiveCfg = Release|Any CPU
{CCAA0B88-D2FD-450C-8EF3-D5F9C6C93B25}.Release|Any CPU.Build.0 = 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 EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@ -571,6 +571,8 @@ namespace NP.Model
public DateTime time4 { get; set; } public DateTime time4 { get; set; }
public DateTime time5 { get; set; } public DateTime time5 { get; set; }
public DateTime time6 { get; set; } public DateTime time6 { get; set; }
public DateTime testsdate { get; set; }
public DateTime testedate { get; set; }
} }
//public class Data //public class Data

View File

@ -510,6 +510,14 @@ namespace NP.Model
/// 일일 학습 회차 제한(0:무제한) /// 일일 학습 회차 제한(0:무제한)
/// </summary> /// </summary>
public int daylectinninglimit { get; set; } 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] [Serializable]
@ -2069,6 +2077,20 @@ namespace NP.Model
/// </summary> /// </summary>
public int iseq { get; set; } public int iseq { get; set; }
public string teachername { 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> /// <summary>
@ -2155,7 +2177,12 @@ namespace NP.Model
public IList<CMEXLayer> cmexlayers { get; set; } public IList<CMEXLayer> cmexlayers { get; set; }
public IList<CMEXQ> cmexqs { get; set; } public IList<CMEXQ> cmexqs { get; set; }
public DateTime? estart { 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> /// <summary>
@ -2359,6 +2386,12 @@ namespace NP.Model
public String qitext8 { get; set; } public String qitext8 { get; set; }
public String qitext9 { get; set; } public String qitext9 { get; set; }
public String qitext10 { 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> /// <summary>
@ -4231,6 +4264,8 @@ namespace NP.Model
public Int64 pcmno { get; set; } public Int64 pcmno { get; set; }
public Int64 cgcode { get; set; } public Int64 cgcode { get; set; }
public String comment { get; set; } // 안내문구 public String comment { get; set; } // 안내문구
/// <summary>담당자/교강사</summary>
public String instructors { get; set; }
} }
/// <summary> /// <summary>

View File

@ -60,8 +60,7 @@ namespace NP.Model
public PPLog PPLog { get; set; } public PPLog PPLog { get; set; }
public Excellog excellog { get; set; } public Excellog excellog { get; set; }
public IList<Excellog> excelloglook { get; set; } public IList<Excellog> excelloglook { get; set; }
} }
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.