package com.sybit.education.taschengeldboerse.controller; import com.sybit.education.taschengeldboerse.domain.Anbieter; import com.sybit.education.taschengeldboerse.domain.Job; import com.sybit.education.taschengeldboerse.domain.Schueler; import com.sybit.education.taschengeldboerse.service.AnbieterService; import com.sybit.education.taschengeldboerse.service.JobsService; import com.sybit.education.taschengeldboerse.service.SchuelerService; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; /** * Handles requests for the application home page. */ @Controller public class JobController { private static final Logger logger = LoggerFactory.getLogger(JobController.class); @Autowired private JobsService jobService; @Autowired private AnbieterService anbieterService; @Autowired private SchuelerService schuelerService; /** * Liste für die Schüler alle offenen Jobs auf. * * @param model * @param request * @return */ @RequestMapping(value = "/schueler/jobs", method = RequestMethod.GET) public String jobList(final Model model, final HttpServletRequest request) { logger.debug("All Jobs---->"); final List<Job> jobList = jobService.findAllByOrderByErstelldatumDescWhereSchuelerIsNull(); model.addAttribute("jobList", jobList); logger.debug("All Jobs <------"); return "job-liste"; } /** * Liste für den Anbieter seine erstellten Jobs auf * * @param model * @param request * @return */ @RequestMapping(value = "/anbieter/jobs/eigene", method = RequestMethod.GET) public String jobListAnbieter(final Model model, final HttpServletRequest request) { logger.debug("All Jobs---->"); Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String username = auth.getName(); //anbieter suchen und dem Job zuweisen Anbieter anbieter = anbieterService.getByEmail(username); final List<Job> jobList = jobService.findByAnbieterId(anbieter.getId()); model.addAttribute("jobList", jobList); logger.debug("All Jobs <------"); return "job-liste"; } /** * * @param id * @param model * @param request * @return */ @RequestMapping(value = "/schueler/jobs/detail", method = RequestMethod.GET) public ModelAndView getJobDetail(@RequestParam("id") final Integer id, final Model model, final HttpServletRequest request) { Job job = jobService.findById(id); Anbieter anbieter = anbieterService.getById(job.getAnbieter()); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("job", job); modelAndView.addObject("anbieterName", anbieter.getName()); modelAndView.setViewName("job-detail"); return modelAndView; } /** * Simply selects the home view to render by returning its name. * * @param request needed to get the referring url * @return the logical view to be returned */ @RequestMapping(value = "/anbieter/jobs/neu", method = RequestMethod.GET) public ModelAndView jobFormular(final HttpServletRequest request) { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("job", new Job()); modelAndView.setViewName("job-neu"); return modelAndView; } /** * * @param job * @param result * @return */ @RequestMapping(value = "/anbieter/jobs/neu", method = RequestMethod.POST) public ModelAndView saveForm(@Valid Job job, BindingResult result) { System.out.println("Jobbezeichnung: " + job.getBezeichnung()); ModelAndView modelAndView; //neuen Job in der Datenbak abspeichern: if (result.hasErrors()) { modelAndView = new ModelAndView(); modelAndView.addObject("error", "Es besteht ein Fehler in Ihrer Eingabe"); modelAndView.addObject(result.getModel()); modelAndView.addObject("job", job); modelAndView.setViewName("job-neu"); } else { //aktuell eingeloggter Benutzer (ist die Email) Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String username = auth.getName(); //anbieter suchen und dem Job zuweisen Anbieter anbieter = anbieterService.getByEmail(username); job.setAnbieter(anbieter.getId()); job.setErstelldatum(new Date()); jobService.addJob(job); modelAndView = new ModelAndView(); modelAndView.addObject("success", "Job wurde gespeichert!"); modelAndView.addObject("job", job); modelAndView.setViewName("job-neu"); } return modelAndView; } /** * * @param id * @return */ @RequestMapping(value = "/schueler/jobs/zuordnen", method = RequestMethod.GET) public ModelAndView jobZuordnen(@RequestParam("id") Integer id) { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String username = auth.getName(); Schueler schueler = schuelerService.getByEmail(username); System.out.println("Job-Id: " + id); System.out.println("Schueler-Id: ??" + schueler.getId()); Job job = jobService.findById(id); jobService.addSchuelerToJob(job, schueler.getId()); Anbieter anbieter = anbieterService.getById(job.getAnbieter()); //seite wieder anzeigen: ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("job", job); modelAndView.addObject("anbieterName", anbieter.getName()); modelAndView.addObject("anbieter", anbieter); modelAndView.setViewName("job-detail"); return modelAndView; } }