package com.iqser.red.service.persistence.management.v1.processor.service;

import org.springframework.stereotype.Service;

import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ColorsEntity;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ColorsRepository;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Service
@RequiredArgsConstructor
public class ColorsService {

    private final ColorsRepository colorsRepository;


    public void deleteColors(String dossierTemplateId) {

        colorsRepository.deleteById(dossierTemplateId);
    }


    public ColorsEntity getColors(String dossierTemplateId) {

        return colorsRepository.findById(dossierTemplateId).orElseGet(() -> {
            String defaultColor = "#aaaaaa";
            var entity = new ColorsEntity();
            entity.setDossierTemplateId(dossierTemplateId);
            entity.setRequestAddColor(defaultColor);
            entity.setRequestRemoveColor(defaultColor);
            entity.setDictionaryRequestColor(defaultColor);
            entity.setPreviewColor(defaultColor);
            entity.setAnalysisColor(defaultColor);
            entity.setUpdatedColor(defaultColor);
            entity.setRecommendationColor(defaultColor);
            entity.setHintColor(defaultColor);
            entity.setRedactionColor(defaultColor);
            entity.setIgnoredHintColor(defaultColor);
            entity.setSkippedColor(defaultColor);
            entity.setAppliedRedactionColor("#000000");
            return colorsRepository.saveAndFlush(entity);
        });
    }


    public ColorsEntity saveColors(ColorsEntity colors) {

        if (colors.getAppliedRedactionColor() == null) // store the default one in case non is provided
        {
            colors.setAppliedRedactionColor("#000000");
        }
        return colorsRepository.save(colors);
    }

}
