Parcourir la source

Merge branch 'dev' into dev-vj

Vijayakrishnan il y a 4 ans
Parent
commit
a5c8250c78

+ 46 - 62
app/Http/Controllers/PracticeManagementController.php

@@ -7,6 +7,7 @@ use App\Models\Bill;
 use App\Models\Client;
 use App\Models\McpRequest;
 use App\Models\Note;
+use App\Models\Pro;
 use App\Models\ProGeneralAvailability;
 use App\Models\ProRate;
 use App\Models\ProSpecificAvailability;
@@ -140,33 +141,49 @@ class PracticeManagementController extends Controller
         return view('app.practice-management.my-text-shortcuts', compact('myTextShortcuts'));
     }
 
-    public function myAvailability(Request $request)
+    public function proAvailability(Request $request)
     {
         $performer = $this->performer();
         $pro = $performer->pro;
+        
+        if($request->get('pro_uid')){
+            $proUid = $request->get('pro_uid');
+            $pro = Pro::where('uid', $proUid)->first();
+        }
+
+        $pros = Pro::all();
+
         $generalAvailabilitiesList = ProGeneralAvailability::where('pro_id', $pro->id)->where('is_cancelled', false)->orderBy('created_at', 'asc')->get();
-        $generalAvailabilities = [];
+        $generalAvailabilities = [
+            'MONDAY'=>[],
+            'TUESDAY'=>[],
+            'WEDNESDAY'=>[],
+            'THURSDAY'=>[],
+            'FRIDAY'=>[],
+            'SATURDAY'=>[],
+            'SUNDAY'=>[],
+        ];
         foreach($generalAvailabilitiesList as $ga){
             if($ga->day_of_week == 'MONDAY'){
-                $generalAvailabilities['MONDAY'] = $ga;
+                $generalAvailabilities['MONDAY'][] = $ga;
             }
             if($ga->day_of_week == 'TUESDAY'){
-                $generalAvailabilities['TUESDAY'] = $ga;
+                $generalAvailabilities['TUESDAY'][] = $ga;
             }
             if($ga->day_of_week == 'WEDNESDAY'){
-                $generalAvailabilities['WEDNESDAY'] = $ga;
+                $generalAvailabilities['WEDNESDAY'][] = $ga;
             }
             if($ga->day_of_week == 'THURSDAY'){
-                $generalAvailabilities['THURSDAY'] = $ga;
+                $generalAvailabilities['THURSDAY'][] = $ga;
             }
             if($ga->day_of_week == 'FRIDAY'){
-                $generalAvailabilities['FRIDAY'] = $ga;
+                $generalAvailabilities['FRIDAY'][] = $ga;
             }
             if($ga->day_of_week == 'SATURDAY'){
-                $generalAvailabilities['SATURDAY'] = $ga;
+                $generalAvailabilities['SATURDAY'][] = $ga;
             }
             if($ga->day_of_week == 'SUNDAY'){
-                $generalAvailabilities['SUNDAY'] = $ga;
+                $generalAvailabilities['SUNDAY'][] = $ga;
             }
         }
         
@@ -174,65 +191,32 @@ class PracticeManagementController extends Controller
         $specificUnavailabilities = ProSpecificUnavailability::where('pro_id', $pro->id)->where('is_cancelled', false)->orderBy('start_time', 'asc')->get();
 
         //events for the calendar
-        $eventsData = [];
-        $dayInts = [
-            'SUNDAY'=> 1,
-            'MONDAY'=> 2,
-            'TUESDAY'=> 3,
-            'WEDNESDAY'=> 4,
-            'THURSDAY'=> 5,
-            'FRIDAY'=> 6,
-            'SATURDAY'=> 7,
-        ];
-
-        foreach($specificUnavailabilities as $sa){
-            $realTimezone = resolve_timezone($sa->timezone);
-            
-            $startTime = new DateTime($sa->start_time);
-            $startTime->setTimezone(new DateTimeZone($realTimezone));
-
-            $endTime = new DateTime($sa->end_time);
-            $endTime->setTimezone(new DateTimeZone($realTimezone));
-
-            $eventsData[] = [
-                'title' => $sa->title, 
-                'start' => $startTime->format(DateTime::ISO8601),
-                'end' => $endTime->format(DateTime::ISO8601),
-                'backgroundColor' => 'red'
-            ];
-
-        }
+        $startDate = date('Y-m-d', strtotime("sunday -1 week")); 
+        $endDateTime = new DateTime($startDate);        
+        $endDateTime->modify('+6 day');
+        $endDate =  $endDateTime->format("Y-m-d");
 
-        foreach($specificAvailabilities as $su){
-
-            $realTimezone = resolve_timezone($su->timezone);
-            
-            $startTime = new DateTime($su->start_time);
-            $startTime->setTimezone(new DateTimeZone($realTimezone));
+        $eventsData = $pro->getAvailabilityEvents($startDate, $endDate);
+        $events = json_encode($eventsData);
 
-            $endTime = new DateTime($su->end_time);
-            $endTime->setTimezone(new DateTimeZone($realTimezone));
+        return view('app.practice-management.pro-availability', compact('pros','generalAvailabilities', 'specificAvailabilities', 'specificUnavailabilities','events'));
+    }
 
-            $eventsData[] = [
-                'title' => $su->title, 
-                'start' => $startTime->format(DateTime::ISO8601),
-                'end' => $endTime->format(DateTime::ISO8601),
-            ];   
-        }
+    public function loadAvailability(Request $request){
+        $performer = $this->performer();
+        $pro = $performer->pro;
+        $startDate = $request->get('start');
+        $endDate = $request->get('end');
         
-        foreach($generalAvailabilities as $day => $ga){
-            $eventsData[] = [
-                'title' => 'General Availability',
-                'daysOfWeek' => [$dayInts[$day]],
-                'startTime' => $ga->start_time,
-                'endTime' => $ga->end_time,
-            ];
+        if($request->get('pro_uid')){
+            $proUid = $request->get('pro_uid');
+            $pro = Pro::where('uid', $proUid)->first();
         }
 
-        $events = json_encode($eventsData);
-
-
-        return view('app.practice-management.my-availability', compact('generalAvailabilities', 'specificAvailabilities', 'specificUnavailabilities','events'));
+        $eventsData = $pro->getAvailabilityEvents($startDate, $endDate);
+        //$events = json_encode($eventsData);
+        
+        return $eventsData;
     }
 
     // video call page (RHS)

+ 2 - 1
app/Http/Middleware/VerifyCsrfToken.php

@@ -12,6 +12,7 @@ class VerifyCsrfToken extends Middleware
      * @var array
      */
     protected $except = [
-        "/process_form_submit"
+        "/process_form_submit",
+        "/availability/load"
     ];
 }

+ 53 - 32
resources/views/app/practice-management/my-availability.blade.php → resources/views/app/practice-management/pro-availability.blade.php

@@ -76,44 +76,50 @@
                     <thead>
                         <tr>
                             <th>Day</th>
-                            <th>Start Time</th>
-                            <th>End Time</th>
-                            <th></th>
+                            <th col-span="3"></t>
                         </tr>
                     </thead>
                     <tbody>
                         @foreach($daysOfWeek as $dow)
                         <tr>
                             <td>{{$dow}}</td>
-                            <td>{{isset($generalAvailabilities[$dow]) ? $generalAvailabilities[$dow]->start_time : ''}}</td>
-                            <td>{{isset($generalAvailabilities[$dow]) ? $generalAvailabilities[$dow]->end_time : ''}}</td>
                             <td>
-                                @if(isset($generalAvailabilities[$dow]))
-                                <div moe wide class="mr-2">
-                                    <a start show>
-                                        update
-                                    </a>
-                                    <form url="/api/proGeneralAvailability/update">
-                                        <input type="hidden" name="uid" value="{{$generalAvailabilities[$dow]->uid}}">
-                                        <input type="hidden" name="timezone" value="EASTERN">
-                                        <div class="form-group">
-                                            {{$generalAvailabilities[$dow]->day_of_week}}
-                                        </div>
-                                        <div class="form-group">
-                                            <label for="" class="control-label">Start Time </label>
-                                            <input class="form-control" type="time" name="startTime" value="{{military_time($generalAvailabilities[$dow]->start_time)}}">
+                                <table class="table table-sm table-striped">
+                                    @foreach($generalAvailabilities[$dow] as $ga)
+                                    <tr>
+                                        <td>{{$ga->start_time}}</td>
+                                        <td>{{$ga->end_time}}</td>
+                                        <td>
+                                        @if(isset($generalAvailabilities[$dow]))
+                                        <div moe wide class="mr-2">
+                                            <a start show>
+                                                update
+                                            </a>
+                                            <form url="/api/proGeneralAvailability/update">
+                                                <input type="hidden" name="uid" value="{{$ga->uid}}">
+                                                <input type="hidden" name="timezone" value="EASTERN">
+                                                <div class="form-group">
+                                                    {{$ga->day_of_week}}
+                                                </div>
+                                                <div class="form-group">
+                                                    <label for="" class="control-label">Start Time </label>
+                                                    <input class="form-control" type="time" name="startTime" value="{{military_time($ga->start_time)}}">
+                                                </div>
+                                                <div class="form-group">
+                                                    <label for="" class="control-label">End Time </label>
+                                                    <input class="form-control" type="time" name="endTime" value="{{military_time($ga->end_time)}}">
+                                                </div>
+                                                <div class="form-group m-0">
+                                                    <button submit class="btn btn-primary btn-sm mr-2">Submit</button>
+                                                    <button cancel class="btn btn-default border btn-sm mr-2">Cancel</button>
+                                                </div>
+                                            </form>
                                         </div>
-                                        <div class="form-group">
-                                            <label for="" class="control-label">End Time </label>
-                                            <input class="form-control" type="time" name="endTime" value="{{military_time($generalAvailabilities[$dow]->end_time)}}">
-                                        </div>
-                                        <div class="form-group m-0">
-                                            <button submit class="btn btn-primary btn-sm mr-2">Submit</button>
-                                            <button cancel class="btn btn-default border btn-sm mr-2">Cancel</button>
-                                        </div>
-                                    </form>
-                                </div>
-                                @endif
+                                        @endif
+                            </td>
+                                    </tr>
+                                    @endforeach
+                                </table>
                             </td>
                         </tr>
                         @endforeach
@@ -310,7 +316,7 @@
                 <div class="card-header px-3 py-2 d-flex align-items-center">
                     <strong class="">
                         <i class="fas fa-user-injured"></i>
-                        My Availability
+                        Pro Availability
                     </strong>
                 </div>
                 <div class="card-body p-0">
@@ -341,7 +347,22 @@
                 navLinks: true,
                 dayMaxEvents: false,
                // slotDuration: '00:15:00',
-                events: events
+                events: function(info, successCallback, failureCallbackk) {
+                    console.log("loading envents:", info.startStr.substr(0, 10), info.endStr.substr(0, 10))
+                    jQuery.ajax({
+                        url: '/availability/load',
+                        type: 'POST',
+                        dataType: 'json',
+                        data: {
+                            start: info.startStr.substr(0, 10),
+                            end: info.endStr.substr(0, 10)
+                        },
+                        success: function(events) {
+                            console.log(events);
+                            successCallback(events);
+                        }
+                    });
+                }
             });
             calendar.render();
         }

+ 1 - 1
resources/views/layouts/template.blade.php

@@ -77,7 +77,7 @@
                         <a class="dropdown-item" href="{{ route('unmapped-sms') }}">Unmapped SMS</a>
                         {{--<a class="dropdown-item" href="/practice-management/hr">HR</a>--}}
                         <a class="dropdown-item" href="{{ route('practice-management.myTextShortcuts') }}">My Text Shortcuts</a>
-                        <a class="dropdown-item" href="{{ route('practice-management.myAvailability') }}">My Availability</a>
+                        <a class="dropdown-item" href="{{ route('practice-management.proAvailability') }}">Pro Availability</a>
                     </div>
                 </li>
             </ul>

+ 6 - 1
routes/web.php

@@ -72,7 +72,9 @@ Route::middleware('pro.auth')->group(function () {
         Route::get('notes/{filter?}', 'PracticeManagementController@notes')->name('notes');
         Route::get('bills/{filter?}', 'PracticeManagementController@bills')->name('bills');
         Route::get('my-text-shortcuts', 'PracticeManagementController@myTextShortcuts')->name('myTextShortcuts');
-        Route::get('my-availability', 'PracticeManagementController@myAvailability')->name('myAvailability');
+        Route::get('pro-availability', 'PracticeManagementController@proAvailability')->name('proAvailability');
+
+        Route::post('/availability/load', 'PracticeManagementController@loadAvailability')->name('loadAvailability');
     });
 
     Route::name('patients.view.')->prefix('patients/view/{patient}')->group(function () {
@@ -120,6 +122,9 @@ Route::middleware('pro.auth')->group(function () {
     // events for fc
     Route::get('/appointment/getAllAppointmentsForPros', 'AppointmentController@events')->name('events');
 
+    //events for availability
+    Route::post('/availability/load', 'PracticeManagementController@loadAvailability')->name('loadAvailability');
+
     // load template set
     Route::get('/note-template-set/exam/{exam}/{template}', 'HomeController@noteExamTemplateSet');
     Route::get('/note-template-set/{section}/{template}', 'HomeController@noteTemplateSet');