meetup/app/Http/Controllers/HomeController.php

72 lines
2.6 KiB
PHP
Raw Normal View History

2023-04-17 11:22:49 +00:00
<?php
namespace App\Http\Controllers;
use App\Models\Attender;
use App\Models\Event;
use Illuminate\Http\Request;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
use Illuminate\Support\Facades\Mail;
use Illuminate\Http\File;
use Illuminate\Support\Facades\DB;
use Illuminate\Mail\Message;
class HomeController extends Controller
{
public function index(){
2023-11-09 09:30:59 +00:00
$events = Event::orderBy('event_date', 'desc')->where('is_active', 1)->paginate(3);
2023-04-17 11:22:49 +00:00
return view('welcome', [
'events' => $events
]);
}
public function apply($id){
2023-04-20 10:12:09 +00:00
$event = Event::find($id);
2023-04-17 11:22:49 +00:00
return view('signup', [
2023-04-20 10:12:09 +00:00
'event' => $event
2023-04-17 11:22:49 +00:00
]);
}
public function submit(Request $request){
2023-05-03 06:18:52 +00:00
$data = $request->only(['name', 'city', 'email', 'file', 'organization', 'is_attending', 'consent_form', 'consent_form_second', 'consent_form_third']);
2023-04-17 11:22:49 +00:00
$data['attended'] = 0;
$data['is_attending'] = (bool)$data['is_attending'];
2023-05-02 21:59:16 +00:00
$data['consent_form'] = $data['consent_form'] ?? false;
$data['consent_form_second'] = $data['consent_form_second'] ?? false;
$data['consent_form_third'] = $data['consent_form_third'] ?? false;
2023-04-17 11:22:49 +00:00
$attender = Attender::create($data);
2023-04-24 12:16:00 +00:00
if($data['is_attending']){
$attender->events()->attach($request->event_id);
$attendance = DB::table('event_attenders')
->where('event_id', $request->event_id)
->where('attender_id', $attender->id)
->first();
2023-04-17 11:22:49 +00:00
$file_name = uniqid() . '.png';
$qrCodePath = public_path('qr/' . $file_name);
QrCode::format('png')->size(512)->margin(10)->generate($attendance->id, $qrCodePath);
2023-04-17 11:22:49 +00:00
$imagedata = file_get_contents($qrCodePath);
$base64 = base64_encode($imagedata);
2023-04-17 11:22:49 +00:00
Mail::send('emails.qr', ['base64' => $base64, 'attender' => $attender, 'file_name' => $file_name], function (Message $message) use ($attender, $file_name, $base64) {
2023-05-03 12:31:44 +00:00
$message->to($attender->email)->subject("Here is your QR code");
});
}
2023-04-24 12:39:26 +00:00
return view('success',[
'is_attending' => $data['is_attending']
]);
2023-04-17 11:22:49 +00:00
}
2023-04-20 10:12:09 +00:00
public function shownUp(Request $request){
$id = $request->id;
$attendance = DB::table('event_attenders')->find($id);
$attender = Attender::find($attendance->attender_id);
$attender->attended = true;
$attender->save();
2023-04-24 12:16:00 +00:00
return response()->json(['success' => true, 'data' => $attender]);
2023-04-20 10:12:09 +00:00
}
2023-04-17 11:22:49 +00:00
}