1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-11-29 10:24:20 +01:00
fab-manager/app/controllers/api/notification_preferences_controller.rb

51 lines
1.8 KiB
Ruby

# frozen_string_literal: true
# API Controller for resources of type Notification Preferences
class API::NotificationPreferencesController < API::ApiController
before_action :authenticate_user!
def index
@notification_preferences = current_user.notification_preferences
end
# Currently only available for Admin in NotificationPreferencePolicy
def update
authorize NotificationPreference
notification_type = NotificationType.find_by(name: params[:notification_preference][:notification_type])
@notification_preference = NotificationPreference.find_or_create_by(notification_type: notification_type, user: current_user)
@notification_preference.update(notification_preference_params)
if @notification_preference.save
render :show, status: :ok
else
render json: @notification_preference.errors, status: :unprocessable_entity
end
end
# Currently only available for Admin in NotificationPreferencePolicy
def bulk_update
authorize NotificationPreference
errors = []
params[:notification_preferences].each do |notification_preference|
notification_type = NotificationType.find_by(name: notification_preference[:notification_type])
db_notification_preference = NotificationPreference.find_or_create_by(notification_type_id: notification_type.id, user: current_user)
next if db_notification_preference.update(email: notification_preference[:email], in_system: notification_preference[:in_system])
errors.push(db_notification_preference.errors)
end
if errors.any?
render json: errors, status: :unprocessable_entity
else
head :no_content, status: :ok
end
end
private
def notification_preference_params
params.require(:notification_preference).permit(:notification_type_id, :in_system, :email)
end
end