瀏覽代碼

Patient > Simple SMS Reminders UI

Vijayakrishnan 4 年之前
父節點
當前提交
9e0dba2e1c

+ 5 - 0
app/Http/Controllers/PatientController.php

@@ -290,6 +290,11 @@ class PatientController extends Controller
         return view('app.patient.settings', compact('patient'));
     }
 
+    public function smsReminders(Request $request, Client $patient )
+    {
+        return view('app.patient.sms-reminders', compact('patient'));
+    }
+
     public function pros(Request $request, Client $patient )
     {
         return view('app.patient.pros', compact('patient'));

+ 7 - 0
app/Models/Client.php

@@ -492,4 +492,11 @@ class Client extends Model
         return $this->hasOne(AccountClient::class, 'client_id', 'id')->where('is_removed', false);
     }
 
+    public function smsReminders()
+    {
+        return $this->hasMany(SimpleSMSReminder::class, 'client_id', 'id')
+            ->where('is_active', true)
+            ->orderBy('created_at', 'asc');
+    }
+
 }

+ 11 - 0
app/Models/SimpleSMSReminder.php

@@ -0,0 +1,11 @@
+<?php
+
+namespace App\Models;
+
+# use Illuminate\Database\Eloquent\Model;
+
+class SimpleSMSReminder extends Model
+{
+    protected $table = 'simple_sms_reminder';
+
+}

+ 4 - 0
public/css/style.css

@@ -1652,4 +1652,8 @@ th.only-screen, td.only-screen {
 .pro-dashboard-inline-calendar>.ui-datepicker-inline {
     width: 100%;
     border: 0 !important;
+}
+#simpleSMSReminderComponent input[type="time"] {
+    max-width: 90px;
+    min-width: unset !important;
 }

+ 221 - 0
resources/views/app/patient/sms-reminders.blade.php

@@ -0,0 +1,221 @@
+@extends ('layouts.patient')
+
+@section('inner-content')
+
+    <div id="simpleSMSReminderComponent">
+        <div class="pt-2 d-flex align-items-start">
+            <h6 class="my-0 text-secondary d-flex align-items-center w-100">
+                <span class="font-weight-bold text-secondary">SMS Reminders</span>
+                <span class="mx-2 text-secondary">|</span>
+                <div moe>
+                    <a start show class="py-0 mb-3">Add</a>
+                    <form url="/api/simpleSmsReminder/create" class="mcp-theme-1">
+                        <input type="hidden" name="clientUid" value="{{$patient->uid}}">
+                        <div class="row mb-2">
+                            <div class="col-5 pr-0">
+                                <label class="text-sm text-secondary mb-1">To Number</label>
+                                <input type="text" name="smsNumber" class="form-control form-control-sm">
+                            </div>
+                        </div>
+                        <div class="row mb-2">
+                            <div class="col-12">
+                                <label class="text-sm text-secondary mb-1">Message</label>
+                                <textarea name="message" class="form-control form-control-sm"></textarea>
+                            </div>
+                        </div>
+                        <div class="row mb-2">
+                            <div class="col-12">
+                                <label class="text-sm text-secondary mb-1">Schedule</label>
+                                <table class="table table-sm table-bordered mb-0">
+                                    <thead>
+                                    <tr class="bg-light">
+                                        <th class="border-bottom-0 text-center">Sun</th>
+                                        <th class="border-bottom-0 text-center">Mon</th>
+                                        <th class="border-bottom-0 text-center">Tue</th>
+                                        <th class="border-bottom-0 text-center">Wed</th>
+                                        <th class="border-bottom-0 text-center">Thu</th>
+                                        <th class="border-bottom-0 text-center">Fri</th>
+                                        <th class="border-bottom-0 text-center">Sat</th>
+                                    </tr>
+                                    </thead>
+                                    <tbody>
+                                    <tr>
+                                        <td class="text-center"><input type="checkbox" data-day="sun"></td>
+                                        <td class="text-center"><input type="checkbox" data-day="mon"></td>
+                                        <td class="text-center"><input type="checkbox" data-day="tue"></td>
+                                        <td class="text-center"><input type="checkbox" data-day="wed"></td>
+                                        <td class="text-center"><input type="checkbox" data-day="thu"></td>
+                                        <td class="text-center"><input type="checkbox" data-day="fri"></td>
+                                        <td class="text-center"><input type="checkbox" data-day="sat"></td>
+                                    </tr>
+                                    <tr>
+                                        <td><input type="time" class="form-control form-control-sm" data-day="sun" name="timeOfDaySunday" readonly></td>
+                                        <td><input type="time" class="form-control form-control-sm" data-day="mon" name="timeOfDayMonday" readonly></td>
+                                        <td><input type="time" class="form-control form-control-sm" data-day="tue" name="timeOfDayTuesday" readonly></td>
+                                        <td><input type="time" class="form-control form-control-sm" data-day="wed" name="timeOfDayWednesday" readonly></td>
+                                        <td><input type="time" class="form-control form-control-sm" data-day="thu" name="timeOfDayThursday" readonly></td>
+                                        <td><input type="time" class="form-control form-control-sm" data-day="fri" name="timeOfDayFriday" readonly></td>
+                                        <td><input type="time" class="form-control form-control-sm" data-day="sat" name="timeOfDaySaturday" readonly></td>
+                                    </tr>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                        <div>
+                            <button submit class="btn btn-sm btn-primary mr-1">Submit</button>
+                            <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                        </div>
+                    </form>
+                </div>
+            </h6>
+        </div>
+
+        <table class="table table-sm table-striped table-bordered mb-0 mt-2 notes-list">
+            <thead>
+            <tr>
+                <th class="px-2 text-secondary border-bottom-0">#</th>
+                <th class="px-2 text-secondary border-bottom-0">To Number</th>
+                <th class="px-2 text-secondary border-bottom-0">Message</th>
+                <th class="px-2 text-secondary border-bottom-0">Schedule</th>
+                <th class="px-2 text-secondary border-bottom-0">Actions</th>
+            </tr>
+            </thead>
+            <tbody>
+            <?php $index = 0; ?>
+            @foreach ($patient->smsReminders as $smsReminder)
+                <?php $index++; ?>
+                <tr>
+                    <td class="px-2">{{$index}}</td>
+                    <td class="px-2">{{$smsReminder->sms_number}}</td>
+                    <td class="px-2">{{$smsReminder->message}}</td>
+                    <td class="px-2">
+                        @if($smsReminder->time_of_day_sunday)
+                            <div>
+                                <span class="text-secondary width-40px d-inline-block">Sun:</span>
+                                <b>{{friendly_time($smsReminder->time_of_day_sunday)}}</b>
+                            </div>
+                        @endif
+                        @if($smsReminder->time_of_day_monday)
+                            <div>
+                                <span class="text-secondary width-40px d-inline-block">Mon:</span>
+                                <b>{{friendly_time($smsReminder->time_of_day_monday)}}</b>
+                            </div>
+                        @endif
+                        @if($smsReminder->time_of_day_tuesday)
+                            <div>
+                                <span class="text-secondary width-40px d-inline-block">Tue:</span>
+                                <b>{{friendly_time($smsReminder->time_of_day_tuesday)}}</b>
+                            </div>
+                        @endif
+                        @if($smsReminder->time_of_day_wednesday)
+                            <div>
+                                <span class="text-secondary width-40px d-inline-block">Wed:</span>
+                                <b>{{friendly_time($smsReminder->time_of_day_wednesday)}}</b>
+                            </div>
+                        @endif
+                        @if($smsReminder->time_of_day_thursday)
+                            <div>
+                                <span class="text-secondary width-40px d-inline-block">Thu:</span>
+                                <b>{{friendly_time($smsReminder->time_of_day_thursday)}}</b>
+                            </div>
+                        @endif
+                        @if($smsReminder->time_of_day_friday)
+                            <div>
+                                <span class="text-secondary width-40px d-inline-block">Fri:</span>
+                                <b>{{friendly_time($smsReminder->time_of_day_friday)}}</b>
+                            </div>
+                        @endif
+                        @if($smsReminder->time_of_day_saturday)
+                            <div>
+                                <span class="text-secondary width-40px d-inline-block">Sat:</span>
+                                <b>{{friendly_time($smsReminder->time_of_day_saturday)}}</b>
+                            </div>
+                        @endif
+                    </td>
+                    <td class="px-2">
+                        <div moe relative="">
+                            <a start show class="py-0 mb-3">Edit</a>
+                            <form url="/api/simpleSmsReminder/update" class="mcp-theme-1" right="">
+                                <input type="hidden" name="uid" value="{{$smsReminder->uid}}">
+                                <div class="row mb-2">
+                                    <div class="col-5 pr-0">
+                                        <label class="text-sm text-secondary mb-1">To Number</label>
+                                        <input type="text" name="smsNumber" class="form-control form-control-sm" value="{{$smsReminder->sms_number}}">
+                                    </div>
+                                </div>
+                                <div class="row mb-2">
+                                    <div class="col-12">
+                                        <label class="text-sm text-secondary mb-1">Message</label>
+                                        <textarea name="message" class="form-control form-control-sm">{{$smsReminder->message}}</textarea>
+                                    </div>
+                                </div>
+                                <div class="row mb-2">
+                                    <div class="col-12">
+                                        <label class="text-sm text-secondary mb-1">Schedule</label>
+                                        <table class="table table-sm table-bordered mb-0">
+                                            <thead>
+                                            <tr class="bg-light">
+                                                <th class="border-bottom-0 text-center">Sun</th>
+                                                <th class="border-bottom-0 text-center">Mon</th>
+                                                <th class="border-bottom-0 text-center">Tue</th>
+                                                <th class="border-bottom-0 text-center">Wed</th>
+                                                <th class="border-bottom-0 text-center">Thu</th>
+                                                <th class="border-bottom-0 text-center">Fri</th>
+                                                <th class="border-bottom-0 text-center">Sat</th>
+                                            </tr>
+                                            </thead>
+                                            <tbody>
+                                            <tr>
+                                                <td class="text-center"><input type="checkbox" data-day="sun" {{$smsReminder->time_of_day_sunday ? 'checked' : ''}}></td>
+                                                <td class="text-center"><input type="checkbox" data-day="mon" {{$smsReminder->time_of_day_monday ? 'checked' : ''}}></td>
+                                                <td class="text-center"><input type="checkbox" data-day="tue" {{$smsReminder->time_of_day_tuesday ? 'checked' : ''}}></td>
+                                                <td class="text-center"><input type="checkbox" data-day="wed" {{$smsReminder->time_of_day_wednesday ? 'checked' : ''}}></td>
+                                                <td class="text-center"><input type="checkbox" data-day="thu" {{$smsReminder->time_of_day_thursday ? 'checked' : ''}}></td>
+                                                <td class="text-center"><input type="checkbox" data-day="fri" {{$smsReminder->time_of_day_friday ? 'checked' : ''}}></td>
+                                                <td class="text-center"><input type="checkbox" data-day="sat" {{$smsReminder->time_of_day_saturday ? 'checked' : ''}}></td>
+                                            </tr>
+                                            <tr>
+                                                <td><input type="time" class="form-control form-control-sm" data-day="sun" name="timeOfDaySunday" {{$smsReminder->time_of_day_sunday ? '' : 'readonly'}} value="{{$smsReminder->time_of_day_sunday ? substr($smsReminder->time_of_day_sunday, 0, 5) : ''}}"></td>
+                                                <td><input type="time" class="form-control form-control-sm" data-day="mon" name="timeOfDayMonday" {{$smsReminder->time_of_day_monday ? '' : 'readonly'}} value="{{$smsReminder->time_of_day_monday ? substr($smsReminder->time_of_day_monday, 0, 5) : ''}}"></td>
+                                                <td><input type="time" class="form-control form-control-sm" data-day="tue" name="timeOfDayTuesday" {{$smsReminder->time_of_day_tuesday ? '' : 'readonly'}} value="{{$smsReminder->time_of_day_tuesday ? substr($smsReminder->time_of_day_tuesday, 0, 5) : ''}}"></td>
+                                                <td><input type="time" class="form-control form-control-sm" data-day="wed" name="timeOfDayWednesday" {{$smsReminder->time_of_day_wednesday ? '' : 'readonly'}} value="{{$smsReminder->time_of_day_wednesday ? substr($smsReminder->time_of_day_wednesday, 0, 5) : ''}}"></td>
+                                                <td><input type="time" class="form-control form-control-sm" data-day="thu" name="timeOfDayThursday" {{$smsReminder->time_of_day_thursday ? '' : 'readonly'}} value="{{$smsReminder->time_of_day_thursday ? substr($smsReminder->time_of_day_thursday, 0, 5) : ''}}"></td>
+                                                <td><input type="time" class="form-control form-control-sm" data-day="fri" name="timeOfDayFriday" {{$smsReminder->time_of_day_friday ? '' : 'readonly'}} value="{{$smsReminder->time_of_day_friday ? substr($smsReminder->time_of_day_friday, 0, 5) : ''}}"></td>
+                                                <td><input type="time" class="form-control form-control-sm" data-day="sat" name="timeOfDaySaturday" {{$smsReminder->time_of_day_saturday ? '' : 'readonly'}} value="{{$smsReminder->time_of_day_saturday ? substr($smsReminder->time_of_day_saturday, 0, 5) : ''}}"></td>
+                                            </tr>
+                                            </tbody>
+                                        </table>
+                                    </div>
+                                </div>
+                                <div>
+                                    <button submit class="btn btn-sm btn-primary mr-1">Submit</button>
+                                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                                </div>
+                            </form>
+                        </div>
+                    </td>
+                </tr>
+            @endforeach
+            </tbody>
+        </table>
+    </div>
+
+    <script>
+        (function () {
+            function init() {
+                $('input[type="checkbox"][data-day]').change(function() {
+                    let input = $(this).closest('form')
+                        .find('input[type="time"][data-day="' + $(this).attr('data-day') + '"]');
+                    input.prop('readonly', !this.checked);
+                    if(this.checked) {
+                        input.focus();
+                    }
+                    else {
+                        input.val('');
+                    }
+                });
+            }
+            addMCInitializer('simpleSMSReminderComponent', init, '#simpleSMSReminderComponent');
+        }).call(window);
+    </script>
+@endsection

+ 4 - 0
resources/views/layouts/patient.blade.php

@@ -157,6 +157,10 @@
                             <a class="nav-link {{ strpos($routeName, 'patients.view.settings') === 0 ? 'active' : '' }}"
                                href="{{ route('patients.view.settings', ['patient' => $patient]) }}">Settings</a>
                         </li>
+                        <li class="nav-item">
+                            <a class="nav-link {{ strpos($routeName, 'patients.view.sms-reminders') === 0 ? 'active' : '' }}"
+                               href="{{ route('patients.view.sms-reminders', ['patient' => $patient]) }}">SMS Reminders</a>
+                        </li>
                         <li class="nav-item">
                             <a class="nav-link {{ strpos($routeName, 'patients.view.pros') === 0 ? 'active' : '' }}"
                                href="{{ route('patients.view.pros', ['patient' => $patient]) }}">Pros</a>

+ 1 - 0
routes/web.php

@@ -182,6 +182,7 @@ Route::middleware('pro.auth')->group(function () {
             Route::get('sections', 'PatientController@sections')->name('sections');
             Route::get('handouts', 'PatientController@handouts')->name('handouts');
             Route::get('settings', 'PatientController@settings')->name('settings');
+            Route::get('sms-reminders', 'PatientController@smsReminders')->name('sms-reminders');
             Route::get('pros', 'PatientController@pros')->name('pros');
             Route::get('account', 'PatientController@account')->name('account');
             Route::get('care-checklist', 'PatientController@careChecklist')->name('care-checklist');