unidom-action 1.0 → 1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3471b684f908d9fbc84708e8ae0a07b687fd9716
4
- data.tar.gz: b8fa0235ba1e59ce7d1c68c5900763aacff46013
3
+ metadata.gz: 87b412b4d3977bfe6aecef7b9c8b27ac899954b5
4
+ data.tar.gz: d839f30d586c5f32cab8bb71427710fb4876b433
5
5
  SHA512:
6
- metadata.gz: 6123fd18b1db0fa66a3241569d8b19412d801cf25b2b8696f2711b78a77a6b8272c5ff44cf07ac1494dc9dab6e22f58aad05992f073a2adf10491a1fec74eb44
7
- data.tar.gz: cf160b984f506f2aeec2322187f3e85e335ea9468d40fef556f2a7b9d5139999920fb413fe5745827b86aca5f4f07dac6d2ba18d96664e92c2ea8bf3db32abbc
6
+ metadata.gz: 8afc0fed64acea96ba1c8b38bbc7a2f982423846505f5da9df5a83030a436d3ba6c2d8dd840b3ea0d9c0696cfc085707a3a60d0095afec1d10f432c69c6ab832
7
+ data.tar.gz: 249df032859f87e078db5875f4e9350393dc52f3205d783ac07b2b10211a8a48102d58244b995c0e26d7471de94d9ef7b879460e56b1cccaf39f2e15ebec6fe6
data/README.md CHANGED
@@ -44,6 +44,7 @@ user = Unidom::Visitor::User.create!
44
44
  # Create/Update/Delete the person
45
45
  person = Unidom::Party::Person.create! name: 'Tim'
46
46
  acting = Unidom::Action::Acting.create! actor_visitor: user, actor_party: person, reason: reason, acted: person, from_value: {}, thru_value: { name: 'Time' }
47
+ actings = Unidom::Action::Acting.acted_via(user).acted_by(person).acted_is(person).caused_by(reason)
47
48
 
48
49
  # Update the state of the person
49
50
  person.state = 'R'
@@ -53,15 +54,16 @@ transition = Unidom::Action::StateTransition.create! transitor_visitor: user, tr
53
54
  # The following source code also create a state transition to record the above change
54
55
  transition = Unidom::Action::StateTransition.transit! transitor_visitor: user, transitor_party: person, reason: reason, subject: person, from_state: 'C', thru_state: 'R', opened_at: Time.now
55
56
  # The reason could be nil.
57
+ transitions = Unidom::Action::StateTransition.transited_via(user).transited_by(person).subject_is(subject).caused_by(reason).from_transited_to('C').thru_transited_to('R')
56
58
 
57
59
  # Soft destroy the person
58
60
  person.soft_destroy
59
61
  # Create an obsolescing to record the above change
60
- obsolescence = Unidom::Action::Obsolescing.create! obsolescer_visitor: user, obsolescer_party: person, reason: reason, obsolesced: person, obsolescence_code: 'OBSL'
62
+ obsolescing = Unidom::Action::Obsolescing.create! obsolescer_visitor: user, obsolescer_party: person, reason: reason, obsolesced: person, obsolescence_code: 'OBSL'
61
63
  # The following source code also create an obsolescing to record the above change
62
- obsolescence = Unidom::Action::Obsolescing.obsolesce! obsolesced: person, obsolescer_visitor: user, obsolescer_party: person, reason: reason, obsolescence_code: 'OBSL', opened_at: Time.now
63
-
64
+ obsolescing = Unidom::Action::Obsolescing.obsolesce! obsolesced: person, obsolescer_visitor: user, obsolescer_party: person, reason: reason, obsolescence_code: 'OBSL', opened_at: Time.now
64
65
  # The reason could be nil.
66
+ obsolescings = Unidom::Action::Obsolescing.obsolesced_via(user).obsolesced_by(person).obsolesced_is(person).caused_by(reason).obsolescence_coded_as('OBSL')
65
67
  ```
66
68
 
67
69
 
@@ -14,4 +14,9 @@ class Unidom::Action::Acting < Unidom::Action::ApplicationRecord
14
14
  belongs_to :acted, polymorphic: true
15
15
  belongs_to :reason, class_name: 'Unidom::Action::Reason'
16
16
 
17
+ scope :acted_via, ->(actor_visitor) { where actor_visitor: actor_visitor }
18
+ scope :acted_by, ->(actor_party) { where actor_party: actor_party }
19
+ scope :acted_is, ->(acted) { where acted: acted }
20
+ scope :caused_by, ->(reason) { where reason_id: to_id(reason) }
21
+
17
22
  end
@@ -6,6 +6,22 @@ module Unidom::Action::Concerns::AsStateSubject
6
6
 
7
7
  has_many :state_transitions, class_name: 'Unidom::Action::StateTransition', as: :subject
8
8
 
9
+ =begin
10
+ def is_transited!(from: nil, thru: nil, due_to: nil, via: nil, by: nil, at: Time.now)
11
+ state_transitions.create! from_state: from, thru_state: thru, transitor_visitor: via, transitor_party: by, reason: due_to, opened_at: at
12
+ end
13
+
14
+ def is_transited?(from: nil, thru: nil, due_to: nil, via: nil, by: nil, at: Time.now)
15
+ query = state_transitions
16
+ query = query.from_transited_to from if from.present?
17
+ query = query.thru_transited_to from if thru.present?
18
+ query = query.transited_by by if by.present?
19
+ query = query.transited_via via if via.present?
20
+ query = query.caused_by due_to if due_to.present?
21
+ query = query.valid_at now: at if at.present?
22
+ query.exists?
23
+ end
24
+ =end
9
25
  end
10
26
 
11
27
  module ClassMethods
@@ -14,6 +14,11 @@ class Unidom::Action::Obsolescing < Unidom::Action::ApplicationRecord
14
14
  belongs_to :obsolesced, polymorphic: true
15
15
  belongs_to :reason, class_name: 'Unidom::Action::Reason'
16
16
 
17
+ scope :obsolesced_via, ->(obsolescer_visitor) { where obsolescer_visitor: obsolescer_visitor }
18
+ scope :obsolesced_by, ->(obsolescer_party) { where obsolescer_party: obsolescer_party }
19
+ scope :obsolesced_is, ->(obsolesced) { where obsolesced: obsolesced }
20
+ scope :caused_by, ->(reason) { where reason_id: to_id(reason) }
21
+
17
22
  def self.obsolesce!(obsolesced: nil, obsolescer_visitor: nil, obsolescer_party: nil, reason: nil, obsolescence_code: 'OBSL', opened_at: Time.now)
18
23
  create! obsolesced: obsolesced, obsolescer_visitor: obsolescer_visitor, obsolescer_party: obsolescer_party, reason: reason, obsolescence_code: obsolescence_code, opened_at: opened_at
19
24
  end
@@ -13,6 +13,11 @@ class Unidom::Action::StateTransition < Unidom::Action::ApplicationRecord
13
13
  belongs_to :subject, polymorphic: true
14
14
  belongs_to :reason, class_name: 'Unidom::Action::Reason'
15
15
 
16
+ scope :transited_via, ->(transitor_visitor) { where transitor_visitor: transitor_visitor }
17
+ scope :transited_by, ->(transitor_party) { where transitor_party: transitor_party }
18
+ scope :subject_is, ->(subject) { where subject: subject }
19
+ scope :caused_by, ->(reason) { where reason_id: to_id(reason) }
20
+
16
21
  def self.transit!(subject: nil, from_state: nil, thru_state: nil, transitor_visitor: nil, transitor_party: nil, reason: nil, opened_at: Time.now)
17
22
  create! transitor_visitor: transitor_visitor, transitor_party: transitor_party, subject: subject, reason: reason, from_state: from_state, thru_state: thru_state, opened_at: opened_at
18
23
  end
@@ -1,5 +1,5 @@
1
1
  module Unidom
2
2
  module Action
3
- VERSION = '1.0'.freeze
3
+ VERSION = '1.1'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unidom-action
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: '1.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Topbit Du
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-08 00:00:00.000000000 Z
11
+ date: 2016-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unidom-common