require_relative ‘../peterconsuegra_recipes’ require ‘colorize’

bundle exec rake ‘install_google_maps_by_pete

desc ‘install google_maps_by_pete required files’ task :install_google_maps_by_pete, [:model] do |t, args|

#Require all models
Dir.glob("#{Rails.root}/app/models/*.rb").each { |file| require file }

#Folders path
rails_app_folder = Dir.pwd 
gem_folder = File.expand_path('../../../.', __FILE__)
src_folder="#{gem_folder}/templates/"

#Get scaffold vars
hash = PeterConsuegraRecipes::get_scaffold_vars(args[:model])

#Adding partial
PeterConsuegraRecipes::move_template(src_folder,"#{rails_app_folder}/app/views/shared/","_google_maps_by_pete.html.erb")

#Adding concern file
PeterConsuegraRecipes::move_template(src_folder,"#{rails_app_folder}/app/controllers/concerns/","maps_by_pete.rb")

#Adding js and css assets
PeterConsuegraRecipes::move_templates(src_folder,"#{rails_app_folder}/public/google_maps_by_pete/",["jquery-3.6.0.min.js","maps.css"])

#Adding route
PeterConsuegraRecipes::add_route(hash['base_route'],"set_location","post")

#Adding concern to controller
PeterConsuegraRecipes::add_concern_to_controller("include MapsByPete\n",hash['controller_file'],hash['controller_class'])

#Adding lat and lng fields to model
puts "Running command:".blue
puts "rails generate migration AddFieldsTo#{hash['model_class']} lat:decimal{10-6} lng:decimal{10-6}".green
`rails generate migration AddFieldsTo#{hash['model_class']} lat:decimal{10-6} lng:decimal{10-6}`
sleep 2
puts "Running command:".blue
puts "rake db:migrate".green
`rake db:migrate`

#Print necessary code
puts "-----------------------------------------".red
puts "Copy and paste this code in your project".red
puts "-----------------------------------------".red
puts "Add jQuery to your layout file:".red
puts "<script src='/google_maps_by_pete/jquery-3.6.0.min.js'></script>".red
puts "Add maps.css to your layout file:".red
puts "<link rel='stylesheet' href='/google_maps_by_pete/maps.css'>".red
puts "Add this partial to your _form.html.erb file:".red
puts "<%= render 'shared/google_maps_by_pete', api_key: 'your_google_api_key',  height: '500px', center_map_on: {lat: 25.761681, lng: -80.191788}, model: #{hash['model'].downcase}%>".red
puts "Allow :lat and :lng params in your controller #{hash['controller_file']}:".red
puts "params.require(:#{hash['model'].downcase}).permit(:lat, :lng)".red

end