package org.eclipse.openk.contactbasedata.service;

import lombok.extern.log4j.Log4j2;
import org.eclipse.openk.contactbasedata.model.VwDetailedContact;
import org.eclipse.openk.contactbasedata.repository.DetailedContactRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.UUID;

@Log4j2
@Service
public class ContactService {
    @Autowired
    private DetailedContactRepository detailedContactRepository;

    public Page<VwDetailedContact> findDetailedContacts(String contactType,
                                                        UUID personTypeUuid,
                                                        String searchText, Pageable pageable) {

        if( contactType == null && personTypeUuid == null && searchText == null) {
            return detailedContactRepository.findAll(pageable);
        }
        else {
            return detailedContactRepository.findByFilter( contactType,
                    personTypeUuid,
                    searchText != null ? searchText.toUpperCase() : null,
                    pageable);
        }

    }
}
