Hinzugefügt

Umfrage zum Impfstatus
This commit is contained in:
Marco Glietsch 2021-11-29 14:49:43 +01:00
parent b370fc7133
commit 0940b264f7
6 changed files with 212 additions and 24 deletions

View File

@ -11,7 +11,7 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use App\Models\SurveyCoronaState; use App\Models\SurveyVaccinationState;
use App\Helpers\AccessHelper as Access; use App\Helpers\AccessHelper as Access;
use \Carbon\Carbon; use \Carbon\Carbon;
use Response; use Response;
@ -22,44 +22,62 @@ class SurveyController extends ExtendedController
{ {
public function __construct() public function __construct()
{ {
$this->middleware(['auth' => 'surveyPermissions'])->except('surveyCoronaState', 'surveyCoronaStateSave'); $this->middleware(['auth' => 'surveyPermissions'])->except('surveyVaccinationState', 'surveyVaccinationStateSave');
parent::__construct(); parent::__construct();
} }
public function surveyCoronaState(Request $request) public function surveyVaccinationState(Request $request)
{ {
$formdata = new SurveyCoronaState(); $formdata = new SurveyVaccinationState();
$view = view("inc.survey.coronaState"); $view = view("inc.survey.vaccinationState");
$view->with('url', $this->route); $view->with('url', $this->route);
$view->with('formdata', $formdata); $view->with('formdata', $formdata);
$view->with('expired', false);
return $view; return $view;
} }
public function surveyCoronaStateSave(Request $request) public function surveyVaccinationStateSave(Request $request)
{ {
$request->request->add(['city' => $request->city[0]]); $request->request->add(['state' => $request->state[0]]);
$formdata = $request->validate([ $request->request->add(['age' => $request->age[0]]);
$validationData = [
'department' => 'required', 'department' => 'required',
'state' => 'required|min:3', 'state' => 'required|min:3',
'expiration_date' => 'date_format:d.m.Y', 'age' => 'required',
], ];
if(strtolower($request->state) == 'geimpft' or strtolower($request->state) == 'genesen')
{
$validationData['expiration_date'] = 'date_format:d.m.Y|after:today';
}
$formdata = $request->validate(
$validationData,
[ [
'department.required' => 'Pflichtfeld', 'department.required' => 'Pflichtfeld',
'age.required' => 'Pflichtfeld',
'state.required' => 'Pflichtfeld', 'state.required' => 'Pflichtfeld',
'state.min' => 'Mindestens :min Zeichen', 'state.min' => 'Mindestens :min Zeichen',
'birthday.date_format' => 'Das Datum muss im Format tt.mm.jjjj (tag.monat.jahr) eingegeben werden', 'expiration_date.date_format' => 'Das Datum muss im Format tt.mm.jjjj (tag.monat.jahr) eingegeben werden',
'expiration_date.after' => 'Das Datum muss in der Zukunft liegen',
]); ]);
$model = new SurveyCoronaState(); $expiration_date = Carbon::createFromDate(1900, 1, 1);
if(strtolower($request->state) == 'geimpft' or strtolower($request->state) == 'genesen')
{
$expiration_date = Carbon::createFromFormat('d.m.Y', $request->expiration_date);
}
$model = new SurveyVaccinationState();
$model->fill($request->all()); $model->fill($request->all());
$model->expiration_date = Carbon::createFromFormat('d.m.Y', $request->birthday); $model->expiration_date = $expiration_date;
$model->department = $request->department[0]; $model->department = $request->department[0];
$model->survey_id = 1; $model->survey_id = 1;
$model->save(); $model->save();
$view = view("inc.contact.surveyCoronaStateSuccess"); $view = view("inc.survey.vaccinationStateSuccess");
return $view; return $view;

View File

@ -13,14 +13,15 @@ use Carbon\Carbon;
use App\Helpers\PostHelper; use App\Helpers\PostHelper;
use App\Http\Controllers\ServiceController; use App\Http\Controllers\ServiceController;
class SurveyCoronaState extends ExtendedModel class SurveyVaccinationState extends ExtendedModel
{ {
protected $fillable = [ protected $fillable = [
'survey_id', 'survey_id',
'department', 'department',
'state', 'state',
'expiration_date', 'expiration_date',
'age'
]; ];
protected $table = 'survey_corona_state'; protected $table = 'survey_vaccination_state';
} }

View File

@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
class CreateSurveyCoronaStateTable extends Migration class CreateSurveyVaccinationStateTable extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -13,12 +13,13 @@ class CreateSurveyCoronaStateTable extends Migration
*/ */
public function up() public function up()
{ {
Schema::create('survey_corona_state', function (Blueprint $table) { Schema::create('survey_vaccination_state', function (Blueprint $table) {
$table->increments('id'); $table->increments('id');
$table->integer('survey_id'); $table->integer('survey_id');
$table->string('department', 20); $table->string('department', 20);
$table->string('state', 50); $table->string('state', 50);
$table->date('expiration_date'); $table->date('expiration_date');
$table->string('age');
$table->timestamps(); $table->timestamps();
$table->softDeletes(); $table->softDeletes();
}); });
@ -31,6 +32,6 @@ class CreateSurveyCoronaStateTable extends Migration
*/ */
public function down() public function down()
{ {
Schema::dropIfExists('subscribe_vaccinate'); Schema::dropIfExists('survey_vaccination_state');
} }
} }

View File

@ -0,0 +1,126 @@
@extends('layouts.app')
@section('social_media')
<meta property="fb:app_id" content="{{ config('social-media-manager.facebook.app_id') }}"/>
<meta property="og:type" content="website"/>
@endsection
@section('content')
<article class="post-item card pt-3 pb-3 mb-lg-5 shadow-sm">
<div class="row">
<h1 class="col-lg-12 card-title">
Anonyme Abfrage des Impfstatus für Feuerwehrangehörige der Freiwilligen Feuerwehr Eppingen - Gesamtwehr
</h1>
</div>
<div class="row">
<div class="col-lg-12">
<hr>
</div>
</div>
<!-- -- >
<div class="row">
<div class="col-lg-6">
Links
</div>
<div class="col-lg-6 text-right">
Rechts
</div>
</div>
<div class="row">
<div class="col-lg-12">
<hr>
</div>
</div>
<!-- -->
@if($expired)
<div class="row">
<div class="col">
Es tut uns Leid, aber der Zeitraum für die Statusabfrage ist abgelaufen.
</div>
</div>
@else
<div class="row">
<div class="row">
<div class="col">
Um die Einsatzbereitschaft besser abschätzen zu können bitten wir alle aktiven Angehörigen der Freiwilligen Feuerwehr Eppingen - Gesamtwehr an dieser Umfrage teilzunehmen.
Die Umfrage findet absolut anonym statt.
Es werden lediglich die Daten aus dem untenstehenden Formular gespeichert.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12 card-content">
<form action="{{ config('app.url') . '/umfrage/impfstatus/abschliessen' }}" method="POST">
<input type="hidden" value="{{ csrf_token() }}" name="_token" />
@include('inc.forms.inputSelect', [
'name' => 'department',
'label' => 'Abteilung *',
'placeholder' => 'Abteilung',
'selected' => old('department.0'),
'modelValue' => 'department',
'modelLabel' => 'department',
'models' => [
(object)['department' => ''],
(object)['department' => 'Adelshofen'],
(object)['department' => 'Elsenz'],
(object)['department' => 'Eppingen'],
(object)['department' => 'Kleingartach'],
(object)['department' => 'Mühlbach'],
(object)['department' => 'Richen'],
(object)['department' => 'Rohrbach']
]
])
@include('inc.forms.inputSelect', [
'name' => 'age',
'label' => 'Alter *',
'placeholder' => '',
'selected' => old('age'),
'modelValue' => 'age',
'modelLabel' => 'age',
'models' => [
(object)['age' => ''],
(object)['age' => '18-25'],
(object)['age' => '26-35'],
(object)['age' => '36-45'],
(object)['age' => '46-55'],
(object)['age' => '56-65'],
]
])
@include('inc.forms.inputSelect', [
'name' => 'state',
'label' => 'Impf-/Genesenenstatus *',
'placeholder' => '',
'selected' => old('state'),
'modelValue' => 'state',
'modelLabel' => 'state',
'models' => [
(object)['state' => ''],
(object)['state' => 'Geimpft'],
(object)['state' => 'Genesen'],
(object)['state' => 'Ich möchte mich vorerst nicht impfen lassen'],
]
])
@include('inc.forms.inputText', [
'name' => 'expiration_date',
'label' => 'Impf-/Genesenenstatus gültig bis',
'placeholder' => 'tt.mm.jjjj',
'value' => $formdata->expiration_date
])
<div class="form-group">
* Pflichtfeld
</div>
<div class="form-group">
<button class="btn btn-primary">Anmelden</button>
</div>
</form>
</div>
</div>
@endif
<div class="row mt-3">
<div class="col-lg-12 social-share">
@include('inc.social_media.facebook.likeShare')
</div>
</div>
</article>
@endsection

View File

@ -0,0 +1,31 @@
@extends('layouts.app')
@section('social_media')
<meta property="fb:app_id" content="{{ config('social-media-manager.facebook.app_id') }}"/>
<meta property="og:type" content="website"/>
@endsection
@section('content')
<article class="post-item card pt-3 pb-3 mb-lg-5 shadow-sm">
<div class="row">
<h1 class="col-lg-12 card-title">
Teilnahmebestätigung
</h1>
</div>
<div class="row">
<div class="col-lg-12">
<hr>
</div>
</div>
<div class="row">
<div class="col">
Vielen Dank für die Teilnahme.<br/>
<br/>
Eure Feuerwehr Eppingen
<br/>
<br/>
</div>
</div>
</article>
@endsection

View File

@ -95,6 +95,17 @@ Route::post("anmeldung/abschliessen", [
'middleware' => 'auth', function (){} 'middleware' => 'auth', function (){}
]); ]);
Route::get("umfrage/impfstatus", [
"uses" => "SurveyController@surveyVaccinationState",
], [
'middleware' => 'auth', function (){}
]);
Route::post("umfrage/impfstatus/abschliessen", [
"uses" => "SurveyController@surveyVaccinationStateSave",
], [
'middleware' => 'auth', function (){}
]);
/****************************************/ /****************************************/
/* Standard Routen für den User-Bereich */ /* Standard Routen für den User-Bereich */