1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-02-20 14:54:15 +01:00

manager can configure his notifications

This commit is contained in:
Nicolas Florentin 2023-08-28 15:23:07 +02:00 committed by Du Peng
parent ed22d1c37c
commit 7925040d33
8 changed files with 113 additions and 50 deletions

View File

@ -6,7 +6,9 @@ class API::NotificationTypesController < API::APIController
def index
@notification_types = if params[:is_configurable] == 'true'
NotificationType.where(is_configurable: true)
role = 'admin' if current_user.admin?
role ||= 'manager' if current_user.manager?
NotificationType.where(is_configurable: true).for_role(role)
else
NotificationType.all
end

View File

@ -30,7 +30,7 @@ export const NotificationsCenter: React.FC<NotificationsCenterProps> = ({ onErro
return (
<>
{role === 'admin' && <FabTabs defaultTab='notifications-list' tabs={[
{(role === 'admin' || role === 'manager') && <FabTabs defaultTab='notifications-list' tabs={[
{
id: 'notifications_settings',
title: t('app.logged.notifications_center.notifications_settings'),

View File

@ -18,4 +18,14 @@ class NotificationType < ApplicationRecord
validates :category, presence: true, inclusion: { in: %w[subscriptions user projects deprecated exports agenda trainings accountings
app_management wallet payments users_accounts supporting_documents shop] }
validates :is_configurable, inclusion: { in: [true, false] }
validate :validate_roles
scope :for_role, ->(role) { where("roles @> ?", "{#{role}}") }
private
def validate_roles
errors.add(:roles, :invalid) if roles.any? { |r| !r.in?(%w(admin manager)) }
end
end

View File

@ -3,10 +3,10 @@
# Check the access policies for API::NotificationPreferencesController
class NotificationPreferencePolicy < ApplicationPolicy
def update?
user.admin?
user.admin? || user.manager?
end
def bulk_update?
user.admin?
user.admin? || user.manager?
end
end

View File

@ -0,0 +1,7 @@
class AddRolesToNotificationTypes < ActiveRecord::Migration[7.0]
def change
add_column :notification_types, :roles, :string, array: true, default: []
add_index :notification_types, :roles
load Rails.root.join('db/seeds/notification_types.rb')
end
end

View File

@ -1,89 +1,90 @@
# frozen_string_literal: true
NOTIFICATIONS_TYPES = [
{ name: 'notify_admin_when_project_published', category: 'projects', is_configurable: true },
{ name: 'notify_admin_when_project_published', category: 'projects', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_project_collaborator_to_valid', category: 'projects', is_configurable: false },
{ name: 'notify_project_author_when_collaborator_valid', category: 'projects', is_configurable: true },
{ name: 'notify_project_author_when_collaborator_valid', category: 'projects', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_user_training_valid', category: 'trainings', is_configurable: false },
{ name: 'notify_member_subscribed_plan', category: 'subscriptions', is_configurable: false },
{ name: 'notify_member_create_reservation', category: 'agenda', is_configurable: false },
{ name: 'notify_member_subscribed_plan_is_changed', category: 'deprecated', is_configurable: false },
{ name: 'notify_admin_member_create_reservation', category: 'agenda', is_configurable: true },
{ name: 'notify_admin_member_create_reservation', category: 'agenda', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_member_slot_is_modified', category: 'agenda', is_configurable: false },
{ name: 'notify_admin_slot_is_modified', category: 'agenda', is_configurable: true },
{ name: 'notify_admin_slot_is_modified', category: 'agenda', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_admin_when_user_is_created', category: 'users_accounts', is_configurable: true },
{ name: 'notify_admin_subscribed_plan', category: 'subscriptions', is_configurable: true },
{ name: 'notify_user_when_invoice_ready', category: 'payments', is_configurable: true },
{ name: 'notify_admin_when_user_is_created', category: 'users_accounts', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_admin_subscribed_plan', category: 'subscriptions', is_configurable: true, roles: ['admin'] },
{ name: 'notify_user_when_invoice_ready', category: 'payments', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_member_subscription_will_expire_in_7_days', category: 'subscriptions', is_configurable: false },
{ name: 'notify_member_subscription_is_expired', category: 'subscriptions', is_configurable: false },
{ name: 'notify_admin_subscription_will_expire_in_7_days', category: 'subscriptions', is_configurable: true },
{ name: 'notify_admin_subscription_is_expired', category: 'subscriptions', is_configurable: true },
{ name: 'notify_admin_subscription_canceled', category: 'subscriptions', is_configurable: true },
{ name: 'notify_admin_subscription_will_expire_in_7_days', category: 'subscriptions', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_admin_subscription_is_expired', category: 'subscriptions', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_admin_subscription_canceled', category: 'subscriptions', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_member_subscription_canceled', category: 'subscriptions', is_configurable: false },
{ name: 'notify_user_when_avoir_ready', category: 'wallet', is_configurable: false },
{ name: 'notify_member_slot_is_canceled', category: 'agenda', is_configurable: false },
{ name: 'notify_admin_slot_is_canceled', category: 'agenda', is_configurable: true },
{ name: 'notify_admin_slot_is_canceled', category: 'agenda', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_partner_subscribed_plan', category: 'subscriptions', is_configurable: false },
{ name: 'notify_member_subscription_extended', category: 'subscriptions', is_configurable: false },
{ name: 'notify_admin_subscription_extended', category: 'subscriptions', is_configurable: true },
{ name: 'notify_admin_user_group_changed', category: 'users_accounts', is_configurable: true },
{ name: 'notify_admin_subscription_extended', category: 'subscriptions', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_admin_user_group_changed', category: 'users_accounts', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_user_user_group_changed', category: 'users_accounts', is_configurable: false },
{ name: 'notify_admin_when_user_is_imported', category: 'users_accounts', is_configurable: true },
{ name: 'notify_admin_when_user_is_imported', category: 'users_accounts', is_configurable: true, roles: ['admin'] },
{ name: 'notify_user_profile_complete', category: 'users_accounts', is_configurable: false },
{ name: 'notify_user_auth_migration', category: 'user', is_configurable: false },
{ name: 'notify_admin_user_merged', category: 'users_accounts', is_configurable: true },
{ name: 'notify_admin_profile_complete', category: 'users_accounts', is_configurable: true },
{ name: 'notify_admin_abuse_reported', category: 'projects', is_configurable: true },
{ name: 'notify_admin_user_merged', category: 'users_accounts', is_configurable: true, roles: ['admin'] },
{ name: 'notify_admin_profile_complete', category: 'users_accounts', is_configurable: true, roles: ['admin'] },
{ name: 'notify_admin_abuse_reported', category: 'projects', is_configurable: true, roles: ['admin'] },
{ name: 'notify_admin_invoicing_changed', category: 'deprecated', is_configurable: false },
{ name: 'notify_user_wallet_is_credited', category: 'wallet', is_configurable: false },
{ name: 'notify_admin_user_wallet_is_credited', category: 'wallet', is_configurable: true },
{ name: 'notify_admin_user_wallet_is_credited', category: 'wallet', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_admin_export_complete', category: 'exports', is_configurable: false },
{ name: 'notify_member_about_coupon', category: 'agenda', is_configurable: false },
{ name: 'notify_member_reservation_reminder', category: 'agenda', is_configurable: false },
{ name: 'notify_admin_free_disk_space', category: 'app_management', is_configurable: false },
{ name: 'notify_admin_close_period_reminder', category: 'accountings', is_configurable: true },
{ name: 'notify_admin_archive_complete', category: 'accountings', is_configurable: true },
{ name: 'notify_admin_close_period_reminder', category: 'accountings', is_configurable: true, roles: ['admin'] },
{ name: 'notify_admin_archive_complete', category: 'accountings', is_configurable: true, roles: ['admin'] },
{ name: 'notify_privacy_policy_changed', category: 'app_management', is_configurable: false },
{ name: 'notify_admin_import_complete', category: 'app_management', is_configurable: false },
{ name: 'notify_admin_refund_created', category: 'wallet', is_configurable: true },
{ name: 'notify_admins_role_update', category: 'users_accounts', is_configurable: true },
{ name: 'notify_admin_refund_created', category: 'wallet', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_admins_role_update', category: 'users_accounts', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_user_role_update', category: 'users_accounts', is_configurable: false },
{ name: 'notify_admin_objects_stripe_sync', category: 'payments', is_configurable: false },
{ name: 'notify_user_when_payment_schedule_ready', category: 'payments', is_configurable: false },
{ name: 'notify_admin_payment_schedule_failed', category: 'payments', is_configurable: true },
{ name: 'notify_admin_payment_schedule_failed', category: 'payments', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_member_payment_schedule_failed', category: 'payments', is_configurable: false },
{ name: 'notify_admin_payment_schedule_check_deadline', category: 'payments', is_configurable: true },
{ name: 'notify_admin_payment_schedule_transfer_deadline', category: 'payments', is_configurable: true },
{ name: 'notify_admin_payment_schedule_error', category: 'payments', is_configurable: true },
{ name: 'notify_admin_payment_schedule_check_deadline', category: 'payments', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_admin_payment_schedule_transfer_deadline', category: 'payments', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_admin_payment_schedule_error', category: 'payments', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_member_payment_schedule_error', category: 'payments', is_configurable: false },
{ name: 'notify_admin_payment_schedule_gateway_canceled', category: 'payments', is_configurable: true },
{ name: 'notify_admin_payment_schedule_gateway_canceled', category: 'payments', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_member_payment_schedule_gateway_canceled', category: 'payments', is_configurable: false },
{ name: 'notify_admin_user_supporting_document_files_created', category: 'supporting_documents', is_configurable: true },
{ name: 'notify_admin_user_supporting_document_files_updated', category: 'supporting_documents', is_configurable: true },
{ name: 'notify_admin_user_supporting_document_files_created', category: 'supporting_documents', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_admin_user_supporting_document_files_updated', category: 'supporting_documents', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_user_is_validated', category: 'users_accounts', is_configurable: false },
{ name: 'notify_user_is_invalidated', category: 'users_accounts', is_configurable: false },
{ name: 'notify_user_supporting_document_refusal', category: 'supporting_documents', is_configurable: false },
{ name: 'notify_admin_user_supporting_document_refusal', category: 'supporting_documents', is_configurable: true },
{ name: 'notify_admin_user_supporting_document_refusal', category: 'supporting_documents', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_admin_order_is_paid', category: 'shop', is_configurable: false },
{ name: 'notify_user_order_is_ready', category: 'shop', is_configurable: false },
{ name: 'notify_user_order_is_canceled', category: 'shop', is_configurable: false },
{ name: 'notify_user_order_is_refunded', category: 'shop', is_configurable: false },
{ name: 'notify_admin_low_stock_threshold', category: 'shop', is_configurable: true },
{ name: 'notify_admin_training_auto_cancelled', category: 'trainings', is_configurable: true },
{ name: 'notify_admin_low_stock_threshold', category: 'shop', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_admin_training_auto_cancelled', category: 'trainings', is_configurable: true, roles: ['admin', 'manager'] },
{ name: 'notify_member_training_auto_cancelled', category: 'trainings', is_configurable: false }
].freeze
NOTIFICATIONS_TYPES.each do |notification_type|
next if NotificationType.find_by(name: notification_type[:name])
NOTIFICATIONS_TYPES.each do |notification_type_attrs|
notification_type = NotificationType.find_by(name: notification_type_attrs[:name])
NotificationType.create!(
name: notification_type[:name],
category: notification_type[:category],
is_configurable: notification_type[:is_configurable]
)
if notification_type
notification_type.update!(notification_type_attrs)
else
NotificationType.create!(notification_type_attrs)
end
end

View File

@ -1726,7 +1726,8 @@ CREATE TABLE public.notification_types (
category character varying NOT NULL,
is_configurable boolean NOT NULL,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL
updated_at timestamp without time zone NOT NULL,
roles character varying[] DEFAULT '{}'::character varying[]
);
@ -6651,6 +6652,13 @@ CREATE UNIQUE INDEX index_notification_preferences_on_user_and_notification_type
CREATE UNIQUE INDEX index_notification_types_on_name ON public.notification_types USING btree (name);
--
-- Name: index_notification_types_on_roles; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX index_notification_types_on_roles ON public.notification_types USING btree (roles);
--
-- Name: index_notifications_on_notification_type_id; Type: INDEX; Schema: public; Owner: -
--
@ -8900,6 +8908,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('20230626122947'),
('20230718133636'),
('20230718134350'),
('20230720085857');
('20230720085857'),
('20230828073428');

View File

@ -3,6 +3,7 @@ notification_type_1:
name: notify_admin_when_project_published
category: projects
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.353635000 Z
updated_at: 2023-02-02 08:25:33.353635000 Z
@ -10,7 +11,7 @@ notification_type_2:
id: 2
name: notify_project_collaborator_to_valid
category: projects
is_configurable: true
is_configurable: false
created_at: 2023-02-02 08:25:33.355650000 Z
updated_at: 2023-02-02 08:25:33.355650000 Z
@ -19,6 +20,7 @@ notification_type_3:
name: notify_project_author_when_collaborator_valid
category: projects
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.357169000 Z
updated_at: 2023-02-02 08:25:33.357169000 Z
@ -59,6 +61,7 @@ notification_type_8:
name: notify_admin_member_create_reservation
category: agenda
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.366800000 Z
updated_at: 2023-02-02 08:25:33.366800000 Z
@ -75,6 +78,7 @@ notification_type_10:
name: notify_admin_slot_is_modified
category: agenda
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.369576000 Z
updated_at: 2023-02-02 08:25:33.369576000 Z
@ -83,6 +87,7 @@ notification_type_11:
name: notify_admin_when_user_is_created
category: users_accounts
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.370910000 Z
updated_at: 2023-02-02 08:25:33.370910000 Z
@ -91,6 +96,7 @@ notification_type_12:
name: notify_admin_subscribed_plan
category: subscriptions
is_configurable: true
roles: ['admin']
created_at: 2023-02-02 08:25:33.372202000 Z
updated_at: 2023-02-02 08:25:33.372202000 Z
@ -99,6 +105,7 @@ notification_type_13:
name: notify_user_when_invoice_ready
category: payments
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.373802000 Z
updated_at: 2023-02-02 08:25:33.373802000 Z
@ -123,6 +130,7 @@ notification_type_16:
name: notify_admin_subscription_will_expire_in_7_days
category: subscriptions
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.377294000 Z
updated_at: 2023-02-02 08:25:33.377294000 Z
@ -131,6 +139,7 @@ notification_type_17:
name: notify_admin_subscription_is_expired
category: subscriptions
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.385681000 Z
updated_at: 2023-02-02 08:25:33.385681000 Z
@ -139,6 +148,7 @@ notification_type_18:
name: notify_admin_subscription_canceled
category: subscriptions
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.386650000 Z
updated_at: 2023-02-02 08:25:33.386650000 Z
@ -171,6 +181,7 @@ notification_type_22:
name: notify_admin_slot_is_canceled
category: agenda
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.389610000 Z
updated_at: 2023-02-02 08:25:33.389610000 Z
@ -195,6 +206,7 @@ notification_type_25:
name: notify_admin_subscription_extended
category: subscriptions
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.392302000 Z
updated_at: 2023-02-02 08:25:33.392302000 Z
@ -203,6 +215,7 @@ notification_type_26:
name: notify_admin_user_group_changed
category: users_accounts
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.393157000 Z
updated_at: 2023-02-02 08:25:33.393157000 Z
@ -219,6 +232,7 @@ notification_type_28:
name: notify_admin_when_user_is_imported
category: users_accounts
is_configurable: true
roles: ['admin']
created_at: 2023-02-02 08:25:33.394864000 Z
updated_at: 2023-02-02 08:25:33.394864000 Z
@ -243,6 +257,7 @@ notification_type_31:
name: notify_admin_user_merged
category: users_accounts
is_configurable: true
roles: ['admin']
created_at: 2023-02-02 08:25:33.397530000 Z
updated_at: 2023-02-02 08:25:33.397530000 Z
@ -251,6 +266,7 @@ notification_type_32:
name: notify_admin_profile_complete
category: users_accounts
is_configurable: true
roles: ['admin']
created_at: 2023-02-02 08:25:33.398364000 Z
updated_at: 2023-02-02 08:25:33.398364000 Z
@ -259,6 +275,7 @@ notification_type_33:
name: notify_admin_abuse_reported
category: projects
is_configurable: true
roles: ['admin']
created_at: 2023-02-02 08:25:33.399230000 Z
updated_at: 2023-02-02 08:25:33.399230000 Z
@ -283,6 +300,7 @@ notification_type_36:
name: notify_admin_user_wallet_is_credited
category: wallet
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.402912000 Z
updated_at: 2023-02-02 08:25:33.402912000 Z
@ -307,6 +325,7 @@ notification_type_39:
name: notify_member_reservation_reminder
category: agenda
is_configurable: false
roles: ['admin']
created_at: 2023-02-02 08:25:33.414402000 Z
updated_at: 2023-02-02 08:25:33.414402000 Z
@ -323,6 +342,7 @@ notification_type_41:
name: notify_admin_close_period_reminder
category: accountings
is_configurable: true
roles: ['admin']
created_at: 2023-02-02 08:25:33.420521000 Z
updated_at: 2023-02-02 08:25:33.420521000 Z
@ -331,6 +351,7 @@ notification_type_42:
name: notify_admin_archive_complete
category: accountings
is_configurable: true
roles: ['admin']
created_at: 2023-02-02 08:25:33.423553000 Z
updated_at: 2023-02-02 08:25:33.423553000 Z
@ -355,6 +376,7 @@ notification_type_45:
name: notify_admin_refund_created
category: wallet
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.426178000 Z
updated_at: 2023-02-02 08:25:33.426178000 Z
@ -363,6 +385,7 @@ notification_type_46:
name: notify_admins_role_update
category: users_accounts
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.426875000 Z
updated_at: 2023-02-02 08:25:33.426875000 Z
@ -395,6 +418,7 @@ notification_type_50:
name: notify_admin_payment_schedule_failed
category: payments
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.429758000 Z
updated_at: 2023-02-02 08:25:33.429758000 Z
@ -411,6 +435,7 @@ notification_type_52:
name: notify_admin_payment_schedule_check_deadline
category: payments
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.431174000 Z
updated_at: 2023-02-02 08:25:33.431174000 Z
@ -419,6 +444,7 @@ notification_type_53:
name: notify_admin_payment_schedule_transfer_deadline
category: payments
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.431950000 Z
updated_at: 2023-02-02 08:25:33.431950000 Z
@ -427,6 +453,7 @@ notification_type_54:
name: notify_admin_payment_schedule_error
category: payments
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.432809000 Z
updated_at: 2023-02-02 08:25:33.432809000 Z
@ -443,6 +470,7 @@ notification_type_56:
name: notify_admin_payment_schedule_gateway_canceled
category: payments
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.434479000 Z
updated_at: 2023-02-02 08:25:33.434479000 Z
@ -459,6 +487,7 @@ notification_type_58:
name: notify_admin_user_supporting_document_files_created
category: supporting_documents
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.435886000 Z
updated_at: 2023-02-02 08:25:33.435886000 Z
@ -467,6 +496,7 @@ notification_type_59:
name: notify_admin_user_supporting_document_files_updated
category: supporting_documents
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.436627000 Z
updated_at: 2023-02-02 08:25:33.436627000 Z
@ -491,6 +521,7 @@ notification_type_62:
name: notify_user_supporting_document_refusal
category: supporting_documents
is_configurable: false
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.439078000 Z
updated_at: 2023-02-02 08:25:33.439078000 Z
@ -499,6 +530,7 @@ notification_type_63:
name: notify_admin_user_supporting_document_refusal
category: supporting_documents
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.439926000 Z
updated_at: 2023-02-02 08:25:33.439926000 Z
@ -506,7 +538,7 @@ notification_type_64:
id: 64
name: notify_user_order_is_ready
category: shop
is_configurable: true
is_configurable: false
created_at: 2023-02-02 08:25:33.440769000 Z
updated_at: 2023-02-02 08:25:33.440769000 Z
@ -514,7 +546,7 @@ notification_type_65:
id: 65
name: notify_user_order_is_canceled
category: shop
is_configurable: true
is_configurable: false
created_at: 2023-02-02 08:25:33.441630000 Z
updated_at: 2023-02-02 08:25:33.441630000 Z
@ -522,7 +554,7 @@ notification_type_66:
id: 66
name: notify_user_order_is_refunded
category: shop
is_configurable: true
is_configurable: false
created_at: 2023-02-02 08:25:33.442370000 Z
updated_at: 2023-02-02 08:25:33.442370000 Z
@ -531,6 +563,7 @@ notification_type_67:
name: notify_admin_low_stock_threshold
category: shop
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.443101000 Z
updated_at: 2023-02-02 08:25:33.443101000 Z
@ -539,6 +572,7 @@ notification_type_68:
name: notify_admin_training_auto_cancelled
category: trainings
is_configurable: true
roles: ['admin', 'manager']
created_at: 2023-02-02 08:25:33.443888000 Z
updated_at: 2023-02-02 08:25:33.443888000 Z
@ -570,6 +604,6 @@ notification_type_72:
id: 72
name: notify_admin_order_is_paid
category: shop
is_configurable: true
is_configurable: false
created_at: 2023-02-16 10:42:39.143888000 Z
updated_at: 2023-02-16 10:42:39.143888000 Z