Files
ArtisanConnectBackend/src/main/java/_11/asktpk/artisanconnectbackend/service/ClientService.java
2025-04-18 09:55:59 +02:00

79 lines
2.4 KiB
Java

package _11.asktpk.artisanconnectbackend.service;
import _11.asktpk.artisanconnectbackend.dto.ClientDTO;
import _11.asktpk.artisanconnectbackend.entities.Client;
import _11.asktpk.artisanconnectbackend.repository.ClientRepository;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ClientService {
private final ClientRepository clientRepository;
public ClientService(ClientRepository clientRepository) {
this.clientRepository = clientRepository;
}
private ClientDTO toDto(Client client) {
ClientDTO dto = new ClientDTO();
dto.setId(client.getId());
dto.setFirstName(client.getFirstName());
dto.setLastName(client.getLastName());
dto.setEmail(client.getEmail());
dto.setRole(client.getRole());
dto.setImage(client.getImage());
return dto;
}
private Client fromDto(ClientDTO dto) {
Client client = new Client();
client.setId(dto.getId());
client.setFirstName(dto.getFirstName());
client.setLastName(dto.getLastName());
client.setEmail(dto.getEmail());
client.setRole(dto.getRole());
client.setImage(dto.getImage());
return client;
}
public List<ClientDTO> getAllClients() {
List<Client> clients = clientRepository.findAll();
return clients.stream().map(this::toDto).toList();
}
public Client getClientById(Long id) {
return clientRepository.findById(id).orElse(null);
}
public boolean clientExists(Long id) {
return clientRepository.existsById(id);
}
public ClientDTO addClient(ClientDTO clientDTO) {
return toDto(clientRepository.save(fromDto(clientDTO)));
}
public ClientDTO updateClient(long id, ClientDTO clientDTO) {
Client existingClient = clientRepository.findById(id)
.orElseThrow(() -> new EntityNotFoundException("Nie znaleziono ogłoszenia o ID: " + id));
existingClient.setEmail(clientDTO.getEmail());
existingClient.setFirstName(clientDTO.getFirstName());
existingClient.setLastName(clientDTO.getLastName());
existingClient.setImage(clientDTO.getImage());
existingClient.setRole(clientDTO.getRole());
return toDto(clientRepository.save(existingClient));
}
public void deleteClient(Long id) {
clientRepository.deleteById(id);
}
}