YNICTE/FO/Views/CRoom/Estimation.cshtml

289 lines
14 KiB
Plaintext

@model NP.Model.VMCRoom
@{
// 1. 하단 문구에서 사용
// 1-1)최종평가 일때 cm.studytime 값 intval6
int dType1CmStudyTime = Model.Datas
.Where(w => w.dtype == 1)
.Select(s => s.intval6)
.SingleOrDefault();
// 1-2)최종평가 일때 lect.sdate
DateTime dType1LectSDate = Model.Datas
.Where(w => w.dtype == 1)
.Select(s => s.time2)
.SingleOrDefault();
// 예외처리 과정코드들?
//List<long> allowLectNos = Array
// .ConvertAll("104069,102553,105325,104402,106226,62683,104419".Split(','), long.Parse)
// .ToList();
//ViewBag.exCheck = allowLectNos.IndexOf(Model.croomlectno) > -1 ? true : false;
// 현재 진도율
int currentProgresRate = Model.Datas.Where(w => w.dtype == -1).FirstOrDefault().intval5;
// 시험응시가능여부
bool isExCheck = ViewBag.exCheck != null ? (bool)ViewBag.exCheck : false;
}
<ul class="lctpTab col3">
<li class="@(Model.tabidx == 0 ? "current" : "")"><a onclick="gotab(0, this)" style="@(Model.tabidx == 0 ? "cursor: default;" : "")" href="#;">전체</a></li>
<li class="@(Model.tabidx == 1 ? "current" : "")"><a onclick="gotab(1, this)" style="@(Model.tabidx == 1 ? "cursor: default;" : "")" href="#">시험</a></li>
<li class="@(Model.tabidx == 2 ? "current" : "")"><a onclick="gotab(2, this)" style="@(Model.tabidx == 2 ? "cursor: default;" : "")" href="#">과제</a></li>
</ul>
<div class="evaList">
<input type="hidden" id="hdndType1StudyTime" value="@dType1CmStudyTime" />
<input type="hidden" id="hdnlectSDate" value="@dType1LectSDate" />
<input type="hidden" id="hdnCurrentProgresRate" value="@currentProgresRate" />
<input type="hidden" id="hdnExCheck" value="@isExCheck.ToString()" />
<table>
<tbody>
@foreach (var d in Model.Datas.Where(w => w.dtype > -1))
{
<tr>
<th>
@*
// 당구장 설명
/*
① 16시간 교육O or 신청일이 2024-08-19 이전: 참여조건 표기
② 16시간 교육X or 신청일이 2024-08-19 이후: ※ 집체교육일에 교육장에서 평가진행
// 3월이후에 아래 내용으로 복원한다 (dtype = 1 안에 if 문 조정)
<p>※ 참여조건 : 진도율 90% 이상 / 집체교육 참석 완료 (집체교육일 : @d.time.ToShortDateString())</p>
*/
*@
<h5>
<b>@(d.dtype == 0 ? "진행평가" : d.dtype == 1 ? "최종평가" : d.dtype == 2 ? "과제" : d.dtype == 3 ? "토론" : "")</b><span> @d.strval</span>
</h5>
@if (d.dtype == 1)
{ // 최종평가
if (d.intval6 == 16 || (d.time2 < Convert.ToDateTime("2024-08-19")))
{
<p>참여조건 : 진도율 @(d.intval2)% 이상 / 집체교육 참석일 (@d.time.ToShortDateString()) 전 까지</p>
}
else
{
<p>※ 집체교육일에 교육장에서 평가진행</p>
}
}
else if (d.dtype > 1)
{ // 기타
<p>참여조건 : 진도율 @(d.intval2)% 이상 / 집체교육 참석일 (@d.time.ToShortDateString()) 전 까지</p>
}
</th>
@*
// 시험 응시 버튼
/*
시험응시가능조건(①, ② 필수 / ③or④)
① 관리자가 시험등록 시 설정한 진도율 조건 만족 < -현재 되어 있음
② lect.sdate ~lect.edate 기간 내일 경우(현재 없음.어딘가 기능은 있을텐데.....)
③ 집합교육이 출석 상태
④ 16시간 교육
// 3월이후에 아래 내용으로 복원한다 (dtype = 1 안에 if 문 조정)
<a href="javascript:;" onclick="msg('시험 응시 조건이 충족되지 않아 시험평가 진행이 불가합니다. <br>진도율 90% 이상, 집체교육 출석 완료')"
class="evaType@(d.intval4==1?"04":d.intval3==1?"03":d.intval3==0 && d.intval >=d.intval2?"02":"01")">@(d.intval4 == 1 ? "[평가완료]" : d.intval3 == 1 ? "[참여완료]" : d.intval3 == 0 && d.intval >=d.intval2 ? "[참여가능]" : "[참여불가]")</a>
*/
*@
@if (d.dtype == 1)
{
// 최총 평가일 때
if ((currentProgresRate >= d.intval2) // 조건 ①
&& IsDateInRange(d.time2, d.time) // 조건 ②
&& (ViewBag.exCheck || dType1CmStudyTime == 16)) // 조건 ③ 또는 조건 ④ <-- 요 부분을 다시 물어보자
{
<td>
<input type="hidden" name="cmEcondition" value="@d.intval2" />
<input type="hidden" name="lectSDate" value="@d.time2" />
<input type="hidden" name="lectEDate" value="@d.time" />
<input type="hidden" name="isDateInRange" value="@IsDateInRange(d.time2, d.time).ToString()" />
<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="evaType@(d.intval4 == 1 ? "04" : d.intval3 == 1 ? "03" : d.intval3 == 0 && d.intval >= d.intval2 ? "02" : "01")">@(d.intval4 == 1 ? "[평가완료]" : d.intval3 == 1 ? "[참여완료]" : d.intval3 == 0 && d.intval >= d.intval2 ? "[참여가능]" : "[참여불가]")</a>
</td>
}
else
{
<td>
<input type="hidden" name="cmEcondition" value="@d.intval2" />
<input type="hidden" name="lectSDate" value="@d.time2" />
<input type="hidden" name="lectEDate" value="@d.time" />
<input type="hidden" name="isDateInRange" value="@IsDateInRange(d.time2, d.time).ToString()" />
<a href="javascript:;" onclick="msg('24년 8월 22일 부터 건설기술진흥법 변경으로 <br>집체교육 당일 교육장에서 시험평가가 진행됩니다.')"
class="evaType@(d.intval4 == 1 ? "04" : d.intval3 == 1 ? "03" : d.intval3 == 0 && d.intval >= d.intval2 ? "02" : "01")">@(d.intval4 == 1 ? "[평가완료]" : d.intval3 == 1 ? "[참여완료]" : d.intval3 == 0 && d.intval >= d.intval2 ? "[참여가능]" : "[참여불가]")</a>
</td>
}
}
else
{
// 과제 등...
// 조건 분리 @(d.intval4 == 1 ? 4 : d.intval3 == 1 ? 3 : d.intval3 == 0 && d.intval >= d.intval2 ? 2 : 1)
int evaStatus;
if (d.intval4 == 1)
{
evaStatus = 4;
}
else if (d.intval3 == 1)
{
evaStatus = 3;
}
else
{
evaStatus = (d.intval3 == 0 && d.intval >= d.intval2) ? 2 : 1;
}
// 조건 분리 evaType@(d.intval4 == 1 ? "04" : d.intval3 == 1 ? "03" : d.intval3 == 0 && d.intval >= d.intval2 ? "02" : "01")
string evaTypeCss;
if (d.intval4 == 1)
{
evaTypeCss = "evaType04";
}
else if (d.intval3 == 1)
{
evaTypeCss = "evaType03";
}
else
{
evaTypeCss = (d.intval3 == 0 && d.intval >= d.intval2) ? "evaType02" : "evaType01";
}
// 조건 분리 @(d.intval4 == 1 ? "[평가완료]" : d.intval3 == 1 ? "[참여완료]" : d.intval3 == 0 && d.intval >= d.intval2 ? "[참여가능]" : "[참여불가]")
string statusText;
if (d.intval4 == 1)
{
statusText = "[평가완료]";
}
else if (d.intval3 == 1)
{
statusText = "[참여완료]";
}
else
{
statusText = (d.intval3 == 0 && d.intval >= d.intval2) ? "[참여가능]" : "[참여불가]";
}
<td>
<a href="javascript:;" onclick="eva(@d.dtype, @d.intval10, @evaStatus)" class="@evaTypeCss">
<text>@statusText</text>
</a>
</td>
}
</tr>
}
@*
// 하단 문구
*@
@if (Model.Datas.Where(w => w.dtype > -1).Count() < 1)
{
<tr>
<th colspan="2" style="text-align: center; font-weight: normal; height: 100px;">
<p>- 평가할 항목이 없습니다.</p>
</th>
</tr>
}
else
{
<tr>
<th colspan="2" style="text-align: center; font-weight: normal; height: 100px;">
@if (Model.tabidx == 0 || Model.tabidx == 1)
{ // 전체, 시험 탭
if (dType1CmStudyTime == 16 || dType1LectSDate < Convert.ToDateTime("2024-08-19"))
{
// 기준이 애매해서 if와 else를 바꿈 (임시사용)
}
else
{
<p><b>※ 24년 8월 22일 부터 건설기술진흥법 변경으로 집체교육 당일 교육장에서 시험평가가 진행됩니다.</b></p>
}
}
<p>현재 진도율: @currentProgresRate <text>%</text></p>
</th>
</tr>
}
</tbody>
</table>
</div>
<form id="mform" action="/CRoom/Estimation?@Model.croomparam" method="get">
@Html.HiddenFor(m => m.croomlectno)
@Html.HiddenFor(m => m.croomcmno)
@Html.HiddenFor(m => m.tabidx)
@Html.HiddenFor(m => m.estno)
</form>
@section scriptsHeader{ }
@section scripts{
<script>
$(document).ready(function () {
});
/**
* 탭 변경
* @@param idx {int} - 탭번호 (0:전체, 1:평가, 2:과제)
* @@param a {event} - e
*/
function gotab(idx, a) {
if (!$(a).parent().hasClass("current")) {
setv("tabidx", idx);
submit();
}
}
@*
/**
* 평가, 과제 참여
* @param type {number} - 유형 (과제,시험)
* @param no
* @param status {number} - 상태
*/ *@
function eva(type, no, status) {
if (status == 1) {
msg("진도율 조건에 맞지않거나 수강일이 종료되어 참여하실 수 없습니다.");
}
else {
let typeString;
if (type < 2) {
typeString = "Exam";
}
else if (type == 2) {
typeString = "Subject";
}
else {
typeString = "Discuss";
}
let submitUrl = `/CRoom/Estimation${typeString}`;
setv("estno", no);
$("#mform").attr("action", submitUrl).submit();
}
}
</script>
}
@functions {
/// <summary>
/// 시작일~종료일이 범위내에 속해있는지 확인
/// </summary>
/// <param name="startDate">시작일</param>
/// <param name="endDate">종료일</param>
/// <returns>true/false</returns>
public bool IsDateInRange(DateTime startDate, DateTime endDate)
{
// 현재일자가 시작일 이상 && 종료일 이하인지 확인
return startDate <= DateTime.Now && DateTime.Now <= endDate;
}
}