Друзья, плиз хелп) Ворос по RXJS.
Помогите написать, чтоб было красиво.
Надо посчитать сумму чека.
Есть апи, запрашиваем чек -this.order$ = this.orderService.getOrderById(2323),
получаем Order - {
id: 2323,
orderItems: [
{
productId: 45,
quantity: 8
},
{
productId: 46,
quantity: 4
}
]
Теперь на нужно получить продукты, чтоб посмотреть их цену
orderProducts$ = this.order$.pipe(
concatMap(order => {
const productsIds = [];
if(order)
for(let orderItem of order.orderItems){
productIds.push(orderItem.productId);
}
return this.prductService.getMultipleProductsByIds(productIds);
}
);
теперь нужно нужно взять quantity(количество) каждого из oroderItems и помножить на цену продукта -
totalPrice$ = combineLatest([order$, orderProducts$]).pipe(
map(([order, orderProducts]) => {
totalPrice = 0;
for(let orderItem of order.orderItems){
for(let product of orderProducts){
if(
product.id == orderItem.productId)
totalPrice += product.price * orderItem.quantity;
}
}
return totalPrice;
}
);
И вот мы наконец то получили нашу сумму чека. Только блин вот это все очень не красиво, мы ходим вокруг одних и тех же данных много раз, у нас еще в concatMap были все эти данные, но мы их получали в не том порядке, чтоб можно было провести эту калькуляцию.
Короче, кто умеет писать лаконично и красиво c rxjs, помогите плиз переписать этот кусок)