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).
749 |
# File 'lib/osm/event.rb', line 749 attribute :row, :type => Integer |
#date_of_birth ⇒ Date
Returns the member’s date of birth.
749 |
# File 'lib/osm/event.rb', line 749 attribute :row, :type => Integer |
#fields ⇒ Hash
Returns Keys are the field’s id, values are the field values.
749 |
# File 'lib/osm/event.rb', line 749 attribute :row, :type => Integer |
#first_name ⇒ String
Returns the member’s first name.
749 |
# File 'lib/osm/event.rb', line 749 attribute :row, :type => Integer |
#grouping__id ⇒ Fixnum
Returns OSM id for the grouping the member is in.
749 |
# File 'lib/osm/event.rb', line 749 attribute :row, :type => Integer |
#last_name ⇒ String
Returns the member’s last name.
749 |
# File 'lib/osm/event.rb', line 749 attribute :row, :type => Integer |
#member_id ⇒ Fixnum
Returns OSM id for the member.
749 |
# File 'lib/osm/event.rb', line 749 attribute :row, :type => Integer |
#payment_control ⇒ Symbol
Returns whether payments are done manually or automatically (either :manual, :automatic or nil).
749 |
# File 'lib/osm/event.rb', line 749 attribute :row, :type => Integer |
#payments ⇒ Hash
Returns keys are the payment’s id, values are the payment state.
749 |
# File 'lib/osm/event.rb', line 749 attribute :row, :type => Integer |
#row ⇒ Fixnum
Returns part of the OSM API.
749 |
# File 'lib/osm/event.rb', line 749 attribute :row, :type => Integer |
Instance Method Details
#get_audit_trail(api, options = {}) ⇒ Array<Hash>
Get audit trail
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 895 896 897 898 899 900 901 902 903 |
# File 'lib/osm/event.rb', line 859 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
937 938 939 |
# File 'lib/osm/event.rb', line 937 def inspect Osm.inspect_instance(self, ={:replace_with => {'event' => :id}}) end |
#update(api) ⇒ Boolean
Update event attendance
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 845 846 847 848 849 850 851 852 853 |
# File 'lib/osm/event.rb', line 795 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 |