package org.egl_cepgl.pm.service;

import jakarta.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j;
import org.egl_cepgl.pm.dto.ProjectDto;
import org.egl_cepgl.pm.dto.SettingDto;
import org.egl_cepgl.pm.model.Project;
import org.egl_cepgl.pm.model.Setting;
import org.egl_cepgl.pm.repository.ProjectRepository;
import org.egl_cepgl.pm.repository.SettingRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.Optional;

@Slf4j
@Service
public class SettingService
{
    private SettingRepository settingRepository;

    @Autowired
    public SettingService(SettingRepository settingRepository) {
        this.settingRepository = settingRepository;
    }

//    @PostConstruct
//    public void initializeSetting() {
//        if (settingRepository.findById(1L).isEmpty()) {
//            Setting setting = new Setting();
//            setting.setId(1L);
//            setting.setApp_name("Nom App...");
//            setting.setApp_mini_name("Mini Nom App...");
//            setting.setEmail("email@email.com");
//            setting.setPhone("00000000");
//            settingRepository.save(setting);
//        }
//    }

    public Setting getSetting() {
        return settingRepository.findById(1L).orElse(null);
    }

    public SettingDto updateSetting(SettingDto settingDto)
    {
        Setting setting = getSetting();
        if (setting != null) {
            setting.setApp_name(settingDto.getApp_name());
            setting.setApp_mini_name(settingDto.getApp_mini_name());
            setting.setApp_logo(settingDto.getApp_logo());
            setting.setPhone(settingDto.getPhone());
            setting.setEmail(settingDto.getEmail());
            return SettingDto.fromEntity(settingRepository.save(setting));
        }
        return null; // Or throw an exception
    }

    public Boolean findIfAnyExists(){
        return settingRepository.count() > 0;
    }

    public Setting save(Setting s) {
        return this.settingRepository.save(s);
    }
}
