Coursemology/coursemology2

View on GitHub
app/controllers/announcements_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true
class AnnouncementsController < ApplicationController
  load_resource :announcement, class: GenericAnnouncement.name, only: :mark_as_read, id_param: :announcement_id

  def index
    respond_to do |format|
      format.json do
        announcements = requesting_unread? ? unread_global_announcements : global_announcements
        @announcements = announcements.includes(:creator)
      end
    end
  end

  def mark_as_read
    if current_user
      @announcement.mark_as_read! for: current_user
      head :ok
    else
      head :no_content
    end
  end

  protected

  def publicly_accessible?
    requesting_unread? || action_name.to_sym == :mark_as_read
  end

  private

  def requesting_unread?
    params[:unread] == 'true'
  end
end