module SuperAdmin class NotificationsController < ApplicationController before_action :set_notification, only: %i[show edit update destroy acknowledge] before_action :set_notifications, only: :index helper PaginableHelper # GET /notifications # GET /notifications.json def index authorize(Notification) render(:index, locals: { notifications: @notifications.page(1) }) end # GET /notifications/new def new authorize(Notification) @notification = Notification.new end # GET /notifications/1/edit def edit authorize(Notification) end # POST /notifications # POST /notifications.json def create authorize(Notification) begin n = Notification.new(notification_params) n.notification_type = 'global' n.save! flash[:notice] = _('Notification created successfully') rescue ActionController::ParameterMissing flash[:alert] = _('Unable to save since notification parameter is missing') rescue ActiveRecord::RecordInvalid => e flash[:alert] = e.message end redirect_to action: :index end # PATCH/PUT /notifications/1 # PATCH/PUT /notifications/1.json def update authorize(Notification) begin @notification.update!(notification_params) flash[:notice] = _('Notification updated successfully') rescue ActionController::ParameterMissing flash[:alert] = _('Unable to save since notification parameter is missing') rescue ActiveRecord::RecordInvalid => e flash[:alert] = e.message end redirect_to action: :index end # DELETE /notifications/1 # DELETE /notifications/1.json def destroy authorize(Notification) begin @notification.destroy flash[:notice] = _('Successfully destroyed your notification') rescue ActiveRecord::RecordNotDestroyed flash[:alert] = _('The theme with id %{id} could not be destroyed') % { id: params[:id] } end redirect_to action: :index end # GET /notifications/1/acknowledge def acknowledge @notification.acknowledge render nothing: true end private # Use callbacks to share common setup or constraints between actions. def set_notification @notification = Notification.find(params[:id] || params[:notification_id]) rescue ActiveRecord::RecordNotFound flash[:alert] = _('There is no notification associated with id %{id}') % { id: params[:id] } redirect_to action: :index end # Use callbacks to share common setup or constraints between actions. def set_notifications @notifications = Notification.all end # Never trust parameters from the scary internet, only allow the white list through. def notification_params params.require(:notification).permit(:title, :level, :body, :dismissable, :starts_at, :expires_at) end end end