@model NP.Model.VMCRoom @{ /* * -- Model.Datas의 Dtype * -1 : lect만 쿼리하고 attrate만 intval5에 담아놓음 * 1 : 최종평가 * 2 : 과제 */ // 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(); //2025-12-30 / KHJ / 추가개발건 //집체교육이 선택된 시험이 1개도 없을 경우->강좌에 등록된 모든 시험 출력 //집체교육이 선택된 시험이 1개 이상이나, 내가 선택한 일정에 맞는 시험이 없을 경우 -> 집체교육이 선택되지 않은 모든 시험 출력 //집체교육이 선택된 시험이 1개 이상이며, 내가 선택한 일정에 맞는 시험이 있을 경우 -> 내 일정에 맞는 시험 출력 // 현재 진도율 int currentProgresRate = Model.Datas.Where(w => w.dtype == -1).FirstOrDefault().intval5; // 현재 과정 수료여부 int currentLectIsComplete = Model.Datas.Where(w => w.dtype == -1).FirstOrDefault().intval7; // 시험응시가능여부 bool isExCheck = ViewBag.exCheck != null ? (bool)ViewBag.exCheck : false; }
@*@dType1CmStudyTime*@ @*@dType1LectSDate*@ @foreach (var d in Model.Datas.Where(w => w.dtype > -1)) { @* // 시험 응시 버튼 /* 시험응시가능조건(①, ② 필수 / ③or④) ① 관리자가 시험등록 시 설정한 진도율 조건 만족 < -현재 되어 있음 ② lect.sdate ~lect.edate 기간 내일 경우(현재 없음.어딘가 기능은 있을텐데.....) ③ 집합교육이 출석 상태 ④ 16시간 교육 // 3월이후에 아래 내용으로 복원한다 (dtype = 1 안에 if 문 조정) =d.intval2?"02":"01")">@(d.intval4 == 1 ? "[평가완료]" : d.intval3 == 1 ? "[참여완료]" : d.intval3 == 0 && d.intval >=d.intval2 ? "[참여가능]" : "[참여불가]") */ *@ @if (d.dtype == 1) { // 최총 평가일 때(시험응시) //if ((currentProgresRate >= d.intval2) // 조건 ① // && IsDateInRange(d.testsdate, d.testedate) // 조건 ② // && (ViewBag.exCheck || dType1CmStudyTime == 16)) // 조건 ③ 또는 조건 ④ <-- 요 부분을 다시 물어보자 // 2025-12-30 / KHJ / 추가개발건 // currentProgresRate(현재 진도율) >= intval2(제한시간) && 시험 응시 시작일 ~ 시험 응시 종료일 // testsdate(시험응시 시작일), testedate(시험응시 종료일), inval11(교육일정코드_cmisno), strval2(강의시작일), strval3(강의종료일) if (d.intval11 > 0) { // 교육일정코드_cmisno 있을 시 if ((currentProgresRate >= d.intval2) && IsDateInRange(d.testsdate, d.testedate)) { } else { } } else { if ((currentProgresRate >= d.intval2) && IsDateInRange(d.time3, d.time4) && (ViewBag.exCheck || (d.intval6 == 16 || d.intval6 == 14))) { } else { } } } 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) ? "[참여가능]" : "[참여불가]"; } } } @* // 하단 문구 *@ @if (Model.Datas.Where(w => w.dtype > -1).Count() < 1) { } else { }
@* // 당구장 설명 /* ① 16시간 교육O or 신청일이 2024-08-19 이전: 참여조건 표기 ② 16시간 교육X or 신청일이 2024-08-19 이후: ※ 집체교육일에 교육장에서 평가진행 // 3월이후에 아래 내용으로 복원한다 (dtype = 1 안에 if 문 조정)

※ 참여조건 : 진도율 90% 이상 / 집체교육 참석 완료 (집체교육일 : @d.time.ToShortDateString())

*/ *@
@(d.dtype == 0 ? "진행평가" : d.dtype == 1 ? "최종평가" : d.dtype == 2 ? "과제" : d.dtype == 3 ? "토론" : "") @d.strval
@{ //string trainingDateText = d.intval6 != 16 ? string.Format("/ 집체교육 참석일 ({0}) 전 까지", d.time.ToShortDateString()) : ""; string trainingDateText = ""; if (d.intval6 != 16 && d.intval6 != 14) { trainingDateText = string.Format("/ 집체교육 참석일 ({0}) 전 까지", d.time.ToShortDateString()); } else { trainingDateText = ""; } } @if (d.dtype == 1) { // 최종평가 if ((d.intval6 == 16 || d.intval6 == 14) || (d.time2 < Convert.ToDateTime("2024-08-19"))) {

참여조건 : 진도율 @(d.intval2)% 이상 @trainingDateText

} else {

※ 집체교육일에 교육장에서 평가진행

} } else if (d.dtype > 1) { // 기타

참여조건 : 진도율 @(d.intval2)% 이상 @trainingDateText

}
@* *@ @**@ @GetEvaStatusText(d.intval, d.intval2, d.intval3, d.intval4, currentLectIsComplete) @*onclick="msg('24년 8월 22일 부터 건설기술진흥법 변경으로
집체교육 당일 교육장에서 시험평가가 진행됩니다.')"*@ = d.intval2 ? "02" : "01")"> @(d.intval4 == 1 ? "[평가완료]" : d.intval3 == 1 ? "[참여완료]" : d.intval3 == 0 && d.intval >= d.intval2 ? "[참여가능]" : "[참여불가]")
@* *@ @**@ @GetEvaStatusText(d.intval, d.intval2, d.intval3, d.intval4, currentLectIsComplete) @*onclick="msg('24년 8월 22일 부터 건설기술진흥법 변경으로
집체교육 당일 교육장에서 시험평가가 진행됩니다.')"*@ = d.intval2 ? "02" : "01")"> @(d.intval4 == 1 ? "[평가완료]" : d.intval3 == 1 ? "[참여완료]" : d.intval3 == 0 && d.intval >= d.intval2 ? "[참여가능]" : "[참여불가]")
@statusText

- 평가할 항목이 없습니다.

@if (Model.tabidx == 0 || Model.tabidx == 1) { // 전체, 시험 탭 @*if (dType1CmStudyTime == 16 || dType1LectSDate < Convert.ToDateTime("2024-08-19")) { // 기준이 애매해서 if와 else를 바꿈 (임시사용) } else {

※ 24년 8월 22일 부터 건설기술진흥법 변경으로 집체교육 당일 교육장에서 시험평가가 진행됩니다.

}*@ }

현재 진도율: @currentProgresRate %

@Html.HiddenFor(m => m.croomlectno) @Html.HiddenFor(m => m.croomcmno) @Html.HiddenFor(m => m.tabidx) @Html.HiddenFor(m => m.estno)
@section scriptsHeader{ } @section scripts{ } @functions { /// /// 시작일~종료일이 범위내에 속해있는지 확인 /// /// 시작일 /// 종료일 /// true/false public bool IsDateInRange(DateTime startDate, DateTime endDate) { // 현재일자가 시작일 이상 && 종료일 이하인지 확인 return startDate <= DateTime.Now && DateTime.Now <= endDate; } /// /// 평가 상태에 따른 css class를 반환 /// /// 수강기간 내 출석률(없으면 -1) /// 참여조건(출석률) /// 평가종료여부(0:종료일자없음, 1:종료) /// 시험일때는 null 과제일때는 (0:제출하지않음, 1:제출) /// 현재 과정 수료여부 (0: 미수료, 1:수료) /// public string GetEvaTypeClass(int intval, int intval2, int intval3, int intval4, int currentLectIsComplete) { // todo currentLectIsComplete 는 평가완료인가 참여불가인가 확인 if (intval4 == 1) // 과제 제출 여부가 1(제출 완료)이면 "evaType04" 반환 return "evaType04"; else if (intval3 == 1) // 평가 종료 여부가 1(종료)인 경우 "evaType03" 반환 return "evaType03"; else if (intval3 == 0 && intval >= intval2) // 평가가 종료되지 않았고(종료 여부가 0), 출석률이 참여 조건을 만족하거나 초과하면 "evaType02" 반환 return "evaType02"; else // 위 조건에 해당하지 않는 모든 경우에 "evaType01" 반환 return "evaType01"; } /// /// 평가 상태에 따른 문구를 반환 /// /// /// /// /// /// public string GetEvaStatusText(int intval, int intval2, int intval3, int intval4, int currentLectIsComplete) { if (intval4 == 1) return "[평가완료]"; else if (intval3 == 1) return "[참여완료]"; else if (intval3 == 0 && intval >= intval2) return "[참여가능]"; else return "[참여불가]"; } }