Controller.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\AppSession;
  4. use App\Models\CompanyClient;
  5. use App\Models\Note;
  6. use App\Models\NoteTemplate;
  7. use App\Models\Pro;
  8. use App\Models\ProProAccess;
  9. use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
  10. use Illuminate\Foundation\Bus\DispatchesJobs;
  11. use Illuminate\Foundation\Validation\ValidatesRequests;
  12. use Illuminate\Http\Request;
  13. use Illuminate\Routing\Controller as BaseController;
  14. use Illuminate\Support\Facades\Cookie;
  15. use Illuminate\Support\Facades\Http;
  16. class Controller extends BaseController
  17. {
  18. use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
  19. protected $performer = null;
  20. protected $pro = null;
  21. protected $pros = null;
  22. public function __construct()
  23. {
  24. $this->performer = get_current_session();
  25. if($this->performer && $this->performer->pro) {
  26. $this->pro = $this->performer->pro;
  27. view()->share('pro', $this->pro);
  28. }
  29. view()->share('performer', $this->performer);
  30. $this->pros = [];
  31. /*$this->pros = Pro::all();
  32. if($this->pro && $this->pro->pro_type != 'ADMIN'){
  33. $accessiblePros = ProProAccess::where('owner_pro_id', $this->pro->id);
  34. $accessibleProIds = [];
  35. foreach($accessiblePros as $accessiblePro){
  36. $accessibleProIds[] = $accessiblePro->id;
  37. }
  38. $accessibleProIds[] = $this->pro->id;
  39. $this->pros = Pro::whereIn('id', $accessibleProIds)->get();
  40. }*/
  41. view()->share('pros',$this->pros);
  42. // view()->share('notes', Note::all());
  43. // $noteTemplates = NoteTemplate::all();
  44. // view()->share('noteTemplates', $noteTemplates);
  45. $initiatives = ['LHI', 'BHI'];
  46. view()->share('intiatives', $initiatives);
  47. $rmCodes = ['RMB','RM20', 'RM40','RM60'];
  48. view()->share('rmCodes', $rmCodes);
  49. }
  50. public function performer(){
  51. $sessionKey = Cookie::get('sessionKey');
  52. if ($sessionKey == null){
  53. throw new \Exception('No session key in cookie.');
  54. }
  55. $performer = AppSession::where('session_key', $sessionKey)->first();
  56. return $performer;
  57. }
  58. public function getMyClientIds(){
  59. if($this->pro == null){
  60. return [];
  61. }
  62. return $this->pro->getMyClientIds();
  63. }
  64. public function pass($data = null): array
  65. {
  66. return [
  67. 'success' => true,
  68. 'data' => $data,
  69. ];
  70. }
  71. public function fail($message): array
  72. {
  73. return [
  74. 'success' => false,
  75. 'message' => $message
  76. ];
  77. }
  78. public function filterMultiQuery(Request $request, $query, $columnName, $keyName, $valueName1, $valueName2, $onlyDate = true) {
  79. switch($request->input($keyName)) {
  80. case 'EXACTLY':
  81. if($request->input($valueName1)) {
  82. if($onlyDate){
  83. $query->whereDate($columnName, $request->input($valueName1));
  84. }else{
  85. $query->where($columnName, $request->input($valueName1));
  86. }
  87. }
  88. break;
  89. case 'LESS_THAN':
  90. if($request->input($valueName1)) {
  91. $query->where($columnName, '<', $request->input($valueName1));
  92. }
  93. break;
  94. case 'GREATER_THAN':
  95. if($request->input($valueName1)) {
  96. $query->where($columnName, '>', $request->input($valueName1));
  97. }
  98. break;
  99. case 'BETWEEN':
  100. if($request->input($valueName1) && $request->input($valueName2)) {
  101. $query
  102. ->where($columnName, '>=', $request->input($valueName1))
  103. ->where($columnName, '<=', $request->input($valueName2));
  104. }
  105. break;
  106. case 'NOT_BETWEEN':
  107. if($request->input($valueName1) && $request->input($valueName2)) {
  108. $query
  109. ->where(function ($q) use ($request, $columnName, $valueName1, $valueName2) {
  110. $q->where($columnName, '<', $request->input($valueName1))
  111. ->orWhere($columnName, '>', $request->input($valueName2));
  112. });
  113. }
  114. break;
  115. }
  116. }
  117. public function filterSimpleQuery(Request $request, $query, $columnName, $valueName) {
  118. if($request->input($valueName)) {
  119. $query->where($columnName, $request->input($valueName));
  120. }
  121. }
  122. // TODO move to utility
  123. public function callJavaApi($endPoint, $data)
  124. {
  125. $sessionKey = Cookie::get('sessionKey');
  126. $url = config('stag.backendUrl') . $endPoint;
  127. $response = Http::asForm()
  128. ->withHeaders([
  129. 'sessionKey' => $sessionKey
  130. ])
  131. ->post($url, $data)
  132. ->json();
  133. return $response;
  134. }
  135. public function getDefaultCompanyClientFromSession($patient){
  136. $defaultCompanyClientUid = session()->get('DEFAULT_COMPANY_CLIENT_UID_'.$patient->id);
  137. return CompanyClient::where('uid', $defaultCompanyClientUid)->first();
  138. }
  139. }