AppController.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Models\PromoCode;
  5. use Illuminate\Support\Facades\Cookie;
  6. use App\Models\User;
  7. class AppController extends Controller
  8. {
  9. public function index(Request $request)
  10. {
  11. if (!$this->user) return redirect()->to(route('log-in'));
  12. return redirect()->to(route('admin.dashboard'));
  13. }
  14. public function terms(Request $request)
  15. {
  16. return view('app.terms');
  17. }
  18. public function privacy(Request $request)
  19. {
  20. return view('app.privacy');
  21. }
  22. public function unsubscribeFromEmails(Request $request, $uid)
  23. {
  24. $appInternalName = config('app.internalName');
  25. $entity = $this->getActorEntityByUid($uid);
  26. if (!$entity) abort(404);
  27. return redirect()->to($this->stringMappingConfig['clientUrl']. '/emails/unsubscribe/' . $uid);
  28. }
  29. public function unsubscribeFromEmailsSuccess(Request $request)
  30. {
  31. $appInternalName = config('app.internalName');
  32. return view('app.' . $appInternalName . '.unsubscribe-from-emails-success');
  33. }
  34. public function processUnsubscribeFromEmails(Request $request)
  35. {
  36. $uid = $request->get('uid');
  37. if (!$uid) return redirect()->back()->with('error', 'Invalid request!');
  38. $entity = User::where('uid', $uid)->first();
  39. if (!$entity) return redirect()->back()->with('error', 'Invalid record!');
  40. //TODO: call java to unsubscribe
  41. return redirect()->to(route('unsubscribe-from-emails-success'))->with('unsubscribeSuccess', 'You have successfully unsubscribed!');
  42. }
  43. public function searchUsers(Request $request)
  44. {
  45. $term = $request->input('term') ? trim($request->input('term')) : '';
  46. if (empty($term)) return '';
  47. $term = strtolower($term);
  48. $term2 = '';
  49. if (strpos($term, ' ') !== FALSE) {
  50. $terms = explode(' ', $term);
  51. $term = trim($terms[0]);
  52. $term2 = trim($terms[1]);
  53. }
  54. $users = User::query();
  55. $users = $users->where(function ($q) use ($term) {
  56. $q->orWhereRaw('LOWER(name_first::text) LIKE ?', ['%' . $term . '%'])
  57. ->orWhereRaw('LOWER(name_last::text) LIKE ?', ['%' . $term . '%'])
  58. ->orWhereRaw('LOWER(full_name::text) LIKE ?', ['%' . $term . '%'])
  59. ->orWhereRaw('LOWER(email::text) LIKE ?', ['%' . $term . '%'])
  60. ->orWhereRaw('LOWER(google_login_email::text) LIKE ?', ['%' . $term . '%'])
  61. ->orWhereRaw('LOWER(facebook_login_email::text) LIKE ?', ['%' . $term . '%']);
  62. });
  63. if (!empty($term2)) {
  64. $users = $users->where(function ($q) use ($term2) {
  65. $q->orWhereRaw('LOWER(name_first::text) LIKE ?', ['%' . $term2 . '%'])
  66. ->orWhereRaw('LOWER(name_last::text) LIKE ?', ['%' . $term2 . '%']);
  67. });
  68. }
  69. $users = $users->get();
  70. $usersJson = $users->map(function ($user) {
  71. return [
  72. "uid" => $user->uid,
  73. "id" => $user->id,
  74. "text" => $user->full_name ?? $user->name_first . ' ' . $user->name_last,
  75. ];
  76. });
  77. return json_encode([
  78. "results" => $usersJson
  79. ]);
  80. }
  81. }