AdminController.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Traits\StringGeneratorTrait;
  4. use Ramsey\Uuid\Uuid;
  5. use Illuminate\Support\Facades\DB;
  6. use Illuminate\Http\Request;
  7. use App\Models\WebForm;
  8. use Illuminate\Support\Facades\Schema;
  9. use Exception;
  10. class AdminController extends Controller
  11. {
  12. use StringGeneratorTrait;
  13. public function index()
  14. {
  15. $records = WebForm::orderBy('created_at', 'DESC')->paginate(30);
  16. return view('app.admin.index', compact('records'));
  17. }
  18. public function login()
  19. {
  20. return view('app.admin.login');
  21. }
  22. public function submitLogin(Request $request)
  23. {
  24. $request->validate([
  25. 'username' => 'required|string',
  26. 'password' => 'required|string'
  27. ]);
  28. $username = $request->get('username');
  29. $password = $request->get('password');
  30. $expectedUsername = config('app.adminSessionUsername');
  31. $expectedPassword = config('app.adminSessionPassword');
  32. if ($username !== $expectedUsername && $password !== $expectedPassword) {
  33. return redirect()->back()->with('error', 'Invalid credentials!');
  34. }
  35. $request->session()->put('adminSession', rand());
  36. return redirect()->to(route('admin.index'));
  37. }
  38. public function logout(Request $request)
  39. {
  40. if (!$request->session()->exists('adminSession')) {
  41. return redirect()->to(route('login'));
  42. }
  43. $request->session()->forget('adminSession');
  44. return redirect()->to(route('admin.index'));
  45. }
  46. public function mygrateOldForms(Request $request)
  47. {
  48. $dateFilter = '2022-12-14';
  49. $tables = [
  50. 'patient_find_a_clinic_request' => 'patient_find_a_clinic',
  51. 'patient_contact_message' => 'patient_contact_message',
  52. 'physician_training_request' => 'physician_training_request',
  53. 'physician_contact_message' => 'physician_contact_message',
  54. 'physician_directory_listing_request' => 'physician_directory_listing_request',
  55. 'physician_marketing_materials_request' => 'physician_marketing_materials_request',
  56. 'ligator_order' => 'physician_ligator_order'
  57. ];
  58. try {
  59. foreach ($tables as $table => $formName) {
  60. if(!Schema::hasTable($table)) continue;
  61. $records = DB::select(DB::raw("SELECT * FROM $table WHERE DATE(created_at) <= '" . $dateFilter . "'"));
  62. $excludes = ['id', 'uid', 'iid', 'created_at', 'updated_at'];
  63. foreach ($records as $record) {
  64. $record = array_diff_key((array)$record, array_flip($excludes));
  65. $this->migrateTableRecordToWebFormTable($record, $formName);
  66. Schema::dropIfExists($table);
  67. }
  68. }
  69. dd('Migrated!');
  70. } catch (Exeception $error) {
  71. dd($error->getMessage());
  72. }
  73. }
  74. private function migrateTableRecordToWebFormTable($record, $formName)
  75. {
  76. $record = new WebForm;
  77. $record->iid = $this->makeIID();
  78. $record->uid = Uuid::uuid6();
  79. $record->form_name = $formName;
  80. $record->form_data = json_encode($record);
  81. $record->save();
  82. }
  83. }