package com.sparta.springassignment1.service;
import com.sparta.springassignment1.dto.ClientDTO;
import com.sparta.springassignment1.entity.Client;
import com.sparta.springassignment1.repository.ClientRepository;
import com.sparta.springassignment1.response.ClientPostListResponse;
import com.sparta.springassignment1.response.ClientResponseDto;
import com.sparta.springassignment1.response.ClientViewDTOResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class ClientService {
private final ClientRepository clientRepository;
@Transactional
public ClientResponseDto createPost(ClientDTO clientDTO) {
Client client = new Client(clientDTO);
clientRepository.save(client);
return new ClientResponseDto(client);
}
@Transactional
public List<ClientPostListResponse> findAllDesc() {
return clientRepository.findAllDesc().stream().map(ClientPostListResponse::new).collect(Collectors.toList());
}
@Transactional
public ClientViewDTOResponse getClientPostByid(Long id) {
ClientViewDTOResponse clientViewDTO = clientRepository.findDTOById(id);
return clientViewDTO;
}
@Transactional
public boolean deletePost(Long id, String password) {
Client client = clientRepository.findAllById(id);
if (password.equalsIgnoreCase(client.getPassword())) {
clientRepository.deleteById(id);
return true;
} else {
return false;
}
}
@Transactional
public ClientDTO updatePost(Long id, ClientDTO clientDTO) {
Client client1 = clientRepository.findAllById(id);
if (Objects.equals(client1.getPassword(), clientDTO.getPassword())) {
return client1.update(clientDTO);
}
return null;
}
}