Skip to content

Commit 4e30377

Browse files
committed
feat: add sum of debits and credits
1 parent fabbc17 commit 4e30377

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

src/main/java/app/banking/repository/TransactionRepository.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package app.banking.repository;
22

3+
import app.banking.DTO.AmountOnDate;
34
import app.banking.DTO.StateItem;
5+
import app.banking.DTO.SumDebitsAndCredits;
46
import app.banking.models.*;
57
import lombok.SneakyThrows;
68
import org.springframework.stereotype.Repository;
79
import postgres.addict.Queries;
810

11+
import java.sql.Date;
912
import java.sql.ResultSet;
1013
import java.time.LocalDate;
1114
import java.util.ArrayList;
@@ -14,6 +17,8 @@
1417

1518
import static app.banking.models.TransactionStatus.CANCELED;
1619
import static app.banking.models.TransactionStatus.NO_PAYED;
20+
import static app.banking.models.TransactionType.CREDIT;
21+
import static app.banking.models.TransactionType.DEBIT;
1722

1823
@Repository
1924
public class TransactionRepository extends CommonCrud<Transaction, Long> {
@@ -176,4 +181,44 @@ public List<Transaction> findAllByIdAndType(Long accountId, TransactionType filt
176181
.end()
177182
);
178183
}
184+
185+
private SumDebitsAndCredits mapResultSet(ResultSet resultSet){
186+
List<AmountOnDate> incomes = new ArrayList<>();
187+
List<AmountOnDate> outcomes = new ArrayList<>();
188+
189+
try {
190+
while (resultSet.next()) {
191+
Date date = resultSet.getDate("period_start");
192+
double income = resultSet.getDouble("income");
193+
double outcome = resultSet.getDouble("expense");
194+
incomes.add(AmountOnDate
195+
.builder()
196+
.iteration(date.toLocalDate())
197+
.amount(income)
198+
.build());
199+
outcomes.add(AmountOnDate
200+
.builder()
201+
.iteration(date.toLocalDate())
202+
.amount(outcome)
203+
.build());
204+
}
205+
}catch (Exception ignored){}
206+
207+
return SumDebitsAndCredits
208+
.builder()
209+
.listIncomes(incomes)
210+
.listOutComes(outcomes)
211+
.build();
212+
}
213+
214+
@SneakyThrows
215+
public SumDebitsAndCredits findSumDebitsAndCreditsByAccountId(Long accountId, String sort){
216+
Queries queries = Queries
217+
.select()
218+
.from(Queries.calls("get_income_expense_data_custom_period", sort))
219+
.where()
220+
.equals("id_account", accountId)
221+
.end();
222+
return mapResultSet(executeQueries(queries));
223+
}
179224
}

0 commit comments

Comments
 (0)