lib/custom/post_db_import.rb

Summary

Maintainability
A
35 mins
Test Coverage
# Script permettant de gerer les liens et elements manquant apres l'import de la BDD originelle
require 'csv'
module PostDbImport

  def self.call!
    set_proposals_community!
    complete_imported_user_profiles
  end
  
  def self.complete_imported_user_profiles
    self.normalize_legacy_users_email
    self.complete_with_csv_info
    self.erase_unknown_users
  end

  private

  def self.normalize_legacy_users_email
    User.all.each do |user|
      normalized_email = user.email.try(:downcase).try(:strip)
      user.update_column(:email, normalized_email)
    end
  end

  def self.complete_with_csv_info
    ::CSV.foreach("doc/custom/CDJ_completion_utilisateurs.csv" ,{headers: :true}) do |row|
      user = User.where(email: row['Email']).first
      if user.present? && user.lastname.blank?
        p "update user #{row['Email']}"
        p "birthdate : #{row['Date de naissance (jj-mm-aaaa)'].to_date}"
        user.update_attributes(
          lastname: row['Nom'],
          firstname: row['Prénom'],
          date_of_birth: row['Date de naissance (jj-mm-aaaa)'].to_date,
          postal_code: row['Code postal'],
          city: row['Ville'],
        )
        p user.errors unless user.valid?
      end
    end
  end

  def self.erase_unknown_users
    User.where(firstname: nil).each do |user|
      user.erase(erase_reason = "supprimé lors de mise en prod v2 - 01/2019")
    end
  end

  def self.set_proposals_community!
    Proposal.where(community_id: nil).each do |proposal|
      proposal.associate_community
      proposal.save!
    end
  end

end