package com.example.myapp_2;

import android.content.Context;

import com.example.myapp_2.List_1.Product;
import com.example.myapp_2.USERSDB.DBHelper;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class Shop {
    private Context context;
    private List<User> userList = new ArrayList<>(); // список пользователей, подписанных на обновления
    public Shop(Context context) {
        this.context = context;
    }

    public Future<Void> updatePricesAndNotifyUsers() {
        userList = getUsersSubscribedForUpdates(); // получаем список пользователей, подписанных на обновления
        DBHelper dbHelper = new DBHelper(context); // создаем экземпляр класса DBHelper
        for (User user : userList) {
            user.addToDatabase(context); // регистрируем пользователя в базе данных
        }
        //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

        ExecutorService executorService = Executors.newFixedThreadPool(2); // создаем исполнительный сервис с двумя потоками
        userList = getUsersSubscribedForUpdates(); // получаем список пользователей, подписанных на обновления
        Future<Void> future = executorService.submit(new Callable<Void>() { // создаем новую задачу и отправляем ее на выполнение
            @Override
            public Void call() throws Exception {
                updatePrices(); // обновляем цены на продукты
                for (User user : userList) {
                    sendPushNotification(user); // отправляем push-уведомления каждому пользователю
                }
                return null; // возвращаем null, потому что методы updatePrices() и sendPushNotification() ничего не возвращают
            }
        });
        executorService.shutdown(); // останавливаем исполнительный сервис после выполнения задачи
        return future; // возвращаем объект типа Future для отслеживания статуса выполнения задачи
    }

    private List<User> getUsersSubscribedForUpdates() {
        List<User> userList = new ArrayList<>();
    // здесь мы получаем список всех пользователей, подписанных на обновления и добавляем их в список userList
    // Например, так:
        User user1 = new User("John", "john@email.com");
        User user2 = new User("Jane", "jane@email.com");
        userList.add(user1);
        userList.add(user2);
        return userList;
    }

    private void updatePrices() {
    // здесь мы обновляем цены на продукты
    // Например, так:
        Product product1 = new Product("Product 1", "Description 1", R.drawable.food_3_1jpg, 0.0f);
        Product product2 = new Product("Product 1", "Description 1", R.drawable.food_3_1jpg, 0.0f);
        product1.setPrice(12);
        product2.setPrice(17);
    }

    private void sendPushNotification(User user) {
    // здесь мы отправляем push-уведомление пользователю
    // Например, так:
        PushNotificationService.pushNotification(user.getEmail(), "Price update!", "Check out the new prices!");
    }
    private List<User> getUsersSubscribedForUpdates() {
        List<User> userList = new ArrayList<>();
// здесь мы получаем список всех пользователей, подписанных на обновления и добавляем их в список userList
// Например, так:
        User user1 = new User("John", "john@email.com");
        User user2 = new User("Jane", "jane@email.com");
        user1.addToDatabase(getApplicationContext());
        user2.addToDatabase(getApplicationContext());
        userList.add(user1);
        userList.add(user2);
        return userList;
    }

}укажи на ошибки