Feuerwehr-eppingen/app/Http/Controllers/ContactController.php

527 lines
17 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: Marco Glietsch
* Date: 22.11.2018
* Time: 09:28
*/
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\Models\SubscribeChild;
use App\Models\SubscribeVaccinate;
use App\Models\SubscribeYouthFireFighter;
use App\Models\SubscribeDekon;
use App\Models\SubscribeHelperParty;
use App\Models\SubscribeEm2024;
use App\Models\SubscribePopulationExercise;
use App\Helpers\AccessHelper as Access;
use \Carbon\Carbon;
use Response;
//use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Request as Input;
use App\Helpers\StringHelper;
use function Illuminate\Database\Eloquent\Factories\createChildren;
class ContactController extends ExtendedController
{
public function __construct()
{
$this->middleware(['auth' => 'contactPermissions'])->except(
'subscribe',
'subscribeSave',
'count',
'subscribeVaccinate',
'subscribeVaccinateSave',
'subscribeYouthFireFighter',
'subscribeYouthFireFighterSave',
'subscribeDekon',
'subscribeDekonSave',
'subscribeHelperParty',
'subscribeHelperPartySave',
'subscribeEm2024',
'subscribeEm2024Save',
'subscribeEm2024Info',
'subscribePopulationExercise',
'subscribePopulationExerciseSave'
);
parent::__construct();
}
/********************************/
/* Anmeldung für Nikolausaktion */
/********************************/
public function subscribe(Request $request)
{
$formdata = new SubscribeChild();
$view = view("inc.contact.subscribe");
$view->with('url', $this->route);
$view->with('formdata', $formdata);
$view->with('expired', true);
return $view;
}
public function subscribeSave(Request $request)
{
$request->request->add(['city' => $request->city[0]]);
$formdata = $request->validate([
'firstnameParent' => 'required|min:3',
'lastnameParent' => 'required|min:3',
'firstnameChild' => 'required|min:3',
'street' => 'required|min:3',
'streetnumber' => 'required',
'city' => 'required',
'phone' => 'required|min:4',
'age' => 'required|integer',
],
[
'firstnameParent.required' => 'Pflichtfeld',
'firstnameParent.min' => 'Mindestens :min Zeichen',
'lastnameParent.required' => 'Pflichtfeld',
'lastnameParent.min' => 'Mindestens :min Zeichen',
'firstnameChild.required' => 'Pflichtfeld',
'firstnameChild.min' => 'Mindestens :min Zeichen',
'street.required' => 'Pflichtfeld',
'street.min' => 'Mindestens :min Zeichen',
'streetnumber.required' => 'Pflichtfeld',
'streetnumber.min' => 'Mindestens :min Zeichen',
'city.required' => 'Pflichtfeld',
'phone.required' => 'Pflichtfeld',
'phone.min' => 'Mindestens :min Zeichen',
'age.required' => 'Pflichtfeld',
'age.integer' => 'Muss eine Zahl sein',
]);
$checkmodel = SubscribeYou::where('lastnameParent', $request->lastnameParent)
->where('firstnameParent', $request->firstnameParent)
->where('firstnameChild', $request->firstnameChild)
->where('city', $request->city)
->get();
$view = null;
if($checkmodel->count())
{
$view = view("inc.contact.subscribeDouble");
$view->with('firstnameChild', $request->firstnameChild);
$view->with('lastnameChild', $request->lastnameParent);
}
else
{
$model = new SubscribeChild();
$model->fill($request->all());
$model->age = $request->age;
# $model->city = $request->city[0];
$model->save();
$view = view("inc.contact.subscribeSuccess");
}
return $view;
}
/**********************************/
/* Anmeldung zum Dekon-P Lehrgang */
/**********************************/
public function subscribeDekon(Request $request)
{
$formdata = new SubscribeDekon();
$view = view("inc.contact.subscribeDekon");
$view->with('url', $this->route);
$view->with('formdata', $formdata);
$view->with('expired', false);
return $view;
}
public function subscribeDekonSave(Request $request)
{
$request->request->add(['city' => $request->city[0]]);
$formdata = $request->validate([
'firstname' => 'required|min:3',
'lastname' => 'required|min:3',
'city' => 'required|min:3',
'city_work' => 'required|min:3',
],
[
'firstname.required' => 'Pflichtfeld',
'firstname.min' => 'Mindestens :min Zeichen',
'lastname.required' => 'Pflichtfeld',
'lastname.min' => 'Mindestens :min Zeichen',
'city.required' => 'Pflichtfeld',
'city.min' => 'Mindestens :min Zeichen',
'city_work.required' => 'Pflichtfeld',
'city_work.min' => 'Mindestens :min Zeichen',
]);
$checkmodel = SubscribeDekon::where('lastname', $request->lastname)
->where('firstname', $request->firstname)
->where('city', $request->city);
$view = null;
$model = new SubscribeDekon();
if($checkmodel->get()->count())
{
$model = $checkmodel->first();
$model->truppmann2 = $request->has('truppmann2') ? $request->input('truppmann2') : false;
$model->atemschutz = $request->has('atemschutz') ? $request->input('atemschutz') : false;
$model->maschinist = $request->has('maschinist') ? $request->input('maschinist') : false;
}
$model->fill($request->all());
# $model->city = $request->city[0];
$model->save();
$view = view("inc.contact.subscribeDekonSuccess");
return $view;
}
/*********************************/
/* Anmeldung zur Kinderfeuerwehr */
/*********************************/
public function subscribeYouthFireFighter(Request $request)
{
$formdata = new SubscribeYouthFireFighter();
$view = view("inc.contact.subscribeYouthFireFighter");
$view->with('url', $this->route);
$view->with('formdata', $formdata);
$view->with('expired', false);
return $view;
}
public function subscribeYouthFireFighterSave(Request $request)
{
$request->request->add(['city' => $request->city[0]]);
$formdata = $request->validate([
'firstnameParent' => 'required|min:3',
'lastnameParent' => 'required|min:3',
'firstnameChild' => 'required|min:3',
'birthday' => 'required|date_format:d.m.Y',
'street' => 'required|min:3',
'streetnumber' => 'required',
'city' => 'required',
'phone' => 'required|min:4',
'email' => 'required|email'
],
[
'firstnameParent.required' => 'Pflichtfeld',
'firstnameParent.min' => 'Mindestens :min Zeichen',
'lastnameParent.required' => 'Pflichtfeld',
'lastnameParent.min' => 'Mindestens :min Zeichen',
'firstnameChild.required' => 'Pflichtfeld',
'firstnameChild.min' => 'Mindestens :min Zeichen',
'street.required' => 'Pflichtfeld',
'street.min' => 'Mindestens :min Zeichen',
'streetnumber.required' => 'Pflichtfeld',
'streetnumber.min' => 'Mindestens :min Zeichen',
'city.required' => 'Pflichtfeld',
'phone.required' => 'Pflichtfeld',
'phone.min' => 'Mindestens :min Zeichen',
'email.email' => 'Es muss eine gültige Emailadresse angegeben werden',
'birthday.required' => 'Pflichtfeld',
'birthday.date_format' => 'Das Datum muss im Format tt.mm.jjjj (tag.monat.jahr) eingegeben werden',
]);
$checkmodel = SubscribeYouthFireFighter::where('lastnameParent', $request->lastnameParent)
->where('firstnameParent', $request->firstnameParent)
->where('firstnameChild', $request->firstnameChild)
->where('city', $request->city)
->get();
$view = null;
if($checkmodel->count())
{
$view = view("inc.contact.subscribeDouble");
$view->with('firstnameChild', $request->firstnameChild);
$view->with('lastnameChild', $request->lastnameParent);
}
else
{
$model = new SubscribeYouthFireFighter();
$model->fill($request->all());
$model->birthday = Carbon::createFromFormat('d.m.Y', $request->birthday);
# $model->city = $request->city[0];
$model->save();
$view = view("inc.contact.subscribeYouthFireFighterSuccess");
}
return $view;
}
/********************************/
/* Anmeldung zur Coronaimnpfung */
/********************************/
public function subscribeVaccinate(Request $request)
{
$formdata = new SubscribeVaccinate();
$view = view("inc.contact.subscribeVaccinate");
$view->with('url', $this->route);
$view->with('formdata', $formdata);
$view->with('expired', false);
return $view;
}
public function subscribeVaccinateSave(Request $request)
{
$request->request->add(['city' => $request->city[0]]);
$formdata = $request->validate([
'firstname' => 'required|min:3',
'lastname' => 'required|min:3',
'birthday' => 'required|date_format:d.m.Y',
'street' => 'required|min:3',
'streetnumber' => 'required',
'city' => 'required',
'department' => 'required',
],
[
'firstname.required' => 'Pflichtfeld',
'firstname.min' => 'Mindestens :min Zeichen',
'lastname.required' => 'Pflichtfeld',
'lastname.min' => 'Mindestens :min Zeichen',
'birthday.required' => 'Pflichtfeld',
'birthday.date_format' => 'Das Datum muss im Format tt.mm.jjjj (tag.monat.jahr) eingegeben werden',
'street.required' => 'Pflichtfeld',
'street.min' => 'Mindestens :min Zeichen',
'streetnumber.required' => 'Pflichtfeld',
'streetnumber.min' => 'Mindestens :min Zeichen',
'city.required' => 'Pflichtfeld',
'department.required' => 'Pflichtfeld',
]);
$checkmodel = SubscribeVaccinate::where('lastname', $request->lastname)
->where('firstname', $request->firstname)
->get();
$view = null;
if($checkmodel->count())
{
$view = view("inc.contact.subscribeVaccinateDouble");
$view->with('firstname', $request->firstname);
$view->with('lastname', $request->lastname);
}
else
{
$model = new SubscribeVaccinate();
$model->fill($request->all());
$model->birthday = Carbon::createFromFormat('d.m.Y', $request->birthday);
$model->department = $request->department[0];
$model->save();
$view = view("inc.contact.subscribeVaccinateSuccess");
}
return $view;
}
/****************************/
/* Anmeldung zum Helferfest */
/****************************/
public function subscribeHelperParty(Request $request)
{
$formdata = new SubscribeYouthFireFighter();
$formdata->countChildren = 0;
$view = view("inc.contact.subscribeHelperParty");
$view->with('url', $this->route);
$view->with('formdata', $formdata);
$view->with('expired', false);
return $view;
}
public function subscribeHelperPartySave(Request $request)
{
$formdata = $request->validate([
'firstname' => 'required|min:3',
'lastname' => 'required|min:3',
'countMatures' => 'integer',
'countChildren' => 'integer'
],
[
'firstname.required' => 'Pflichtfeld',
'firstname.min' => 'Mindestens :min Zeichen',
'lastname.required' => 'Pflichtfeld',
'lastname.min' => 'Mindestens :min Zeichen',
'countMatures.integer' => 'Es sind nur Zahlen erlaubt',
'countChildren.integer' => 'Es sind nur Zahlen erlaubt',
]);
$model = SubscribeHelperParty::where('lastname', $request->lastname)
->where('firstname', $request->firstname)
->get();
$view = null;
$view = view("inc.contact.subscribeHelperPartySuccess");
if($model->count())
{
$model = $model->first();
$model->fill($request->all());
$model->save();
$view->with('exist', true);
}
else
{
$model = new SubscribeHelperParty();
$model->fill($request->all());
$model->save();
}
$view->with('firstname', $request->firstname);
$view->with('lastname', $request->lastname);
$view->with('countMatures', $request->countMatures);
$view->with('countChildren', $request->countChildren);
return $view;
}
/*************************/
/* Anmeldung zur EM 2024 */
/*************************/
public function subscribeEm2024(Request $request)
{
$model = SubscribeEm2024::get();
$subscribers = $model->count();
$partner = $model->sum('partner');
$children = $model->sum('children');
$total = $subscribers + $partner + $children;
$limit = false;
if($total > 250)
{
$limit = true;
}
$formdata = new SubscribeEm2024();
$view = view("inc.contact.subscribeEm2024");
$view->with('url', $this->route);
$view->with('formdata', $formdata);
$view->with('limit', $limit);
return $view;
}
public function subscribeEm2024Save(Request $request)
{
$formdata = $request->validate([
'firstname' => 'required|min:3',
'lastname' => 'required|min:3',
],
[
'firstname.required' => 'Pflichtfeld',
'firstname.min' => 'Mindestens :min Zeichen',
'lastname.required' => 'Pflichtfeld',
'lastname.min' => 'Mindestens :min Zeichen',
]);
$view = null;
$model = new SubscribeEm2024();
$model->fill($request->all());
$model->partner = $request->has('partner') ? $request->input('partner') : false;
$model->children = intval($request->input('children'));
$model->ages = $request->input('ages') == NULL ? '' : $request->input('ages');
$model->save();
$view = view("inc.contact.subscribeEm2024Success");
return $view;
}
public function subscribeEm2024Info(Request $request)
{
$model = SubscribeEm2024::get();
$subscribers = $model->count();
$partner = $model->sum('partner');
$children = $model->sum('children');
$total = $subscribers + $partner + $children;
$view = view('inc.contact.subscribeEm2024Info');
$view->with('subscribers', $subscribers);
$view->with('partner', $partner);
$view->with('children', $children);
$view->with('total', $total);
return $view;
}
/*****************************************/
/* Anmeldung zur Bevölkerungsschutzübung */
/*****************************************/
public function subscribePopulationExercise(Request $request)
{
$formdata = new SubscribePopulationExercise();
$view = view("inc.contact.subscribePopulationExercise");
$view->with('url', $this->route);
$view->with('formdata', $formdata);
$view->with('expired', false);
return $view;
}
public function subscribePopulationExerciseSave(Request $request)
{
$request->request->add(['city' => $request->city[0]]);
$formdata = $request->validate([
'firstname' => 'required|min:3',
'lastname' => 'required|min:3',
'street' => 'required|min:3',
'streetnumber' => 'required',
'city' => 'required',
'phone' => 'required|min:4',
'email' => 'required|email'
],
[
'firstname.required' => 'Pflichtfeld',
'firstname.min' => 'Mindestens :min Zeichen',
'lastname.required' => 'Pflichtfeld',
'lastname.min' => 'Mindestens :min Zeichen',
'street.required' => 'Pflichtfeld',
'street.min' => 'Mindestens :min Zeichen',
'streetnumber.required' => 'Pflichtfeld',
'streetnumber.min' => 'Mindestens :min Zeichen',
'city.required' => 'Pflichtfeld',
'phone.required' => 'Pflichtfeld',
'phone.min' => 'Mindestens :min Zeichen',
'email.email' => 'Es muss eine gültige Emailadresse angegeben werden',
]);
$checkmodel = SubscribePopulationExercise::where('lastname', $request->lastname)
->where('firstname', $request->firstname)
->where('city', $request->city);
$view = null;
$model = new SubscribePopulationExercise();
if($checkmodel->get()->count())
{
$model = $checkmodel->first();
$model->driving = $request->has('driving') ? $request->input('driving') : false;
}
$model->fill($request->all());
# $model->city = $request->city[0];
$model->save();
$view = view("inc.contact.subscribePopulationExerciseSuccess");
return $view;
}
}