crm-rest-api/src/main/java/com/goi/erp/service/CustomerService.java

78 lines
2.7 KiB
Java

package com.goi.erp.service;
import com.goi.erp.dto.CustomerRequestDto;
import com.goi.erp.dto.CustomerResponseDto;
import com.goi.erp.entity.Customer;
import com.goi.erp.repository.CustomerRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class CustomerService {
private final CustomerRepository customerRepository;
public CustomerResponseDto createCustomer(CustomerRequestDto dto) {
Customer customer = Customer.builder()
.cusUuid(UUID.randomUUID())
.cusName(dto.getCusName())
.cusNo(dto.getCusNo())
.cusStatus(dto.getCusStatus())
.cusAddress1(dto.getCusAddress1())
.cusAddress2(dto.getCusAddress2())
.cusCity(dto.getCusCity())
.cusProvince(dto.getCusProvince())
.build();
customer = customerRepository.save(customer);
return mapToDto(customer);
}
public List<CustomerResponseDto> getAllCustomers() {
return customerRepository.findAll().stream()
.map(this::mapToDto)
.collect(Collectors.toList());
}
public CustomerResponseDto getCustomerByUuid(UUID uuid) {
Customer customer = customerRepository.findByCusUuid(uuid)
.orElseThrow(() -> new RuntimeException("Customer not found"));
return mapToDto(customer);
}
public CustomerResponseDto updateCustomer(UUID uuid, CustomerRequestDto dto) {
Customer customer = customerRepository.findByCusUuid(uuid)
.orElseThrow(() -> new RuntimeException("Customer not found"));
customer.setCusName(dto.getCusName());
customer.setCusNo(dto.getCusNo());
customer.setCusStatus(dto.getCusStatus());
customer.setCusAddress1(dto.getCusAddress1());
customer.setCusAddress2(dto.getCusAddress2());
customer.setCusCity(dto.getCusCity());
customer.setCusProvince(dto.getCusProvince());
customerRepository.save(customer);
return mapToDto(customer);
}
public void deleteCustomer(UUID uuid) {
Customer customer = customerRepository.findByCusUuid(uuid)
.orElseThrow(() -> new RuntimeException("Customer not found"));
customerRepository.delete(customer);
}
private CustomerResponseDto mapToDto(Customer customer) {
return CustomerResponseDto.builder()
.cusUuid(customer.getCusUuid())
.cusName(customer.getCusName())
.cusNo(customer.getCusNo())
.cusStatus(customer.getCusStatus())
.build();
}
}