Version 4 (modified by 11 days ago) ( diff ) | ,
---|
Финална имплементација на случаи на употреба
Корисникот пополнува форма за додавање на нов рецепт
Најавен корисник се навигира кон страницата за листање на рецепти
Корисникот го клика копчето за додавање на рецепт и е пренасочен кон страница со форма за пополување на информации за рецептот
По пополнување на потребните информации корисникот го кликнува копчето за поденување на формата.
При испраќање на апликацијата преку POST барање најпрво преку jwt токенот се пребарува мејлот на корисникот. Потоа се прават некои основни проверки пред да се додаде апликацијата во базата
@PostMapping("/recipes/add") public ResponseEntity<?> addRecipeApplication( @RequestHeader("Authorization") String tokenHeader, @RequestBody RecipeApplicationDTO recipeApplicationDTO ) { String token = tokenHeader.substring(7); String email = jwtUtil.extractEmail(token); if (email == null) { return new ResponseEntity<>("Error finding user", HttpStatus.BAD_REQUEST); } if (recipeApplicationDTO.getRecipeName() == null || recipeApplicationDTO.getRecipeName().isEmpty()) { return new ResponseEntity<>("Recipe name is required", HttpStatus.BAD_REQUEST); } if (recipeApplicationDTO.getIngredients() == null || recipeApplicationDTO.getIngredients().isEmpty()) { return new ResponseEntity<>("Ingredients are required", HttpStatus.BAD_REQUEST); } recipeService.addRecipeApplication(recipeApplicationDTO); return new ResponseEntity<>(HttpStatus.OK); }
Во сервисниот дел апликацијата само се пренесува до последниот слој.
@Override public void addRecipeApplication(RecipeApplicationDTO recipeApplicationDTO) { recipeDAO.addRecipeApplication(recipeApplicationDTO); }
Во последниот слој се додава потребнит
@Override public void addRecipeApplication(RecipeApplicationDTO recipeApplicationDTO) { String sql = "INSERT INTO recipe_application " + "(recipe_name, description, category, origin, meal_thumb, video_url) " + "VALUES (?, ?, ?, ?, ?, ?) RETURNING id"; Integer recipeId = jdbcTemplate.queryForObject(sql, new Object[] { recipeApplicationDTO.getRecipeName(), recipeApplicationDTO.getRecipeDesc(), recipeApplicationDTO.getRecipeCategory(), recipeApplicationDTO.getRecipeOrigin(), recipeApplicationDTO.getRecipeMealThumb(), recipeApplicationDTO.getRecipeVideoURL() }, Integer.class); if (recipeId == null) { throw new IllegalStateException("Failed to retrieve generated id for the recipe."); } recipeApplicationDTO.getIngredients().forEach(ingredient -> { jdbcTemplate.update("INSERT INTO recipe_application_ingredients (ingredient, dose, recipe_id) VALUES (?, ?, ?)", ingredient.getIngredient(), ingredient.getDose(), recipeId); }); }
Администраторот проверува поднесени рецепти
Администраторот се наоѓа на администраторската страница
Администраторот селектира одреден рецепт и му се прикажува податоци за рецептот
Најава преку Google
Ненајавен корисник
Ненајавениот корисник го кликнува копчето за најава преку google профил, го селектира посакуваниот профил и се логира.
Корисникот добива мејл кога доставувач ќе му ја прифати нарачката.
Attachments (6)
- cookCraft2.png (64.8 KB ) - added by 11 days ago.
- cookCraft3.png (62.3 KB ) - added by 11 days ago.
- cookCraft4.png (35.8 KB ) - added by 11 days ago.
- cookCraft5.png (67.7 KB ) - added by 11 days ago.
- cookCraft1A.jpg (207.1 KB ) - added by 11 days ago.
- cookCraftLoginA.jpg (63.4 KB ) - added by 11 days ago.
Download all attachments as: .zip