Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions app/Http/Controllers/Admin/SiteFormController.php
Original file line number Diff line number Diff line change
Expand Up @@ -128,4 +128,19 @@ public function getSiteFormResults($id) {
'form' => $form
]);
}

/**
* Shows the results of a site form by respondent
*
* @param int $id
* @return \Illuminate\Contracts\Support\Renderable
*/
public function getSiteFormResultsAlt($id) {
$form = SiteForm::find($id);
if (!$form) abort(404);
return view('admin.forms.site_form_results_alt', [
'form' => $form,
'userAnswers' => $form->userAnswers()->paginate(1)
]);
}
}
5 changes: 3 additions & 2 deletions app/Models/Forms/SiteForm.php
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,10 @@ public function answers()
/**
* Get the answers related to this form for a given user.
*/
public function userAnswers($user)
public function userAnswers($user = null)
{
return $this->hasMany('App\Models\Forms\SiteFormAnswer', 'form_id')->where('user_id', $user->id)->get()->groupBy('submission_number');
if (isset($user)) return $this->hasMany('App\Models\Forms\SiteFormAnswer', 'form_id')->where('user_id', $user->id)->get()->groupBy('submission_number');
return $this->hasMany('App\Models\Forms\SiteFormAnswer', 'form_id')->orderBy('submission_number', 'DESC')->get()->groupBy('user_id');
}

/**
Expand Down
125 changes: 65 additions & 60 deletions resources/views/admin/forms/site_form_results.blade.php
Original file line number Diff line number Diff line change
@@ -1,76 +1,81 @@
@extends('admin.layout')

@section('admin-title') Forms & Polls @endsection
@section('admin-title')
Forms & Polls
@endsection

@section('admin-content')
{!! breadcrumbs(['Admin Panel' => 'admin', 'Forms & Polls' => 'admin/forms', 'Form Results' => '']) !!}
{!! breadcrumbs(['Admin Panel' => 'admin', 'Forms & Polls' => 'admin/forms', 'Form Results' => '']) !!}

<h1>
Form Results
</h1>
<a class="float-right btn btn-primary" href="{{ url('/admin/forms/resultsbyresponse/' . $form->id) }}">View Results By Respondent</a>
<h1>
Form Results
</h1>

<div class="card mb-3">
@include('forms._site_form_header')
<div class="card mb-3">
@include('forms._site_form_header')

<div class="accordion" id="questionAccordion">
@foreach($form->questions as $question)
<div class="card">
<div class="card-header" id="headingTwo">
<div class="row p-2">
<h5>{{ $question->question }}</h5>
@if(!$form->is_anonymous && $question->has_options)
<a href="#" class="ml-2 collapsed collapse-toggle" type="button" data-toggle="collapse" data-target="#question-{{$question->id}}" aria-expanded="false" aria-controls="question-{{$question->id}}">
(View Details)
</a>
@endif
@if(!$question->has_options)
<a href="#" class="ml-2 collapsed collapse-toggle" type="button" data-toggle="collapse" data-target="#question-{{$question->id}}" aria-expanded="false" aria-controls="question-{{$question->id}}">
(View Answers)
</a>
@endif
</div>
@php $totalAnswers = $question->answers->count(); @endphp
<h6><b>Total answers: {{ $totalAnswers }}</b></h6>
@if($question->options->count() > 0)
@foreach($question->options as $option)
@php $optionAnswers = $option->answers->count(); @endphp
{{ $option->option }}
<div class="progress" style="height: 30px;">
<div class="progress-bar @if($totalAnswers > 0 && $optionAnswers / $totalAnswers * 100 == 0) ml-2 text-dark @endif" role="progressbar" style="width:{{ ($totalAnswers > 0) ? $optionAnswers / $totalAnswers * 100 : 0 }}%;" aria-valuenow="{{ $optionAnswers }}" aria-valuemin="0" aria-valuemax="{{ $totalAnswers }}">{{ $optionAnswers }}</div>
</div>
@endforeach
@else
View answers to see what people had to say!
@endif
</div>
<div id="question-{{$question->id}}" class="collapse" aria-labelledby="headingTwo" data-parent="#questionAccordion">
<div class="card-body">
@if($question->has_options)
@foreach($question->options as $option)
<b>{{ $option->option }} :</b>
<div>
@foreach($option->answers as $answer) <span class="mr-2">{!! $answer->user->displayName !!}</span> @endforeach
<div class="accordion" id="questionAccordion">
@foreach ($form->questions as $question)
<div class="card">
<div class="card-header" id="headingTwo">
<div class="row p-2">
<h5>{{ $question->question }}</h5>
@if (!$form->is_anonymous && $question->has_options)
<a href="#" class="ml-2 collapsed collapse-toggle" type="button" data-toggle="collapse" data-target="#question-{{ $question->id }}" aria-expanded="false" aria-controls="question-{{ $question->id }}">
(View Details)
</a>
@endif
@if (!$question->has_options)
<a href="#" class="ml-2 collapsed collapse-toggle" type="button" data-toggle="collapse" data-target="#question-{{ $question->id }}" aria-expanded="false" aria-controls="question-{{ $question->id }}">
(View Answers)
</a>
@endif
</div>
@php $totalAnswers = $question->answers->count(); @endphp
<h6><b>Total answers: {{ $totalAnswers }}</b></h6>
@if ($question->options->count() > 0)
@foreach ($question->options as $option)
@php $optionAnswers = $option->answers->count(); @endphp
{{ $option->option }}
<div class="progress" style="height: 30px;">
<div class="progress-bar @if ($totalAnswers > 0 && ($optionAnswers / $totalAnswers) * 100 == 0) ml-2 text-dark @endif" role="progressbar" style="width:{{ $totalAnswers > 0 ? ($optionAnswers / $totalAnswers) * 100 : 0 }}%;" aria-valuenow="{{ $optionAnswers }}" aria-valuemin="0"
aria-valuemax="{{ $totalAnswers }}">{{ $optionAnswers }}</div>
</div>
@endforeach
@else
View answers to see what people had to say!
@endif
</div>
@endforeach
@else
@foreach($question->answers as $answer)
<div>
<b>{!! $answer->user->displayName !!}:</b>
<div class="p-3 border">{{ $answer->answer }}</div>
<div id="question-{{ $question->id }}" class="collapse" aria-labelledby="headingTwo" data-parent="#questionAccordion">
<div class="card-body">
@if ($question->has_options)
@foreach ($question->options as $option)
<b>{{ $option->option }} :</b>
<div>
@foreach ($option->answers as $answer)
<span class="mr-2">{!! $answer->user->displayName !!}</span>
@endforeach
</div>
@endforeach
@else
@foreach ($question->answers as $answer)
<div>
<b>{!! $answer->user->displayName !!}:</b>
<div class="p-3 border">{{ $answer->answer }}</div>
</div>
@endforeach
@endif
</div>
</div>
@endforeach
@endif
</div>
</div>
</div>
@endforeach
@endforeach

</div>
</div>
</div>

@endsection

@section('scripts')
@parent

@endsection
@parent
@endsection
91 changes: 91 additions & 0 deletions resources/views/admin/forms/site_form_results_alt.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
@extends('admin.layout')

@section('admin-title')
Forms & Polls
@endsection

@section('admin-content')
{!! breadcrumbs(['Admin Panel' => 'admin', 'Forms & Polls' => 'admin/forms', 'Form Results' => '']) !!}

<h1>
Form Results by Respondent
</h1>

<div class="card mb-3">
@include('forms._site_form_header')

<div class="card-body">
{{-- Always only one because pagination is one at a time, and I mainly need to reference the info on the first answer here --}}
@php
$userAnswer = $userAnswers->first()->first();
@endphp
{{-- First and last page links - would add to general pagination but only really want it on this page --}}
<div class="d-flex">
@if ($userAnswers->onFirstPage())
<span class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.first')">
<span class="page-link" aria-hidden="true">&laquo;</span>
</span>
@else
<span class="page-item">
<a class="page-link" href="{{ \Request::url() }}" rel="prev" aria-label="@lang('pagination.first')">&laquo;</a>
</span>
@endif
{!! $userAnswers->render() !!}
@if ($userAnswers->hasMorePages())
<span class="page-item">
<a class="page-link" href="{{ \Request::url() . '?page=' . $userAnswers->lastPage() }}" rel="last" aria-label="@lang('pagination.last')">&raquo;</a>
</span>
@else
<span class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.last')">
<span class="page-link" aria-hidden="true">&raquo;</span>
</span>
@endif
</div>
<h1>
Submitted By {!! $form->is_anonymous ? 'Anonymous' : $userAnswer->user->displayName !!}
</h1>
<h5 class="mb-4">
{!! format_date($userAnswers->first()->last()->created_at) !!} (Last Edited {!! pretty_date($userAnswer->created_at) !!})
</h5>

@include('forms._site_form_view', ['user' => $userAnswer->user, 'number' => $userAnswer->submission_number])

<div class="d-flex">
@if ($userAnswers->onFirstPage())
<span class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.first')">
<span class="page-link" aria-hidden="true">&laquo;</span>
</span>
@else
<span class="page-item">
<a class="page-link" href="{{ \Request::url() }}" rel="prev" aria-label="@lang('pagination.first')">&laquo;</a>
</span>
@endif
{!! $userAnswers->render() !!}
@if ($userAnswers->hasMorePages())
<span class="page-item">
<a class="page-link" href="{{ \Request::url() . '?page=' . $userAnswers->lastPage() }}" rel="last" aria-label="@lang('pagination.last')">&raquo;</a>
</span>
@else
<span class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.last')">
<span class="page-link" aria-hidden="true">&raquo;</span>
</span>
@endif
</div>
</div>
</div>
@endsection


@section('scripts')
@parent
<style>
.pagination .page-item:first-child .page-link {
border-radius: 0;
margin-left: -1px;
}

.pagination .page-item:last-child .page-link {
border-radius: 0;
}
</style>
@endsection
44 changes: 25 additions & 19 deletions resources/views/forms/_site_form_view.blade.php
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
@if($number && $number <= $form->latestSubmissionNumber())
@if ($number && $number <= $form->latestSubmissionNumber())
<h2> View Form Submission {{ $number }}</h2>
<div class="border rounded p-4">
@foreach($form->questions as $question)
<h5>{{ $question->question }}</h5>
@if($question->options->count() > 0)
@foreach($question->options as $option)
<div class="form-group mb-0">
<label>{{ Form::radio($question->id, $option->id , ($question->answers->where('user_id', $user->id)->where('submission_number', $number)->first()?->option_id == $option->id) ? true : false, ['class' => 'mr-1', 'disabled' => 'disabled']) }} {{ $option->option }}</label>
</div>
@endforeach
@else
{!! Form::textarea($question->id, ($number) ? $question->answers->where('user_id', $user->id)->where('submission_number', $number)->first()?->answer : null , ['class' => 'form-control', 'disabled' => 'disabled']) !!}
@endif
@foreach ($form->questions as $question)
<h5>{{ $question->question }}</h5>
@if ($question->options->count() > 0)
@foreach ($question->options as $option)
<div class="form-group mb-0">
<label>{{ Form::radio($question->id,$option->id,$question->answers->where('user_id', $user->id)->where('submission_number', $number)->first()?->option_id == $option->id? true: false,['class' => 'mr-1', 'disabled' => 'disabled']) }} {{ $option->option }}</label>
</div>
@endforeach
@else
{!! Form::textarea(
$question->id,
$number
? $question->answers->where('user_id', $user->id)->where('submission_number', $number)->first()?->answer
: null,
['class' => 'form-control', 'disabled' => 'disabled'],
) !!}
@endif
@endforeach
{!! Form::hidden('action', 'edit') !!}
{!! Form::hidden('submission_number', $number) !!}
Expand All @@ -21,11 +27,11 @@
</div>
@else
<h2>View Form Submissions </h2>
@foreach($form->userAnswers($user) as $submission => $answers)
<div class="row">
<div class="col-8"> Submission {{ $submission }} </div>
<div class="col-4"> <a class="btn btn-primary btn-sm float-right" href="?action=edit&number={{ $submission }}">View</a> </div>
</div>
<hr>
@foreach ($form->userAnswers($user) as $submission => $answers)
<div class="row">
<div class="col-8"> Submission {{ $submission }} </div>
<div class="col-4"> <a class="btn btn-primary btn-sm float-right" href="?action=edit&number={{ $submission }}">View</a> </div>
</div>
<hr>
@endforeach
@endif
@endif
2 changes: 1 addition & 1 deletion routes/lorekeeper/admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@
Route::post('edit/{id?}', 'SiteFormController@postCreateEditSiteForm');
Route::post('delete/{id}', 'SiteFormController@postDeleteSiteForm');
Route::get('results/{id}', 'SiteFormController@getSiteFormResults');

Route::get('resultsbyresponse/{id}', 'SiteFormController@getSiteFormResultsAlt');
});


Expand Down