All checks were successful
		
		
	
	Check usage of free licenses / check-licenses (pull_request) Successful in 1m38s
				
			Add copyright notice / copyright_notice (pull_request) Successful in 3m16s
				
			Run unit tests / unit_tests (pull_request) Successful in 5m31s
				
			Build Nginx-based docker image / build-static-assets (pull_request) Successful in 41m31s
				
			
		
			
				
	
	
		
			45 lines
		
	
	
		
			988 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			988 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors
 | 
						|
 | 
						|
# 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
 |