function createFeedback(FeedbackRequest $request)
 {
     // Double check to make sure the current user is authorized to do this...
     $this->authorize('create-feedback');
     $input = $request->all();
     // Check application ID
     $application = Application::find($input['application_id']);
     // Check regarding ID / type, Note, nothing to be done for 'general' feedback
     if ($input['regarding_type'] == 'question') {
         $regarding = Question::find($input['regarding_id']);
     } elseif ($input['regarding_type'] == 'document') {
         // todo
     }
     // Create new feedback
     $feedback = new Feedback();
     $feedback->application_id = $application->id;
     $feedback->regarding_type = $input['regarding_type'];
     if (isset($regarding) && $regarding->exists) {
         $feedback->regarding_id = $regarding->id;
     }
     // Set the current judge ID for a record of who requested this feedback
     $feedback->user_id = Auth::user()->id;
     $feedback->save();
     $feedback->update($input);
     // Notify applicant of new feedback requested
     event(new FeedbackChanged($feedback, ['status' => 'created']));
     $request->session()->flash('success', 'Your feedback has been requested.');
     return redirect('/applications/' . $application->id . '/review');
 }
 public function scoreCriteria(ScoreRequest $request)
 {
     // Check if current user is allowed to score things
     $this->authorize('score-application');
     $input = $request->all();
     $application = Application::find($input['application_id']);
     $criteria = Criteria::find($input['criteria_id']);
     // Make sure the application hasn't been finalized
     if (!in_array($application->judge_status, ['new', 'ready'])) {
         $request->session()->flash('error', 'This application has already been finalized.');
         return redirect('/applications/' . $application->id . '/review');
     }
     // Make sure this user hasn't already submitted their scores
     $judged = Judged::where(['application_id' => $application->id, 'user_id' => Auth::user()->id])->get()->first();
     if (!empty($judged)) {
         $request->session()->flash('error', 'You have already judged this application!');
         return redirect('/applications');
     }
     // Check if a score already exists for this criteria
     $score = Score::firstOrNew(['application_id' => $application->id, 'criteria_id' => $criteria->id, 'user_id' => Auth::user()->id]);
     // Add submitted information
     $score->application_id = $application->id;
     $score->criteria_id = $criteria->id;
     $score->user_id = Auth::user()->id;
     $score->score = $input['score'];
     $score->answer = $input['answer'];
     $score->save();
     $request->session()->flash('success', 'Your score has been saved.');
     return redirect('/applications/' . $application->id . '/review');
 }
 public function updateAnswer(AnswerRequest $request, Answer $answer)
 {
     $input = $request->all();
     $application = Application::find($input['application_id']);
     if ($answer->user->id != Auth::user()->id) {
         $request->session()->flash('error', 'Only the person who created an application may answer questions for it.');
         return redirect('/login');
     }
     if ($answer->application->status != 'new') {
         $request->session()->flash('error', 'Your application has been submitted, you may no longer make changes.');
         return redirect('/applications/' . $application->id . '/review');
     }
     $answer->update($input);
     // Check if a file needs to be uploaded
     if ($answer->question->type == 'file') {
         // Save uploaded file
         $upload = Document::handleUpload($request);
         // Save new document
         Document::createDocument($application, $upload, $answer);
     }
     $request->session()->flash('success', 'Your answer has been saved.');
     return redirect('/applications/' . $answer->application->id);
 }
 public function postFeedback(Request $request, $id, $hash)
 {
     $application = Application::find($id);
     if ($application == null || $hash != md5($application->name)) {
         // Invalid ID/Hash Combo, Try Mentor
         $application = Mentor::find($id);
     }
     if ($hash != md5($application->name)) {
         return $this->getIndex();
     }
     $feedback = new Feedback();
     $feedback->name = $application->name;
     $feedback->feedbackOnMentor = $request->input('mentor');
     $feedback->feedbackOnProgram = $request->input('program');
     $feedback->ideasForCurrentSemester = $request->input('currentSemester');
     $feedback->ideasForNextSemester = $request->input('nextSemester');
     $feedback->save();
     return view('pages.submitted');
 }
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function destroy($id)
 {
     Application::find($id)->delete();
     return redirect('applications');
 }