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



54
55
56
# File 'app/models/invitation.rb', line 54

def self.generate_code
  SecureRandom.urlsafe_base64 4
end

Instance Method Details

#course_slugObject



25
26
27
# File 'app/models/invitation.rb', line 25

def course_slug
  course.slug
end

#ensure_not_expiredObject



13
14
15
# File 'app/models/invitation.rb', line 13

def ensure_not_expired
  errors.add(:base, :invitation_expired) if expired?
end

#expired?Boolean

Returns:

  • (Boolean)


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

def expired?
  Time.now > expiration_date
end

#import_from_resource_h!(json) ⇒ Object



17
18
19
# File 'app/models/invitation.rb', line 17

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


29
30
31
# File 'app/models/invitation.rb', line 29

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

Returns:

  • (Boolean)


37
38
39
# File 'app/models/invitation.rb', line 37

def navigation_end?
  true
end

#organizationObject



21
22
23
# File 'app/models/invitation.rb', line 21

def organization
  course.organization
end

#to_paramObject



41
42
43
# File 'app/models/invitation.rb', line 41

def to_param
  code
end

#to_resource_hObject



33
34
35
# File 'app/models/invitation.rb', line 33

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

#unexpiredObject



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

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