AppointmentController.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Appointment;
  4. use App\Models\BDTDevice;
  5. use App\Models\CareMonth;
  6. use App\Models\Client;
  7. use App\Models\ClientInfoLine;
  8. use App\Models\Facility;
  9. use App\Models\NoteTemplate;
  10. use App\Models\Pro;
  11. use App\Models\SectionTemplate;
  12. use Illuminate\Http\Request;
  13. use Illuminate\Support\Facades\File;
  14. class AppointmentController extends Controller
  15. {
  16. public function events(Request $request)
  17. {
  18. $proIds = $request->get('proIds');
  19. $start = $request->get('start');
  20. $end = $request->get('end');
  21. $timeZone = $request->get('timeZone');
  22. $appointments = Appointment
  23. ::whereIn('pro_id', explode(',', $proIds))
  24. ->where('status', '!=', 'COMPLETED')
  25. ->where('status', '!=', 'CANCELLED')
  26. ->where('start_time', '>=', $start)
  27. ->where('start_time', '<=', $end)
  28. ->get();
  29. $events = [];
  30. foreach ($appointments as $appointment) {
  31. $events[] = [
  32. "title" => '(' . $appointment->pro->initials() . ') ' . $appointment->client->displayName(),
  33. "appointmentUid" => $appointment->uid,
  34. "clientUid" => $appointment->client->uid,
  35. "proUid" => $appointment->pro->uid,
  36. "start" => $this->convertToTimezone($appointment->start_time, $timeZone),
  37. "end" => $this->convertToTimezone($appointment->end_time, $timeZone),
  38. "editable" => true
  39. ];
  40. }
  41. return json_encode($events);
  42. }
  43. private function convertToTimezone($_dateTime, $_targetTimezone) {
  44. if(!$_dateTime) return $_dateTime;
  45. $timezone = 'US/Eastern';
  46. switch($_targetTimezone) {
  47. case 'ALASKA':
  48. $timezone = "US/Alaska";
  49. break;
  50. case 'CENTRAL':
  51. $timezone = "US/Central";
  52. break;
  53. case 'HAWAII':
  54. $timezone = "US/Hawaii";
  55. break;
  56. case 'MOUNTAIN':
  57. $timezone = "US/Mountain";
  58. break;
  59. case 'PACIFIC':
  60. $timezone = "US/Pacific";
  61. break;
  62. case 'PUERTO_RICO':
  63. $timezone = "America/Puerto_Rico";
  64. break;
  65. default:
  66. $timezone = "US/Eastern";
  67. break;
  68. }
  69. $date = new \DateTime($_dateTime, new \DateTimeZone("UTC"));
  70. $date->setTimezone(new \DateTimeZone($timezone));
  71. return $date->format('Y-m-d H:i:s');
  72. }
  73. }