dcidev_approval 0.0.9 → 0.0.11

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dcidev_approval.rb +66 -66
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e97350e7fc396ea5b6badf639f46c97c256de119290e7f4cf209a29b55c13fc2
4
- data.tar.gz: 32378050bd803f53adf02652f4d5502b871e2ea6ce7aed380970a395d1562761
3
+ metadata.gz: 047563f0a296d733db4828b485a0446cd2757bb3f915809808555d44719a5e44
4
+ data.tar.gz: 2a3fb2c40952698d8ea669a33f67bb503e5a0dfb44d6c900caef2d4ef27e1231
5
5
  SHA512:
6
- metadata.gz: 59b9cf658199b5dd33f76c3eb22f6d302718a908f220d986a46d9fe90a28f82b490fbc31993a36193f555cadcd5bed77ef91f73c8276a513af210db61aa7f53b
7
- data.tar.gz: f800249db88dacaafadfaa400946f602753c558288e6f0671c25c780de21b3fd4660d4e4954472ec8d1264fde3b3214d9c24dee755284224d2cbb146979d85de
6
+ metadata.gz: b9ef11b07ae7f35c5c21c1a1c93da4565077570d5b277786a87b913d690b9b4885703cbed14337e8ecc9c16c5c0e3f822fd6359776cac2db608069dff51619d2
7
+ data.tar.gz: '099759cd2d503012da3ac66a22a28fee1b67b2d07e67f0c421ae348477fd7db1898a8fed75087d2365f9dff61cc3c189219fc9184105a0fb8e11990d55684856'
@@ -1,147 +1,146 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DcidevApproval
2
- def self.included base
4
+ def self.included(base)
3
5
  base.send :include, InstanceMethods
4
6
  base.extend ClassMethods
5
7
  end
6
8
 
7
9
  module InstanceMethods
8
-
9
10
  def changes_present?(changes)
10
11
  present = false
11
12
  changes.each do |k, v|
12
- begin
13
- if eval("self.#{k}") != v
14
- present = true
15
- break
16
- end
17
- rescue => _
13
+ if eval("self.#{k}") != v
14
+ present = true
15
+ break
18
16
  end
17
+ rescue StandardError => _e
19
18
  end
20
- return present
19
+ present
21
20
  end
22
21
 
23
22
  def waiting_approval?
24
- %w[pending_update pending_delete].include?(self.change_status) || self.status == "waiting"
23
+ %w[pending_update pending_delete].include?(change_status) || status == 'waiting'
25
24
  end
26
25
 
27
26
  def pending_insert?
28
- self.change_status.nil? && %w[waiting rejected].include?(self.status)
27
+ change_status.nil? && %w[waiting rejected].include?(status)
29
28
  end
30
29
 
31
30
  def pending_update?
32
- self.change_status == "pending_update"
31
+ change_status == 'pending_update'
33
32
  end
34
33
 
35
34
  def pending_delete?
36
- self.change_status == "pending_delete"
35
+ change_status == 'pending_delete'
37
36
  end
38
37
 
39
38
  def approved?
40
- self.status == "approved" || self.change_status.nil?
39
+ status == 'approved' || change_status.nil?
41
40
  end
42
41
 
43
42
  def rejected?
44
- self.status == "rejected"
43
+ status == 'rejected'
45
44
  end
46
45
 
47
46
  def waiting?
48
- self.status == "waiting"
47
+ status == 'waiting'
49
48
  end
50
49
 
51
50
  def last_modified_by
52
51
  # p self.audit_trail
53
- if self.try(:change_status).present? && self.try(:change_status) == 'pending_delete'
54
- log = self.activity_logs.where("activity LIKE '%delete%'").limit(1).order(created_at: :desc).try(:first)
55
- else
56
- log = self.activity_logs.where("activity LIKE '%edit%'").limit(1).order(created_at: :desc).try(:first)
57
- end
52
+ log = activity_logs.where(activity_type: %w[update delete]).limit(1).order(created_at: :desc).try(:first)
58
53
  {
59
- modified_by: log.present? ? log.try(:agent).try(:name).to_s + " (#{log.try(:agent).try(:username).to_s} | #{log.try(:agent).try(:roles).try(:first).try(:name)})" : nil,
60
- modified_at: log.present? ? log.try(:created_at) || self.try(:updated_at) || self.try(:created_at) : nil
54
+ modified_by: log.present? ? log.try(:agent).try(:name).to_s + " (#{log.try(:agent).try(:username)} | #{log.try(:agent).try(:roles).try(:first).try(:name)})" : nil,
55
+ modified_at: log.present? ? log.try(:created_at) || try(:updated_at) || try(:created_at) : nil
61
56
  }
62
57
  end
63
58
 
64
59
  def created_by
65
- log = self.activity_logs.try(:first)
60
+ log = activity_logs.order(created_at: :desc).limit(1).try(:first)
66
61
  {
67
- created_by: log.present? && log.try(:agent).try(:name).present? ? log.try(:agent).try(:name).to_s + " (#{log.try(:agent).try(:username).to_s} | #{log.try(:agent).try(:roles).try(:first).try(:name)})" : "System",
68
- created_at: self.try(:created_at) || log.try(:created_at)
62
+ created_by: log.present? && log.try(:agent).try(:name).present? ? log.try(:agent).try(:name).to_s + " (#{log.try(:agent_role).try(:name)})" : 'System',
63
+ created_at: try(:created_at) || log.try(:created_at)
69
64
  }
70
65
  end
71
66
 
72
67
  def last_approved_by
73
- last_approve = self.activity_logs.where("activity LIKE '%approv%'").limit(1).order(created_at: :desc).try(:first)
74
- last_entry = self.activity_logs.last
68
+ last_approve = activity_logs.where(activity_type: 'approve').limit(1).order(created_at: :desc).try(:first)
69
+ last_entry = activity_logs.limit(1).order(created_at: :desc).try(:first)
75
70
  {
76
- approved_by: last_approve.try(:id) == last_entry.try(:id) ? last_approve.try(:agent).try(:name).to_s + " (#{last_approve.try(:agent).try(:username).to_s} | #{last_approve.try(:agent).try(:roles).try(:first).try(:name)})" : nil,
71
+ approved_by: last_approve.try(:id) == last_entry.try(:id) ? last_approve.try(:agent).try(:name).to_s + " (#{last_approve.try(:agent_role).try(:name)})" : nil,
77
72
  approved_at: last_approve.try(:id) == last_entry.try(:id) ? last_approve.try(:created_at) : nil
78
73
  }
79
74
  end
80
75
 
81
76
  def approve_changes
82
-
83
- if self.change_status.nil? && %w[waiting rejected].include?(self.status)
84
- raise self.errors.full_messages.join(", ") unless self.update(status: :approved, data_changes: nil, change_status: nil)
77
+ if change_status.nil? && %w[waiting rejected].include?(status) && !update(status: :approved, data_changes: nil, change_status: nil)
78
+ raise errors.full_messages.join(', ')
85
79
  # ActivityLog.write("Approve insert to #{self.class.to_s}", request, agent, menu, self) if params.log
86
80
  # self.delay(queue: "reorder_#{self.id}", priority: 0).reorder if self.class.column_names.include?("view_order")
87
81
 
88
82
  end
89
- if self.change_status == "pending_update"
90
- raise self.errors.full_messages.join(", ") unless self.update_by_params(self.data_changes, false)
91
- raise self.errors.full_messages.join(", ") unless self.update(status: :approved, data_changes: nil, change_status: nil)
92
- # ActivityLog.write("Approve update to #{self.class.to_s}", request, agent, menu, self) if params.log
93
- # self.delay(queue: "reorder_#{self.id}", priority: 0).reorder if self.class.column_names.include?("view_order")
94
83
 
95
- elsif self.change_status == "pending_delete"
96
- raise self.errors.full_messages.join(", ") unless self.update(change_status: nil, data_changes: nil)
97
- ActiveRecord::Base.transaction do
98
- # ActivityLog.write("Approve delete to #{self.class.to_s}", request, agent, menu, self) if params.log
99
- self.try(:destroy)
100
- end
84
+ case change_status
85
+ when 'pending_update'
86
+ raise errors.full_messages.join(', ') unless update_by_params(data_changes, false)
87
+ raise errors.full_messages.join(', ') unless update(status: :approved, data_changes: nil, change_status: nil)
88
+ # ActivityLog.write("Approve update to #{self.class.to_s}", request, agent, menu, self) if params.log
89
+ # self.delay(queue: "reorder_#{self.id}", priority: 0).reorder if self.class.column_names.include?("view_order")
90
+
91
+ when 'pending_delete'
92
+ destroy
101
93
  end
102
94
  end
103
95
 
104
96
  def delete_changes
105
97
  # return unless %w[pending_update pending_delete].include? self.change_status
106
- raise self.errors.full_messages.join(", ") unless self.update(data_changes: nil, change_status: nil, status: self.status == "waiting" ? :rejected : :approved)
98
+ raise errors.full_messages.join(', ') unless update(data_changes: nil, change_status: nil, status: status == 'waiting' ? :rejected : :approved)
107
99
  # ActivityLog.write("Reject changes to #{self.class.to_s}", request, agent, menu, self) if params.log
108
100
  end
109
101
 
110
102
  def edit_data(params, agent, bypass = true)
111
- raise "data still waiting for approval" if self.waiting_approval?
103
+ raise 'data still waiting for approval' if waiting_approval?
104
+
112
105
  if bypass
113
- raise self.errors.full_messages.join(", ") unless self.update_by_params(params, false)
114
- # ActivityLog.write("Edit #{self.class.to_s}", request, agent, menu, self) if params.log
115
- else
116
- if self.changes_present?(params)
117
- ActiveRecord::Base.transaction do
118
- data = (agent.is_admin? || self.status == "waiting") ? params : { change_status: :pending_update, data_changes: agent.is_admin? ? nil : params }
119
- raise self.errors.full_messages.join(", ") unless self.update_by_params(data, false)
120
- end
121
- # ActivityLog.write("#{agent.is_admin? ? nil : "Request "}Edit #{self.class.to_s}", request, agent, menu, self) if params.log
106
+ raise errors.full_messages.join(', ') unless update_by_params(params, false)
107
+ # ActivityLog.write("Edit #{self.class.to_s}", request, agent, menu, self) if params.log
108
+ elsif changes_present?(params)
109
+ ActiveRecord::Base.transaction do
110
+ data = if agent.is_admin? || status == 'waiting'
111
+ params
112
+ else
113
+ {
114
+ change_status: :pending_update, data_changes: agent.is_admin? ? nil : params
115
+ }
116
+ end
117
+ raise errors.full_messages.join(', ') unless update_by_params(data, false)
122
118
  end
119
+ # ActivityLog.write("#{agent.is_admin? ? nil : "Request "}Edit #{self.class.to_s}", request, agent, menu, self) if params.log
123
120
  end
124
121
  yield self
125
122
  end
126
123
 
127
124
  def approval(params)
128
- if params.status == "approved"
129
- self.approve_changes
130
- elsif params.status == "rejected"
131
- self.delete_changes
125
+ case params.status
126
+ when 'approved'
127
+ approve_changes
128
+ when 'rejected'
129
+ delete_changes
132
130
  end
133
131
  yield self
134
132
  end
135
133
 
136
134
  def delete_data(agent, bypass = true)
137
- raise "data still waiting for approval" if self.waiting_approval?
135
+ raise 'data still waiting for approval' if waiting_approval?
136
+
138
137
  if bypass || agent.is_admin?
139
138
  ActiveRecord::Base.transaction do
140
139
  # ActivityLog.write("Delete #{self.class.to_s}", request, agent, menu, self) if params.log
141
- raise self.errors.full_messages.join(", ") unless self.destroy
140
+ raise errors.full_messages.join(', ') unless destroy
142
141
  end
143
142
  else
144
- raise self.errors.full_messages.join(", ") unless self.update(change_status: :pending_delete)
143
+ raise errors.full_messages.join(', ') unless update(change_status: :pending_delete)
145
144
  # ActivityLog.write("Request Delete #{self.class.to_s}", request, agent, menu, self) if params.log
146
145
  end
147
146
  yield true
@@ -153,18 +152,19 @@ module DcidevApproval
153
152
  if bypass
154
153
  ActiveRecord::Base.transaction do
155
154
  data = params.merge!({ status: :approved })
156
- d = self.new_from_params(data)
157
- raise d.errors.full_messages.join(", ") unless d.save
155
+ d = new_from_params(data)
156
+ raise d.errors.full_messages.join(', ') unless d.save
157
+
158
158
  yield d
159
159
  # ActivityLog.write("#{agent.is_admin? ? nil : "Request "} Add #{self.to_s}", request, agent, menu, d) if params.log
160
160
  end
161
161
  else
162
- d = self.new_from_params(params)
162
+ d = new_from_params(params)
163
163
  d.status = agent.is_admin? ? :approved : :waiting
164
- raise d.errors.full_messages.join(", ") unless d.save
164
+ raise d.errors.full_messages.join(', ') unless d.save
165
+
165
166
  yield d
166
167
  end
167
168
  end
168
169
  end
169
170
  end
170
-
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dcidev_approval
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Punto Damar P
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-09 00:00:00.000000000 Z
11
+ date: 2022-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dcidev_active_record