Chaos-Events und Voranmeldungen

This commit is contained in:
2026-03-28 02:16:58 +01:00
parent ba2dcb98e2
commit a99b8eb9c1
23 changed files with 485 additions and 33 deletions

View File

@@ -25,7 +25,7 @@ class BlogController extends Controller
$blog->save();
return ['messageStatus' => 'success', 'errorMessage' => ''];
} catch (\Illuminate\Database\QueryException $e) {
return ['messageStatus' => 'danger', 'errorMessage' => $e->getMessage()];
return ['messageStatus' => 'danger', 'errorMessage' => __("controller_messages.BlogController.error_occurred", ["error" => $e->getMessage()])];
}
}
abort(404);
@@ -43,7 +43,7 @@ class BlogController extends Controller
$blog->save();
return ['messageStatus' => 'success', 'errorMessage' => ''];
} catch (\Illuminate\Database\QueryException $e) {
return ['messageStatus' => 'failure', 'errorMessage' => $e->getMessage()];
return ['messageStatus' => 'failure', 'errorMessage' => __("controller_messages.BlogController.error_occurred", ["error" => $e->getMessage()])];
}
}
abort(404);
@@ -58,7 +58,7 @@ class BlogController extends Controller
}
return ['messageStatus' => 'success', 'errorMessage' => ''];
} catch(\Exception $e){
return ['messageStatus' => 'failure', 'errorMessage' => $e->getMessage()];
return ['messageStatus' => 'failure', 'errorMessage' => __("controller_messages.BlogController.error_occurred", ["error" => $e->getMessage()])];
}
}
abort(404);

View File

@@ -16,7 +16,7 @@ class LoginController extends Controller
// messageStatus success|failure|not permitted
$json = ["messageStatus" => "failure", "errorMessage" => "idk"];
$json = ["messageStatus" => "failure", "errorMessage" => __("controller_messages.LoginController.unknown_error")];
$mail = $request->input('mail');
$username = $request->input('username');
@@ -24,14 +24,14 @@ class LoginController extends Controller
$token = $request->input('token');
if(preg_match('/@c3gov\.de$/', $mail) != 1){
return ["messageStatus" => "not permitted", "errorMessage" => ""];
return ["messageStatus" => "not permitted", "errorMessage" => __("controller_messages.LoginController.not_permitted")];
}
$rt = RegisterToken::where('token', $token)->first();
if($rt) {
$u = User::whereEmail($mail)->first();
if($u) {
return ["messageStatus" => "failure", "errorMessage" => "Diese elektronische Postadresse wird bereits verwendet."];
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.LoginController.email_in_use")];
}
try {
$u = new User();
@@ -43,10 +43,10 @@ class LoginController extends Controller
$rt->delete();
} catch (\Exception $e) {
return ["messageStatus" => "failure", "errorMessage" => $e->getMessage()];
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.LoginController.unknown_error_with_details", ["error" => $e->getMessage()])];
}
} else {
return ["messageStatus" => "failure", "errorMessage" => "Machen Sie die Musik aus."];
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.LoginController.invalid_token")];
}
return ["messageStatus" => "success", "errorMessage" => ""];
@@ -64,10 +64,10 @@ class LoginController extends Controller
Auth::login($u);
return ["messageStatus" => "success", "errorMessage" => ""];
} else {
return ["messageStatus" => "failure", "errorMessage" => "Falsch. Einfach nur falsch."];
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.LoginController.wrong_credentials")];
}
} else {
return ["messageStatus" => "failure", "errorMessage" => "Falsch. Einfach nur falsch."];
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.LoginController.wrong_credentials")];
}
}

View File

@@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use App;
use App\Mail\PreApplicationMail;
use App\Models\ChaosEvents;
use App\Models\PreApplications;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use Log;
use Nette\Utils\Random;
class PreApplicationController extends Controller
{
public function send(Request $request){
$event = $request->input('event');
$ce = ChaosEvents::where('id', $event)->where('to_date', '>=', now())->first();
if($ce){
$passport_type = $request->input('passport_type');
if(!in_array($passport_type, ['d', 'k'])){
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.PreApplicationController.wrong_passport_type")];
}
$first_name = $request->input('first_name');
$last_name = $request->input('last_name');
$location = $request->input('location');
$email = $request->input('mail');
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.PreApplicationController.invalid_email_format")];
}
switch($passport_type){
case 'd':
$max_characters = 17;
break;
case 'k':
$max_characters = 25;
break;
default:
$max_characters = 0;
}
$fn = preg_match('/^[a-zA-Z0-9\s]{1,' . $max_characters . '}$/', $first_name);
$ln = preg_match('/^[a-zA-Z0-9\s]{,' . $max_characters . '}$/', $last_name);
$loc = preg_match('/^[a-zA-Z0-9\s]{,' . $max_characters . '}$/', $location);
//Log::debug('fn: ' . var_export($fn, true) . ' ln: ' . var_export($ln, true) . ' loc: ' . var_export($loc, true) . '');
if($fn && $ln && $loc){
$free_reference_number = false;
while(!$free_reference_number){
$reference_number = $ce->shortname . '-' . strtoupper($passport_type) . '-' . Random::generate(4, "0-9") . '-' . Random::generate(4, "0-9") . '-' . Random::generate(4, "0-9");
$free_reference_number = !PreApplications::where('reference_number', $reference_number)->exists();
}
try{
$pa = new PreApplications();
$pa->first_name = $first_name;
$pa->last_name = $last_name;
$pa->location = $location;
$pa->passport_type = $passport_type;
$pa->reference_number = $reference_number;
$pa->event_id = $event;
$pa->email = $email;
$pa->save();
} catch(\Exception $e){
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.PreApplicationController.already_submitted")];
}
Mail::to($email)
->send(new PreApplicationMail($pa, App::getLocale()));
return ["messageStatus" => "success", "errorMessage" => __('controller_messages.PreApplicationController.success')];
} else {
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.PreApplicationController.invalid_characters")];
}
}
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.PreApplicationController.event_not_found")];
}
}

View File

@@ -19,7 +19,7 @@ class TickerController extends Controller
}
return ["messageStatus" => "success", "errorMessage" => ""];
} catch(\Exception $e){
return ["messageStatus" => "failure", "errorMessage" => $e->getMessage()];
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.TickerController.error_occurred", ["error" => $e->getMessage()])];
}
}
@@ -38,7 +38,7 @@ class TickerController extends Controller
$ticker->save();
return ["messageStatus" => "success", "errorMessage" => ""];
} catch(\Exception $e){
return ["messageStatus" => "failure", "errorMessage" => $e->getMessage()];
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.TickerController.error_occurred", ["error" => $e->getMessage()])];
}
}
abort(404);

View File

@@ -0,0 +1,66 @@
<?php
namespace App\Mail;
use AllowDynamicProperties;
use App;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Attachment;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
class PreApplicationMail extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*/
public function __construct(protected App\Models\PreApplications $pa, protected string $lang = 'de')
{
//
}
/**
* Get the message envelope.
*/
public function envelope(): Envelope
{
return new Envelope(
subject: __('mail.preapplication.subject'),
);
}
/**
* Get the message content definition.
*/
public function content(): Content
{
App::setLocale($this->lang);
return new Content(
view: 'mail.preapplication',
with: ['pa' => $this->pa],
);
}
/**
* Get the attachments for the message.
*
* @return array<int, Attachment>
*/
public function attachments(): array
{
$lang = match (App::getLocale()) {
'de' => 'dk',
'en' => 'ek',
default => 'dk',
};
return [
Attachment::fromPath(public_path('Dokumente/c3gov_fb5' . $lang . '.pdf'))
->withMime('application/pdf'),
];
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ChaosEvents extends Model
{
protected $table = 'chaos_events';
public function preApplications() {
return $this->hasMany('App\Models\PreApplications', 'event_id');
}
public static function getActiveEvents(){
return self::where('to_date', '>=', now())->where('from_date', '<=', now())->get();
}
}

View File

@@ -0,0 +1,15 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class PreApplications extends Model
{
protected $table = 'pre_applications';
public function event(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo('App\Models\ChaosEvents','event_id');
}
}