class Lato::Invitation

def accepted?

def accepted?
  !!accepted_at
end

def c_email_invite_semaphore(value = nil)

def c_email_invite_semaphore(value = nil)
  cache_key = "Lato::Invitation/c_email_invite_semaphore/#{id}"
  return Rails.cache.read(cache_key) if value.nil?
  Rails.cache.write(cache_key, value, expires_in: 2.minutes)
  value
end

def send_invite

def send_invite
  if accepted?
    errors.add(:base, :already_accepted)
    return false
  end
  if c_email_invite_semaphore
    errors.add(:base, :email_sending_limit)
    return false
  end
  delivery = Lato::InvitationMailer.invite_mail(id).deliver_now
  unless delivery
    errors.add(:base, :email_sending_error)
    return false
  end
  c_email_invite_semaphore(true)
  true
end