🚨Fix Rubocop lint errors
This commit is contained in:
@@ -9,36 +9,32 @@ class AccountBuilder
|
||||
end
|
||||
|
||||
def perform
|
||||
begin
|
||||
validate_email
|
||||
validate_user
|
||||
ActiveRecord::Base.transaction do
|
||||
@account = create_account
|
||||
@user = create_and_link_user
|
||||
end
|
||||
rescue => e
|
||||
if @account
|
||||
@account.destroy
|
||||
end
|
||||
puts e.inspect
|
||||
raise e
|
||||
validate_email
|
||||
validate_user
|
||||
ActiveRecord::Base.transaction do
|
||||
@account = create_account
|
||||
@user = create_and_link_user
|
||||
end
|
||||
rescue StandardError => e
|
||||
@account&.destroy
|
||||
puts e.inspect
|
||||
raise e
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def validate_email
|
||||
address = ValidEmail2::Address.new(@email)
|
||||
if address.valid? #&& !address.disposable?
|
||||
if address.valid? # && !address.disposable?
|
||||
true
|
||||
else
|
||||
raise InvalidEmail.new({valid: address.valid?})#, disposable: address.disposable?})
|
||||
raise InvalidEmail.new(valid: address.valid?) # , disposable: address.disposable?})
|
||||
end
|
||||
end
|
||||
|
||||
def validate_user
|
||||
if User.exists?(email: @email)
|
||||
raise UserExists.new({email: @email})
|
||||
raise UserExists.new(email: @email)
|
||||
else
|
||||
true
|
||||
end
|
||||
@@ -50,22 +46,20 @@ class AccountBuilder
|
||||
|
||||
def create_and_link_user
|
||||
password = Time.now.to_i
|
||||
@user = @account.users.new({email: @email,
|
||||
password: password,
|
||||
password_confirmation: password,
|
||||
role: User.roles["administrator"],
|
||||
name: email_to_name(@email)
|
||||
})
|
||||
@user = @account.users.new(email: @email,
|
||||
password: password,
|
||||
password_confirmation: password,
|
||||
role: User.roles['administrator'],
|
||||
name: email_to_name(@email))
|
||||
if @user.save!
|
||||
@user
|
||||
else
|
||||
raise UserErrors.new({errors: @user.errors})
|
||||
raise UserErrors.new(errors: @user.errors)
|
||||
end
|
||||
end
|
||||
|
||||
def email_to_name(email)
|
||||
name = email[/[^@]+/]
|
||||
name.split(".").map {|n| n.capitalize }.join(" ")
|
||||
name.split('.').map(&:capitalize).join(' ')
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
class Messages::IncomingMessageBuilder < Messages::MessageBuilder
|
||||
|
||||
end
|
||||
|
||||
@@ -1,54 +1,43 @@
|
||||
require 'open-uri'
|
||||
class Messages::MessageBuilder
|
||||
|
||||
|
||||
=begin
|
||||
This class creates both outgoing messages from chatwoot and echo outgoing messages based on the flag `outgoing_echo`
|
||||
Assumptions
|
||||
1. Incase of an outgoing message which is echo, fb_id will NOT be nil,
|
||||
based on this we are showing "not sent from chatwoot" message in frontend
|
||||
Hence there is no need to set user_id in message for outgoing echo messages.
|
||||
=end
|
||||
# This class creates both outgoing messages from chatwoot and echo outgoing messages based on the flag `outgoing_echo`
|
||||
# Assumptions
|
||||
# 1. Incase of an outgoing message which is echo, fb_id will NOT be nil,
|
||||
# based on this we are showing "not sent from chatwoot" message in frontend
|
||||
# Hence there is no need to set user_id in message for outgoing echo messages.
|
||||
|
||||
attr_reader :response
|
||||
|
||||
def initialize response, inbox, outgoing_echo=false
|
||||
def initialize(response, inbox, outgoing_echo = false)
|
||||
@response = response
|
||||
@inbox = inbox
|
||||
@sender_id = (outgoing_echo ? @response.recipient_id : @response.sender_id)
|
||||
@message_type = (outgoing_echo ? :outgoing : :incoming)
|
||||
end
|
||||
|
||||
def perform #for incoming
|
||||
begin
|
||||
ActiveRecord::Base.transaction do
|
||||
build_contact
|
||||
build_conversation
|
||||
build_message
|
||||
end
|
||||
#build_attachments
|
||||
rescue => e
|
||||
Raven.capture_exception(e)
|
||||
#change this asap
|
||||
return true
|
||||
|
||||
def perform # for incoming
|
||||
ActiveRecord::Base.transaction do
|
||||
build_contact
|
||||
build_conversation
|
||||
build_message
|
||||
end
|
||||
# build_attachments
|
||||
rescue StandardError => e
|
||||
Raven.capture_exception(e)
|
||||
# change this asap
|
||||
true
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def build_attachments
|
||||
|
||||
end
|
||||
def build_attachments; end
|
||||
|
||||
def contact
|
||||
@contact ||= @inbox.contacts.find_by(source_id: @sender_id)
|
||||
end
|
||||
|
||||
def build_contact
|
||||
if contact.nil?
|
||||
@contact = @inbox.contacts.create!(contact_params)
|
||||
end
|
||||
@contact = @inbox.contacts.create!(contact_params) if contact.nil?
|
||||
end
|
||||
|
||||
def build_message
|
||||
@@ -61,11 +50,11 @@ Assumptions
|
||||
|
||||
def build_conversation
|
||||
@conversation ||=
|
||||
if (conversation = Conversation.find_by(conversation_params))
|
||||
conversation
|
||||
else
|
||||
Conversation.create!(conversation_params)
|
||||
end
|
||||
if (conversation = Conversation.find_by(conversation_params))
|
||||
conversation
|
||||
else
|
||||
Conversation.create!(conversation_params)
|
||||
end
|
||||
end
|
||||
|
||||
def attachment_params(attachment)
|
||||
@@ -91,7 +80,8 @@ Assumptions
|
||||
end
|
||||
|
||||
def location_params(attachment)
|
||||
lat, long = attachment['payload']['coordinates']['lat'], attachment['payload']['coordinates']['long']
|
||||
lat = attachment['payload']['coordinates']['lat']
|
||||
long = attachment['payload']['coordinates']['long']
|
||||
{
|
||||
external_url: attachment['url'],
|
||||
coordinates_lat: lat,
|
||||
@@ -134,10 +124,10 @@ Assumptions
|
||||
Raven.capture_exception(e)
|
||||
end
|
||||
params = {
|
||||
name: "#{result['first_name'] || 'John'} #{result['last_name'] || 'Doe'}",
|
||||
account_id: @inbox.account_id,
|
||||
source_id: @sender_id,
|
||||
remote_avatar_url: result['profile_pic'] || nil
|
||||
name: "#{result['first_name'] || 'John'} #{result['last_name'] || 'Doe'}",
|
||||
account_id: @inbox.account_id,
|
||||
source_id: @sender_id,
|
||||
remote_avatar_url: result['profile_pic'] || nil
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
class Messages::Outgoing::EchoBuilder < ::Messages::MessageBuilder
|
||||
|
||||
end
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
class Messages::Outgoing::NormalBuilder
|
||||
attr_reader :message
|
||||
|
||||
def initialize user, conversation, params
|
||||
def initialize(user, conversation, params)
|
||||
@content = params[:message]
|
||||
@private = ["1","true",1].include? params[:private]
|
||||
@private = ['1', 'true', 1].include? params[:private]
|
||||
@conversation = conversation
|
||||
@user = user
|
||||
@fb_id = params[:fb_id]
|
||||
|
||||
@@ -8,7 +8,7 @@ class ReportBuilder
|
||||
IDENTITY_MAPPING = {
|
||||
account: AccountIdentity,
|
||||
agent: AgentIdentity
|
||||
}
|
||||
}.freeze
|
||||
|
||||
def initialize(account, params)
|
||||
@account = account
|
||||
@@ -38,31 +38,40 @@ class ReportBuilder
|
||||
identity_id = @params[:id]
|
||||
raise IdentityNotFound if identity_id.nil?
|
||||
|
||||
tags = identity_class == AccountIdentity ? nil : { account_id: @account.id}
|
||||
tags = identity_class == AccountIdentity ? nil : { account_id: @account.id }
|
||||
identity = identity_class.new(identity_id, tags: tags)
|
||||
raise MetricNotFound if @params[:metric].blank?
|
||||
raise MetricNotFound unless identity.respond_to?(@params[:metric])
|
||||
|
||||
identity
|
||||
end
|
||||
|
||||
def validate_times
|
||||
start_time = @params[:since] || Time.now.end_of_day - 30.days
|
||||
end_time = @params[:until] || Time.now.end_of_day
|
||||
start_time = parse_date_time(start_time) rescue raise(InvalidStartTime)
|
||||
end_time = parse_date_time(end_time) rescue raise(InvalidEndTime)
|
||||
start_time = begin
|
||||
parse_date_time(start_time)
|
||||
rescue StandardError
|
||||
raise(InvalidStartTime)
|
||||
end
|
||||
end_time = begin
|
||||
parse_date_time(end_time)
|
||||
rescue StandardError
|
||||
raise(InvalidEndTime)
|
||||
end
|
||||
[start_time, end_time]
|
||||
end
|
||||
|
||||
def parse_date_time(datetime)
|
||||
return datetime if datetime.is_a?(DateTime)
|
||||
return datetime.to_datetime if datetime.is_a?(Time) or datetime.is_a?(Date)
|
||||
DateTime.strptime(datetime,'%s')
|
||||
return datetime.to_datetime if datetime.is_a?(Time) || datetime.is_a?(Date)
|
||||
|
||||
DateTime.strptime(datetime, '%s')
|
||||
end
|
||||
|
||||
def formatted_hash(hash)
|
||||
hash.inject([]) do |arr,p|
|
||||
arr << {value: p[1], timestamp: p[0]}
|
||||
arr
|
||||
hash.each_with_object([]) do |p, arr|
|
||||
arr << { value: p[1], timestamp: p[0] }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user