Class: Osm::Event::Attendance
Constant Summary collapse
- SORT_BY =
[:event, :row]
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
-
#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).
740 |
# File 'lib/osm/event.rb', line 740 attribute :row, :type => Integer |
#date_of_birth ⇒ Date
Returns the member’s date of birth.
740 |
# File 'lib/osm/event.rb', line 740 attribute :row, :type => Integer |
#fields ⇒ Hash
Returns Keys are the field’s id, values are the field values.
740 |
# File 'lib/osm/event.rb', line 740 attribute :row, :type => Integer |
#first_name ⇒ String
Returns the member’s first name.
740 |
# File 'lib/osm/event.rb', line 740 attribute :row, :type => Integer |
#grouping__id ⇒ Fixnum
Returns OSM id for the grouping the member is in.
740 |
# File 'lib/osm/event.rb', line 740 attribute :row, :type => Integer |
#last_name ⇒ String
Returns the member’s last name.
740 |
# File 'lib/osm/event.rb', line 740 attribute :row, :type => Integer |
#member_id ⇒ Fixnum
Returns OSM id for the member.
740 |
# File 'lib/osm/event.rb', line 740 attribute :row, :type => Integer |
#payment_control ⇒ Symbol
Returns whether payments are done manually or automatically (either :manual, :automatic or nil).
740 |
# File 'lib/osm/event.rb', line 740 attribute :row, :type => Integer |
#payments ⇒ Hash
Returns keys are the payment’s id, values are the payment state.
740 |
# File 'lib/osm/event.rb', line 740 attribute :row, :type => Integer |
#row ⇒ Fixnum
Returns part of the OSM API.
740 |
# File 'lib/osm/event.rb', line 740 attribute :row, :type => Integer |
Instance Method Details
#get_audit_trail(api, options = {}) ⇒ Array<Hash>
Get audit trail
850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 |
# File 'lib/osm/event.rb', line 850 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
928 929 930 |
# File 'lib/osm/event.rb', line 928 def inspect Osm.inspect_instance(self, ={:replace_with => {'event' => :id}}) end |
#update(api) ⇒ Boolean
Update event attendance
786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 |
# File 'lib/osm/event.rb', line 786 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 |