next_sgad 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 050bec2ed2ca3a8f135e5614983eb925f702320e
4
- data.tar.gz: ad3428de43ae1ed39b2123cc9c2ac4597bc5de3c
3
+ metadata.gz: 2705eaa4da6207dcd93fb63d8bfc2ec97f71056a
4
+ data.tar.gz: e1674367fa691b33748d7d60cd5b22fedf166396
5
5
  SHA512:
6
- metadata.gz: 43b5825ced92095011d4b4a4e8aaa962b02ef77a4f8a2299ac22635d9d184c58b3a186b76bc7db0acef329f347863eda79c428776e3f5fc3fe2b47d03f2aa345
7
- data.tar.gz: 4dcefc85db33601f622c556c1c7e1a5db499ef3c41edd566222bc1153b77409d86d0c823373847a68a43f187df78637f03fd60df2134620a29d5454d448b2830
6
+ metadata.gz: 3a0b1507e610ae64a45c3a43395a82a6722453502c8a05eb9a5dc672abc287a2eaa86e2496a5bdb0c2d09d5fc7be3b96211be7496ddde999dd1e7328ff369352
7
+ data.tar.gz: b097cc14d2555faf166412de763762cd7efee3e6747989974bfcf6fd8312b02729954e6fc326ebb8cb5db7cf32b3fe88bbee11e2e07e736566d7a18c708d50c0
@@ -3,6 +3,7 @@ module NextSgad
3
3
  has_many :employee_goals, dependent: :destroy
4
4
  has_many :goals, dependent: :destroy
5
5
  has_many :attendances, dependent: :destroy
6
+ has_many :employees_assessments, dependent: :destroy
6
7
  enum status: {draft: 0, active: 1, inactive: 2, closed: 3}
7
8
 
8
9
  validates_uniqueness_of :year
@@ -11,6 +12,8 @@ module NextSgad
11
12
  validate :percentages_values
12
13
  validates :number_of_four_hours_delay_to_absence, :number_of_three_hours_delay_to_absence, :number_of_two_hours_delay_to_absence,
13
14
  :number_of_one_hour_delay_to_absence, numericality: {greater_than_or_equal_to: 0, less_than_or_equal_to: 365}
15
+
16
+ after_create :create_employees_assessments
14
17
 
15
18
  def employee_assessment(employee)
16
19
  (skills_assessment(employee) + objectives_assessment(employee) + attendance_assessment(employee)).round(1)
@@ -126,5 +129,17 @@ module NextSgad
126
129
  errors.add(:attendance_percentage, 'A soma dos Objectivos, Competências e Assiduidade deve ser 100%')
127
130
  end
128
131
  end
132
+
133
+ def create_employees_assessments
134
+ begin
135
+ emplos = NextSgad::Employee.all.map{|e| {employee_id: e.id}}
136
+ # Creates an array like [{employee_id: 1}, {employee_id: 3}]
137
+ NextSgad::EmployeeAssessment.create(emplos) do |f|
138
+ f.assessment_id = id
139
+ end
140
+ rescue
141
+ p $!.bactrace
142
+ end
143
+ end
129
144
  end
130
145
  end
@@ -4,6 +4,7 @@ module NextSgad
4
4
  has_many :employee_goals, dependent: :destroy
5
5
  has_and_belongs_to_many :positions, association_foreign_key: :next_sgad_position_id, foreign_key: :next_sgad_employee_id
6
6
  has_one :efective_position, class_name: NextSgad::Position.name, foreign_key: :efective_id
7
+ has_many :employees_assessments, dependent: :destroy
7
8
 
8
9
  def full_name
9
10
  "#{first_name} #{middle_name} #{last_name}"
@@ -24,5 +25,19 @@ module NextSgad
24
25
  INITIAL_LETTER = "E"
25
26
  #before_save :create_number, on: :create
26
27
  validates_presence_of :first_name, :last_name
28
+ after_create :create_employees_assessments
29
+
30
+ private
31
+ def create_employees_assessments
32
+ begin
33
+ assessmens = NextSgad::Assessment.all.map{|e| {assessment_id: e.id}}
34
+ # Creates an array like [{employee_id: 1}, {employee_id: 3}]
35
+ NextSgad::EmployeeAssessment.create(assessmens) do |f|
36
+ f.employee_id = id
37
+ end
38
+ rescue
39
+ p $!.bactrace
40
+ end
41
+ end
27
42
  end
28
43
  end
@@ -0,0 +1,59 @@
1
+ module NextSgad
2
+ class EmployeeAssessment < ApplicationRecord
3
+ belongs_to :employee
4
+ belongs_to :assessment
5
+ enum self_assessment_status: {self_pending: 0, self_in_progress: 1, self_completed: 2}
6
+ enum supervisor_assessment_status: {supervisor_pending: 0, supervisor_in_progress: 1, supervisor_completed: 2}
7
+ enum final_assessment_status: {final_pending: 0, final_in_progress: 1, final_completed: 2}
8
+ attr_accessor :has_assessments, :all_asssessments_incomplete
9
+
10
+
11
+ validates_uniqueness_of :employee_id, scope: :assessment_id
12
+ after_save :update_statuses
13
+
14
+ def employee_goals
15
+ NextSgad::EmployeeGoal.where(assessment_id: assessment_id, employee_id: employee_id)
16
+ end
17
+
18
+ #private
19
+ def update_statuses
20
+ goals = employee_goals()
21
+ hash = {}
22
+
23
+ if goals.where(self_assessment: 0).size == goals.size
24
+ hash[:self_assessment_status] = 0
25
+ # pending
26
+ elsif goals.where(self_assessment: 0).exists?
27
+ hash[:self_assessment] = 1
28
+ # in_progress
29
+ else
30
+ hash[:self_assessment] = 2
31
+ # completed
32
+ end
33
+
34
+ if goals.where(supervisor_assessment: 0).size == goals.size
35
+ hash[:supervisor_assessment_status] = 0
36
+ # pending
37
+ elsif goals.where(supervisor_assessment: 0).exists?
38
+ hash[:supervisor_assessment] = 1
39
+ # in_progress
40
+ else
41
+ hash[:supervisor_assessment] = 2
42
+ # completed
43
+ end
44
+
45
+ if goals.where(final_assessment: 0).size == goals.size
46
+ hash[:final_assessment_status] = 0
47
+ # pending
48
+ elsif goals.where(final_assessment: 0).exists?
49
+ hash[:final_assessment] = 1
50
+ # in_progress
51
+ else
52
+ hash[:final_assessment] = 2
53
+ # completed
54
+ end
55
+
56
+ update_columns(hash)
57
+ end
58
+ end
59
+ end
@@ -25,7 +25,6 @@ module NextSgad
25
25
  self.final_assessment = value_amount
26
26
  end
27
27
 
28
-
29
28
  def update_amount
30
29
  return unless self.numeric?
31
30
  update_columns(amount: results.where(state: 0).sum(&:result_value))
@@ -0,0 +1,13 @@
1
+ class CreateNextSgadEmployeesAssessments < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :next_sgad_employees_assessments do |t|
4
+ t.integer :self_assessment_status
5
+ t.integer :supervisor_assessment_status
6
+ t.integer :final_assessment_status
7
+
8
+ t.timestamps
9
+ end
10
+ add_reference :next_sgad_employees_assessments, :employee, foreign_key: {to_table: :next_sgad_employees}, index: true
11
+ add_reference :next_sgad_employees_assessments, :assessment, foreign_key: {to_table: :next_sgad_assessments}, index: true
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module NextSgad
2
- VERSION = '0.2.1'
2
+ VERSION = '0.2.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: next_sgad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Maziano
@@ -98,6 +98,7 @@ files:
98
98
  - app/models/next_sgad/configuration.rb
99
99
  - app/models/next_sgad/department.rb
100
100
  - app/models/next_sgad/employee.rb
101
+ - app/models/next_sgad/employee_assessment.rb
101
102
  - app/models/next_sgad/employee_goal.rb
102
103
  - app/models/next_sgad/function.rb
103
104
  - app/models/next_sgad/goal.rb
@@ -233,6 +234,7 @@ files:
233
234
  - db/migrate/20171119122339_add_for_everyone_to_next_sgad_goals.rb
234
235
  - db/migrate/20171119152032_create_join_table_goal_function.rb
235
236
  - db/migrate/20171125001559_add_aproved_by_supervisor_to_next_sgad_justifications.rb
237
+ - db/migrate/20171129131333_create_next_sgad_employees_assessments.rb
236
238
  - lib/concerns/models/employee.rb
237
239
  - lib/generators/initializer/USAGE
238
240
  - lib/generators/initializer/initializer_generator.rb