Created
October 26, 2019 22:10
-
-
Save trynx/bd922e68c57f0f8d2ab4a150e26ba514 to your computer and use it in GitHub Desktop.
Android Academy exercise
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.math.BigDecimal | |
import java.time.LocalDateTime | |
fun main() { | |
// Setup Test Orders | |
val firstOrderLines = listOf(OrdersAnalyzer.OrderLine(9872, "Pencil", 3, BigDecimal.valueOf(3))) | |
val firstOrder = OrdersAnalyzer.Order(554, LocalDateTime.parse("2017-03-25T10:35:20"), firstOrderLines) | |
val secondOrderLines = listOf(OrdersAnalyzer.OrderLine(9872, "Pencil", 2, BigDecimal.valueOf(3)), | |
OrdersAnalyzer.OrderLine(1746, "Eraser", 1, BigDecimal.valueOf(1))) | |
val secondOrder = OrdersAnalyzer.Order(555, LocalDateTime.parse("2017-03-25T11:24:20"), secondOrderLines) | |
val thirdOrderLines = listOf(OrdersAnalyzer.OrderLine(5723, "Pen", 4, BigDecimal.valueOf(4.22)), | |
OrdersAnalyzer.OrderLine(9872, "Pencil", 3, BigDecimal.valueOf(3.12)), | |
OrdersAnalyzer.OrderLine(3433, "Erasers Set", 1, BigDecimal.valueOf(6.15))) | |
val thirdOrder = OrdersAnalyzer.Order(453, LocalDateTime.parse("2017-03-27T14:53:12"), thirdOrderLines) | |
val fourthOrderLines = listOf(OrdersAnalyzer.OrderLine(5723, "Pen", 7, BigDecimal.valueOf(4.22)), | |
OrdersAnalyzer.OrderLine(3433, "Erasers Set", 2, BigDecimal.valueOf(6.15))) | |
val fourthOrder = OrdersAnalyzer.Order(431, LocalDateTime.parse("2017-03-20T12:15:02"), fourthOrderLines) | |
val fifthOrderLines = listOf(OrdersAnalyzer.OrderLine(9872, "Pencil", 4, BigDecimal.valueOf(3.12)), | |
OrdersAnalyzer.OrderLine(4098, "Marker", 5, BigDecimal.valueOf(4.50))) | |
val fifthOrder = OrdersAnalyzer.Order(690, LocalDateTime.parse("2017-03-26T11:14:00"), fifthOrderLines) | |
val orderList = listOf(firstOrder, secondOrder, thirdOrder, fourthOrder, fifthOrder) | |
// Run test | |
val ordersAnalyzer = OrdersAnalyzer() | |
print(ordersAnalyzer.totalDailySales(orderList)) | |
} | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.math.BigDecimal | |
import java.time.DayOfWeek | |
import java.time.LocalDateTime | |
class OrdersAnalyzer { | |
data class Order(val orderId: Int, val creationDate: LocalDateTime, val orderLines: List<OrderLine>) | |
data class OrderLine(val productId: Int, val name: String, val quantity: Int, val unitPrice: BigDecimal) | |
fun totalDailySales(orders: List<Order>): Map<DayOfWeek, Int> { | |
val dailySalesMap = mutableMapOf<DayOfWeek, Int>() | |
for (dayOfWeek in DayOfWeek.values()) { | |
dailySalesMap[dayOfWeek] = 0 | |
} | |
var tempOrderDayOfWeek: DayOfWeek | |
var tempOrderQty: Int | |
var tempDayOfWeekQty: Int | |
// Get each orderLine quantity and add to the day within dailySalesMap | |
for (order in orders) { | |
tempOrderDayOfWeek = order.creationDate.dayOfWeek | |
tempOrderQty = 0 | |
order.orderLines.forEach { tempOrderQty += it.quantity } | |
tempDayOfWeekQty = dailySalesMap.getOrDefault(tempOrderDayOfWeek, 0) | |
dailySalesMap[tempOrderDayOfWeek] = tempDayOfWeekQty + tempOrderQty | |
} | |
return dailySalesMap | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Feel free to leave any feedback =]