Controller.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
  4. use Illuminate\Foundation\Bus\DispatchesJobs;
  5. use Illuminate\Foundation\Validation\ValidatesRequests;
  6. use Illuminate\Routing\Controller as BaseController;
  7. use Illuminate\Support\Facades\Cookie;
  8. use Illuminate\Support\Facades\Http;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Storage;
  11. use App\Models\BaseModel;
  12. use Ramsey\Uuid\Uuid;
  13. use Illuminate\Support\Facades\Mail;
  14. use App\Mail\NotifyEmail;
  15. use App\Models\AppSession;
  16. class Controller extends BaseController
  17. {
  18. use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
  19. protected $performer = null;
  20. protected $user = null;
  21. protected $sessionKey = null;
  22. protected $appInternalName = null;
  23. protected $stringMappingConfig = null;
  24. public function __construct()
  25. {
  26. $this->sessionKey = Cookie::get(config('app.sessionKeyName'));
  27. $this->performer = AppSession::where('session_key', $this->sessionKey)->where('is_active', true)->first();
  28. if($this->performer){
  29. $this->user = $this->performer ? $this->performer->user : null;
  30. }
  31. $this->appInternalName = config('app.internalName');
  32. $this->stringMappingConfig = config('constants.' . $this->appInternalName);
  33. view()->share('appInternalName', $this->appInternalName);
  34. view()->share('stringMappingConfig', $this->stringMappingConfig);
  35. view()->share('performer', $this->performer);
  36. view()->share('user', $this->user);
  37. }
  38. public function sendEmailNotification($details){
  39. $to = $details['to'];
  40. if(config('app.env') !== 'production'){
  41. $to = [
  42. ['email' => config('app.testEmailAddress'), 'name' => 'Test Email Address']
  43. ];
  44. }
  45. Mail::to($to)->send(new NotifyEmail($details));
  46. return true;
  47. }
  48. public function callJava($endPoint, $data, $sessionKey)
  49. {
  50. $url = config('app.backendUrl') . $endPoint;
  51. $response = Http::asForm()
  52. ->withHeaders([
  53. 'sessionKey' => $sessionKey
  54. ])
  55. ->post($url, $data)
  56. ->body();
  57. return json_decode($response, true);
  58. }
  59. public function pass($data = null): array
  60. {
  61. return [
  62. 'success' => true,
  63. 'data' => $data,
  64. ];
  65. }
  66. public function fail($message): array
  67. {
  68. return [
  69. 'success' => false,
  70. 'message' => $message
  71. ];
  72. return null;
  73. }
  74. public function filterMultiQuery(Request $request, $query, $columnName, $keyName, $valueName1, $valueName2) {
  75. switch($request->input($keyName)) {
  76. case 'EXACTLY':
  77. if($request->input($valueName1)) {
  78. $query->where($columnName, $request->input($valueName1));
  79. }
  80. break;
  81. case 'LESS_THAN':
  82. if($request->input($valueName1)) {
  83. $query->where($columnName, '<', $request->input($valueName1));
  84. }
  85. break;
  86. case 'GREATER_THAN':
  87. if($request->input($valueName1)) {
  88. $query->where($columnName, '>', $request->input($valueName1));
  89. }
  90. break;
  91. case 'BETWEEN':
  92. if($request->input($valueName1) && $request->input($valueName2)) {
  93. $query
  94. ->where($columnName, '>=', $request->input($valueName1))
  95. ->where($columnName, '<=', $request->input($valueName2));
  96. }
  97. break;
  98. case 'NOT_BETWEEN':
  99. if($request->input($valueName1) && $request->input($valueName2)) {
  100. $query
  101. ->where(function ($q) use ($request, $columnName, $valueName1, $valueName2) {
  102. $q->where($columnName, '<', $request->input($valueName1))
  103. ->orWhere($columnName, '>', $request->input($valueName2));
  104. });
  105. }
  106. break;
  107. }
  108. }
  109. public function filterDateMultiQuery(Request $request, $query, $columnName, $keyName, $valueName1, $valueName2) {
  110. switch($request->input($keyName)) {
  111. case 'EXACTLY':
  112. if($request->input($valueName1)) {
  113. $query->whereDate($columnName, $request->input($valueName1));
  114. }
  115. break;
  116. case 'LESS_THAN':
  117. if($request->input($valueName1)) {
  118. $query->whereDate($columnName, '<', $request->input($valueName1));
  119. }
  120. break;
  121. case 'GREATER_THAN':
  122. if($request->input($valueName1)) {
  123. $query->whereDate($columnName, '>', $request->input($valueName1));
  124. }
  125. break;
  126. case 'BETWEEN':
  127. if($request->input($valueName1) && $request->input($valueName2)) {
  128. $query
  129. ->whereDate($columnName, '>=', $request->input($valueName1))
  130. ->whereDate($columnName, '<=', $request->input($valueName2));
  131. }
  132. break;
  133. case 'NOT_BETWEEN':
  134. if($request->input($valueName1) && $request->input($valueName2)) {
  135. $query
  136. ->whereDate(function ($q) use ($request, $columnName, $valueName1, $valueName2) {
  137. $q->whereDate($columnName, '<', $request->input($valueName1))
  138. ->orWhereDate($columnName, '>', $request->input($valueName2));
  139. });
  140. }
  141. break;
  142. }
  143. }
  144. public function filterSimpleQuery(Request $request, $query, $columnName, $valueName) {
  145. if($request->input($valueName)) {
  146. $query->where($columnName, $request->input($valueName));
  147. }
  148. }
  149. public function filterSimpleQueryByValue(Request $request, $query, $columnName, $valueName) {
  150. if($valueName) {
  151. $query->where($columnName, $valueName);
  152. }
  153. }
  154. public function storeFileAs(Request $request, $fileRef, $path){
  155. $file = $request->file($fileRef);
  156. if ($file) {
  157. $uid = Uuid::uuid6();
  158. $originalFileName = $file->getClientOriginalName();
  159. $fileName = $uid . "." . $file->extension();
  160. $tempPath = Storage::putFileAs($path, $file, $fileName);
  161. return [
  162. 'path' => $tempPath,
  163. 'fileName' => $fileName,
  164. 'url' => route('view-uploaded-file', $fileName),
  165. 'orginalFileName' => $originalFileName
  166. ];
  167. }
  168. return null;
  169. }
  170. public function downloadFileByPath($file, $path){
  171. return Storage::response($path . '/' . $file);
  172. }
  173. public function viewUploadedFile(Request $request, $file){
  174. return $this->downloadFileByPath($file, BaseModel::FILE_PATH);
  175. }
  176. }