Advertisement
Guest User

salfnsrulfnsrui

a guest
Aug 19th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. class HtmlController (private val houseRepository: HouseRepository,
  2. private val pointsRepository: PointsRepository) {
  3.  
  4. @GetMapping("/")
  5. fun frontpage(model: Model): String {
  6. model["title"] = "Harry Potter partay"
  7. val houses = houseRepository.findAllByOrderByNameAsc().toList()
  8. val housesAndPoints = houses
  9. .map { Pair(it, pointsRepository.findAllByHouseOrderByAddedAtAsc(it)
  10. .sumBy { point -> point.value }) }
  11. model["houses"] = createHouseRows(housesAndPoints)
  12. return "frontpage"
  13. }
  14.  
  15. @GetMapping("/house/{name}")
  16. fun house(@PathVariable name: String, model: Model): String {
  17. val house = houseRepository.findByName(name)
  18. ?: throw IllegalArgumentException("Wrong house name provided")
  19. val points = pointsRepository.findAllByHouseOrderByAddedAtAsc(house)
  20. .sumBy { it.value }
  21. val renderedHouse = house?.render(points)
  22. model["title"] = house.name
  23. model["house"] = renderedHouse
  24. return "house"
  25. }
  26.  
  27. @GetMapping("/house/{name}/points")
  28. fun points(@PathVariable name: String, model: Model): String {
  29. val house = houseRepository.findByName(name)
  30. ?: throw IllegalArgumentException("Wrong house name provided")
  31. val points = pointsRepository.findAllByHouseOrderByAddedAtAsc(house)
  32. model["title"] = house.name
  33. model["points"] = points
  34. return "points"
  35. }
  36.  
  37. fun createHouseRows(houses: List<Pair<House, Int>>) : List<HouseRow> {
  38. return houses.chunked(2).map { HouseRow(it) }
  39. }
  40.  
  41. class HouseRow(val h: List<Pair<House, Int>>) {
  42. val houses = h.map { RenderedHouse(it.first.name, it.second) }
  43. }
  44.  
  45. fun House.render(points: Int) = RenderedHouse(
  46. name,
  47. points
  48. )
  49.  
  50. data class RenderedHouse(
  51. val name: String,
  52. val points: Int
  53. )
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement