Forráskód Böngészése

Merge branch 'dev-josh' into dev-vj

Vijayakrishnan 4 éve
szülő
commit
edfa0f4482

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

@@ -13,6 +13,8 @@ use App\Models\ProSpecificAvailability;
 use App\Models\ProSpecificUnavailability;
 use App\Models\ProTextShortcut;
 use App\Models\ProTransaction;
+use DateTime;
+use DateTimeZone;
 use Illuminate\Http\Request;
 
 class PracticeManagementController extends Controller
@@ -171,9 +173,67 @@ class PracticeManagementController extends Controller
         $specificAvailabilities = ProSpecificAvailability::where('pro_id', $pro->id)->where('is_cancelled', false)->orderBy('start_time')->get();
         $specificUnavailabilities = ProSpecificUnavailability::where('pro_id', $pro->id)->where('is_cancelled', false)->orderBy('start_time', 'asc')->get();
 
-        return view('app.practice-management.my-availability', compact('generalAvailabilities', 'specificAvailabilities', 'specificUnavailabilities'));
-    }
+        //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'
+            ];
+
+        }
+
+        foreach($specificAvailabilities as $su){
+
+            $realTimezone = resolve_timezone($su->timezone);
+            
+            $startTime = new DateTime($su->start_time);
+            $startTime->setTimezone(new DateTimeZone($realTimezone));
 
+            $endTime = new DateTime($su->end_time);
+            $endTime->setTimezone(new DateTimeZone($realTimezone));
+
+            $eventsData[] = [
+                'title' => $su->title, 
+                'start' => $startTime->format(DateTime::ISO8601),
+                'end' => $endTime->format(DateTime::ISO8601),
+            ];   
+        }
+        
+        foreach($generalAvailabilities as $day => $ga){
+            $eventsData[] = [
+                'title' => 'General Availability',
+                'daysOfWeek' => [$dayInts[$day]],
+                'startTime' => $ga->start_time,
+                'endTime' => $ga->end_time,
+            ];
+        }
+
+        $events = json_encode($eventsData);
+
+
+        return view('app.practice-management.my-availability', compact('generalAvailabilities', 'specificAvailabilities', 'specificUnavailabilities','events'));
+    }
 
     // video call page (RHS)
     // generic call handle (no uid)

+ 5 - 2
resources/views/app/practice-management/my-availability.blade.php

@@ -322,11 +322,13 @@
 </div>
 
 <script>
+    var events = JSON.parse({!! json_encode($events) !!});
     (function() {
 
         function initAvailabilityCalendar() {
             var calendarEl = document.getElementById('pro-availability-calendar');
             var calendar = new FullCalendar.Calendar(calendarEl, {
+                timeZone: 'US/Eastern',
                 headerToolbar: {
                     left: 'prev,next today',
                     center: 'title',
@@ -334,11 +336,12 @@
                 },
                 initialView: 'timeGridWeek',
                 //initialDate: '{{ date('Y - m - d ') }}',
-                editable: true,
+                //editable: true,
                 selectable: true,
                 navLinks: true,
                 dayMaxEvents: false,
-                slotDuration: '00:15:00'
+               // slotDuration: '00:15:00',
+                events: events
             });
             calendar.render();
         }