diff options
Diffstat (limited to 'app/controllers/admin/broadcast_messages_controller.rb')
-rw-r--r-- | app/controllers/admin/broadcast_messages_controller.rb | 64 |
1 files changed, 47 insertions, 17 deletions
diff --git a/app/controllers/admin/broadcast_messages_controller.rb b/app/controllers/admin/broadcast_messages_controller.rb index edd85414696..bdf0c6aedb9 100644 --- a/app/controllers/admin/broadcast_messages_controller.rb +++ b/app/controllers/admin/broadcast_messages_controller.rb @@ -3,39 +3,60 @@ class Admin::BroadcastMessagesController < Admin::ApplicationController include BroadcastMessagesHelper - before_action :finder, only: [:edit, :update, :destroy] + before_action :find_broadcast_message, only: [:edit, :update, :destroy] + before_action :find_broadcast_messages, only: [:index, :create] + before_action :push_features, only: [:index, :edit] feature_category :onboarding urgency :low - # rubocop: disable CodeReuse/ActiveRecord def index - push_frontend_feature_flag(:vue_broadcast_messages, current_user) - push_frontend_feature_flag(:role_targeted_broadcast_messages, current_user) - - @broadcast_messages = BroadcastMessage.order(ends_at: :desc).page(params[:page]) - @broadcast_message = BroadcastMessage.new + @broadcast_message = BroadcastMessage.new end - # rubocop: enable CodeReuse/ActiveRecord def edit end def create @broadcast_message = BroadcastMessage.new(broadcast_message_params) + success = @broadcast_message.save - if @broadcast_message.save - redirect_to admin_broadcast_messages_path, notice: _('Broadcast Message was successfully created.') - else - render :index + respond_to do |format| + format.json do + if success + render json: @broadcast_message, status: :ok + else + render json: { errors: @broadcast_message.errors.full_messages }, status: :bad_request + end + end + format.html do + if success + redirect_to admin_broadcast_messages_path, notice: _('Broadcast Message was successfully created.') + else + render :index + end + end end end def update - if @broadcast_message.update(broadcast_message_params) - redirect_to admin_broadcast_messages_path, notice: _('Broadcast Message was successfully updated.') - else - render :edit + success = @broadcast_message.update(broadcast_message_params) + + respond_to do |format| + format.json do + if success + render json: @broadcast_message, status: :ok + else + render json: { errors: @broadcast_message.errors.full_messages }, status: :bad_request + end + end + format.html do + if success + redirect_to admin_broadcast_messages_path, notice: _('Broadcast Message was successfully updated.') + else + render :edit + end + end end end @@ -55,10 +76,14 @@ class Admin::BroadcastMessagesController < Admin::ApplicationController protected - def finder + def find_broadcast_message @broadcast_message = BroadcastMessage.find(params[:id]) end + def find_broadcast_messages + @broadcast_messages = BroadcastMessage.order(ends_at: :desc).page(params[:page]) # rubocop: disable CodeReuse/ActiveRecord + end + def broadcast_message_params params.require(:broadcast_message) .permit(%i( @@ -71,4 +96,9 @@ class Admin::BroadcastMessagesController < Admin::ApplicationController dismissable ), target_access_levels: []).reverse_merge!(target_access_levels: []) end + + def push_features + push_frontend_feature_flag(:vue_broadcast_messages, current_user) + push_frontend_feature_flag(:role_targeted_broadcast_messages, current_user) + end end |