package com.prudas.app.service;

import com.prudas.app.dto.GalleryImageRequest;
import com.prudas.app.dto.GalleryImageResponse;
import com.prudas.app.entity.GalleryImage;
import com.prudas.app.exception.ResourceNotFoundException;
import com.prudas.app.repository.GalleryImageRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class GalleryImageService {

    private final GalleryImageRepository repository;

    public List<GalleryImageResponse> findAll() {
        return repository.findAllByOrderByDisplayOrderAsc().stream().map(this::toResponse).toList();
    }

    @Transactional
    public GalleryImageResponse create(GalleryImageRequest request) {
        GalleryImage entity = GalleryImage.builder().imageUrl(request.imageUrl()).caption(request.caption()).displayOrder(request.displayOrder()).build();
        return toResponse(repository.save(entity));
    }

    @Transactional
    public void delete(Long id) {
        if (!repository.existsById(id)) {
            throw new ResourceNotFoundException("Gallery image not found: " + id);
        }
        repository.deleteById(id);
    }

    private GalleryImageResponse toResponse(GalleryImage e) {
        return new GalleryImageResponse(e.getId(), e.getImageUrl(), e.getCaption(), e.getDisplayOrder());
    }
}
