diff --git a/src/main/java/de/deadlocker8/budgetmaster/statistics/StatisticsService.java b/src/main/java/de/deadlocker8/budgetmaster/statistics/StatisticsService.java index 2fe64dae484db585da86ba24d8dc37952b48a3c7..5cea4c87332f52d966ed05bb64c5b557a99321f3 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/statistics/StatisticsService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/statistics/StatisticsService.java @@ -4,7 +4,9 @@ import de.deadlocker8.budgetmaster.accounts.AccountService; import de.deadlocker8.budgetmaster.categories.CategoryService; import de.deadlocker8.budgetmaster.charts.ChartService; import de.deadlocker8.budgetmaster.charts.ChartType; +import de.deadlocker8.budgetmaster.services.DateService; import de.deadlocker8.budgetmaster.templates.TemplateService; +import de.deadlocker8.budgetmaster.transactions.Transaction; import de.deadlocker8.budgetmaster.transactions.TransactionService; import de.thecodelabs.utils.util.Localization; import org.springframework.beans.factory.annotation.Autowired; @@ -16,30 +18,49 @@ import java.util.List; @Service public class StatisticsService { + private static final String TEXT_WHITE = "text-white"; + private static final String TEXT_BLACK = "text-black"; + private final AccountService accountService; private final CategoryService categoryService; private final TransactionService transactionService; private final TemplateService templateService; private final ChartService chartService; + private final DateService dateService; @Autowired - public StatisticsService(AccountService accountService, CategoryService categoryService, TransactionService transactionService, TemplateService templateService, ChartService chartService) + public StatisticsService(AccountService accountService, CategoryService categoryService, TransactionService transactionService, TemplateService templateService, ChartService chartService, DateService dateService) { this.accountService = accountService; this.categoryService = categoryService; this.transactionService = transactionService; this.templateService = templateService; this.chartService = chartService; + this.dateService = dateService; } public List<StatisticItem> getStatisticItems() { final List<StatisticItem> statisticItems = new ArrayList<>(); - statisticItems.add(new StatisticItem("account_balance", Localization.getString("statistics.number.of.accounts", accountService.getAllAccountsAsc().size()), "background-red", "text-white")); - statisticItems.add(new StatisticItem("list", Localization.getString("statistics.number.of.transactions", transactionService.getRepository().findAll().size()), "background-blue-baby", "text-white")); - statisticItems.add(new StatisticItem("file_copy", Localization.getString("statistics.number.of.templates", templateService.getRepository().findAll().size()), "background-orange-dark", "text-white")); - statisticItems.add(new StatisticItem("show_chart", Localization.getString("statistics.number.of.custom.charts", chartService.getRepository().findAllByType(ChartType.CUSTOM).size()), "background-purple", "text-white")); - statisticItems.add(new StatisticItem("label", Localization.getString("statistics.number.of.categories", categoryService.getAllCategories().size()), "background-orange", "text-black")); + statisticItems.add(new StatisticItem("account_balance", Localization.getString("statistics.number.of.accounts", accountService.getAllAccountsAsc().size()), "background-red", TEXT_WHITE)); + statisticItems.add(new StatisticItem("list", Localization.getString("statistics.number.of.transactions", transactionService.getRepository().findAll().size()), "background-blue-baby", TEXT_BLACK)); + statisticItems.add(new StatisticItem("file_copy", Localization.getString("statistics.number.of.templates", templateService.getRepository().findAll().size()), "background-orange-dark", TEXT_BLACK)); + statisticItems.add(new StatisticItem("show_chart", Localization.getString("statistics.number.of.custom.charts", chartService.getRepository().findAllByType(ChartType.CUSTOM).size()), "background-purple", TEXT_WHITE)); + statisticItems.add(new StatisticItem("label", Localization.getString("statistics.number.of.categories", categoryService.getAllCategories().size()), "background-orange", TEXT_BLACK)); + statisticItems.add(new StatisticItem("event", Localization.getString("statistics.first.transaction", getFirstTransactionDate()), "background-grey", TEXT_BLACK)); return statisticItems; } + + private String getFirstTransactionDate() + { + final Transaction firstTransaction = transactionService.getRepository().findFirstByOrderByDate(); + + String firstTransactionDate = "-"; + if(firstTransaction != null) + { + firstTransactionDate = dateService.getDateStringNormal(firstTransaction.getDate()); + } + + return firstTransactionDate; + } } diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java index f418aab76e051e14fb448cd1196e029b09fc4a40..43f7a7641d4a3ba8847feb9ce95b3c2bce23e829 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java +++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java @@ -36,4 +36,6 @@ public interface TransactionRepository extends JpaRepository<Transaction, Intege List<Transaction> findAllByTransferAccount(Account account); List<Transaction> findAllByOrderByDateDesc(); + + Transaction findFirstByOrderByDate(); } \ No newline at end of file diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties index e5e5008892a62b0efe5c85c5fad59ee3dfcfc343..598bc71637698d4777c110b59a4497a2962268fe 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -523,3 +523,4 @@ statistics.number.of.transactions={0} Buchungen statistics.number.of.templates={0} Vorlagen statistics.number.of.custom.charts={0} Eigene Diagramme statistics.number.of.categories={0} Kategorien +statistics.first.transaction=Erste Buchung {0} diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties index e8a3203c384a25a05e768d174b2548424655b078..693f66be11ce83f97813f4391d956eee55807b27 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -521,3 +521,4 @@ statistics.number.of.transactions={0} Transactions statistics.number.of.templates={0} Templates statistics.number.of.custom.charts={0} Custom Charts statistics.number.of.categories={0} Categories +statistics.first.transaction=First Transaction {0}