public function showUser($group, $userId) { $user = User::findOrFail($userId); $query = Response::join('quiz', 'quiz.id', '=', 'quiz_id')->where('user_id', $user->id)->where('area_id', $group->area_id); if ($group->category_id) { $query->where('category_id', $group->category_id); } if (!($response = $query->first(['response.id']))) { return abort(404); } return view('admin.members.user', compact('user', 'response', 'group')); }
public function create($areaId, $groupId) { $area = Area::findOrFail($areaId); $group = Group::findOrFail($groupId); $query = Response::join('users', 'users.id', '=', 'response.user_id')->join('quiz', 'quiz.id', '=', 'response.quiz_id')->where('area_id', $areaId); if ($group->category_id) { $query->where('category_id', $group->category_id); } $users = $query->get(['full_name', 'users.id', 'email', 'phone', 'school', 'response.id as response_id']); $from = $group->category ? $group->category : $area; $groups = $from->groups()->lists('id'); foreach ($users as $key => $user) { if (DB::table('area_group_user')->whereIn('area_group_id', array_values($groups))->where('user_id', $user->id)->exists()) { $users->forget($key); } } return view('admin.groups.user', ['group' => Group::findOrFail($groupId), 'users' => $users]); }
/** * @return Response */ public function api() { $data = []; $groups = User::find($this->userId, ['id'])->trainerGroups()->get(['area_id', 'category_id', 'name']); foreach ($groups as $group) { $key = $group->area_id . ($group->category_id ? '_' . $group->category_id : ''); if (isset($data[$key])) { continue; } $area = Area::findOrFail($group->area_id, ['id', 'name']); $category = null; $query = Response::join('quiz', 'response.quiz_id', '=', 'quiz.id')->join('users', 'response.user_id', '=', 'users.id'); if ($group->category_id) { $category = Category::findOrFail($group->category_id, ['id', 'name']); $query->where('category_id', $category->id); } else { $query->where('area_id', $area->id); } $applicants = $query->get(['response.id', 'response.created_at', 'full_name', 'email', 'school']); foreach ($applicants as $key => $applicant) { $applicants[$key]->id = (int) $applicant->id; $response = Response::findOrFail($applicant->id); $choices = $applicant->trainerchoices()->lists('choice', 'trainer_id'); $choice = isset($choices[$this->userId]) ? (int) $choices[$this->userId] : null; if ($choice !== 1 && !is_null($choice)) { $applicants->forget($key); continue; } $responses = []; foreach ($response->questions as $rquestion) { if (!$rquestion->question) { continue; } $answers = []; $roptions = $rquestion->options->lists('response', 'quiz_question_option_id'); foreach ($rquestion->question->options as $option) { if (array_key_exists($option->id, $roptions)) { if ($rquestion->question->type == 'text' || $rquestion->question->type == 'textbox') { $answer = html_entity_decode($roptions[$option->id]); } else { $answer = true; } } else { $answer = false; } $answers[] = ['option' => $option->option ? html_entity_decode($option->option) : null, 'answer' => $answer]; } $responses[] = ['question' => $rquestion->question->question, 'question_type' => $rquestion->question->type, 'answers' => $answers]; } $applicant->responses = $responses; } $applicants->values(); $data[$key] = ['applicants' => $applicants, 'area' => $area, 'category' => $category]; } return json(array_values($data), 200); }
/** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($_, $id) { $response = Response::findOrFail($id); $response->delete(); return json(1); }
public function store($areaSlug, $categorySlug = null) { $area = $this->areaRepo->getBySlug($areaSlug, 1, $this->user()->county_id); if (is_null($area) || !$area->open) { return view('errors.missing'); } $category = null; if (!is_null($categorySlug)) { $category = Category::where('slug', $categorySlug)->first(); if (is_null($category)) { return view('errors.missing'); } } if ($category) { $quiz = $category->quiz; } else { $quiz = $area->quiz; if ($quiz && $quiz->category_id) { return view('errors.missing'); } } if (Auth::user()->hasResponse($quiz->id)) { return json('-1'); } $questions = Input::get('question'); parse_str(Input::get('trainers'), $trainers); $max = 10000; foreach ($quiz->questions as $i => $question) { if (!$question->required) { continue; } $value = @$questions[$question->id]; if (is_array($value)) { foreach ($value as $val) { if (empty($val) || mb_strlen($val) > $max) { $value = $val; } } } $extra = in_array($question->type, ['text', 'textbox']) ? "|max:{$max}" : ''; $input['question_' . $question->id] = $value; $rules['question_' . $question->id] = 'required' . $extra; $messages['question_' . $question->id . '.required'] = $question->id; $messages['question_' . $question->id . '.max'] = trans('app.question_max', ['question' => $i + 1, 'max' => $max]); } $validator = Validator::make($input, $rules, $messages); if ($validator->fails()) { throw new FormValidationException('Validation failed', $validator->errors()); } $rresponse = Response::create(['user_id' => \Auth::user()->id, 'quiz_id' => $quiz->id]); if (isset($trainers['trainer']) && is_array($trainers['trainer'])) { $areaTrainers = $area->present()->trainers->lists('id'); foreach ($trainers['trainer'] as $choice => $id) { if (!in_array($id, $areaTrainers)) { continue; } $rresponse->trainerchoices()->save(new TrainerChoice(['trainer_id' => $id, 'choice' => ++$choice])); } } foreach ($quiz->questions as $question) { $rquestion = Question::create(['response_id' => $rresponse->id, 'question_id' => $question->id]); if ($question->type === 'dropdown' || $question->type === 'singlechoice') { $roption = Option::create(['response_question_id' => $rquestion->id, 'quiz_question_option_id' => $questions[$question->id], 'response' => e($questions[$question->id])]); } else { foreach ($question->options as $option) { if (isset($questions[$question->id][$option->id])) { $roption = Option::create(['response_question_id' => $rquestion->id, 'quiz_question_option_id' => $option->id, 'response' => e($questions[$question->id][$option->id])]); } } } } flash(true); return json(1); }