فهرست منبع

Updated socket.io

Samson Mutunga 1 سال پیش
والد
کامیت
99b733509e

+ 33 - 8
app/Http/Controllers/GuestController.php

@@ -129,23 +129,26 @@ class GuestController extends Controller
         $formData = [
             'uid' => $survey->uid,
             'surveyDataJson' => $request->get('data'),
-            'surveyHTML' => $survey->surveyhtml,
         ];
         $url = '/survey/submitData';
         $response = $this->calljava($request, $url, $formData);
         
 
-        if($response['success']){
-            return redirect()->back()->with('success', 'Information saved!');
+        if(!@$response['success']){
+           return redirect()->back()->with('error', $response['message']);            
         }
-        return redirect()->back()->with('error', $response['message']);
-        
+
+        return $this->toggleSurveyMarkAsCompleted($request, $survey->uid);
     }
 
     public function viewSurveyFormAutoSubmit(Request $request, $accessKey){
         $survey = Survey::where('access_key', $accessKey)->where('is_accessible_to_target', true)->where('is_active', true)->first();
         if(!$survey) return $this->fail('Invalid survey access key!');
 
+        if($survey->is_completed){
+            return $this->fail('This survey has been marked as completed and you cannot modify the information saved!!');
+        }
+
         $formData = [
             'uid' => $survey->uid,
             'surveyDataJson' => $request->get('dataJson'),
@@ -153,10 +156,32 @@ class GuestController extends Controller
         $url = '/survey/submitData';
         $response = $this->calljava($request, $url, $formData);        
 
-        if($response['success']){
-            return $this->pass();
+        if(!@$response['success']){
+            return $this->fail($response['message']);            
+        }
+
+        return $this->pass();
+    }
+
+    private function toggleSurveyMarkAsCompleted(Request $request, $surveyUid){
+        $markAsCompleted = $request->get('mark_as_completed');
+        if($markAsCompleted){
+            $url = '/survey/markAsCompleted';
+            $response = $this->calljava($request, $url, ['uid' => $surveyUid]);
+            if(!@$response['success']){
+                return redirect()->back()->with('error', $response['message']);            
+            }
+        }
+        $undoMarkAsCompleted = $request->get('undo_mark_as_completed');
+        if($undoMarkAsCompleted){
+            $url = '/survey/undoMarkAsCompleted';
+            $response = $this->calljava($request, $url, ['uid' => $surveyUid]);
+            if(!@$response['success']){
+                return redirect()->back()->with('error', $response['message']);            
+            }
+            return redirect()->back()->with('error', 'You have marked this survey as incomplete!');   
         }
-        return $this->fail($response['message']);
+        return redirect()->back()->with('success', 'Information saved!');
     }
 
     public function viewSurveyFormGetData(Request $request, $accessKey){

+ 1 - 0
package.json

@@ -21,6 +21,7 @@
     },
     "dependencies": {
         "bootstrap": "^4.5.0",
+        "dotenv": "^16.4.1",
         "express": "^4.18.2",
         "http": "^0.0.1-security",
         "jquery": "^3.5.1",

+ 25 - 1
resources/views/app/patient/surveys/forms/form.blade.php

@@ -8,13 +8,28 @@
       <input type="hidden" name="data" :value="JSON.stringify(form)" />
       @csrf
     @endif
+
+    @if(@$survey->is_completed)
+      <div class="alert alert-success p-1 rounded-0">This survey is marked as completed!</div>
+      <fieldset disabled>
+    @endif
     
     <div><?= $survey->surveyhtml ?></div>
+
+    @if(@$survey->is_completed)
+      </fieldset>
+    @endif
     
     @if(!isset($preview))
       <div class="row">      
           <div class="col-md-12">
-            <button class="btn btn-sm btn-primary px-5 py-2">Submit</button>
+            @if(@$survey->is_completed)
+              <input type="hidden" name="undo_mark_as_completed" value="1" />
+              <button class="btn btn-sm btn-danger px-5 py-2">Undo mark as completed</button>
+            @else
+              <input type="hidden" name="mark_as_completed" value="1" />
+              <button class="btn btn-sm btn-primary px-5 py-2">Mark as completed</button>
+            @endif
           </div>
       </div>
     @endif
@@ -39,9 +54,18 @@
       watchInputFields: function(){
         var self = this;
         var form = $('#surveyForm');
+        form.find('select, textarea').off('change');
         form.find('input, select, textarea').on('change', function(){
           self.autosaveChanges();
+          return;
         });
+
+        form.find('input[type=text], textarea').off('keyup');
+        form.find('input[type=text], textarea').on('keyup', function(){
+          self.autosaveChanges();
+          return;
+        });
+
       },
       autosaveChanges: function(){
         var self = this;

+ 1 - 1
resources/views/app/patient/surveys/list.blade.php

@@ -32,7 +32,7 @@
                       <td>{{ $record->title }}</td>
                       <td>{{ $record->internal_name }}</td>
                       <td>
-                          @if ($record->survey_data)
+                          @if ($record->is_completed)
                               <span class="text-success">Yes</span>
                               @include('app.patient.surveys.partials.survey-results')
                           @else

+ 3 - 1
socket-io-server.js

@@ -1,3 +1,4 @@
+require('dotenv').config();
 const express = require('express');
 const { createServer } = require('node:http');
 const { Server } = require('socket.io');
@@ -6,8 +7,9 @@ const app = express();
 const server = createServer(app);
 const io = new Server(server, {
   cors: {
-   origin: "https://care.leadershiphealth.local"
+   origin: process.env.APP_URL
 }});
+
 const port = 3333;
 
 io.on('connection', (socket) => {