Class: Invitation

Inherits:
ApplicationRecord show all
Includes:
Mumuki::Domain::Syncable
Defined in:
app/models/invitation.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Mumuki::Domain::Syncable

#platform_class_name, #sync_key

Methods inherited from ApplicationRecord

aggregate_of, all_except, defaults, #delete, #destroy!, numbered, organic_on, resource_fields, #save, #save_and_notify!, #save_and_notify_changes!, serialize_symbolized_hash_array, #update_and_notify!, update_or_create!, whitelist_attributes

Class Method Details

.generate_codeObject



48
49
50
# File 'app/models/invitation.rb', line 48

def self.generate_code
  SecureRandom.urlsafe_base64 4
end

Instance Method Details

#course_slugObject



19
20
21
# File 'app/models/invitation.rb', line 19

def course_slug
  course.slug
end

#expired?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'app/models/invitation.rb', line 39

def expired?
  Time.now > expiration_date
end

#import_from_resource_h!(json) ⇒ Object



11
12
13
# File 'app/models/invitation.rb', line 11

def import_from_resource_h!(json)
  update! json.merge(course: Course.locate!(json[:course]))
end


23
24
25
# File 'app/models/invitation.rb', line 23

def navigable_name
  I18n.t(:invitation_for, course: course_name)
end

Returns:

  • (Boolean)


31
32
33
# File 'app/models/invitation.rb', line 31

def navigation_end?
  true
end

#organizationObject



15
16
17
# File 'app/models/invitation.rb', line 15

def organization
  course.organization
end

#to_paramObject



35
36
37
# File 'app/models/invitation.rb', line 35

def to_param
  code
end

#to_resource_hObject



27
28
29
# File 'app/models/invitation.rb', line 27

def to_resource_h
  { code: code, course: course_slug, expiration_date: expiration_date }
end

#unexpiredObject



43
44
45
46
# File 'app/models/invitation.rb', line 43

def unexpired
  raise Mumuki::Domain::GoneError, "This invitation has already expired" if expired?
  self
end