Ver Fonte

Added survey form preview

Samson Mutunga há 1 ano atrás
pai
commit
568a0d8275

+ 20 - 0
app/Http/Controllers/GuestController.php

@@ -140,4 +140,24 @@ class GuestController extends Controller
         return redirect()->back()->with('error', $response['message']);
         
     }
+
+    public function viewSurveyFormPreview(Request $request, $uid){
+        $survey = Survey::where('uid', $uid)->first();
+        if(!$survey) return null;
+
+        $surveyFormPath = resource_path(Survey::FORM_PATH . '/' . $survey->internal_name . '.blade.php');
+        if(!file_exists($surveyFormPath)) return null;
+
+        $entity = null;
+        if($survey->entity_type === 'Client'){
+            $entity = Client::where('uid', $survey->entity_uid)->first();
+        }
+
+        if(!$entity) return null;
+        $preview = true;
+        $layout = 'app.admin.surveys.partials.preview-layout';
+        $html = (string) view('app.admin.surveys.forms.'.$survey->internal_name, compact('entity', 'survey', 'preview', 'layout'));
+        return $html;
+        
+    }
 }

+ 93 - 84
resources/views/app/admin/surveys/list.blade.php

@@ -1,97 +1,106 @@
 @extends ('layouts/template')
 
 @section('content')
-<link href="/select2/select2.min.css" rel="stylesheet" />
-<script src="/select2/select2.min.js"></script>
+    <link href="/select2/select2.min.css" rel="stylesheet" />
+    <script src="/select2/select2.min.js"></script>
 
-<div class="p-3 mcp-theme-1" id="patients-list">
-	<div class="card">
-		<div class="card-header px-3 py-2">
-            <div class="d-flex align-items-start justify-content-between">
-                <div>
-                    <strong class="mr-4">
-                        <i class="fas fa-clipboard-list"></i>
-                        Surveys
-                    </strong>
+    <div class="p-3 mcp-theme-1" id="patients-list">
+        <div class="card">
+            <div class="card-header px-3 py-2">
+                <div class="d-flex align-items-start justify-content-between">
+                    <div>
+                        <strong class="mr-4">
+                            <i class="fas fa-clipboard-list"></i>
+                            Surveys
+                        </strong>
+                    </div>
+                    <div>
+                        @include('app.admin.surveys.partials.create')
+                    </div>
                 </div>
-                <div>
-                    @include("app.admin.surveys.partials.create")
-                </div>
-            </div>
 
-		</div>
-		{{-- <div class="p-3">
+            </div>
+            {{-- <div class="p-3">
 			filter blade
 		</div> --}}
-		<table class="table table-hover bg-white p-0 m-0 table-bordered table-sm border-top border-bottom ">
-			<thead class="bg-light">
-				<tr>
-					<th class="border-0" style="width:150px">Created At</th>
-					<th class="border-0" style="width:150px">Title</th>
-					<th class="border-0" style="width:200px">Internal Name</th>
-					<th class="border-0" style="width:200px">Entity Type</th>
-					<th class="border-0">Entity</th>
-					<th class="border-0" style="width:180px">Survey Completed</th>
-					<th class="border-0" style="width:150px">Access Granted</th>
-					<th class="border-0" style="width:200px">Access Link</th>
-				</tr>
-			</thead>
-			<tbody>
-				@foreach($records as $record)
-				<tr>
-					<td>{{ friendly_date($record->created_at) }}</td>
-					<td>{{ $record->title }}</td>
-					<td>{{ $record->internal_name }}</td>
-					<td>{{ $record->entity_type }}</td>
-					<td>
-						@if($record->entity_type === 'Client')
-						{{ $record->getEntity()->displayName() }}
-						@else
-						---
-						@endif
-					</td>
-					<td>
-						@if($record->survey_data)
-						<span class="text-success">Yes</span>
-						@include('app.admin.surveys.partials.survey-results')
-						@else
-						<span class="text-danger">No</span>
-						@endif
-					</td>
-					{{-- <td><?= parseRender(json_decode($record->survey_data ?? '{}')) ?></td> --}}
-					<td>
-						@if($record->is_accessible_to_target)
-						<span class="text-success">Yes</span>
-						@else
-						<span class="text-danger">No</span>
-						@endif
-					</td>
-					<td>
-                        @if($record->is_accessible_to_target)
-                            <a href="{{ route('view-survey-form', $record->access_key) }}" target="_blank" class="mr-2" native>Open Link</a>
-                            @include("app.admin.surveys.partials.revoke-access-to-target")
-                        @else
-                            @include("app.admin.surveys.partials.grant-access-to-target")
-                        @endif
-                    </td>
+            <table class="table table-hover bg-white p-0 m-0 table-bordered table-sm border-top border-bottom ">
+                <thead class="bg-light">
+                    <tr>
+                        <th class="border-0" style="width:150px">Created At</th>
+                        <th class="border-0" style="width:150px">Title</th>
+                        <th class="border-0" style="width:200px">Internal Name</th>
+                        <th class="border-0" style="width:200px">Entity Type</th>
+                        <th class="border-0">Entity</th>
+                        <th class="border-0" style="width:180px">Survey Completed</th>
+                        <th class="border-0" style="width:150px">Access Granted</th>
+                        <th class="border-0" style="width:200px">Access Link</th>
+                    </tr>
+                </thead>
+                <tbody>
+                    @foreach ($records as $record)
+                        <tr>
+                            <td>{{ friendly_date($record->created_at) }}</td>
+                            <td>{{ $record->title }}</td>
+                            <td>{{ $record->internal_name }}</td>
+                            <td>{{ $record->entity_type }}</td>
+                            <td>
+                                @if ($record->entity_type === 'Client')
+                                    {{ $record->getEntity()->displayName() }}
+                                @else
+                                    ---
+                                @endif
+                            </td>
+                            <td>
+                                @if ($record->survey_data)
+                                    <span class="text-success">Yes</span>
+                                    @include('app.admin.surveys.partials.survey-results')
+                                @else
+                                    <span class="text-danger">No</span>
+                                @endif
+                            </td>
+                            {{-- <td><?= parseRender(json_decode($record->survey_data ?? '{}')) ?></td> --}}
+                            <td>
+                                @if ($record->is_accessible_to_target)
+                                    <span class="text-success">Yes</span>
+                                @else
+                                    <span class="text-danger">No</span>
+                                @endif
+                            </td>
+                            <td>
+                                @if ($record->is_accessible_to_target)
+                                    <a href="{{ route('view-survey-form', $record->access_key) }}" target="_blank"
+                                        class="mr-2" native>Open Link</a>
+                                    @include('app.admin.surveys.partials.revoke-access-to-target')
+                                @else
+                                    @include('app.admin.surveys.partials.grant-access-to-target')
+                                @endif
+                            </td>
 
-				</tr>
-				@endforeach
+                        </tr>
+                    @endforeach
 
-				@if(count($records) === 0)
-				<tr>
-					<td colspan="8">No records found!</td>
-				</tr>
-				@endif
-			</tbody>
+                    @if (count($records) === 0)
+                        <tr>
+                            <td colspan="8">No records found!</td>
+                        </tr>
+                    @endif
+                </tbody>
 
-		</table>
-	</div>
-	<div class="p-3">
-		{{$records->withQueryString()->links()}}
-	</div>
+            </table>
+        </div>
+        <div class="p-3">
+            {{ $records->withQueryString()->links() }}
+        </div>
+    </div>
 
-</div>
-</div>
-</div>
+    <script>
+        (function($){
+            $('[show-survey-results]').click(function(){
+                var uid = $(this).attr('show-survey-results');
+                $.get("/survey/"+uid+"/preview", {}, function(response){
+                    $('#'+uid).html(response);
+                });
+            });
+        })(jQuery);
+    </script>
 @endsection

+ 2 - 2
resources/views/app/admin/surveys/partials/survey-results.blade.php

@@ -1,5 +1,5 @@
 <div moe wide relative center class="ml-2">
-  <a start show><i class="fas fa-eye fa-fw on-hover-opaque"></i></a>
+  <a start show show-survey-results="{{ $record->uid }}"><i class="fas fa-eye fa-fw on-hover-opaque"></i></a>
   <form url="" class="mcp-theme-1">
     <div>
       <div class="d-flex align-items-center justify-content-between pb-2 mb-1">
@@ -14,7 +14,7 @@
       </div>
 
       <div class="border p-4">
-        <?= getSurveyData($record) ?>
+        <div id="{{ $record->uid }}">Loading...</div>
       </div>
 
     </div>

+ 1 - 0
routes/web.php

@@ -30,6 +30,7 @@ use App\Http\Controllers\RdController;
  */
 Route::get('survey/{accessKey}', 'GuestController@viewSurveyForm')->name('view-survey-form');
 Route::post('survey/{accessKey}/submit', 'GuestController@viewSurveyFormSubmit')->name('view-survey-form-submit');
+Route::get('survey/{uid}/preview', 'GuestController@viewSurveyFormPreview')->name('view-survey-form-preview');
 Route::get('login', 'LoginController@showLoginForm')->name('login');
 Route::post('login', 'LoginController@login');
 Route::get('logout', 'LoginController@logout');