module Management
  class EventsController < ManagementController
    before_action :assign_suggestion, only: [:show, :state]

    def index
      @suggestion_groups = SuggestionGroup.for_conference Conference.current
    end

    def approved
      @suggestion_groups = SuggestionGroup.for_conference Conference.current, state: Event.states[:approved]
      render :index
    end

    def undecided
      @suggestion_groups = SuggestionGroup.for_conference Conference.current, state: Event.states[:undecided]
      render :index
    end

    def rejected
      @suggestion_groups = SuggestionGroup.for_conference Conference.current, state: Event.states[:rejected]
      render :index
    end

    def backup
      @suggestion_groups = SuggestionGroup.for_conference Conference.current, state: Event.states[:backup]
      render :index
    end

    def show
    end

    def state
      @suggestion.state = state_params
      @suggestion.save
    end

    def send_acceptance_notifications
      @suggestions = Conference.current.events.approved.where acceptance_notification_sent_at: nil
      if @suggestions.all?(&:send_acceptance_notification!)
        head :no_content
      else
        head :unprocessable_entity
      end
    end

    private

    def state_params
      params.require :state
    end

    def assign_suggestion
      @suggestion = Event.find params[:id]
    end
  end
end