diff --git a/src/main/java/com/example/demo/app/domain/service/TransactionService.java b/src/main/java/com/example/demo/app/domain/service/TransactionService.java index bcdf8ff..fe437f9 100644 --- a/src/main/java/com/example/demo/app/domain/service/TransactionService.java +++ b/src/main/java/com/example/demo/app/domain/service/TransactionService.java @@ -1,5 +1,19 @@ package com.example.demo.app.domain.service; +import java.time.LocalDate; +import java.util.List; +import java.util.Map; + +import com.example.demo.app.domain.model.TransactionModel; + public interface TransactionService { + public Map> findAllByDate(LocalDate startDate, LocalDate endDate, Long userId); + + public TransactionModel findByUserId(TransactionModel transactionModel); + + public int findTotalIncome(LocalDate startDate, LocalDate endDate, Long userId); + + public int findTotalexpense(LocalDate startDate, LocalDate endDate, Long userId); + } diff --git a/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java b/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java index 3484d9e..a4d1712 100644 --- a/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java +++ b/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java @@ -1,10 +1,60 @@ package com.example.demo.app.domain.service.impl; +import java.time.LocalDate; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + import org.springframework.stereotype.Service; +import com.example.demo.app.domain.model.TransactionModel; import com.example.demo.app.domain.service.TransactionService; +import com.example.demo.app.infra.entity.TransactionEntity; +import com.example.demo.app.infra.repository.TransactionRepository; + +import lombok.RequiredArgsConstructor; @Service -public class TransactionServiceImpl implements TransactionService{ +@RequiredArgsConstructor +public class TransactionServiceImpl implements TransactionService { + + private final TransactionRepository transactionRepository; + + public Map> findAllByDate(LocalDate startDate, LocalDate endDate, Long userId) { + + List transactionEntityList = transactionRepository.findAllByDateAndUserId(startDate, endDate, + userId); + + List transactionModelList = TransactionModel + .convertFrom(transactionEntityList); + + Map> transactionModelMap = transactionModelList.stream() + .collect(Collectors.groupingBy(TransactionModel::getTransactionDate)); + + return transactionModelMap; + + } + + public int findTotalIncome(LocalDate startDate, LocalDate endDate, Long userId) { + + return transactionRepository.findTotalIncome(startDate, endDate, userId); + + } + public int findTotalexpense(LocalDate startDate, LocalDate endDate, Long userId) { + + return transactionRepository.findTotalIncome(startDate, endDate, userId); + + } + + public TransactionModel findByUserId(TransactionModel transactionModel) { + + TransactionEntity transactionEntity = transactionRepository.findByUserId(transactionModel.getUserId()); + + if (transactionEntity == null) { + return null; + } + + return TransactionModel.convertFrom(transactionEntity); + } }