From aacfdfe50933b68dea548dbc2ac496aa27a0d212 Mon Sep 17 00:00:00 2001 From: Rodrigo Turini Date: Fri, 14 Mar 2014 16:13:04 -0300 Subject: [PATCH] minor --- .../br/com/casadocodigo/java8/Capitulo11.java | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/main/java/br/com/casadocodigo/java8/Capitulo11.java b/src/main/java/br/com/casadocodigo/java8/Capitulo11.java index e702aed..e5de582 100644 --- a/src/main/java/br/com/casadocodigo/java8/Capitulo11.java +++ b/src/main/java/br/com/casadocodigo/java8/Capitulo11.java @@ -6,6 +6,8 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -114,6 +116,12 @@ public Optional getEnd() { public Customer getCustomer() { return customer; } + + public BigDecimal getTotalPaidMonths() { + + return BigDecimal.valueOf(ChronoUnit.MONTHS.between( + getBegin(), getEnd().orElse(LocalDateTime.now()))); + } } @@ -214,15 +222,37 @@ public static void main (String... args) throws Exception { // subscriptions + BigDecimal monthlyFee = new BigDecimal("179.90"); + + Subscription s1 = new Subscription(monthlyFee, + today.minusMonths(5), Optional.empty(), paulo); + + Subscription s2 = new Subscription(monthlyFee, + today.minusMonths(2), Optional.of(today.plusMonths(5)), rodrigo); + + Subscription s3 = new Subscription(monthlyFee, + today.minusMonths(1), Optional.of(today.plusMonths(1)), adriano); + + List subscriptions = Arrays.asList(s1, s2, s3); + + // dada uma unica subscription, calcular quanto ele pagou ate hoje // algo como calculaMesesEntre(subscription.getBegin(), subscription.getEnd().orElse(today)) // e ai multiplica pelo mnthlyFee + s1.getTotalPaidMonths().multiply(s1.getMonthlyFee()); + // dada uma colecao de subscription, calcular quanto todos pagaram ate hoje + subscriptions.stream() + .map(s -> s.getMonthlyFee().multiply(s.getTotalPaidMonths())) + .reduce(BigDecimal::add) + .orElse(BigDecimal.ZERO); + // achar o usuario que mais pagou total de valor de subscriptions ate hoje + + // achar o usuario que ficou mais meses pagando (independente dela estar ativa ou nao) - } - -} + } +} \ No newline at end of file