BathHacked/energy-sparks

View on GitHub
lib/tasks/deployment/20230209161636_copy_meter_notes_to_school_issues.rake

Summary

Maintainability
Test Coverage
namespace :after_party do
  desc 'Deployment task: copy_meter_notes_to_school_issues'
  task copy_meter_notes_to_school_issues: :environment do
    puts "Running deploy task 'copy_meter_notes_to_school_issues'"

    fuel_type_map = {
      electricity: :electricity,
      gas: :gas,
      solar_pv: :solar,
      exported_solar_pv: :solar }

    default_user = User.find_by_email('rebecca.scutt@energysparks.uk')

    Meter.all.each do |meter|
      if meter.notes.present?
        admin_user = meter.school.try(:school_group).try(:default_issues_admin_user) || default_user
        title = "#{meter.fuel_type} meter: #{meter.mpan_mprn}".capitalize
        title += " - #{meter.name}" unless meter.name.blank?
        attrs = {
          issue_type: :issue,
          title: title,
          issueable: meter.school,
          fuel_type: fuel_type_map[meter.fuel_type],
          owned_by: admin_user,
          created_by: admin_user,
          updated_by: admin_user
        }

        Issue.find_or_create_by!(attrs) do |issue|
          issue.description = meter.notes
          issue.meters = [meter]
        end
      end
    end

    # Update task as completed.  If you remove the line below, the task will
    # run with every deploy (or every time you call after_party:run).
    AfterParty::TaskRecord
      .create version: AfterParty::TaskRecorder.new(__FILE__).timestamp
  end
end