| 93 | ** Листањето на сите апликации за нови рецепти се прави така што се прави GET барање до backend делот од апликацијата на патеката /admin/recipeapplications и како додатни параметри се праќаат page и size доколку администраторот претходно веќе започнал со листање на апликациите. Првото нешто што се прави во оваа функција е се иницијализира нова инстанца од интерфејсот Pageable и таа инстаца се праќа во тековната функција за да се превземат апликациите. Се превземаат рецептите преку query, се ставаат во листа и се праќаат назад до front-end делот од апликацијата. ** |
| 94 | |
| 95 | {{{ |
| 96 | @GetMapping("/admin/recipeapplications") |
| 97 | public ResponseEntity<Page<RecipeApplicationDTO>> getRecipeApplication( |
| 98 | @RequestParam(defaultValue = "0") int page, |
| 99 | @RequestParam(defaultValue = "4") int size |
| 100 | ) { |
| 101 | Pageable pageable = PageRequest.of(page, size); |
| 102 | Page<RecipeApplicationDTO> recipeApplications = recipeService.findAllRecipeApplications(pageable); |
| 103 | return new ResponseEntity<>(recipeApplications, HttpStatus.OK); |
| 104 | } |
| 105 | }}} |
| 106 | |
| 107 | ** Истата инстанца од интерфејсот Pageable се препраќа до полседниот слој. ** |
| 108 | |
| 109 | {{{ |
| 110 | @Override |
| 111 | public Page<RecipeApplicationDTO> findAllRecipeApplications(Pageable pageable) { |
| 112 | return recipeDAO.findAllRecipeApplications(pageable); |
| 113 | } |
| 114 | }}} |
| 115 | |
| 116 | ** Во последниот дел се прави sql query за селектирање на рецепти со лимит и offset за да се усогласи со потребната страница која ја бара администраторот. Исто така претходно се превзема и целосниот број на апликации ** |
| 117 | |
| 118 | {{{ |
| 119 | @Override |
| 120 | public Page<RecipeApplicationDTO> findAllRecipeApplications(Pageable pageable) { |
| 121 | String sql = "SELECT ra.id AS recipe_id, ra.recipe_name, ra.description, ra.category, ra.origin, ra.meal_thumb, ra.video_url, " + |
| 122 | "rai.ingredient, rai.dose " + |
| 123 | "FROM recipe_application ra " + |
| 124 | "LEFT JOIN recipe_application_ingredients rai ON ra.id = rai.recipe_id " + |
| 125 | "ORDER BY ra.id " + |
| 126 | "LIMIT ? OFFSET ?"; |
| 127 | |
| 128 | Integer count = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM recipe_application", Integer.class); |
| 129 | |
| 130 | RecipeApplicationRowMapper rowMapper = new RecipeApplicationRowMapper(); |
| 131 | |
| 132 | jdbcTemplate.query(sql, new Object[]{pageable.getPageSize(), pageable.getOffset()}, rowMapper); |
| 133 | |
| 134 | RecipeApplicationDTO recipe = rowMapper.getFinalRecipe(); |
| 135 | |
| 136 | List<RecipeApplicationDTO> recipeApplications = new ArrayList<>(); |
| 137 | if (recipe != null) { |
| 138 | recipeApplications.add(recipe); |
| 139 | } |
| 140 | |
| 141 | return new PageImpl<>(recipeApplications, pageable, count != null ? count : 0); |
| 142 | } |
| 143 | }}} |
| 144 | |