meetup/app/Http/Controllers/HomeController.php

72 lines
2.6 KiB
PHP

<?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(){
$events = Event::orderBy('event_date', 'desc')->where('is_active', 1)->paginate(3);
return view('welcome', [
'events' => $events
]);
}
public function apply($id){
$event = Event::find($id);
return view('signup', [
'event' => $event
]);
}
public function submit(Request $request){
$data = $request->only(['name', 'city', 'email', 'file', 'organization', 'is_attending', 'consent_form', 'consent_form_second', 'consent_form_third']);
$data['attended'] = 0;
$data['is_attending'] = (bool)$data['is_attending'];
$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;
$attender = Attender::create($data);
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();
$file_name = uniqid() . '.png';
$qrCodePath = public_path('qr/' . $file_name);
QrCode::format('png')->size(512)->margin(10)->generate($attendance->id, $qrCodePath);
$imagedata = file_get_contents($qrCodePath);
$base64 = base64_encode($imagedata);
Mail::send('emails.qr', ['base64' => $base64, 'attender' => $attender, 'file_name' => $file_name], function (Message $message) use ($attender, $file_name, $base64) {
$message->to($attender->email)->subject("Here is your QR code");
});
}
return view('success',[
'is_attending' => $data['is_attending']
]);
}
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();
return response()->json(['success' => true, 'data' => $attender]);
}
}