feat(recipe): implementadas funcionalidad para añadir a favorita y quitar de…

feat(recipe): implementadas funcionalidad para añadir a favorita y quitar de favorita una receta en repositorio, servicio y controlador UpdateRecipe
parent edcec524
......@@ -4,4 +4,8 @@ import com.example.apprecetas.recipe.domain.entity.Recipe;
public interface UpdateRecipeUseCase {
Recipe update(String id, Recipe recipe);
void madeFavorite(String id);
void removeFavorite(String id);
}
......@@ -23,4 +23,14 @@ public class UpdateRecipeUseCaseImpl implements UpdateRecipeUseCase {
RecipeDocument updatedRecipe = repository.update(id, recipeDocument);
return mapper.mapDocument(updatedRecipe);
}
@Override
public void madeFavorite(String id) {
repository.madeFavorite(id);
}
@Override
public void removeFavorite(String id) {
repository.removeFavorite(id);
}
}
......@@ -4,4 +4,8 @@ import com.example.apprecetas.recipe.infrastructure.repository.mongodb.RecipeDoc
public interface UpdateRecipeRepository {
RecipeDocument update(String id, RecipeDocument recipeDocument);
void madeFavorite(String id);
void removeFavorite(String id);
}
......@@ -29,8 +29,6 @@ public class UpdateRecipeController {
private final ReadRecipeUseCase readRecipeUseCase;
private final ReadUserUseCase readUserUseCase;
private final RecipeMapper mapper = Mappers.getMapper(RecipeMapper.class);
@PutMapping("/{id}")
......@@ -43,13 +41,35 @@ public class UpdateRecipeController {
}
Recipe recipe = readRecipeUseCase.readById(id);
String userId = SecurityContextHolder.getContext().getAuthentication().getName();
String email = SecurityContextHolder.getContext().getAuthentication().getName();
User user = readUserUseCase.readByEmail(email);
if (!recipe.getUserId().equals(user.getId()))
if (!recipe.getUserId().equals(userId))
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
return ResponseEntity.ok().body(mapper.map(service.update(id, mapper.map(recipeInputDto))));
}
@PatchMapping("/{id}/favorite")
public ResponseEntity<String> madeFavorite(@PathVariable String id) {
Recipe recipe = readRecipeUseCase.readById(id);
String userId = SecurityContextHolder.getContext().getAuthentication().getName();
if (!recipe.getUserId().equals(userId))
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
service.madeFavorite(id);
return ResponseEntity.ok().body("Receta con id " + id + " añadida a favoritas");
}
@DeleteMapping("/{id}/favorite")
public ResponseEntity<String> removeFavorite(@PathVariable String id) {
Recipe recipe = readRecipeUseCase.readById(id);
String userId = SecurityContextHolder.getContext().getAuthentication().getName();
if (!recipe.getUserId().equals(userId))
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
service.removeFavorite(id);
return ResponseEntity.ok().body("Receta con id " + id + " eliminada de favoritas");
}
}
......@@ -26,4 +26,22 @@ public class UpdateRecipeRepositoryImpl implements UpdateRecipeRepository {
return recipeRepository.save(recipe);
}
@Override
public void madeFavorite(String id) {
RecipeDocument recipe = recipeRepository.findById(id)
.orElseThrow(() -> new EntityNotFoundException("Receta con id " + id + " no encontrada"));
recipe.setFavorite(true);
recipeRepository.save(recipe);
}
@Override
public void removeFavorite(String id) {
RecipeDocument recipe = recipeRepository.findById(id)
.orElseThrow(() -> new EntityNotFoundException("Receta con id " + id + " no encontrada"));
recipe.setFavorite(false);
recipeRepository.save(recipe);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment