@@ -5,17 +5,63 @@ class SchoolProjectsController < ApiController
55 before_action :authorize_user
66 load_and_authorize_resource :project
77
8+ def show_status
9+ authorize! :show_status , school_project
10+ render :show_status , formats : [ :json ] , status : :ok
11+ end
12+
13+ def unsubmit
14+ authorize! :unsubmit , school_project
15+ result = SchoolProject ::SetStatus . call ( school_project :, status : :unsubmitted , user_id : current_user . id )
16+ if result . success?
17+ @school_project = result [ :school_project ]
18+ render :show_status , formats : [ :json ] , status : :ok
19+ else
20+ render json : { error : result [ :error ] } , status : :unprocessable_entity
21+ end
22+ end
23+
24+ def submit
25+ authorize! :submit , school_project
26+ result = SchoolProject ::SetStatus . call ( school_project :, status : :submitted , user_id : current_user . id )
27+ if result . success?
28+ @school_project = result [ :school_project ]
29+ render :show_status , formats : [ :json ] , status : :ok
30+ else
31+ render json : { error : result [ :error ] } , status : :unprocessable_entity
32+ end
33+ end
34+
35+ def return
36+ authorize! :return , school_project
37+ result = SchoolProject ::SetStatus . call ( school_project :, status : :returned , user_id : current_user . id )
38+ if result . success?
39+ @school_project = result [ :school_project ]
40+ render :show_status , formats : [ :json ] , status : :ok
41+ else
42+ render json : { error : result [ :error ] } , status : :unprocessable_entity
43+ end
44+ end
45+
46+ def complete
47+ authorize! :complete , school_project
48+ result = SchoolProject ::SetStatus . call ( school_project :, status : :complete , user_id : current_user . id )
49+ if result . success?
50+ @school_project = result [ :school_project ]
51+ render :show_status , formats : [ :json ] , status : :ok
52+ else
53+ render json : { error : result [ :error ] } , status : :unprocessable_entity
54+ end
55+ end
56+
857 def show_finished
9- @school_project = Project . find_by! ( identifier : params [ :id ] ) . school_project
10- authorize! :show_finished , @school_project
58+ authorize! :show_finished , school_project
1159 render :finished , formats : [ :json ] , status : :ok
1260 end
1361
1462 def set_finished
15- project = Project . find_by! ( identifier : params [ :id ] )
16- @school_project = project . school_project
17- authorize! :set_finished , @school_project
18- result = SchoolProject ::SetFinished . call ( school_project : @school_project , finished : params [ :finished ] )
63+ authorize! :set_finished , school_project
64+ result = SchoolProject ::SetFinished . call ( school_project :, finished : params [ :finished ] )
1965
2066 if result . success?
2167 @school_project = result [ :school_project ]
@@ -24,5 +70,19 @@ def set_finished
2470 render json : { error : result [ :error ] } , status : :unprocessable_entity
2571 end
2672 end
73+
74+ private
75+
76+ def project
77+ @project ||= Project . find_by! ( identifier : params [ :id ] )
78+ end
79+
80+ def school_project
81+ @school_project ||= project . school_project
82+ end
83+
84+ def school_project_params
85+ params . permit ( :finished )
86+ end
2787 end
2888end
0 commit comments