Как мне остановить обновление таблицы заказов? - PullRequest
0 голосов
/ 15 апреля 2019

Я хочу хранить в таблице «Заказы» в моей базе данных Firebase много заказов определенного пользователя. Например, если пользователь покупает товар у продавца1, он совершает оформление заказа, затем он также покупает товар у продавца2 и оформляет заказ. в этом случае у пользователя будет два заказа в таблице «Заказы».

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

ниже моя касса. Как мне это исправить?

private void confirmOrder() {

    final String saveCurrentDate, saveCurrentTime;

    Calendar calForDate = Calendar.getInstance();
    SimpleDateFormat currentDate = new SimpleDateFormat("MMM dd, yyyy");
    saveCurrentDate = currentDate.format(calForDate.getTime());
    SimpleDateFormat currentTime = new SimpleDateFormat("HH:mm:ss a");
    saveCurrentTime = currentTime.format(calForDate.getTime());

    final DatabaseReference ordersRef = FirebaseDatabase
            .getInstance().getReference().child("Orders")
            .child(Prevalent.currentOnlineUser.getEmail());

    final HashMap<String, Object> ordersMap = new HashMap<>();
    ordersMap.put("amount", totalAmount + "$");
    ordersMap.put("quantity", pQuantity);
    ordersMap.put("pname", pname);
    ordersMap.put("storename", storename);
    ordersMap.put("statep", statep);
    ordersMap.put("fullname", fullNameEditText.getText().toString());
    ordersMap.put("phone", phoneEditText.getText().toString());
    ordersMap.put("city", cityEditText.getText().toString());
    ordersMap.put("street", streetEditText.getText().toString());
    ordersMap.put("house", houseEditText.getText().toString());
    ordersMap.put("note", noteEditText.getText().toString());
    ordersMap.put("state", "not shipped");
    ordersMap.put("time", saveCurrentTime);
    ordersMap.put("date", saveCurrentDate);

    ordersRef.updateChildren(ordersMap).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if (task.isSuccessful()) {
                FirebaseDatabase.getInstance().getReference().child("Cart List")
                        .child("User view").child(Prevalent.currentOnlineUser.getEmail())
                        .removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            Toast.makeText(CheckoutActivity.this, "Order Complete", Toast.LENGTH_SHORT).show();
                            Intent intent = new Intent(CheckoutActivity.this, HomeActivity.class);

                            //cleaning the cart list userView after the user has checked out the items
                            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                            startActivity(intent);
                            finish();
                        }
                    }

                });
            }
        }
    });
}

1 Ответ

0 голосов
/ 15 апреля 2019

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

Одним из возможных решений для вашего случая является

final DatabaseReference ordersRef = FirebaseDatabase
            .getInstance().getReference().child("Orders")
            .child(Prevalent.currentOnlineUser.getEmail()).push();

Функция push () здесь создает дочерний узел с uniqueId.


Если вы хотите сгенерировать свой уникальный uniqueId, замените «push ()» на «child (newUniqueId)».

final DatabaseReference ordersRef = FirebaseDatabase
            .getInstance().getReference().child("Orders")
            .child(Prevalent.currentOnlineUser.getEmail()).child(newUniqueId);

Здесь 'newUniqueId' должен быть разным для каждого заказа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...