CategoryServiceImpl.java
package com.nashtech.rookie.asset_management_0701.services.category;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.nashtech.rookie.asset_management_0701.dtos.requests.category.CategoryCreateDto;
import com.nashtech.rookie.asset_management_0701.dtos.responses.category.CategoryResponseDto;
import com.nashtech.rookie.asset_management_0701.entities.Category;
import com.nashtech.rookie.asset_management_0701.exceptions.AppException;
import com.nashtech.rookie.asset_management_0701.exceptions.ErrorCode;
import com.nashtech.rookie.asset_management_0701.mappers.CategoryMapper;
import com.nashtech.rookie.asset_management_0701.repositories.CategoryRepository;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class CategoryServiceImpl implements CategoryService {
private final CategoryRepository categoryRepository;
private final CategoryMapper categoryMapper;
@Override
@Transactional
public CategoryResponseDto createCategory (CategoryCreateDto categoryCreateDto) {
categoryRepository.findByName(categoryCreateDto.getName()).ifPresent(c -> {
throw new AppException(ErrorCode.CATEGORY_NAME_ALREADY_EXISTED);
});
categoryRepository.findByCode(categoryCreateDto.getCode()).ifPresent(c -> {
throw new AppException(ErrorCode.CATEGORY_PREFIX_ALREADY_EXISTED);
});
Category category = categoryMapper.toCategory(categoryCreateDto);
category.setCountAmount(0L);
categoryRepository.save(category);
return categoryMapper.toCategoryResponseDto(category);
}
@Override
public List<CategoryResponseDto> getAllCategories () {
return categoryRepository.findAll().stream()
.map(categoryMapper::toCategoryResponseDto)
.toList();
}
}