dcidev_approval 0.0.9 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
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