package com.lst.lc.web.frontend.controller;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.lst.lc.dao.CategoryDao;
import com.lst.lc.dao.CourseDao;
import com.lst.lc.dao.DirectionDao;
import com.lst.lc.dao.LessonCommentDao;
import com.lst.lc.dao.LessonDao;
import com.lst.lc.dao.UserDao;
import com.lst.lc.entities.Category;
import com.lst.lc.entities.Course;
import com.lst.lc.entities.CourseLesson;
import com.lst.lc.entities.Direction;
import com.lst.lc.entities.LessonComment;
import com.lst.lc.entities.User;
import com.lst.lc.page.Page;
import com.lst.lc.page.PageHandler;
import com.lst.lc.web.bean.CourseMenu;
import com.lst.lc.web.bean.LearnStatus;
import com.lst.lc.web.service.CourseMenuHandler;
@Controller
@RequestMapping("/course")
public class LessonController {
@Autowired
@Qualifier("userDao")
private UserDao userDao;
@Autowired
@Qualifier("categoryDao")
private CategoryDao categoryDao;
@Autowired
@Qualifier("directionDao")
private DirectionDao directionDao;
@Autowired
@Qualifier("courseDao")
private CourseDao courseDao;
@Autowired
@Qualifier("lessonDao")
private LessonDao lessonDao;
@Autowired
@Qualifier("lessonCommentDao")
private LessonCommentDao lessonCommentDao;
@Autowired
private CourseMenuHandler courseMenuHandler;
@Autowired
private PageHandler<LessonComment> pageHandler;
@RequestMapping(value = "/courses", method = RequestMethod.GET)
public String listCourse(Model model, String directionId,
String categoryId, String difficulty, String type, String pageNum,
String pageSize) {
CourseMenu courseMenu = courseMenuHandler.getCourseMenu(directionId,
categoryId, difficulty, type, pageNum, pageSize);
model.addAttribute("courseMenu", courseMenu);
model.addAttribute("module", "course");
return "frontend/course/list";
}
@RequestMapping(value = "/view/{courseId}", method = RequestMethod.GET)
public String viewCourse(HttpSession session, Model model, @PathVariable int courseId) {
Course course = courseDao.getCourse(courseId);
List <CourseLesson> lessons = lessonDao.getLessonsOfCourse(courseId);
User user = (User) session.getAttribute("loginUser");
LearnStatus status;
if(user == null){
status = new LearnStatus(false, courseId);
} else {
status = lessonDao.learnStatus(user.getUserId(), courseId);
}
List<Course> courses = courseDao.getOtherCourses(course.getCourseId(), course.getDirection().getDirectionId());
List<User> users = courseDao.getUsers(courseId);
model.addAttribute("users", users);
model.addAttribute("courses", courses);
model.addAttribute("status", status);
model.addAttribute("course", course);
model.addAttribute("lessons",lessons);
model.addAttribute("module", "course");
return "frontend/course/view";
}
@RequestMapping(value = "/view/lesson/{lessonId}", method = RequestMethod.GET)
public String viewLesson(Model model, @PathVariable int lessonId,
String pageNum, String pageSize) {
CourseLesson lesson = lessonDao.getLesson(lessonId);
Course course = lesson.getCourse();
model.addAttribute("course", course);
model.addAttribute("lesson", lesson);
model.addAttribute("module", "course");
if(lesson.getType().equals("text")){
if(course.getCategory().getCategoryName().equals("HTML"))
return "frontend/course/html-editor";
else {
return "frontend/course/java-editor";
}
}else{
int pageNow = 1;
int pagesize = 10;
if (pageSize != null) {
pagesize = Integer.valueOf(pageSize);
}
if (pageSize != null) {
pageNow = Integer.valueOf(pageNum);
}
Page<LessonComment> page = pageHandler
.getPage(pageNow, pagesize, LessonComment.class);
model.addAttribute("page", page);
List<User> users = courseDao.getUsers(lesson.getCourse().getCourseId());
model.addAttribute("users", users);
return "frontend/course/lesson";
}
}
@RequestMapping(value = "/comment/{lessonId}", method = RequestMethod.POST)
public String comment(HttpSession session, Model model,@PathVariable int lessonId,
String head, String content, RedirectAttributes redirectAttributes) {
User user = (User) session.getAttribute("loginUser");
User u = userDao.getById(user.getUserId());
CourseLesson lesson = lessonDao.getLesson(lessonId);
LessonComment comment = new LessonComment(lesson, u, content,
new Date(), head);
lessonCommentDao.addLessonComment(comment);
model.addAttribute("module", "course");
return "redirect:/course/view/lesson/" + lessonId;
}
@RequestMapping(value = "/learn/{courseId}", method = RequestMethod.GET)
public String learn(HttpSession session, Model model, @PathVariable int courseId) {
User user = (User) session.getAttribute("loginUser");
userDao.learn(user.getUserId(), courseId);
courseDao.addNums(courseId);
return "redirect:/course/view/" + courseId;
}
}