package com.iqser.red.service.persistence.v1.internal.api.controller;

import org.springframework.web.bind.annotation.RestController;

import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DateFormatsEntity;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
import com.iqser.red.service.persistence.management.v1.processor.exception.RulesTimeoutDetectedException;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DateFormatsPersistenceService;
import com.iqser.red.service.persistence.service.v1.api.internal.resources.DateFormatsResource;
import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive;

import lombok.RequiredArgsConstructor;

@RestController
@RequiredArgsConstructor
public class DateFormatsInternalController implements DateFormatsResource {

    private final DateFormatsPersistenceService dateFormatsPersistenceService;


    @Override
    public JSONPrimitive<String> getDateFormats(String dossierTemplateId) {

        DateFormatsEntity dateFormats = getDateFormatsForDossierTemplate(dossierTemplateId);
        return new JSONPrimitive<>(dateFormats.getValue());
    }


    @Override
    public long getVersion(String dossierTemplateId) {

        DateFormatsEntity dateFormats = getDateFormatsForDossierTemplate(dossierTemplateId);
        return dateFormats.getVersion();
    }


    private DateFormatsEntity getDateFormatsForDossierTemplate(String dossierTemplateId) {

        var dateFormatsOptional = dateFormatsPersistenceService.getDateFormats(dossierTemplateId);
        if (dateFormatsOptional.isEmpty()) {
            throw new NotFoundException(String.format("No date formats file found for dossierTemplateId %s", dossierTemplateId));
        }
        return dateFormatsOptional.get();
    }

}
