/** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $assessment = Assessment::find($id); if (Gate::denies('update-assessment', $assessment)) { abort(403); } $allowed_node = array('unknown', 'vn', 'h', 'hrpg', 'rpg'); if (!in_array($request->input('node'), $allowed_node)) { $node = 'unknown'; } else { $node = $request->input('node'); } $savable = "unknown"; if ($request->input('savable') == "yes") { $savable = "yes"; } else { if ($request->input('savable') == "no") { $savable = "no"; } } // check for any change in the record if ($assessment->date_start != $request->input('date_start') || $assessment->date_end != $request->input('date_end') || $assessment->node != $request->input('node') || $assessment->score_story != $request->input('score_story') || $assessment->score_naki != $request->input('score_naki') || $assessment->score_nuki != $request->input('score_nuki') || $assessment->score_comedy != $request->input('score_comedy') || $assessment->score_graphic != $request->input('score_graphic') || $assessment->score_all != $request->input('score_all') || $assessment->archive_savedata != $request->input('archive_savedata') || $assessment->savable != $request->input('savable') || $assessment->status != $request->input('status')) { // log to-be-updated record to history table $assessment_history = new AssessmentHistory(); $assessment_history->assessment_id = $assessment->id; $max_revision_sequence = AssessmentHistory::select('revision_sequence')->where('assessment_id', $assessment->id)->max('revision_sequence'); $assessment_history->revision_sequence = $max_revision_sequence ? $max_revision_sequence + 1 : 1; $assessment_history->modified_date = $assessment->updated_at; $assessment_history->vn_id = $assessment->vn_id; $assessment_history->user_id = $assessment->user_id; $assessment_history->date_start = $assessment->date_start; $assessment_history->date_end = $assessment->date_end; $assessment_history->node = $assessment->node; $assessment_history->score_story = $assessment->score_story; $assessment_history->score_naki = $assessment->score_naki; $assessment_history->score_nuki = $assessment->score_nuki; $assessment_history->score_comedy = $assessment->score_comedy; $assessment_history->score_graphic = $assessment->score_graphic; $assessment_history->score_all = $assessment->score_all; $assessment_history->savable = $assessment->savable; $assessment_history->archive_savedata = $assessment->archive_savedata; $assessment_history->status = $assessment->status; $exec_history = $assessment_history->save(); if (!$exec_history) { return response()->json(['status' => 'error', 'errors' => ['something is wrong with logging']]); } $assessment->date_start = $request->input('date_start'); $assessment->date_end = $request->input('date_end'); $assessment->node = $request->input('node'); $assessment->score_story = $request->input('score_story'); $assessment->score_naki = $request->input('score_naki'); $assessment->score_nuki = $request->input('score_nuki'); $assessment->score_comedy = $request->input('score_comedy'); $assessment->score_graphic = $request->input('score_graphic'); $assessment->score_all = $request->input('score_all'); $assessment->archive_savedata = $request->input('archive_savedata'); $assessment->savable = $savable; $assessment->status = $request->input('status'); $exec = $assessment->save(); $assessment->vndb_vn_id = Assessment::leftJoin('vn', 'vn.id', '=', 'assessments.vn_id')->select('vn.vndb_vn_id')->where('assessments.id', $assessment->id)->first()->vndb_vn_id; if ($exec) { return response()->json($assessment); } } else { return response()->json($assessment); } }