diff --git a/src/main/java/com/health/config/SecurityConfig.java b/src/main/java/com/health/config/SecurityConfig.java index 806589f6..ecc520e2 100644 --- a/src/main/java/com/health/config/SecurityConfig.java +++ b/src/main/java/com/health/config/SecurityConfig.java @@ -63,7 +63,7 @@ public static BCryptPasswordEncoder passwordEncoder() { "/check-deployment", "/training-resources/view-share/**", "/loadDistrictAndFileTypeByState/**", "/loadStateAndFileTypeByDistrict/**", "/loadStateAndDistrictByFileType/**", "/Project-Reports/**", "/downloadProjectReport/**", "/project-reports/view-share/**", "/shared-Project-Report/**", - "/shared-project-report-file/**", }; + "/shared-project-report-file/**", "/Training-Modules/**", "/load_lan_by_week", "/load_week_by_language", }; /** * url matcher for SUPERADMIN diff --git a/src/main/java/com/health/controller/AjaxController.java b/src/main/java/com/health/controller/AjaxController.java index ddaf5b4e..d0d3d6a7 100644 --- a/src/main/java/com/health/controller/AjaxController.java +++ b/src/main/java/com/health/controller/AjaxController.java @@ -1267,14 +1267,19 @@ public String downloadPackagePost(@RequestParam String packageDownloadName, @GetMapping("/downloadManager") public String downloadManager(@RequestParam(name = "zipUrl") String zipUrl, HttpServletResponse response, - RedirectAttributes redirectAttributes) { + RedirectAttributes redirectAttributes, HttpServletRequest req) { String message = ServiceUtility.downloadManager(zipUrl, downloadCount, downloadLimit, downloadTimeOut, env, response); if (message != null) { + String referer = req.getHeader("Referer"); + if (referer == null || referer.trim().isEmpty()) { + referer = "/Training-Modules"; + } + redirectAttributes.addFlashAttribute("return_msg", message); - return "redirect:/trainingModules"; + return "redirect:" + referer; } return null; @@ -1397,6 +1402,107 @@ public String downloadManager(@RequestParam(name = "zipUrl") String zipUrl, Http * Training_Module_View End **********************************/ + /*************************************** + * New Training Module Start + *******************************/ + + @RequestMapping("/load_lan_by_week") + public @ResponseBody ArrayList> getNewLanguageByWeek( + @RequestParam(value = "weekId") int weekId, @RequestParam(value = "languageId") int languageId, + Optional packageId) { + + ArrayList> arlist = new ArrayList<>(); + + Map languages = new TreeMap<>(); + + Week week = weekId != 0 ? weekService.findByWeekId(weekId) : null; + + Language language = languageId != 0 ? langService.getById(languageId) : null; + PackageLanguage packLanguage = null; + if (packageId != null && packageId.isPresent()) { + PackageContainer packageContainer = packageContainerService.findByPackageId(packageId.get()); + if (packageContainer != null && language != null) { + packLanguage = packLanService.findByPackageContainerAndLan(packageContainer, language.getLangName()); + } + } + + List tutorials = new ArrayList<>(); + + if (packLanguage != null) { + + tutorials = new ArrayList<>(packLanguage.getTutorialsWithWeekAndPack()); + } + + else { + + List weekTitleList = week != null ? new ArrayList<>(week.getWeekTitles()) + : weekTitleVideoService.findAll(); + List packlan_list = packLanService.findAll(); + + tutorials = tutorialWithPackageAndService.findByWeekTitlesAndPackageLanguages(weekTitleList, packlan_list); + } + + for (TutorialWithWeekAndPackage temp : tutorials) { + Language lan = temp.getPackageLanguage().getLan(); + languages.put(lan.getLangName(), lan.getLanId()); + } + + arlist.add(languages); + return arlist; + + } + + @RequestMapping("/load_week_by_language") + public @ResponseBody ArrayList> getNewWeekByLanguage( + @RequestParam(value = "weekId") int weekId, @RequestParam(value = "languageId") int languageId, + Optional packageId) { + + ArrayList> arlist = new ArrayList<>(); + + Map weeks = new TreeMap<>((w1, w2) -> { + int num1 = ServiceUtility.extractInteger(w1); + int num2 = ServiceUtility.extractInteger(w2); + return Integer.compare(num1, num2); + }); + + Week week = weekId != 0 ? weekService.findByWeekId(weekId) : null; + + Language language = languageId != 0 ? langService.getById(languageId) : null; + + PackageLanguage packLanguage = null; + if (packageId != null && packageId.isPresent()) { + PackageContainer packageContainer = packageContainerService.findByPackageId(packageId.get()); + if (packageContainer != null && language != null) { + packLanguage = packLanService.findByPackageContainerAndLan(packageContainer, language.getLangName()); + } + } + + List tutorials = new ArrayList<>(); + if (packLanguage != null) { + + tutorials = new ArrayList<>(packLanguage.getTutorialsWithWeekAndPack()); + } else { + + List weekTitleList = weekTitleVideoService.findAll(); + List packlan_list = language != null ? new ArrayList<>(language.getPackageLanguages()) + : packLanService.findAll(); + tutorials = tutorialWithPackageAndService.findByWeekTitlesAndPackageLanguages(weekTitleList, packlan_list); + } + + for (TutorialWithWeekAndPackage temp : tutorials) { + Week weekTemp = temp.getWeekTitle().getWeek(); + weeks.put(weekTemp.getWeekName(), weekTemp.getWeekId()); + } + + arlist.add(weeks); + return arlist; + + } + + /*************************************** + * New Training Module End + **********************************/ + /********************* * Delete Tutorial of Training Module and HST Start **************************/ diff --git a/src/main/java/com/health/controller/HomeController.java b/src/main/java/com/health/controller/HomeController.java index 3dd361e3..7c2e5e9d 100644 --- a/src/main/java/com/health/controller/HomeController.java +++ b/src/main/java/com/health/controller/HomeController.java @@ -901,6 +901,33 @@ private void getPackageAndLanguageData(Model model) { getPackageAndLanguageData(model, "", ""); } + private void getNewPackageAndLanguageData(Model model, int weekId, int lanId) { + List packageList = packLanService.findAllDistinctEnabledPackageContainers(); + model.addAttribute("packageList", packageList); + + ArrayList> arlist = ajaxController.getNewLanguageByWeek(weekId, lanId, null); + ArrayList> arlist1 = ajaxController.getNewWeekByLanguage(weekId, lanId, null); + Map languages = arlist.get(0); + Map weeks = arlist1.get(0); + + model.addAttribute("weekListNew", weeks); + model.addAttribute("languagesNew", languages); + model.addAttribute("localWeekNew", weekId); + + model.addAttribute("localLanguageNew", lanId); + + model.addAttribute("languageCount", languages.size()); + + boolean downloadPackageFlag = !packageList.isEmpty(); + + model.addAttribute("downloadPackageFlag", downloadPackageFlag); + + } + + private void getNewPackageAndLanguageData(Model model) { + getNewPackageAndLanguageData(model, 0, 0); + } + private void getModelTrainingResource(Model model, int topicId, int lanId, int fileTypeId) { ArrayList> arlist = ajaxController.getLanAndFileTypeByTopic(topicId, lanId, fileTypeId); @@ -7975,6 +8002,93 @@ public String getShareLinkofProjectReportDoc_ExcelByToken(HttpServletRequest req /************************ Project Report End ********************************/ + /********************** + * New Training Module Start + ******************************/ + + @GetMapping("/Training-Modules") + public String newHstTrainingModules(@RequestParam(name = "week", required = false, defaultValue = "0") int week, + @RequestParam(name = "lang", required = false, defaultValue = "0") int lang, HttpServletRequest req, + @RequestParam(name = "page", defaultValue = "0") int page, Model model, Principal principal) { + + User usr = getUser(principal); + logger.info("{} {} {}", usr.getUsername(), req.getMethod(), req.getRequestURI()); + model.addAttribute("userInfo", usr); + + model.addAttribute("week", week); + model.addAttribute("language", lang); + Week localWeek = null; + Language localLan = null; + + Pageable pageable = PageRequest.of(page, 10); + + getNewPackageAndLanguageData(model, week, lang); + + if (week != 0) { + localWeek = weekService.findByWeekId(week); + + model.addAttribute("weekforQuery", localWeek); + } + if (lang != 0) { + localLan = lanService.getById(lang); + model.addAttribute("lanforQuery", localLan); + } + + List weekTitleList = localWeek != null ? new ArrayList<>(localWeek.getWeekTitles()) + : weekTitleVideoService.findAll(); + List packlan_list = localLan != null ? new ArrayList<>(localLan.getPackageLanguages()) + : packLanService.findAll(); + + List tutorialswithWeekAndPackage = tutorialWithWeekAndPackageService + .findByWeekTitlesAndPackageLanguages(weekTitleList, packlan_list); + + List weekTitleVideoList = tutorialswithWeekAndPackage.stream() + .map(TutorialWithWeekAndPackage::getWeekTitle).distinct().collect(Collectors.toList()); + + List finalWeekTitleVideoList = getEnglishTrainingMouduleFirst(weekTitleVideoList); + + int start = (int) pageable.getOffset(); + int end = Math.min((start + pageable.getPageSize()), finalWeekTitleVideoList.size()); + + List sublist = finalWeekTitleVideoList.subList(start, end); + + List weekTitleVideoView = new ArrayList(); + + Page weekTitleVidePage = new PageImpl<>(sublist, pageable, finalWeekTitleVideoList.size()); + for (WeekTitleVideo temp : weekTitleVidePage) { + { + weekTitleVideoView.add(temp); + } + } + + int totalPages = 0; + + if (weekTitleVidePage != null) { + totalPages = weekTitleVidePage.getTotalPages(); + } else { + totalPages = 1; + } + + int firstPage = page + 1 > 2 ? page + 1 - 2 : 1; + int lastPage = page + 1 < totalPages - 5 ? page + 1 + 5 : totalPages; + + model.addAttribute("weekTitleVideoView", weekTitleVideoView); + + model.addAttribute("currentPage", page); + model.addAttribute("firstPage", firstPage); + model.addAttribute("lastPage", lastPage); + model.addAttribute("totalPages", totalPages); + + model.addAttribute("userInfo", usr); + + // model.addAttribute("weekTitleVideoList", finalWeekTitleVideoList); + + return "hstTrainingModuleList"; + + } + + /********************* New Training Module End ********************************/ + @GetMapping("/trainingModules") public String hstTrainingModules(@RequestParam(name = "week", required = false, defaultValue = "") String weekName, @RequestParam(name = "lan", required = false, defaultValue = "") String langName, HttpServletRequest req, @@ -8030,8 +8144,17 @@ public String hstTrainingModuleView(@PathVariable(name = "weekTitleVideoId") int if (weekTitleVideo == null) { foundVideo = false; } else { + model.addAttribute("currentwtvId", weekTitleVideoId); Week week = weekTitleVideo.getWeek(); Language lan = weekTitleVideo.getVideoResource().getLan(); + model.addAttribute("week", week.getWeekId()); + model.addAttribute("language", lan.getLanId()); + + getNewPackageAndLanguageData(model, week.getWeekId(), lan.getLanId()); + + model.addAttribute("weekforQuery", week); + + model.addAttribute("lanforQuery", lan); List relatedweekTitleVideoList = weekTitleVideoService.findByWeekAndLan(week, lan); relatedweekTitleVideoList.remove(weekTitleVideo); diff --git a/src/main/resources/static/css/new-training-module.css b/src/main/resources/static/css/new-training-module.css new file mode 100644 index 00000000..9dba3333 --- /dev/null +++ b/src/main/resources/static/css/new-training-module.css @@ -0,0 +1,221 @@ + + +.tutorial-card{ + + border:none; + border-radius:12px; + + overflow:hidden; + + height:185px; + + background:#fff; + + transition:all .25s ease; + + box-shadow:0 2px 10px rgba(0,0,0,.08); + +} + +.tutorial-card:hover{ + + transform:translateY(-4px); + + box-shadow:0 8px 24px rgba(0,0,0,.18); + +} + + + +.thumbnail-wrapper{ + position:relative; + width:100%; + height:190px; + overflow:hidden; + cursor:pointer; +} + +.tutorial-thumbnail{ + width:100%; + height:100%; + object-fit:cover; + display:block; + transition:transform .35s ease; +} + +.tutorial-card:hover .tutorial-thumbnail{ + transform:scale(1.05); +} + + + +.thumbnail-wrapper::after{ + content:""; + position:absolute; + top:0; + left:0; + width:100%; + height:100%; + background:rgba(0,0,0,.18); + z-index:1; + transition:.3s; +} + +.tutorial-card:hover .thumbnail-wrapper::after{ + background:rgba(0,0,0,.08); +} + + + +.play-button{ + position:absolute; + top:50%; + left:50%; + transform:translate(-50%,-50%); + width:50px; + height:50px; + border-radius:50%; + background:#ff9033; + display:flex; + justify-content:center; + align-items:center; + z-index:5; + box-shadow:0 5px 15px rgba(0,0,0,.35); + transition:.3s; +} + +.play-button i{ + color:#fff; + font-size:24px; + margin-left:4px; +} + +.tutorial-card:hover .play-button{ + transform:translate(-50%,-50%) scale(1.1); + background:#ff7a00; +} + + +.tutorial-body{ + + height:185px; + + padding:12px 14px; + + display:flex; + + flex-direction:column; + +} + + + +.week-name{ + + color:#0d6efd; + + font-weight:700; + + font-size:15px; + + margin-bottom:8px; + + line-height:1.3; + +} + + + +.tutorial-title{ + + font-size:17px; + + font-weight:600; + + color:#222; + + line-height:1.45; + + display:-webkit-box; + + -webkit-box-orient:vertical; + + -webkit-line-clamp:4; + + overflow:hidden; + + min-height:50px; + + margin-bottom:12px; + +} + + + +.language{ + + margin-top:auto; + font-weight:500; + + font-size:15px; + + color:black; + +} + + + +@media (max-width:991px){ + + .tutorial-card{ + + height:auto; + + } + + .tutorial-thumbnail{ + + height:210px; + + } + + .tutorial-body{ + + height:auto; + + } + +} + +@media (max-width:576px){ + + .tutorial-card{ + + border-radius:10px; + + } + + .tutorial-thumbnail{ + + height:180px; + + } + + .tutorial-title{ + + min-height:auto; + + } + +} + + :root { + --plyr-color-main: #ff9033; + +} + .plyr__controls__item plyr__volume{ + margin-bottom: 25px; + padding-bottom:25px; + } + + diff --git a/src/main/resources/static/js/ajaxSupport.js b/src/main/resources/static/js/ajaxSupport.js index c5318173..6ec81e28 100644 --- a/src/main/resources/static/js/ajaxSupport.js +++ b/src/main/resources/static/js/ajaxSupport.js @@ -2844,6 +2844,162 @@ $(".deleteTrainingModuleTutorial-btn").click(function(){ /************************************Assign Video End ********************************************** */ + + +/*********** Trianing Module New Page Code Start******************************************************/ + + function loadLanguageByWeek(weekId, languageId){ + + $.ajax({ + type : "GET", + url : projectPath+"load_lan_by_week", + data : { + "weekId":weekId, + "languageId":languageId, + + + }, + contentType : "application/json", + success : function(resultarlist) { + var result= resultarlist[0]; + + console.log(result); + var html = ''; + html += ''; + $.each(result , function( value ,key ) { + var selected=(languageId==key)?"selected":""; + html += ``; + }) + $("#lang_new").prop('disabled',false); + $('#lang_new').html(html); + + + if (weekId !=0) { + $("#weekresetdivnew").show(); + } else { + $("#weekresetdivnew").hide(); + } + + }, + error : function(err) { + console.log("not working. ERROR: "+ JSON.stringify(err)); + } + }); + + } + + $('#week_new').change(function() { + var weekId = $(this).val(); + var languageId = $("#lang_new").val(); + + loadLanguageByWeek(weekId, languageId); + + + }); + + $( "#weekresetnew" ).click(function() { + + var weekId = 0; + $("#week_new").val("0"); + var languageId = $("#lang_new").val(); + + loadLanguageByWeek(weekId, languageId); + + return false; + + }); + + + + function loadWeekByLanguage(weekId, languageId){ + + $.ajax({ + type : "GET", + url : projectPath+"load_week_by_language", + data : { + "weekId":weekId, + "languageId":languageId, + + + }, + contentType : "application/json", + success : function(resultarlist) { + var result= resultarlist[0]; + + console.log(result); + var html = ''; + html += ''; + $.each(result , function( value ,key ) { + var selected=(weekId==key)?"selected":""; + html += ``; + }) + $("#week_new").prop('disabled',false); + $('#week_new').html(html); + + + if (languageId !=0) { + $("#languageresetdivnew").show(); + } else { + $("#languageresetdivnew").hide(); + } + + }, + error : function(err) { + console.log("not working. ERROR: "+ JSON.stringify(err)); + } + }); + + } + + $('#lang_new').change(function() { + var languageId = $(this).val(); + var weekId = $("#week_new").val(); + + loadWeekByLanguage(weekId, languageId); + + + }); + + $( "#languageresetnew" ).click(function() { + + var languageId = 0; + $("#lang_new").val("0"); + var weekId = $("#week_new").val(); + + loadWeekByLanguage(weekId, languageId); + + return false; + + }); + + + + + + + $( "#btnClearFormnew" ).click(function() { + + + var languageId = 0; + $("#lang_new").val("0"); + var weekId =0; + $("#week_new").val("0"); + + loadLanguageByWeek(weekId, languageId); + loadWeekByLanguage(weekId, languageId); + + return false; + + }); + + + + + + +/***************Trainig Module New Page Code End******************************************************/ + + /******************************** Trainig Resource Start ***************************************/ $("#catIdTR").change(function() { @@ -4071,8 +4227,7 @@ $(document).ready(function () { } - console.log("Search bar div found?", $('#searchbarDivofTutorialContainer').length); - console.log("Autoplay checkbox state:", $('#autoPlayCheckbox').is(':checked')); + } }); diff --git a/src/main/resources/templates/common/commonItemsHSTTrainingModule.html b/src/main/resources/templates/common/commonItemsHSTTrainingModule.html index c0b05158..e8130234 100644 --- a/src/main/resources/templates/common/commonItemsHSTTrainingModule.html +++ b/src/main/resources/templates/common/commonItemsHSTTrainingModule.html @@ -1,141 +1,219 @@ - -
-

-
- - Package Download Start - -
-
- - - - - - - - - - - -
-
- -
- - - - - - - - - - - - -
- - Package Download End - - - - -
-
- - -
- -
-

Mentor Content:

-
- -
- -
- -
-
- -
- -
- -
-
- -
- - - Package Download Start + +
+
+ + + + + + + + + + + +
+
+ +
+ + + + + + + + + + + + +
+ + Package Download End + + + + +
+
+ + +
+ +
+

Mentor Content:

+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ + + - -
-
- - + +
+
+ + +
+
+

Mentor Content

+
+ +
+ + + +
+ + +
+ + + +
+ + +
+
+ +
+
+ + +
+ +
+ + + +
+ + +   + + + + + +
+
+ + + \ No newline at end of file diff --git a/src/main/resources/templates/common/trail.html b/src/main/resources/templates/common/trail.html index f8bad6f5..37f3f055 100644 --- a/src/main/resources/templates/common/trail.html +++ b/src/main/resources/templates/common/trail.html @@ -95,6 +95,7 @@ + diff --git a/src/main/resources/templates/hstTrainingModuleList.html b/src/main/resources/templates/hstTrainingModuleList.html new file mode 100644 index 00000000..c5a4d9b1 --- /dev/null +++ b/src/main/resources/templates/hstTrainingModuleList.html @@ -0,0 +1,348 @@ + + + + +HST Training Modules + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ + + +

No Content found for query:

+
Week:
+ +
Language:
+

+ + + +
+ + +
+ + + + + + + + +
+

+ + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 54a2ed95..35d399c2 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -144,7 +144,7 @@ Research Papers Promotional-Materials Citations - HST Training Modules + HST Training Modules Training Resources Project Reports diff --git a/src/main/resources/templates/relatedHstTrainingTutorialsView.html b/src/main/resources/templates/relatedHstTrainingTutorialsView.html index f0ed90d2..408ca94b 100644 --- a/src/main/resources/templates/relatedHstTrainingTutorialsView.html +++ b/src/main/resources/templates/relatedHstTrainingTutorialsView.html @@ -11,7 +11,11 @@
-
+
+
+
+ +