2018-03-25 16:15:39 +00:00
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
2018-03-25 17:30:42 +00:00
class NameCopyNamingAlgorithm < CopyNamingAlgorithm
attr_accessor :klass , :nonprofit_id
# @param [Class] klass
def initialize ( klass , nonprofit_id )
@klass = klass
@nonprofit_id = nonprofit_id
end
def copy_addition
" ( #{ Time . now . strftime ( '%F' ) } copy) "
end
def separator_before_copy_number
" "
end
def max_copies
30
end
def max_length
CreateCampaign :: CAMPAIGN_NAME_LENGTH_LIMIT
end
def get_name_for_entity ( name_entity )
name_entity . name
end
def get_already_used_name_entities ( base_name )
end_name = " #{ copy_addition . gsub ( " ( " , " \\ ( " ) . gsub ( " ) " , " \\ ) " ) } \\ d{2} "
end_name_length = copy_addition . length + 3
amount_to_strip = end_name_length + base_name . length - max_length
if ( amount_to_strip < 0 )
amount_to_strip = 0
end
@klass . method ( :where ) . call ( 'name SIMILAR TO ? AND nonprofit_id = ? AND (deleted IS NULL OR deleted = false)' , " #{ base_name [ 0 .. base_name . length - amount_to_strip - 1 ] } _* " + end_name , nonprofit_id ) . select ( 'name' )
end
end