Skip to content

Commit

Permalink
Move setting of default languages to after_initialize and cleanup code
Browse files Browse the repository at this point in the history
  • Loading branch information
RandomTannenbaum committed Jul 31, 2024
1 parent 5a81213 commit b9c7959
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 31 deletions.
7 changes: 0 additions & 7 deletions app/controllers/people_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,6 @@ def show
super
end

def new
%w[DE EN FR].each do |language|
@person.language_skills.push(LanguageSkill.new({ language: language, level: 'A1' }))
end
super
end

def create
set_nationality2
super
Expand Down
43 changes: 19 additions & 24 deletions app/domain/ptime/people_employees.rb
Original file line number Diff line number Diff line change
@@ -1,44 +1,39 @@
module Ptime
class PeopleEmployees
ATTRIBUTES_MAPPING = { full_name: :name, shortname: :shortname, email: :email, marital_status:
:marital_status, graduation: :title, birthdate: :birthdate,
location: :location }.freeze
def create_or_find(ptime_employee_id)
raise 'No ptime_employee_id provided' unless ptime_employee_id

person = Person.find_by(ptime_employee_id: ptime_employee_id)
return person unless person.nil?

new_person = Person.new(ptime_employee_id: ptime_employee_id)
%w[DE EN FR].each do |language|
new_person.language_skills.push(LanguageSkill.new({ language: language, level: 'A1' }))
end

update_person_data(new_person)
end

# rubocop:disable Metrics
def update_person_data(person)
attribute_mapping = { full_name: :name, shortname: :shortname, email: :email, marital_status:
:marital_status, graduation: :title, birthdate: :birthdate,
location: :location }.freeze

begin
raise 'Person has no ptime_employee_id' unless person.ptime_employee_id
raise 'Person has no ptime_employee_id' unless person.ptime_employee_id

ptime_employee = Ptime::Client.new.request(:get, "employees/#{person.ptime_employee_id}")
rescue CustomExceptions::PTimeClientError
raise "Ptime_employee with ptime_employee_id #{person.ptime_employee_id} not found"
else
ptime_employee[:attributes].each do |key, value|
if key.to_sym.in?(attribute_mapping.keys)
person[attribute_mapping[key.to_sym]] = (value.presence || '-')
end
ptime_employee = Ptime::Client.new.request(:get, "employees/#{person.ptime_employee_id}")
rescue CustomExceptions::PTimeTemporarlyUnavailableError
nil
else
ptime_employee[:attributes].each do |key, value|
if key.to_sym.in?(ATTRIBUTES_MAPPING.keys)
person[ATTRIBUTES_MAPPING[key.to_sym]] = (value.presence || '-')
end
ptime_employee_employed = ptime_employee[:attributes][:is_employeed]
person.company = Company.find_by(name: ptime_employee_employed ? 'Firma' : 'Ex-Mitarbeiter')
ptime_employee_nationalities = ptime_employee[:attributes][:nationalities]
person.nationality = ptime_employee_nationalities[0]
person.nationality2 = ptime_employee_nationalities[1]
person.save!
person
end
ptime_employee_employed = ptime_employee[:attributes][:is_employeed]
person.company = Company.find_by(name: ptime_employee_employed ? 'Firma' : 'Ex-Mitarbeiter')
ptime_employee_nationalities = ptime_employee[:attributes][:nationalities]
person.nationality = ptime_employee_nationalities[0]
person.nationality2 = ptime_employee_nationalities[1]
person.save!
person
end
# rubocop:enable Metrics
end
Expand Down
8 changes: 8 additions & 0 deletions app/models/person.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
class Person < ApplicationRecord
include PgSearch::Model

after_initialize :set_default_languages

belongs_to :company
belongs_to :department, optional: true

Expand Down Expand Up @@ -103,4 +105,10 @@ def picture_size

errors.add(:picture, 'grösse kann maximal 10MB sein')
end

def set_default_languages
%w[DE EN FR].each do |language|
language_skills.push(LanguageSkill.new({ language: language, level: 'A1' }))
end
end
end

0 comments on commit b9c7959

Please sign in to comment.