Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
open-source
aoz-003
Commits
e5c2f19b
Commit
e5c2f19b
authored
Nov 06, 2018
by
Jiri Strojil
Browse files
Multiple assignments added (hours validations missing)
parent
3ca749fb
Pipeline
#30690
failed with stage
in 35 minutes and 43 seconds
Changes
8
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
app/controllers/semester_process_volunteers_controller.rb
View file @
e5c2f19b
...
...
@@ -10,20 +10,26 @@ class SemesterProcessVolunteersController < ApplicationController
def
submit_review
set_reviewed
assign_
reviewed
_attributes
assign_
volunteer
_attributes
@semester_process_volunteer
.
volunteer
.
validate_waive_and_bank
=
true
@semester_process_volunteer
.
missions
.
each
{
|
m
|
m
.
semester_feedback
.
build
}
@semester_process_volunteer
.
missions
.
each
{
|
m
|
m
.
hours
.
build
}
if
@semester_process_volunteer
.
save
&&
@volunteer
.
save
redirect_to
(
review_semester_semester_process_volunteer_path
(
@semester_process_volunteer
),
notice:
'Successfully reviewed.'
)
else
null_reviewed
errors
=
@semester_process_volunteer
.
errors
.
full_messages
+
@volunteer
.
errors
.
full_messages
render
:review_semester
,
notice:
errors
build_nested_objects
ActiveRecord
::
Base
.
transaction
do
@semester_process_volunteer
.
save!
@volunteer
.
save!
@feedbacks
.
each
(
&
:save!
)
@hours
.
each
(
&
:save!
)
end
redirect_to
(
review_semester_semester_process_volunteer_path
(
@semester_process_volunteer
),
notice:
'Successfully reviewed.'
)
rescue
ActiveRecord
::
RecordInvalid
=>
exception
puts
"ERROR!"
puts
exception
.
message
null_reviewed
render
:review_semester
,
notice:
exception
.
message
,
errors:
exception
.
message
end
def
index
...
...
@@ -46,6 +52,15 @@ class SemesterProcessVolunteersController < ApplicationController
private
def
build_nested_objects
@feedbacks
,
@hours
=
[],
[]
review_params
[
:semester_feedbacks_attributes
].
each
do
|
_i
,
hash
|
@feedbacks
<<
SemesterFeedback
.
new
(
hash
[
:semester_feedback
]
.
merge
({
author:
current_user
,
semester_process_volunteer:
@semester_process_volunteer
}))
@hours
<<
Hour
.
new
(
hash
[
:hour
])
end
end
def
prepare_review
# careful cuz mission id can be present in both missions
@semester_process_volunteer
=
SemesterProcessVolunteer
.
find
(
params
[
:id
])
...
...
@@ -58,8 +73,8 @@ class SemesterProcessVolunteersController < ApplicationController
def
review_params
params
.
require
(
:semester_process_volunteer
).
permit
(
volunteer_attributes:
[
:waive
,
:iban
,
:bank
],
semester_feedback:
[
:mission
,
:goals
,
:achievements
,
:future
,
:comments
,
:conversation
],
hour_attributes:
[
:hours
])
semester_feedbacks_attributes:
[[
semester_feedback:
[
:mission
,
:goals
,
:achievements
,
:future
,
:comments
,
:conversation
,
:spv_mission_id
]
],
[
hour:
[
:hours
,
:spv_mission_id
]]
])
end
def
set_semester_process_volunteer
...
...
app/controllers/semester_processes_controller.rb
View file @
e5c2f19b
...
...
@@ -85,12 +85,6 @@ class SemesterProcessesController < ApplicationController
:kind
,
:subject
,
:body
,
:semester_feedbacks
:
[
:
]
:hours_attributes
:
[
:hours
],
semester_process_volunteers_attributes:
[
:volunteer_id
,
:selected
]
...
...
app/helpers/semester_process_volunteer_helper.rb
View file @
e5c2f19b
...
...
@@ -9,7 +9,7 @@ module SemesterProcessVolunteerHelper
@semester_process_volunteer
.
commited_at
=
Time
.
zone
.
now
end
def
assign_
reviewed
_attributes
def
assign_
volunteer
_attributes
@volunteer
.
assign_attributes
(
review_params
[
:volunteer_attributes
]
.
slice
(
:waive
,
:bank
,
:iban
))
end
...
...
app/models/hour.rb
View file @
e5c2f19b
...
...
@@ -45,6 +45,12 @@ class Hour < ApplicationRecord
group_offer
.
where
(
hourable_id:
group_offer_ids
)
}
attr_reader
:spv_mission_id
def
spv_mission_id
=
id
self
.
hourable
=
SemesterProcessVolunteerMission
.
find
(
id
).
mission
end
def
assignment?
hourable_type
==
'Assignment'
end
...
...
app/models/semester_feedback.rb
View file @
e5c2f19b
...
...
@@ -5,4 +5,10 @@ class SemesterFeedback < ApplicationRecord
belongs_to
:semester_process_volunteer
has_one
:semester_process
,
through: :semester_process_volunteer
has_one
:volunteer
,
through: :semester_process_volunteer
attr_reader
:spv_mission_id
def
spv_mission_id
=
id
self
.
mission
=
SemesterProcessVolunteerMission
.
find
(
id
).
mission
end
end
app/models/semester_process_volunteer.rb
View file @
e5c2f19b
...
...
@@ -43,6 +43,9 @@ class SemesterProcessVolunteer < ApplicationRecord
end
}
def
semester_feedback_with_mission
(
mission
)
self
.
semester_feedbacks
.
select
{
|
sf
|
sf
.
mission
==
mission
}.
last
end
# will only return an array, not a AD-result
def
missions
...
...
app/models/semester_process_volunteer_mission.rb
View file @
e5c2f19b
...
...
@@ -2,4 +2,10 @@ class SemesterProcessVolunteerMission < ApplicationRecord
include
MissionEitherOneRelation
belongs_to
:semester_process_volunteer
attr_accessor
:hour
def
hour
@hour
||
Hour
.
new
end
end
app/views/semester_process_volunteers/review_semester.html.slim
View file @
e5c2f19b
...
...
@@ -3,17 +3,29 @@
=
simple_error_notice
f
h1
Halbjahres-Rapporte
#{
@semester_process_volunteer
.
semester_t
}
für
#{
@semester_process_volunteer
.
volunteer
.
contact
.
full_name
}
=
f
.
simple_fields_for
:missions
,
@semester_process_volunteer
.
semester_process_volunteer_missions
do
|
mf
|
-
mf
.
object
.
each
do
|
mission
|
h2
.m-b-20.m-t-30
'
Einsatz
=
link_to
mission
.
mission
.
to_label
,
polymorphic_path
([
mission
.
mission
.
volunteer
,
mission
.
mission
.
polymorph_url_object
]),
target:
'_blank'
=
f
.
simple_fields_for
:semester_feedbacks
,
@semester_process_volunteer
.
semester_process_volunteer_missions
do
|
spvm
|
-
mission
=
spvm
.
object
.
mission
h2
.m-b-20.m-t-30
'
Einsatz
=
link_to
mission
.
to_label
,
url:
polymorphic_path
([
mission
.
volunteer
,
mission
.
polymorph_url_object
]),
target:
'_blank'
=
mf
.
simple_fields_for
:semester_feedback
,
@semester_process_volunteer
.
semester_feedbacks
.
select
{
|
feedback
|
feedback
.
mission
==
mission
}.
first
do
|
ff
|
=
ff
.
input
:id
,
type: :hidden
-
[
:goals
,
:achievements
,
:future
,
:comments
,
:conversation
].
each
do
|
field
|
.row
.col-xs-12
=
ff
.
input
field
=
spvm
.
simple_fields_for
:semester_feedback
,
@semester_process_volunteer
.
semester_feedback_with_mission
(
mission
)
do
|
ff
|
=
ff
.
input
:spv_mission_id
,
as: :hidden
,
input_html:
{
value:
spvm
.
object
.
id
}
-
[
:goals
,
:achievements
,
:future
,
:comments
,
:conversation
].
each
do
|
field
|
.row
.col-xs-12
=
ff
.
input
field
-
if
mission
.
hours
.
any?
h3
Stunden
=
render
'hours/last_submitted_hours',
hours:
mission
.hours
=
spvm
.
simple_fields_for
:hour
,
Hour
.
new
do
|
hf
|
=
hf
.
input
:spv_mission_id
,
as: :hidden
,
input_html:
{
value:
spvm
.
object
.
id
}
.row
.col-xs-2
=
hf
.
input
:hours
,
label:
'Restliche Stunden in diesem Semester'
,
input_html
:
{
value:
f
.object.hours
=
=
0
?
''
:
f
.
object
.
hours
,
min:
0
}
h3
Spesen
=
f
.simple_fields_for
:volunteer,
@volunteer
do
|vf|
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment