добавлена возможность скрытия коктейля из подборки
This commit is contained in:
@@ -62,6 +62,11 @@ public class CocktailController {
|
||||
return cocktailService.savePhoto(file);
|
||||
}
|
||||
|
||||
@PostMapping("/hidden/{id}")
|
||||
public void hiddenCocktail(@PathVariable Long id) {
|
||||
cocktailService.hiddenCocktail(id);
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public CocktailForListResponseDto getOne(@RequestParam Long id) {
|
||||
return cocktailService.findById(id);
|
||||
|
||||
@@ -32,4 +32,12 @@ public class BarEntity {
|
||||
inverseJoinColumns = @JoinColumn(name = "ingredient")
|
||||
)
|
||||
private List<IngredientEntity> ingredients;
|
||||
|
||||
@ManyToMany
|
||||
@JoinTable(
|
||||
name = "hidden_cocktails",
|
||||
joinColumns = @JoinColumn(name = "bar"),
|
||||
inverseJoinColumns = @JoinColumn(name = "cocktail")
|
||||
)
|
||||
private List<CocktailEntity> hiddenCocktails;
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ public class BarService {
|
||||
private final CocktailRepository cocktailRepository;
|
||||
private final EventService eventService;
|
||||
|
||||
@Transactional
|
||||
public void changeActiveBar(Long id) {
|
||||
Optional<BarEntity> lastBarOpt = barEntityRepository.findByActiveTrue();
|
||||
if (lastBarOpt.isPresent()) {
|
||||
@@ -55,7 +56,7 @@ public class BarService {
|
||||
.map(ingredientRepository::save)
|
||||
.toList();
|
||||
|
||||
cocktailRepository.saveAll(findAllowedCocktails(ingredients));
|
||||
cocktailRepository.saveAll(findAllowedCocktails(ingredients, barEntity.getHiddenCocktails().stream().map(CocktailEntity::getId).toList()));
|
||||
|
||||
barEntityRepository.save(barEntity);
|
||||
|
||||
@@ -112,7 +113,7 @@ public class BarService {
|
||||
return BarResponseDto.mapToDto(entity);
|
||||
}
|
||||
|
||||
private List<CocktailEntity> findAllowedCocktails(List<IngredientEntity> ingredients) {
|
||||
private List<CocktailEntity> findAllowedCocktails(List<IngredientEntity> ingredients, List<Long> hiddenCocktails) {
|
||||
List<CocktailEntity> result = new ArrayList<>();
|
||||
for (IngredientEntity ingredient : ingredients) {
|
||||
List<CocktailEntity> cocktails = ingredient.getReceipts().stream()
|
||||
@@ -120,7 +121,8 @@ public class BarService {
|
||||
.toList();
|
||||
|
||||
for (CocktailEntity cocktail : cocktails) {
|
||||
if (cocktail.getReceipt().stream().allMatch(r -> r.getIngredient().getIsHave())) {
|
||||
if (cocktail.getReceipt().stream().allMatch(r -> r.getIngredient().getIsHave())
|
||||
&& !hiddenCocktails.contains(cocktail.getId())) {
|
||||
cocktail.setAllowed(true);
|
||||
result.add(cocktail);
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import ru.kayashov.bar.controller.dto.cocktail.SortingEnum;
|
||||
import ru.kayashov.bar.controller.dto.ingredient.IngredientSimpleResponseDto;
|
||||
import ru.kayashov.bar.mapper.CocktailMapper;
|
||||
import ru.kayashov.bar.model.entity.Alcoholic;
|
||||
import ru.kayashov.bar.model.entity.BarEntity;
|
||||
import ru.kayashov.bar.model.entity.Category;
|
||||
import ru.kayashov.bar.model.entity.CocktailEntity;
|
||||
import ru.kayashov.bar.model.entity.Event;
|
||||
@@ -25,6 +26,7 @@ import ru.kayashov.bar.model.entity.EventType;
|
||||
import ru.kayashov.bar.model.entity.Glass;
|
||||
import ru.kayashov.bar.model.entity.IngredientEntity;
|
||||
import ru.kayashov.bar.model.entity.ReceiptEntity;
|
||||
import ru.kayashov.bar.repository.BarEntityRepository;
|
||||
import ru.kayashov.bar.repository.CocktailRepository;
|
||||
import ru.kayashov.bar.repository.IngredientRepository;
|
||||
import ru.kayashov.bar.repository.ReceiptRepository;
|
||||
@@ -52,6 +54,7 @@ public class CocktailService {
|
||||
|
||||
private final CocktailRepository cocktailRepository;
|
||||
private final EventService eventService;
|
||||
private final BarEntityRepository barRepository;
|
||||
@Value("${cocktail.photo.path}")
|
||||
private String photoFolder;
|
||||
|
||||
@@ -219,11 +222,6 @@ public class CocktailService {
|
||||
repository.delete(cocktail);
|
||||
}
|
||||
|
||||
public String findInstructions(Long id) {
|
||||
CocktailEntity cocktail = repository.findById(id).orElseThrow(RuntimeException::new);
|
||||
return cocktail.getInstructions();
|
||||
}
|
||||
|
||||
public List<CocktailForIngredientModalDto> findByIngredient(Long id) {
|
||||
return ingredientRepository.findById(id).orElseThrow(RuntimeException::new)
|
||||
.getReceipts()
|
||||
@@ -234,6 +232,18 @@ public class CocktailService {
|
||||
.toList();
|
||||
}
|
||||
|
||||
public void hiddenCocktail(Long id) {
|
||||
CocktailEntity cocktail = repository.findById(id).orElseThrow(RuntimeException::new);
|
||||
|
||||
BarEntity bar = barRepository.findByActiveTrue().orElseThrow();
|
||||
bar.getHiddenCocktails().add(cocktail);
|
||||
barRepository.save(bar);
|
||||
|
||||
cocktail.setAllowed(false);
|
||||
repository.save(cocktail);
|
||||
log.info("Коктейль {} - {} был скрыт для бара {} - {}", cocktail.getId(), cocktail.getName(), bar.getId(), bar.getName());
|
||||
}
|
||||
|
||||
//todo: попробовать отыграть эту связку каскадами
|
||||
private void editCocktailReceipts(List<ReceiptEntity> old, List<ReceiptResponseDto> actual, CocktailEntity cocktail) {
|
||||
for (ReceiptResponseDto receipt : actual) {
|
||||
|
||||
Reference in New Issue
Block a user