Как я могу рассчитать общую цену, используя две разные коллекции в Firestore

# #android #firebase #google-cloud-firestore

Вопрос:

Добрый день, я все еще новичок в Firebase/Firestore. Я создаю приложение для прачечной, и я хотел бы, чтобы пользователь выбирал услугу прачечной на основе цены за корзину.

После того, как пользователь выбрал все товары и установил количество для каждого товара, пример

Я хочу получить предложение от всех услуг прачечной и отобразить его для пользователя в окне вторичной переработки от самого дешевого до самого дорогого.

Каждая услуга прачечной должна иметь свою собственную цену за одни и те же товары. Было бы проще, если бы они все согласились на одинаковые цены.

Мне нужно получить первый товар из списка заказов и количество, перейти в бизнес-коллекцию и найти тот же товар на основе идентификатора, а затем вернуть цену. После этого я умножу цену на количество для первого товара и сделаю это для остальных товаров в корзине, чтобы получить общую цену.

Затем я отобразлю эту общую цену в первом представлении карты в моем окне повторного просмотра.

Затем повторите процесс для второго вида карты и т. Д…

Вот моя структура базы данных

корневой каталог базы данных

список заказов

услуги прачечной

Вот мой пример кода

     orderRef.document(orderId).collection("orderlist").get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                    @Override
                    public void onSuccess(QuerySnapshot queryDocumentSnapshots) {

                        if (!queryDocumentSnapshots.isEmpty()) {
                            for (QueryDocumentSnapshot queryDocumentSnapshot : queryDocumentSnapshots) {


                                String itemId = queryDocumentSnapshot.getId();
                                double quantity = queryDocumentSnapshot.getDouble("quantity");

                                businessItemPriceRef.document(businessId).collection("product_prices_list").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                                            @Override
                                            public void onComplete(@NonNull @NotNull Task<QuerySnapshot> task) {

                                                if (task.isSuccessful()) {

                                                    double total = 0;

                                                    for (QueryDocumentSnapshot query : Objects.requireNonNull(task.getResult())) {

                                                        String businessItemPriceID = query.getId();

                                                        double item_price = query.getDouble("price_unit");

                                                        if(itemId.equals(businessItemPriceID)) {

                                                            if (item_price > 0.0) {

                                                                double item_price_quantity = item_price * quantity;
                                                                total  = item_price_quantity;
                                                                //holder.setCost(total);
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        });

                            }

                            // Get the complete Price here

                        }
                    }
                });
 

Комментарии:

1. Пожалуйста, отредактируйте свой вопрос и добавьте структуру своей базы данных в виде скриншота и укажите точные данные, которые вам нужно получить.

2. Привет, Алекс, я обновил свой вопрос, надеюсь, теперь он более ясен.

3. Что именно в этом коде работает не так, как вы ожидаете? Расскажите нам, что не так с общим кодом. Есть ли у вас какие-либо ошибки?

4. Ну, этот код не суммирует общую цену, как я хочу. вместо этого я получаю цену последнего элемента в итерации