lesli_bell 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +5 -0
  3. data/app/assets/config/lesli_bell_manifest.js +40 -0
  4. data/app/assets/javascripts/lesli_bell/application.js +2848 -0
  5. data/app/assets/stylesheets/lesli_bell/application.css +15 -0
  6. data/app/controllers/lesli_bell/accounts_controller.rb +4 -0
  7. data/app/controllers/lesli_bell/announcements_controller.rb +60 -0
  8. data/app/controllers/lesli_bell/application_controller.rb +4 -0
  9. data/app/controllers/lesli_bell/dashboards_controller.rb +59 -0
  10. data/app/controllers/lesli_bell/notifications_controller.rb +60 -0
  11. data/app/helpers/lesli_bell/accounts_helper.rb +4 -0
  12. data/app/helpers/lesli_bell/announcements_helper.rb +4 -0
  13. data/app/helpers/lesli_bell/application_helper.rb +4 -0
  14. data/app/helpers/lesli_bell/dashboards_helper.rb +4 -0
  15. data/app/helpers/lesli_bell/notifications_helper.rb +4 -0
  16. data/app/jobs/lesli_bell/application_job.rb +4 -0
  17. data/app/mailers/lesli_bell/application_mailer.rb +6 -0
  18. data/app/models/lesli_bell/account.rb +7 -0
  19. data/app/models/lesli_bell/announcement.rb +4 -0
  20. data/app/models/lesli_bell/application_record.rb +5 -0
  21. data/app/models/lesli_bell/dashboard.rb +4 -0
  22. data/app/models/lesli_bell/notification.rb +28 -0
  23. data/app/services/lesli_bell/notification_service.rb +87 -0
  24. data/app/views/lesli_bell/accounts/_account.html.erb +2 -0
  25. data/app/views/lesli_bell/accounts/_form.html.erb +17 -0
  26. data/app/views/lesli_bell/accounts/edit.html.erb +10 -0
  27. data/app/views/lesli_bell/accounts/index.html.erb +14 -0
  28. data/app/views/lesli_bell/accounts/new.html.erb +9 -0
  29. data/app/views/lesli_bell/accounts/show.html.erb +10 -0
  30. data/app/views/lesli_bell/announcements/_announcement.html.erb +2 -0
  31. data/app/views/lesli_bell/announcements/_form.html.erb +17 -0
  32. data/app/views/lesli_bell/announcements/edit.html.erb +10 -0
  33. data/app/views/lesli_bell/announcements/index.html.erb +14 -0
  34. data/app/views/lesli_bell/announcements/new.html.erb +9 -0
  35. data/app/views/lesli_bell/announcements/show.html.erb +10 -0
  36. data/app/views/lesli_bell/dashboards/_dashboard.html.erb +2 -0
  37. data/app/views/lesli_bell/dashboards/_form.html.erb +17 -0
  38. data/app/views/lesli_bell/dashboards/edit.html.erb +10 -0
  39. data/app/views/lesli_bell/dashboards/index.html.erb +14 -0
  40. data/app/views/lesli_bell/dashboards/new.html.erb +9 -0
  41. data/app/views/lesli_bell/dashboards/show.html.erb +1 -0
  42. data/app/views/lesli_bell/notifications/edit.html.erb +10 -0
  43. data/app/views/lesli_bell/notifications/index.html.erb +33 -0
  44. data/app/views/lesli_bell/notifications/new.html.erb +9 -0
  45. data/app/views/lesli_bell/notifications/show.html.erb +10 -0
  46. data/app/views/lesli_bell/partials/_engine-navigation.html.erb +24 -0
  47. data/config/routes.rb +6 -0
  48. data/db/migrate/v1.0/0308000110_create_lesli_bell_accounts.rb +28 -0
  49. data/db/migrate/v1.0/0308100110_create_lesli_bell_notifications.rb +41 -0
  50. data/db/migrate/v1.0/0308100210_create_lesli_bell_notification_activities.rb +17 -0
  51. data/db/migrate/v1.0/0308110110_create_lesli_bell_announcements.rb +40 -0
  52. data/db/migrate/v1.0/0308110210_create_lesli_bell_announcement_activities.rb +17 -0
  53. data/db/migrate/v1.0/0308110310_create_lesli_bell_announcement_users.rb +12 -0
  54. data/db/seed/development.rb +36 -0
  55. data/db/seed/production.rb +0 -0
  56. data/db/seed/test.rb +0 -0
  57. data/db/seeds.rb +25 -0
  58. data/lib/lesli_bell/engine.rb +18 -0
  59. data/lib/lesli_bell/version.rb +4 -0
  60. data/lib/lesli_bell.rb +6 -0
  61. data/lib/tasks/lesli_bell_tasks.rake +4 -0
  62. data/lib/vue/application.js +51 -0
  63. data/lib/vue/apps/announcements/components/form.vue +237 -0
  64. data/lib/vue/apps/announcements/index.vue +124 -0
  65. data/lib/vue/apps/announcements/new.vue +48 -0
  66. data/lib/vue/apps/notifications/components/notification-form.vue +149 -0
  67. data/lib/vue/apps/notifications/index.vue +129 -0
  68. data/lib/vue/apps/notifications/new.vue +45 -0
  69. data/lib/vue/stores/announcement.js +142 -0
  70. data/lib/vue/stores/notification.js +115 -0
  71. data/readme.md +28 -0
  72. metadata +116 -0
@@ -0,0 +1,115 @@
1
+ /*
2
+ Copyright (c) 2022, all rights reserved.
3
+
4
+ All the information provided by this platform is protected by international laws related to
5
+ industrial property, intellectual property, copyright and relative international laws.
6
+ All intellectual or industrial property rights of the code, texts, trade mark, design,
7
+ pictures and any other information belongs to the owner of this platform.
8
+
9
+ Without the written permission of the owner, any replication, modification,
10
+ transmission, publication is strictly forbidden.
11
+
12
+ For more information read the license file including with this software.
13
+
14
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
15
+ // ·
16
+ */
17
+
18
+
19
+ // ·
20
+ import { defineStore } from "pinia"
21
+
22
+ export const useBellNotification = defineStore("bell.Notification", {
23
+ state: () => {
24
+ return {
25
+ loading: false,
26
+ users: [],
27
+ roles: [],
28
+ filteredUsers: [],
29
+ filteredRoles: [],
30
+ record: {
31
+ subject: null,
32
+ body: null,
33
+ url: null,
34
+ status: null,
35
+ notification_type: null,
36
+ category: null,
37
+ },
38
+ receiverUsers: [],
39
+ receiverRoles: [],
40
+ pagination: {},
41
+ records: []
42
+ }
43
+ },
44
+ actions: {
45
+ /**
46
+ * @description This action is used to add pagination to notification index
47
+ * @param {Integer} page the actual page showing in the index
48
+ */
49
+ paginate(page) {
50
+ this.pagination.page = page
51
+ this.fetch()
52
+ },
53
+ /**
54
+ * @description This action is used to fetch all notifications
55
+ */
56
+ fetch() {
57
+ this.http.get(
58
+ this.url.bell("notifications").paginate(this.pagination.page)
59
+ ).then(result => {
60
+ this.pagination = result.pagination
61
+ this.records = result.records
62
+ })
63
+ },
64
+ /**
65
+ * @description This action is used to create a new notification
66
+ */
67
+ async createNotification() {
68
+ this.loading = true
69
+ this.msg.info(I18n.t("bell.notifications.messages_info_creating_notifications"))
70
+ return this.http.post(this.url.bell("notifications"), {
71
+ notification: {
72
+ ...this.record,
73
+ user_receiver_emails: this.receiverUsers.map(user => user.email),
74
+ role_receiver_names: this.receiverRoles.map(role => role.name),
75
+ }
76
+ }).then(() => {
77
+ this.msg.success(I18n.t("bell.notifications.messages_success_notification_created_successfully"))
78
+ }).catch(error => {
79
+ this.msg.danger(error)
80
+ }).finally(() => {
81
+ this.record = {}
82
+ this.receiverUsers = []
83
+ this.receiverRoles = []
84
+ this.loading = false
85
+ })
86
+ },
87
+ /**
88
+ * @description This action is used to get the list of users for showing them on the autocomplete field in the form
89
+ */
90
+ getUsers() {
91
+ this.loading = true
92
+ this.http.get(this.url.admin('users/list')).then(result => {
93
+ this.users = result
94
+ }).catch(error => {
95
+ this.msg.danger(error)
96
+ }).finally(() => {
97
+ this.loading = false
98
+ })
99
+ },
100
+ /**
101
+ * @description This action is used to get the list of roles for showing them on the autocomplete field in the form
102
+ */
103
+ getRoles() {
104
+ this.loading = true
105
+ this.http.get(this.url.admin('roles/list')).then(result => {
106
+ this.roles = result
107
+ }).catch(error => {
108
+ this.msg.danger(error)
109
+ }).finally(() => {
110
+ this.loading = false
111
+ })
112
+ },
113
+
114
+ }
115
+ })
data/readme.md ADDED
@@ -0,0 +1,28 @@
1
+ # LesliBell
2
+ Short description and motivation.
3
+
4
+ ## Usage
5
+ How to use my plugin.
6
+
7
+ ## Installation
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem "lesli_bell"
12
+ ```
13
+
14
+ And then execute:
15
+ ```bash
16
+ $ bundle
17
+ ```
18
+
19
+ Or install it yourself as:
20
+ ```bash
21
+ $ gem install lesli_bell
22
+ ```
23
+
24
+ ## Contributing
25
+ Contribution directions go here.
26
+
27
+ ## License
28
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lesli_bell
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - The Lesli Development Team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-10-01 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Notification system for The Lesli Platform
14
+ email:
15
+ - hello@lesli.tech
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - Rakefile
21
+ - app/assets/config/lesli_bell_manifest.js
22
+ - app/assets/javascripts/lesli_bell/application.js
23
+ - app/assets/stylesheets/lesli_bell/application.css
24
+ - app/controllers/lesli_bell/accounts_controller.rb
25
+ - app/controllers/lesli_bell/announcements_controller.rb
26
+ - app/controllers/lesli_bell/application_controller.rb
27
+ - app/controllers/lesli_bell/dashboards_controller.rb
28
+ - app/controllers/lesli_bell/notifications_controller.rb
29
+ - app/helpers/lesli_bell/accounts_helper.rb
30
+ - app/helpers/lesli_bell/announcements_helper.rb
31
+ - app/helpers/lesli_bell/application_helper.rb
32
+ - app/helpers/lesli_bell/dashboards_helper.rb
33
+ - app/helpers/lesli_bell/notifications_helper.rb
34
+ - app/jobs/lesli_bell/application_job.rb
35
+ - app/mailers/lesli_bell/application_mailer.rb
36
+ - app/models/lesli_bell/account.rb
37
+ - app/models/lesli_bell/announcement.rb
38
+ - app/models/lesli_bell/application_record.rb
39
+ - app/models/lesli_bell/dashboard.rb
40
+ - app/models/lesli_bell/notification.rb
41
+ - app/services/lesli_bell/notification_service.rb
42
+ - app/views/lesli_bell/accounts/_account.html.erb
43
+ - app/views/lesli_bell/accounts/_form.html.erb
44
+ - app/views/lesli_bell/accounts/edit.html.erb
45
+ - app/views/lesli_bell/accounts/index.html.erb
46
+ - app/views/lesli_bell/accounts/new.html.erb
47
+ - app/views/lesli_bell/accounts/show.html.erb
48
+ - app/views/lesli_bell/announcements/_announcement.html.erb
49
+ - app/views/lesli_bell/announcements/_form.html.erb
50
+ - app/views/lesli_bell/announcements/edit.html.erb
51
+ - app/views/lesli_bell/announcements/index.html.erb
52
+ - app/views/lesli_bell/announcements/new.html.erb
53
+ - app/views/lesli_bell/announcements/show.html.erb
54
+ - app/views/lesli_bell/dashboards/_dashboard.html.erb
55
+ - app/views/lesli_bell/dashboards/_form.html.erb
56
+ - app/views/lesli_bell/dashboards/edit.html.erb
57
+ - app/views/lesli_bell/dashboards/index.html.erb
58
+ - app/views/lesli_bell/dashboards/new.html.erb
59
+ - app/views/lesli_bell/dashboards/show.html.erb
60
+ - app/views/lesli_bell/notifications/edit.html.erb
61
+ - app/views/lesli_bell/notifications/index.html.erb
62
+ - app/views/lesli_bell/notifications/new.html.erb
63
+ - app/views/lesli_bell/notifications/show.html.erb
64
+ - app/views/lesli_bell/partials/_engine-navigation.html.erb
65
+ - config/routes.rb
66
+ - db/migrate/v1.0/0308000110_create_lesli_bell_accounts.rb
67
+ - db/migrate/v1.0/0308100110_create_lesli_bell_notifications.rb
68
+ - db/migrate/v1.0/0308100210_create_lesli_bell_notification_activities.rb
69
+ - db/migrate/v1.0/0308110110_create_lesli_bell_announcements.rb
70
+ - db/migrate/v1.0/0308110210_create_lesli_bell_announcement_activities.rb
71
+ - db/migrate/v1.0/0308110310_create_lesli_bell_announcement_users.rb
72
+ - db/seed/development.rb
73
+ - db/seed/production.rb
74
+ - db/seed/test.rb
75
+ - db/seeds.rb
76
+ - lib/lesli_bell.rb
77
+ - lib/lesli_bell/engine.rb
78
+ - lib/lesli_bell/version.rb
79
+ - lib/tasks/lesli_bell_tasks.rake
80
+ - lib/vue/application.js
81
+ - lib/vue/apps/announcements/components/form.vue
82
+ - lib/vue/apps/announcements/index.vue
83
+ - lib/vue/apps/announcements/new.vue
84
+ - lib/vue/apps/notifications/components/notification-form.vue
85
+ - lib/vue/apps/notifications/index.vue
86
+ - lib/vue/apps/notifications/new.vue
87
+ - lib/vue/stores/announcement.js
88
+ - lib/vue/stores/notification.js
89
+ - readme.md
90
+ homepage: https://www.lesli.dev/
91
+ licenses:
92
+ - GPL-3.0
93
+ metadata:
94
+ homepage_uri: https://www.lesli.dev/
95
+ changelog_uri: https://github.com/LesliTech/LesliBell
96
+ source_code_uri: https://github.com/LesliTech/LesliBell
97
+ post_install_message:
98
+ rdoc_options: []
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ requirements: []
112
+ rubygems_version: 3.3.7
113
+ signing_key:
114
+ specification_version: 4
115
+ summary: Notification system for The Lesli Platform
116
+ test_files: []