# Copyright (C) 2024 Manuel Bustillo

# frozen_string_literal: true

class SummaryController < ApplicationController
  def index
    render json: {
      expenses:,
      guests:
    }
  end

  private

  def guests
    guest_summary = Guest.group(:status).count

    {
      total: guest_summary.except('considered').values.sum,
      confirmed: guest_summary['confirmed'].to_i,
      declined: guest_summary['declined'].to_i,
      tentative: guest_summary['tentative'].to_i,
      invited: guest_summary['invited'].to_i
    }
  end

  def expenses
    expense_summary = Expenses::TotalQuery.new(wedding: ActsAsTenant.current_tenant).call

    {
      projected: {
        total: expense_summary['total_projected'],
        guests: expense_summary['projected_guests']
      },
      confirmed: {
        total: expense_summary['total_confirmed'],
        guests: expense_summary['confirmed_guests']
      },
      status: {
        paid: 0
      }
    }
  end
end