Method: Osm::Event.create
- Defined in:
- lib/osm/event.rb
.create(api, parameters) ⇒ Osm::Event?
Create an event in OSM If something goes wrong adding badges to OSM then the event returned will have been read from OSM
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 |
# File 'lib/osm/event.rb', line 209 def self.create(api, parameters) require_ability_to(api, :write, :events, parameters[:section_id]) event = new(parameters) raise Osm::ObjectIsInvalid, 'event is invalid' unless event.valid? data = api.perform_query("events.php?action=addEvent§ionid=#{event.section_id}", { 'name' => event.name, 'location' => event.location, 'startdate' => event.start? ? event.start.strftime(Osm::OSM_DATE_FORMAT) : '', 'enddate' => event.finish? ? event.finish.strftime(Osm::OSM_DATE_FORMAT) : '', 'cost' => event.cost_tbc? ? '-1' : event.cost, 'notes' => event.notes, 'starttime' => event.start? ? event.start.strftime(Osm::OSM_TIME_FORMAT) : '', 'endtime' => event.finish? ? event.finish.strftime(Osm::OSM_TIME_FORMAT) : '', 'confdate' => event.confirm_by_date? ? event.confirm_by_date.strftime(Osm::OSM_DATE_FORMAT) : '', 'allowChanges' => event.allow_changes ? 'true' : 'false', 'disablereminders' => !event.reminders ? 'true' : 'false', 'attendancelimit' => event.attendance_limit, 'attendancereminder' => event.attendance_reminder, 'limitincludesleaders' => event.attendance_limit_includes_leaders ? 'true' : 'false', 'allowbooking' => event.allow_booking ? 'true' : 'false', }) if (data.is_a?(Hash) && data.has_key?('id')) event.id = data['id'].to_i # The cached events for the section will be out of date - remove them cache_delete(api, ['events', event.section_id]) # Add badge links to OSM badges_created = true event.badges.each do |badge| badges_created &= event.add_badge_link(api, badge) end if badges_created cache_write(api, ['event', event.id], event) return event else # Someting went wrong adding badges so return what OSM has return get(api, event.section_id, event.id) end else return nil end end |