cats_core 1.0.7 → 1.0.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f63ca1ecd41f30f836b69ec7fe22516bfaa33bf2a11ee4ec5e6caed08e03e9bf
4
- data.tar.gz: fa4684f9b135314f7a4ffd8a9f193d999075b01ee5dbdbd2468069bedac98453
3
+ metadata.gz: 45dbf26292f9ebc98fb50e4195e44773184d3f460c0d5aadb3c45afcffffa752
4
+ data.tar.gz: 7cab2b31272ec765c42d8cd8724f1d8f3daff1481fd82057edf08ed40ce389b3
5
5
  SHA512:
6
- metadata.gz: 6155d6dde44af9a51af349e9528c1e139cfadb333f90324095a608f95aee7d2c5335f35965839d4f273083530d966188736047d9a9c451fa842cf028eb6cfbda
7
- data.tar.gz: e015635c7c13d4418ecaec59c7d103831f362896732a6386369a22e12c7aa71fdf8e0654a149e8b7926491a6a771f0c5717e7a82e3666a6f9aa8abfb66e446a3
6
+ metadata.gz: 6017835a41ce450bb778aea397234083ac257ec74b1f995a5087811dfae0db693172468ceed14c11ef8433dd26eca298436256ff8fc876a7482e8ce2610d46bb
7
+ data.tar.gz: 87ff5af9c3533a23b57ede84a3547818b7f54e51cfb629dbd8f3c26c6de73900f974c2ecb0bc38c999b01bdd29a0b7260daf4ec03510407fae8511d85ae372d3
@@ -1,14 +1,36 @@
1
1
  module Cats
2
2
  module Core
3
3
  class NotificationsController < ApplicationController
4
+ before_action :set_notification, only: %i[mark_as_read mark_as_unread]
4
5
  def index
5
- data = { success: true, data: current_user.notifications.newest_first }
6
- render json: data
6
+ data = Notification.messages(current_user.notifications.newest_first)
7
+ render json: { success: true, data: data }
8
+ end
9
+
10
+ def read
11
+ data = Notification.messages(current_user.notifications.read.newest_first)
12
+ render json: { success: true, data: data }
7
13
  end
8
14
 
9
15
  def unread
10
- data = { success: true, data: current_user.notifications.unread.newest_first }
11
- render json: data
16
+ data = Notification.messages(current_user.notifications.unread.newest_first)
17
+ render json: { success: true, data: data }
18
+ end
19
+
20
+ def mark_as_read
21
+ @notification.mark_as_read!
22
+ render json: { success: true, data: @notification.message }
23
+ end
24
+
25
+ def mark_as_unread
26
+ @notification.mark_as_unread!
27
+ render json: { success: true, data: @notification.message }
28
+ end
29
+
30
+ private
31
+
32
+ def set_notification
33
+ @notification = Notification.find(params[:id])
12
34
  end
13
35
  end
14
36
  end
@@ -0,0 +1,18 @@
1
+ module Cats
2
+ module Core
3
+ class RolesController < ApplicationController
4
+ before_action :set_role, only: [:users]
5
+
6
+ def users
7
+ data = ActiveModelSerializers::SerializableResource.new(@role.users)
8
+ render json: { success: true, data: data }
9
+ end
10
+
11
+ private
12
+
13
+ def set_role
14
+ @role = Role.find(params[:id])
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,23 @@
1
+ module Cats
2
+ module Core
3
+ class UsersController < ApplicationController
4
+ before_action :set_user, only: %i[stores warehouses]
5
+
6
+ def stores
7
+ data = ActiveModelSerializers::SerializableResource.new(@user.stores)
8
+ render json: { success: true, data: data }
9
+ end
10
+
11
+ def warehouses
12
+ data = ActiveModelSerializers::SerializableResource.new(@user.warehouses)
13
+ render json: { success: true, data: data }
14
+ end
15
+
16
+ private
17
+
18
+ def set_user
19
+ @user = User.find(params[:id])
20
+ end
21
+ end
22
+ end
23
+ end
@@ -6,7 +6,11 @@ module Cats
6
6
  belongs_to :recipient, polymorphic: true
7
7
 
8
8
  def message
9
- to_notification.message
9
+ { id: id, read: !read_at.nil? }.merge(to_notification.message)
10
+ end
11
+
12
+ def self.messages(notifications)
13
+ notifications.map(&:message)
10
14
  end
11
15
  end
12
16
  end
@@ -2,6 +2,7 @@ module Cats
2
2
  module Core
3
3
  class Role < ApplicationRecord
4
4
  belongs_to :application_module
5
+ has_and_belongs_to_many :users, join_table: :cats_core_users_cats_core_roles
5
6
  has_many :role_menus
6
7
 
7
8
  validates :name, presence: true
@@ -11,6 +11,18 @@ module Cats
11
11
  validates :first_name, :last_name, :email, presence: true
12
12
  validates :password, length: { minimum: 6 }
13
13
  validates :email, uniqueness: true, format: { with: URI::MailTo::EMAIL_REGEXP }
14
+
15
+ def warehouses
16
+ return unless details.key?('warehouses')
17
+
18
+ Cats::Core::Location.where(id: details['warehouses'], location_type: Cats::Core::Location::WAREHOUSE)
19
+ end
20
+
21
+ def stores
22
+ return unless details.key?('stores')
23
+
24
+ Cats::Core::Store.where(id: details['stores'])
25
+ end
14
26
  end
15
27
  end
16
28
  end
data/config/routes.rb CHANGED
@@ -1,5 +1,22 @@
1
1
  Cats::Core::Engine.routes.draw do
2
2
  get '/notifications/unread', controller: :notifications, action: :unread
3
+ get '/notifications/read', controller: :notifications, action: :read
3
4
 
4
- resources :notifications, only: [:index]
5
+ resources :notifications, only: [:index] do
6
+ member do
7
+ post 'mark_as_read', controller: :notifications, action: :mark_as_read
8
+ post 'mark_as_unread', controller: :notifications, action: :mark_as_unread
9
+ end
10
+ end
11
+ resources :roles do
12
+ member do
13
+ get 'users', controller: :roles, action: :users
14
+ end
15
+ end
16
+ resources :users do
17
+ member do
18
+ get 'stores', controller: :users, action: :stores
19
+ get 'warehouses', controller: :users, action: :warehouses
20
+ end
21
+ end
5
22
  end
@@ -1,5 +1,5 @@
1
1
  module Cats
2
2
  module Core
3
- VERSION = '1.0.7'.freeze
3
+ VERSION = '1.0.8'.freeze
4
4
  end
5
5
  end
data/lib/cats_core.rb CHANGED
@@ -4,3 +4,4 @@ require 'ancestry'
4
4
  require 'rolify'
5
5
  require 'jwt'
6
6
  require 'noticed'
7
+ require 'active_model_serializers'
@@ -1,7 +1,7 @@
1
1
  FactoryBot.define do
2
2
  factory :notification, class: 'Cats::Core::Notification' do
3
3
  recipient factory: :user
4
- type { nil }
4
+ type { 'ExampleNotification' }
5
5
  params { {} }
6
6
  read_at { Date.today }
7
7
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cats_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henock L.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-04 00:00:00.000000000 Z
11
+ date: 2021-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: active_model_serializers
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: ancestry
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -204,6 +218,8 @@ files:
204
218
  - Rakefile
205
219
  - app/controllers/cats/core/application_controller.rb
206
220
  - app/controllers/cats/core/notifications_controller.rb
221
+ - app/controllers/cats/core/roles_controller.rb
222
+ - app/controllers/cats/core/users_controller.rb
207
223
  - app/jobs/cats/core/application_job.rb
208
224
  - app/models/cats/core/application_module.rb
209
225
  - app/models/cats/core/application_record.rb