package dev.fyloz.trial.colorrecipesexplorer.service.model;

import dev.fyloz.trial.colorrecipesexplorer.model.Recipe;
import dev.fyloz.trial.colorrecipesexplorer.model.RecipeStep;
import dev.fyloz.trial.colorrecipesexplorer.service.AbstractJavaService;
import dev.fyloz.trial.colorrecipesexplorer.repository.StepRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.stream.Collectors;

@Service
public class StepService extends AbstractJavaService<RecipeStep, StepRepository> {

    public StepService() {
        super(RecipeStep.class);
    }

    @Autowired
    public void setStepDao(StepRepository stepRepository) {
        this.repository = stepRepository;
    }

    /**
     * Crée une étape pour une recette.
     *
     * @param recipe  La recette
     * @param message Le message de l'étape à créer
     */
    public RecipeStep createForRecipe(Recipe recipe, String message) {
        return new RecipeStep(recipe, message);
    }

    /**
     * Crée toutes les étapes pour une recette.
     *
     * @param recipe   La recette
     * @param messages Tous les messages des étapes à créer
     */
    @Transactional
    public List<RecipeStep> createAllForRecipe(Recipe recipe, List<String> messages) {
        return messages.stream().map(m -> createForRecipe(recipe, m)).collect(Collectors.toList());
    }
}
