const router = require('express').Router();
const { getSupabaseClient } = require('./supabaseClient');

// Получить агрегированные сервисы с деталями и статусами оплаты для квартиры
router.get('/payment-services', async (req, res) => {
  const supabase = getSupabaseClient();
  const { apartment_id, user_id } = req.query;
  if (!apartment_id || !user_id) return res.status(400).json({ error: 'apartment_id и user_id обязательны' });

  // Получаем все агрегаторы
  const { data: services, error: servicesError } = await supabase
    .from('payment_services')
    .select('id, name, icon');
  if (servicesError) return res.status(400).json({ error: servicesError.message });

  // Получаем детали по агрегаторам
  const { data: details, error: detailsError } = await supabase
    .from('payment_service_details')
    .select('id, service_id, name, description');
  if (detailsError) return res.status(400).json({ error: detailsError.message });

  // Получаем платежи пользователя по деталям
  const { data: payments, error: paymentsError } = await supabase
    .from('payments')
    .select('id, detail_id, amount, period, status, payment_method')
    .eq('apartment_id', apartment_id)
    .eq('user_id', user_id);
  if (paymentsError) return res.status(400).json({ error: paymentsError.message });

  // Формируем структуру для фронта
  const result = services.map(service => {
    const serviceDetails = details.filter(d => d.service_id === service.id).map(detail => {
      const payment = payments.find(p => p.detail_id === detail.id) || {};
      return {
        id: detail.id,
        name: detail.name,
        description: detail.description,
        amount: payment.amount || null,
        period: payment.period || null,
        status: payment.status || 'pending',
        paymentMethod: payment.payment_method || null,
        paymentId: payment.id || null,
      };
    });
    return {
      id: service.id,
      name: service.name,
      icon: service.icon,
      details: serviceDetails,
    };
  });

  res.json(result);
});

module.exports = router;