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).
747 |
# File 'lib/osm/event.rb', line 747 attribute :row, :type => Integer |
#date_of_birth ⇒ Date
Returns the member’s date of birth.
747 |
# File 'lib/osm/event.rb', line 747 attribute :row, :type => Integer |
#fields ⇒ Hash
Returns Keys are the field’s id, values are the field values.
747 |
# File 'lib/osm/event.rb', line 747 attribute :row, :type => Integer |
#first_name ⇒ String
Returns the member’s first name.
747 |
# File 'lib/osm/event.rb', line 747 attribute :row, :type => Integer |
#grouping__id ⇒ Fixnum
Returns OSM id for the grouping the member is in.
747 |
# File 'lib/osm/event.rb', line 747 attribute :row, :type => Integer |
#last_name ⇒ String
Returns the member’s last name.
747 |
# File 'lib/osm/event.rb', line 747 attribute :row, :type => Integer |
#member_id ⇒ Fixnum
Returns OSM id for the member.
747 |
# File 'lib/osm/event.rb', line 747 attribute :row, :type => Integer |
#payment_control ⇒ Symbol
Returns whether payments are done manually or automatically (either :manual, :automatic or nil).
747 |
# File 'lib/osm/event.rb', line 747 attribute :row, :type => Integer |
#payments ⇒ Hash
Returns keys are the payment’s id, values are the payment state.
747 |
# File 'lib/osm/event.rb', line 747 attribute :row, :type => Integer |
#row ⇒ Fixnum
Returns part of the OSM API.
747 |
# File 'lib/osm/event.rb', line 747 attribute :row, :type => Integer |
Instance Method Details
#<=>(another) ⇒ Object
Compare Attendance based on event then row
936 937 938 939 940 |
# File 'lib/osm/event.rb', line 936 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
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 895 896 897 898 899 900 901 |
# File 'lib/osm/event.rb', line 857 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
942 943 944 |
# File 'lib/osm/event.rb', line 942 def inspect Osm.inspect_instance(self, ={:replace_with => {'event' => :id}}) end |
#update(api) ⇒ Boolean
Update event attendance
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 845 846 847 848 849 850 851 |
# File 'lib/osm/event.rb', line 793 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 |