# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # frozen_string_literal: true require 'csv' class GuestsController < ApplicationController GUEST_PARAMS = { only: %i[id name status], include: { group: { only: %i[id name] } } }.freeze def index render json: Guest.includes(:group) .left_joins(:group) .order('groups.name' => :asc, name: :asc) .as_json(GUEST_PARAMS) end def create guest = Guest.create!(guest_params) render json: guest.as_json(GUEST_PARAMS), status: :created end def update guest = Guest.find(params[:id]).update!(guest_params) render json: guest.as_json(GUEST_PARAMS), status: :ok end def destroy Guest.find(params[:id]).destroy! render json: {}, status: :ok end private def guest_params params.expect(guest: %i[name group_id status]) end end