Class: RailsBase::NameChange

Inherits:
ServiceBase show all
Includes:
ActionView::Helpers::DateHelper, UserFieldValidators, VelocityLimiter
Defined in:
app/services/rails_base/name_change.rb

Instance Method Summary collapse

Methods included from UserFieldValidators

included, #validate_complement?, #validate_full_name?, #validate_name?, #validate_password?

Methods included from VelocityLimiter

#_velocity_limiter_params_validator!, #cache_delineator, #velocity_limit_message, #velocity_limit_reached?, #vl_metadata, #vl_read, #vl_time, #vl_write!

Methods inherited from ServiceBase

inherited, #internal_validate, #service_base_logging

Methods included from ServiceLogging

#aletered_message, #class_name, #log, #log_prefix, #logger, #service_id

Instance Method Details

#cache_keyObject



62
63
64
# File 'app/services/rails_base/name_change.rb', line 62

def cache_key
	"us.name_change.#{current_user.id}"
end

#callObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'app/services/rails_base/name_change.rb', line 13

def call
	if admin_user_id
		log(level: :warn, msg: "ADMIN CHANGE: initiated by user:#{admin_user_id}")
	else
		velocity = velocity_limit_reached?
		if velocity[:reached]
			context.fail!(message: velocity[:msg])
		end
	end

	original_name = current_user.full_name

	name_validation = validate_full_name?(first_name: first_name, last_name: last_name)

	unless name_validation[:status]
		errors = name_validation[:errors].values.join('</br>')
		context.fail!(message: errors)
	end

	log(level: :info, msg: "Modifying [#{current_user.id}] first name: #{current_user.first_name} -> #{first_name}}")
	log(level: :info, msg: "Modifying [#{current_user.id}] last name: #{current_user.last_name} -> #{last_name}}")

	if !current_user.update(first_name: first_name, last_name: last_name)
		context.fail!(message: "Unable to update name. Please try again later")
	end
	context.original_name = original_name
	context.name_change = current_user.reload.full_name

	return if admin_user_id

	RailsBase::EmailVerificationMailer.event(
		user: current_user,
		event: "Succesfull name change",
		msg: "We changed the name on your account from #{original_name} to #{context.name_change}."
	).deliver_me
end

#validate!Object



66
67
68
69
70
# File 'app/services/rails_base/name_change.rb', line 66

def validate!
	raise "Expected first_name to be a String. Received #{first_name.class}" unless first_name.is_a? String
	raise "Expected last_name to be a String. Received #{last_name.class}" unless last_name.is_a? String
	raise "Expected current_user to be a User. Received #{current_user.class}" unless current_user.is_a? User
end

#velocity_frameObject



58
59
60
# File 'app/services/rails_base/name_change.rb', line 58

def velocity_frame
	5.hours
end

#velocity_maxObject



54
55
56
# File 'app/services/rails_base/name_change.rb', line 54

def velocity_max
	5
end

#velocity_max_in_frameObject



50
51
52
# File 'app/services/rails_base/name_change.rb', line 50

def velocity_max_in_frame
	1.hour
end