Class: Osm::Event::Attendance
Instance Attribute Summary collapse
-
#attending ⇒ Symbol
Whether the member is attending (either :yes, :no, :invited, :shown, :reserved or nil).
-
#date_of_birth ⇒ Date
The member’s date of birth.
-
#fields ⇒ Hash
Keys are the field’s id, values are the field values.
-
#first_name ⇒ String
The member’s first name.
-
#grouping__id ⇒ Fixnum
OSM id for the grouping the member is in.
-
#last_name ⇒ String
The member’s last name.
-
#member_id ⇒ Fixnum
OSM id for the member.
-
#payment_control ⇒ Symbol
Whether payments are done manually or automatically (either :manual, :automatic or nil).
-
#payments ⇒ Hash
Keys are the payment’s id, values are the payment state.
-
#row ⇒ Fixnum
Part of the OSM API.
Instance Method Summary collapse
-
#<=>(another) ⇒ Object
Compare Attendance based on event then row.
-
#get_audit_trail(api, options = {}) ⇒ Array<Hash>
Get audit trail.
- #inspect ⇒ Object
-
#update(api) ⇒ Boolean
Update event attendance.
Methods inherited from Model
#<, #<=, #>, #>=, #between?, #changed_attributes, configure, #reset_changed_attributes, #to_i
Instance Attribute Details
#attending ⇒ Symbol
Returns whether the member is attending (either :yes, :no, :invited, :shown, :reserved or nil).
536 |
# File 'lib/osm/event.rb', line 536 attribute :row, :type => Integer |
#date_of_birth ⇒ Date
Returns the member’s date of birth.
536 |
# File 'lib/osm/event.rb', line 536 attribute :row, :type => Integer |
#fields ⇒ Hash
Returns Keys are the field’s id, values are the field values.
536 |
# File 'lib/osm/event.rb', line 536 attribute :row, :type => Integer |
#first_name ⇒ String
Returns the member’s first name.
536 |
# File 'lib/osm/event.rb', line 536 attribute :row, :type => Integer |
#grouping__id ⇒ Fixnum
Returns OSM id for the grouping the member is in.
536 |
# File 'lib/osm/event.rb', line 536 attribute :row, :type => Integer |
#last_name ⇒ String
Returns the member’s last name.
536 |
# File 'lib/osm/event.rb', line 536 attribute :row, :type => Integer |
#member_id ⇒ Fixnum
Returns OSM id for the member.
536 |
# File 'lib/osm/event.rb', line 536 attribute :row, :type => Integer |
#payment_control ⇒ Symbol
Returns whether payments are done manually or automatically (either :manual, :automatic or nil).
536 |
# File 'lib/osm/event.rb', line 536 attribute :row, :type => Integer |
#payments ⇒ Hash
Returns keys are the payment’s id, values are the payment state.
536 |
# File 'lib/osm/event.rb', line 536 attribute :row, :type => Integer |
#row ⇒ Fixnum
Returns part of the OSM API.
536 |
# File 'lib/osm/event.rb', line 536 attribute :row, :type => Integer |
Instance Method Details
#<=>(another) ⇒ Object
Compare Attendance based on event then row
723 724 725 726 727 |
# File 'lib/osm/event.rb', line 723 def <=>(another) result = self.event <=> another.try(:event) result = self.row <=> another.try(:row) if result == 0 return result end |
#get_audit_trail(api, options = {}) ⇒ Array<Hash>
Get audit trail
644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 |
# File 'lib/osm/event.rb', line 644 def get_audit_trail(api, ={}) require_ability_to(api, :read, :events, event.section_id, ) cache_key = ['event\_attendance\_audit', event.id, member_id] if ![:no_cache] && cache_exist?(api, cache_key) return cache_read(api, cache_key) end data = api.perform_query("events.php?action=getEventAudit§ionid=#{event.section_id}&scoutid=#{member_id}&eventid=#{event.id}") data ||= [] attending_values = { 'Yes' => :yes, 'No' => :no, 'Invited' => :invited, 'Show in My.SCOUT' => :shown, 'Reserved' => :reserved, } trail = [] data.each do |item| this_item = { :at => DateTime.strptime(item['date'], '%d/%m/%Y %H:%M'), :by => item['updatedby'].strip, :type => item['type'].to_sym, :description => item['desc'], :event_id => event.id, :member_id => member_id, :event_attendance => self, } if this_item[:type].eql?(:detail) results = this_item[:description].match(/\ASet '(?<label>.+)' to '(?<value>.+)'\Z/) this_item[:label] = results[:label] this_item[:value] = results[:value] end if this_item[:type].eql?(:attendance) results = this_item[:description].match(/\AAttendance: (?<attending>.+)\Z/) this_item[:attendance] = attending_values[results[:attending]] end trail.push this_item end cache_write(api, cache_key, trail) return trail end |
#inspect ⇒ Object
729 730 731 |
# File 'lib/osm/event.rb', line 729 def inspect Osm.inspect_instance(self, ={:replace_with => {'event' => :id}}) end |
#update(api) ⇒ Boolean
Update event attendance
580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 |
# File 'lib/osm/event.rb', line 580 def update(api) require_ability_to(api, :write, :events, event.section_id) payment_values = { :manual => 'Manual', :automatic => 'Automatic', } attending_values = { :yes => 'Yes', :no => 'No', :invited => 'Invited', :shown => 'Show in My.SCOUT', :reserved => 'Reserved', } updated = true fields.changes.each do |field, (was,now)| data = api.perform_query("events.php?action=updateScout", { 'scoutid' => member_id, 'column' => "f_#{field}", 'value' => now, 'sectionid' => event.section_id, 'row' => row, 'eventid' => event.id, }) updated = false unless data.is_a?(Hash) end if changed_attributes.include?('payment_control') data = api.perform_query("events.php?action=updateScout", { 'scoutid' => member_id, 'column' => 'payment', 'value' => payment_values[payment_control], 'sectionid' => event.section_id, 'row' => row, 'eventid' => event.id, }) updated = false unless data.is_a?(Hash) end if changed_attributes.include?('attending') data = api.perform_query("events.php?action=updateScout", { 'scoutid' => member_id, 'column' => 'attending', 'value' => attending_values[attending], 'sectionid' => event.section_id, 'row' => row, 'eventid' => event.id, }) updated = false unless data.is_a?(Hash) end if updated reset_changed_attributes fields.clean_up! # The cached event attedance will be out of date cache_delete(api, ['event_attendance', event.id]) end return updated end |