diff --git a/Base/Controller/FOCommon.cs b/Base/Controller/FOCommon.cs index 4fb72db..a18294c 100644 --- a/Base/Controller/FOCommon.cs +++ b/Base/Controller/FOCommon.cs @@ -624,17 +624,17 @@ namespace NP.Base.Controllers /// ### ty 교육신청제한 public JsonResult GetCheckLectIs(string man, string cgcode, string edu, string grade, int cmno, int pcmno, string job1 = "") { - int result = 0; // 0 이면 수강 가능, 그외 수강 불가 - result = CheckUserLect(man, cgcode, edu, grade, cmno, pcmno, SUserInfo.UserNo); + //int result = 0; // 0 이면 수강 가능, 그외 수강 불가 + //result = CheckUserLect(man, cgcode, edu, grade, cmno, pcmno, SUserInfo.UserNo); #region + // 2025-09 (스마트검색 개발 건 미사용으로 주석처리, 필요시 복원) - //var result = new KeyValuePair(); - //result = CheckUserLectInfo(cmno, pcmno, SUserInfo.UserNo, man, cgcode, edu, grade, job1); + var result = new KeyValuePair(); + result = CheckUserLectInfo(cmno, pcmno, SUserInfo.UserNo, man, cgcode, edu, grade, job1); - //return JsonBack(result.Key); + return JsonBack(result.Key); #endregion - return JsonBack(result); + //return JsonBack(result); } @@ -872,7 +872,7 @@ namespace NP.Base.Controllers #region + (탈출) 5. 교육목적 -> 승급교육(35) 관련 제한 조건 // 승급교육(35) 관련 제한 조건 (A, B, C, D 그룹) - if (edu == "35") + if (edu == "35") //교육목적 { // 제약의 공통 전제조건: 고급(38) 또는 특급(39) 등급인 경우에만 적용 bool isAdvancedGrade = grade == "38" || grade == "39"; @@ -880,30 +880,46 @@ namespace NP.Base.Controllers if (isAdvancedGrade) { // A: 동일 등급, 동일 직무분야 내에서 1개만 신청 가능 - // ((설계시공 또는 건설사업관리) / (역량강화 또는 전문분야)) - bool isApplyingForGroupA = (man == "25" || man == "28") && (cgcode == "103" || cgcode == "104"); + // ((설계시공 또는 건설사업관리) / (역량강화(103,104) 또는 전문분야(105))) + bool isApplyingForGroupA = (man == "25" || man == "28") && (cgcode == "103" || cgcode == "104" || cgcode == "105"); if (isApplyingForGroupA) { - bool hasExistingInGroupA = lectEnrolls.Any(l => - l.TYPEEDU == 35 - && l.TYPEGRADE.ToString() == grade + //설계시공기술인 + bool hasExistingInGroupA25 = lectEnrolls.Any(l => + l.TYPEEDU == 35 //승급교육 + && (l.TYPEGRADE.ToString() == grade) && l.TYPEJOB.ToString() == job1 && ( - (l.TYPEMAN.ToString() == "25" || l.TYPEMAN.ToString() == "28") - && (l.CGCODE == "103" || l.CGCODE == "104") + (l.TYPEMAN.ToString() == "25") + && (l.CGCODE == "103" || l.CGCODE == "104" || l.CGCODE == "105") ) ); - if (hasExistingInGroupA) + if (hasExistingInGroupA25) { return new KeyValuePair(-20, "승급교육 제약A"); } + + //건설사업관리기술인 + bool hasExistingInGroupA28 = lectEnrolls.Any(l => + l.TYPEEDU == 35 //승급교육 + && (l.TYPEGRADE.ToString() == grade) + && l.TYPEJOB.ToString() == job1 + && ( + (l.TYPEMAN.ToString() == "28") + && (l.CGCODE == "103" || l.CGCODE == "104" || l.CGCODE == "105") + ) + ); + + if (hasExistingInGroupA28) { + return new KeyValuePair(-20, "승급교육 제약A"); + } } bool isApplyingForGroupA2 = (man == "25" || man == "28") && (cgcode == "105"); - if (isApplyingForGroupA) + if (isApplyingForGroupA2) { - bool hasExistingInGroupA = lectEnrolls.Any(l => + bool hasExistingInGroupA2 = lectEnrolls.Any(l => l.TYPEEDU == 35 && l.TYPEGRADE.ToString() == grade && l.TYPEJOB.ToString() == job1 @@ -913,14 +929,14 @@ namespace NP.Base.Controllers ) ); - if (isApplyingForGroupA2) + if (hasExistingInGroupA2) { return new KeyValuePair(-20, "승급교육 제약A"); } } bool isApplyingForGroupA3 = (man == "25" || man == "28") && (cgcode == "107"); - if (isApplyingForGroupA) + if (isApplyingForGroupA3) { bool hasExistingInGroupA3 = lectEnrolls.Any(l => l.TYPEEDU == 35 @@ -932,14 +948,12 @@ namespace NP.Base.Controllers ) ); - if (isApplyingForGroupA2) + if (hasExistingInGroupA3) { return new KeyValuePair(-20, "승급교육 제약A"); } } - /* - // B: 동일 등급, 동일 직무분야 내에서 1개만 신청 가능 // ((설계시공/특성화) 또는 (건설사업관리/전문분야)) bool isApplyingForGroupB = (man == "25" && cgcode == "107") || (man == "28" && cgcode == "105"); @@ -981,8 +995,7 @@ namespace NP.Base.Controllers return new KeyValuePair(-20, "승급교육 제약C"); } } - */ - + // D: 동일 등급, 동일 직무분야 내에서 1개만 신청 가능 // ((건설사업관리/건설기술인 전문교육)) bool isApplyingForGroupD = man == "28" && cgcode == "102"; @@ -1003,7 +1016,6 @@ namespace NP.Base.Controllers } } - #endregion } diff --git a/FO/Controllers/CourseController.cs b/FO/Controllers/CourseController.cs index 5697e39..30928ef 100644 --- a/FO/Controllers/CourseController.cs +++ b/FO/Controllers/CourseController.cs @@ -876,26 +876,26 @@ namespace NP.FO.Controllers ViewBag.IsMain = true; #region + (사용중) ViewBag.rslt 신청 제약 조건 - var fOCommonController = new Base.Controllers.FOCommonController(); - fOCommonController.Dao = new Dao.CommonDao(); - ViewBag.rslt = fOCommonController.CheckUserLect(vm.stringval3, vm.stringval21, vm.stringval4, vm.stringval5, int.Parse(vm.stringval17), int.Parse(vm.stringval18), SUserInfo.UserNo); + //var fOCommonController = new Base.Controllers.FOCommonController(); + //fOCommonController.Dao = new Dao.CommonDao(); + //ViewBag.rslt = fOCommonController.CheckUserLect(vm.stringval3, vm.stringval21, vm.stringval4, vm.stringval5, int.Parse(vm.stringval17), int.Parse(vm.stringval18), SUserInfo.UserNo); #endregion #region + 2025-09 (스마트검색 개발 건 미사용으로 주석처리, 필요시 복원) - //var result = new KeyValuePair(); - //result = CheckUserLectInfo( - // cmno: Convert.ToInt16(vm.stringval17), - // pcmno: Convert.ToInt16(vm.stringval18), - // userno: SUserInfo.UserNo, - // man: vm.stringval3, - // cgcode: vm.stringval21, - // edu: vm.stringval4, - // grade: vm.stringval5, - // job1: vm.stringval6 - // ); + var result = new KeyValuePair(); + result = CheckUserLectInfo( + cmno: Convert.ToInt16(vm.stringval17), + pcmno: Convert.ToInt16(vm.stringval18), + userno: SUserInfo.UserNo, + man: vm.stringval3, + cgcode: vm.stringval21, + edu: vm.stringval4, + grade: vm.stringval5, + job1: vm.stringval6 + ); - //ViewBag.rslt = result.Key; + ViewBag.rslt = result.Key; #endregion #region + ComCodes2 ~ 6 까지 설정 @@ -1048,6 +1048,30 @@ namespace NP.FO.Controllers } } } + + //if (edu == "30") + //{ + // // 1) 현재 신청하는 교육이 제한 대상인지 확인 + // bool isApplyingForRestrictedFirstEdu = + // (man == "25" || man == "27" || man == "28") + // && (cgcode == "103" || cgcode == "104"); + + // if (isApplyingForRestrictedFirstEdu) + // { + // // 2) 이미 신청 내역 중에 제한 대상에 해당하는 최초교육이 있는지 확인 + // bool hasExistingRestrictedFirstEdu = lectEnrolls.Any(l => + // l.TYPEEDU == 30 + // && (l.TYPEMAN == 25 || l.TYPEMAN == 27 || l.TYPEMAN == 28) + // && (l.CGCODE == "107") + // ); + + // // 조건을 만족하는 기존 교육이 발견되면, 중복신청 막기 처리 + // if (hasExistingRestrictedFirstEdu) + // { + // return new KeyValuePair(-10, "최초교육 제약"); + // } + // } + //} #endregion #region + (탈출) 5. 교육목적 -> 승급교육(35) 관련 제한 조건 @@ -1061,7 +1085,7 @@ namespace NP.FO.Controllers { // A: 동일 등급, 동일 직무분야 내에서 1개만 신청 가능 // ((설계시공 또는 건설사업관리) / (역량강화 또는 전문분야)) - bool isApplyingForGroupA = (man == "25" || man == "28") && (cgcode == "103" || cgcode == "104" || cgcode == "105"); + bool isApplyingForGroupA = (man == "25" || man == "28") && (cgcode == "103" || cgcode == "104"); if (isApplyingForGroupA) { bool hasExistingInGroupA = lectEnrolls.Any(l => @@ -1070,7 +1094,7 @@ namespace NP.FO.Controllers && l.TYPEJOB.ToString() == job1 && ( (l.TYPEMAN.ToString() == "25" || l.TYPEMAN.ToString() == "28") - && (l.CGCODE == "103" || l.CGCODE == "104" || l.CGCODE == "105") + && (l.CGCODE == "103" || l.CGCODE == "104") ) ); @@ -1080,24 +1104,62 @@ namespace NP.FO.Controllers } } + bool isApplyingForGroupA2 = (man == "25" || man == "28") && (cgcode == "105"); + if (isApplyingForGroupA2) + { + bool hasExistingInGroupA2 = lectEnrolls.Any(l => + l.TYPEEDU == 35 + && l.TYPEGRADE.ToString() == grade + && l.TYPEJOB.ToString() == job1 + && ( + (l.TYPEMAN.ToString() == "25" || l.TYPEMAN.ToString() == "28") + && (l.CGCODE == "105") + ) + ); + + if (isApplyingForGroupA2) + { + return new KeyValuePair(-20, "승급교육 제약A"); + } + } + + bool isApplyingForGroupA3 = (man == "25" || man == "28") && (cgcode == "107"); + if (isApplyingForGroupA3) + { + bool hasExistingInGroupA3 = lectEnrolls.Any(l => + l.TYPEEDU == 35 + && l.TYPEGRADE.ToString() == grade + && l.TYPEJOB.ToString() == job1 + && ( + (l.TYPEMAN.ToString() == "25" || l.TYPEMAN.ToString() == "28") + && (l.CGCODE == "107") + ) + ); + + if (isApplyingForGroupA3) + { + return new KeyValuePair(-20, "승급교육 제약A"); + } + } + // B: 동일 등급, 동일 직무분야 내에서 1개만 신청 가능 // ((설계시공/특성화) 또는 (건설사업관리/전문분야)) bool isApplyingForGroupB = (man == "25" && cgcode == "107") || (man == "28" && cgcode == "105"); if (isApplyingForGroupB) { bool hasExistingInGroupB = lectEnrolls.Any(l => - l.TYPEEDU == 35 - && l.TYPEGRADE.ToString() == grade - && l.TYPEJOB.ToString() == job1 + l.TYPEEDU == 35 + && l.TYPEGRADE.ToString() == grade + && l.TYPEJOB.ToString() == job1 && ( - (l.TYPEMAN.ToString() == "25" && l.CGCODE == "107") + (l.TYPEMAN.ToString() == "25" && l.CGCODE == "107") || (l.TYPEMAN.ToString() == "28" && l.CGCODE == "105") ) ); if (hasExistingInGroupB) - { - return new KeyValuePair(-20, "승급교육 제약B"); + { + return new KeyValuePair(-20, "승급교육 제약B"); } } @@ -1107,11 +1169,11 @@ namespace NP.FO.Controllers if (isApplyingForGroupC) { bool hasExistingInGroupC = lectEnrolls.Any(l => - l.TYPEEDU == 35 - && l.TYPEGRADE.ToString() == grade - && l.TYPEJOB.ToString() == job1 + l.TYPEEDU == 35 + && l.TYPEGRADE.ToString() == grade + && l.TYPEJOB.ToString() == job1 && ( - (l.TYPEMAN.ToString() == "25" && l.CGCODE == "107") + (l.TYPEMAN.ToString() == "25" && l.CGCODE == "107") || (l.TYPEMAN.ToString() == "28" && (l.CGCODE == "103" || l.CGCODE == "104")) ) ); @@ -1121,7 +1183,7 @@ namespace NP.FO.Controllers return new KeyValuePair(-20, "승급교육 제약C"); } } - + // D: 동일 등급, 동일 직무분야 내에서 1개만 신청 가능 // ((건설사업관리/건설기술인 전문교육)) bool isApplyingForGroupD = man == "28" && cgcode == "102"; @@ -1142,7 +1204,6 @@ namespace NP.FO.Controllers } } - #endregion } @@ -1160,7 +1221,8 @@ namespace NP.FO.Controllers } return result; - } + } + #endregion diff --git a/FO/Views/Course/SmartSearch.cshtml b/FO/Views/Course/SmartSearch.cshtml index 13c8b61..8d81453 100644 --- a/FO/Views/Course/SmartSearch.cshtml +++ b/FO/Views/Course/SmartSearch.cshtml @@ -541,7 +541,7 @@ } ulScd.append(li); } - + $.each(capResult.obj, function (i, d) { var li = $("
  • "); var pData = $("

    "); @@ -699,10 +699,11 @@ var uno = ('@ViewBag.SSUserNo' != '') ? parseInt(@ViewBag.SSUserNo) : 0; if (uno > 0) { + $("#cmino").val(cmino); $("#cmisno").val(cmisno); - checkLectCompleteEdu(cmno, "@Model.stringval3", "@Model.stringval4", "@Model.stringval5", "@Model.stringval6", $("#pcmno_" + pcmno + "_cgcode").val(), pcmno, "chkLect"); + checkLectCompleteEdu(cmno, "@Model.stringval3", "@Model.stringval4", "@Model.stringval5", "@Model.stringval6", $("#pcmno_" + pcmno + "_cgcode").val(), pcmno, "chkLectNew"); } else { @@ -743,16 +744,26 @@ _cgcode = cgcode; _grade = grade; - capp("/focommon/GetCheckLectIs", - { - cmno: cmno, - man: man, - edu: edu, - grade: grade, - job1: job, - cgcode: cgcode, - pcmno: pcmno - }, "chkLect"); // 1 + //capp("/focommon/GetCheckLectIs", + // { + // cmno: cmno, + // man: man, + // edu: edu, + // grade: grade, + // job1: job, + // cgcode: cgcode, + // pcmno: pcmno + // }, "chkLect"); // 1 + capp("/focommon/GetCheckLectIs", + { + cmno: cmno, + man: man, + edu: edu, + grade: grade, + job1: job, + cgcode: cgcode, + pcmno: pcmno + }, "chkLectNew"); // 1 } //20220729 개발전 @@ -773,46 +784,46 @@ } // - //function chkLectNew() { - // if (capResult.code == 1000) { - // var resultCode = capResult.obj; + function chkLectNew() { + if (capResult.code == 1000) { + var resultCode = capResult.obj; - // if (resultCode == 0) { - // checkLectIsComplete(_cmno); - // } - // else { - // switch (resultCode) { - // case -2: - // msg("이미 동일한 내용의 교육을 신청,수강 또는 수료한 과정입니다."); - // break; - // case -10: - // case -20: - // case -30: - // msg(` - // - // 이 교육은 아래의 사유 중 하나에 해당되어 신청되지 않는 교육입니다.

    - //

    - //     -    선택한 교육목적으로 인정되지 않는 경우
    - //     -    이미 신청 또는 수료한 교육과 함께 수료하면 인정이 되지 않는 경우 - //


    - // 따라서 현재 화면에 나와있는 다른 교육으로 신청하여 주시기 바랍니다.

    - // - // 문의 : 1544 - 7660 - // - // - // `); - // break; - // case -100: - // msg("잠시 후 다시 시도해주세요."); - // break; - // default: - // break; - // } - // } + if (resultCode == 0) { + checkLectIsComplete(_cmno); + } + else { + switch (resultCode) { + case -2: + msg("이미 동일한 내용의 교육을 신청,수강 또는 수료한 과정입니다."); + break; + case -10: + case -20: + case -30: + msg(` + + 이 교육은 아래의 사유 중 하나에 해당되어 신청되지 않는 교육입니다.

    +

    +     -    선택한 교육목적으로 인정되지 않는 경우
    +     -    이미 신청 또는 수료한 교육과 함께 수료하면 인정이 되지 않는 경우 +


    + 따라서 현재 화면에 나와있는 다른 교육으로 신청하여 주시기 바랍니다.

    + + 문의 : 1544 - 7660 + +
    + `); + break; + case -100: + msg("잠시 후 다시 시도해주세요."); + break; + default: + break; + } + } - // } + } - //} + } diff --git a/FO/Views/Home/Index.cshtml b/FO/Views/Home/Index.cshtml index 3fa1f3e..6bc451d 100644 --- a/FO/Views/Home/Index.cshtml +++ b/FO/Views/Home/Index.cshtml @@ -564,8 +564,8 @@ } -@* // 2025-09 (스마트검색 개발 건 미사용으로 주석처리, 필요시 복원) -
    + +
    @@ -602,7 +602,7 @@
    -
    *@ +
    @@ -693,20 +693,19 @@ } - @* // 2025-09 (스마트검색 개발 건 미사용으로 주석처리, 필요시 복원) + // 2025-09 (스마트검색 개발 건 미사용으로 주석처리, 필요시 복원) // 건설사업관리(계속교육) 신청 시 주의사항 if ($("#stringval3").val() == "28" && $("#stringval4").val() == "31" && ($("#stringval5").val() == "38" || $("#stringval5").val() == "39") ) { showEducationPopup(); - } - else { + } else { $("#indexForm").attr("action", "/Course/SmartSearch").submit(); } - *@ + - $("#indexForm").attr("action", "/Course/SmartSearch").submit(); + //$("#indexForm").attr("action", "/Course/SmartSearch").submit(); });