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 +4 -4
- data/app/models/next_sgad/assessment.rb +15 -0
- data/app/models/next_sgad/employee.rb +15 -0
- data/app/models/next_sgad/employee_assessment.rb +59 -0
- data/app/models/next_sgad/employee_goal.rb +0 -1
- data/db/migrate/20171129131333_create_next_sgad_employees_assessments.rb +13 -0
- data/lib/next_sgad/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2705eaa4da6207dcd93fb63d8bfc2ec97f71056a
|
4
|
+
data.tar.gz: e1674367fa691b33748d7d60cd5b22fedf166396
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
@@ -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
|
data/lib/next_sgad/version.rb
CHANGED
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.
|
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
|