Last active
March 31, 2017 18:14
-
-
Save giovannibenussi/ed6392804ae2be43ea360d3f439a74d2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#################### app/models/task.rb | |
class Task < ApplicationRecord | |
belongs_to :user | |
belongs_to :lead, required: false | |
belongs_to :creator, class_name: "User", foreign_key: "creator_id" | |
belongs_to :responsible, class_name: "User", foreign_key: "responsible_id" | |
update_index 'leads#lead', :lead | |
update_index 'lead_timeline#task', :self | |
attr_accessor :contact_name, :contact_email | |
scope :finished, -> {where( finished: true )} | |
scope :of_type, lambda {|task_type| where(task_type: task_type) } | |
def message | |
Message.find(message_id) | |
end | |
def message_id | |
link_to_action.delete('/messages').to_i | |
end | |
def user_phone | |
user.try(:phone) | |
end | |
def send_sms(message = nil) | |
message ||= "Hey #{user.try(:full_name)}, you have a new task. Log in to your PropertySimple CRM Account to manage it." | |
TwilioHelper::send_sms(phone: user_phone, message_content: message, origin_number: user.try(:sms_origin_number)) | |
end | |
end | |
#################### app/models/user.rb | |
def sms_origin_number | |
return '+15005550006' unless Rails.env.production? | |
case timezone | |
when 'America/Phoenix' | |
Rails.application.secrets.twilio_az_number | |
when 'America/Los_Angeles' | |
Rails.application.secrets.twilio_ca_number | |
else | |
Rails.application.secrets.twilio_az_number | |
end | |
end | |
private | |
#################### config/secrets.yml | |
test: | |
secret_key_base: ba3a773fc6c584345a79a3eb9c78e736970879e4a0c7088c761fd2d307c5eab2f30fa83a790b028b8d7a85c71d2ee9cfbb4d15bd489023e73e0441141d75e699 | |
twilio_acc_sid: AC9dc7cd0aed77930b5d42703c37c5c252 | |
twilio_token: 3a49bffb76d68e384a1e56c71ef47777 | |
twilio_az_number: '+19493045404' | |
twilio_ca_number: '+16025170566' | |
twilio_testing_valid_receiver_number: '+15005550006' # Valid number | |
twilio_testing_number: '+56952551372' # Pablo's number | |
#################### app/lib/twilio_helper.rb | |
class TwilioHelper | |
@@twilio_acc_sid = Rails.application.secrets.twilio_acc_sid | |
@@twilio_token = Rails.application.secrets.twilio_token | |
@@twilio_az_number = Rails.application.secrets.twilio_az_number | |
@@twilio_testing_number = Rails.application.secrets.twilio_testing_number | |
@@twilio_testing_valid_receiver_number = Rails.application.secrets.twilio_valid_receiver_number | |
def self.send_sms(phone: , message_content:, origin_number: nil) | |
origin_number ||= @@twilio_az_number | |
client = Twilio::REST::Client.new @@twilio_acc_sid, @@twilio_token | |
if not Rails.env.production? and not is_a_test_number?(phone) | |
phone = @@twilio_testing_number | |
end | |
client.messages.create( | |
from: origin_number, | |
to: phone, | |
body: message_content, | |
) | |
end | |
def self.is_a_test_number?(number) | |
[ | |
@@twilio_testing_valid_receiver_number.to_s | |
].include?(number) | |
end | |
end | |
#################### spec/factories/task.rb | |
FactoryGirl.define do | |
factory :task do | |
end | |
end | |
#################### spec/models/task_spec.rb | |
require 'rails_helper' | |
RSpec.describe Task, type: :model do | |
describe '.notify :new' do | |
it 'send successfully an sms' do | |
task = create(:task) | |
task.user = create(:user) | |
task.user.phone = Rails.application.secrets.twilio_valid_receiver_number | |
task.user.save | |
task.save | |
expect(task.user_id).to_not be_nil | |
expect(task.send_sms).to be_truthy | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment