Commit c7a8030e authored by Dominik Hebeler's avatar Dominik Hebeler
Browse files

Updated the donation form

parent 64780f51
......@@ -3,13 +3,15 @@
namespace App\Http\Controllers;
use App\Mail\Kontakt;
use App\Mail\Spende;
use App\Mail\Sprachdatei;
use DB;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use LaravelLocalization;
use Mail;
use Validator;
use \IBAN;
use \IBANCountry;
class MailController extends Controller
{
......@@ -29,14 +31,14 @@ class MailController extends Controller
# Wir benötigen 3 Felder von dem Benutzer wenn diese nicht übermittelt wurden, oder nicht korrekt sind geben wir einen Error zurück
$validator = Validator::make(
[
'email' => $request->input('email')
'email' => $request->input('email'),
],
[
'email' => 'required|email'
'email' => 'required|email',
]
);
if($validator->fails()){
if ($validator->fails()) {
return view('kontakt.kontakt')->with('formerrors', $validator)->with('title', trans('titles.kontakt'))->with('navbarFocus', 'kontakt');
}
......@@ -71,23 +73,53 @@ class MailController extends Controller
public function donation(Request $request)
{
$data = [
'name' => $request->input('Name', ''),
'iban' => $request->input('iban', ''),
'bic' => $request->input('bic', ''),
'email' => $request->input('email', ''),
'betrag' => $request->input('Betrag', ''),
'nachricht' => $request->input('Nachricht', ''),
];
$name = $request->input('Name', '');
$iban = $request->input('iban', '');
$bic = $request->input('bic', '');
$email = $request->input('email', '');
$betrag = $request->input('Betrag', '');
$nachricht = $request->input('Nachricht', '');
# Der enthaltene String wird dem Benutzer nach der Spende ausgegeben
$messageToUser = "";
$messageType = ""; # [success|error]
#Sicherheitsüberprüfung (Wir wurden in letzter Zeit ziemlich mit Mails zugespammt
# Wir überprüfen also, ob das Feld für die Kontonummer tatsächlich eine Kontonummer, oder eine IBAN enthält:
$iban = $request->input('Kontonummer', '');
$iban = preg_replace("/\s/s", "", $iban);
# Eine Kontonummer besteht nur aus Zahlen
# Eine IBAN besteht aus einem Ländercode (2 Buchstaben), einer 2 stelligen Prüfsumme (2 Ziffern) gefolgt von
# einer Kombination aus Buchstaben und Zahlen
if (!preg_match("/^\d+$/s", $iban) && !preg_match("/^[a-zA-Z]{2}\d{2}[a-zA-Z0-9]+$/s", $iban)) {
$messageToUser = "Die eingegebene IBAN/Kontonummer scheint nicht Korrekt zu sein. Nachricht wurde nicht gesendet";
# Check the IBAN
$iban = new IBAN($iban);
$bic = $request->input('Bankleitzahl', '');
$country = new IBANCountry($iban->Country());
$isSEPA = filter_var($country->IsSEPA(), FILTER_VALIDATE_BOOLEAN);
# Check the amount
$validBetrag = is_numeric($betrag) && $betrag > 0;
# Validate Email
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$email = "anonymous@suma-ev.de";
}
if (!$iban->Verify()) {
$messageToUser = "Die eingegebene IBAN scheint nicht Korrekt zu sein. Nachricht wurde nicht gesendet";
$messageType = "error";
} else if (!$isSEPA && $bic === '') {
$messageToUser = "Die eingegebene IBAN gehört nicht zu einem Land aus dem SEPA Raum. Für einen Bankeinzug benötigen wir eine BIC von Ihnen.";
$messageType = "error";
} else if (!$validBetrag) {
$messageToUser = "Der eingegebene Spendenbetrag ist ungültig. Bitte korrigieren Sie Ihre Eingabe und versuchen es erneut.\n";
$messageType = "error";
} else {
# The value has to have a maximum of 2 decimal digits
$betrag = round($betrag, 2, PHP_ROUND_HALF_DOWN);
# Folgende Felder werden vom Spendenformular als Input übergeben:
# Name
# Telefon
......@@ -95,47 +127,52 @@ class MailController extends Controller
# Kontonummer ( IBAN )
# Bankleitzahl ( BIC )
# Nachricht
if (!$request->filled('Kontonummer') || !$request->filled('Bankleitzahl') || !$request->filled('Betrag')) {
$messageToUser = "Sie haben eins der folgenden Felder nicht ausgefüllt: IBAN, BIC, Nachricht. Bitte korrigieren Sie Ihre Eingabe und versuchen es erneut.\n";
$messageType = "error";
} else {
$message = "\r\nName: " . $request->input('Name', 'Keine Angabe');
$message .= "\r\nKontonummer: " . $request->input('Kontonummer');
$message .= "\r\nBankleitzahl: " . $request->input('Bankleitzahl');
$message .= "\r\nBetrag: " . $request->input('Betrag');
$message .= "\r\nNachricht: " . $request->input('Nachricht');
$message .= "\r\n\r\nIP: " . $request->ip();
$message .= "\r\nUser-Agent: " . $request->header('User-Agent', "");
$replyTo = $request->input('email', 'anonymous-user@metager.de');
if($replyTo == ""){
$replyTo = "noreply@metager.de";
}
if (!filter_var($replyTo, FILTER_VALIDATE_EMAIL)) {
$messageToUser .= "Die eingegebene Email-Addresse ($replyTo) scheint nicht korrekt zu sein.";
$message = "\r\nName: " . $name;
$message .= "\r\nIBAN: " . $iban->HumanFormat();
if ($bic !== "") {
$message .= "\r\nBIC: " . $bic;
}
$message .= "\r\nBetrag: " . $betrag;
$message .= "\r\nNachricht: " . $nachricht;
try {
Mail::to("spenden@suma-ev.de")
->send(new Spende($replyTo, $message));
->send(new \App\Mail\Spende($email, $message, $name));
$messageType = "success";
$messageToUser = "Herzlichen Dank!! Wir haben Ihre Spendenbenachrichtigung erhalten.";
try {
// Add the donation to our database
$spenden = DB::connection('spenden')->table('debits')->insert(
['name' => $name,
'iban' => $iban->MachineFormat(),
'bic' => $bic,
'amount' => $betrag,
'message' => $nachricht,
]
);
DB::disconnect('spenden');
} catch (\Illuminate\Database\QueryException $e) {
}
} catch (\Swift_TransportException $e) {
$messageType = "error";
$messageToUser = 'Beim Senden Ihrer Spendenbenachrichtigung ist ein Fehler auf unserer Seite aufgetreten. Bitte schicken Sie eine Email an: office@suma-ev.de, damit wir uns darum kümmern können.';
}
$messageToUser = 'Beim Senden Ihrer Spendenbenachrichtigung ist ein Fehler auf unserer Seite aufgetreten. Bitte schicken Sie eine E-Mail an: office@suma-ev.de, damit wir uns darum kümmern können.';
}
}
if ($messageType === "error") {
$request->flash();
return view('spende.spende')
->with('title', 'Kontakt')
->with($messageType, $messageToUser);
->with($messageType, $messageToUser)
->with('data', $data);
} else {
$data = ['name' => $request->input('Name', 'Keine Angabe'), 'kontonummer' => $request->input('Kontonummer'), 'bankleitzahl' => $request->input('Bankleitzahl'), 'email' => $request->input('email', 'anonymous-user@metager.de'), 'betrag' => $request->input('Betrag'), 'nachricht' => $request->input('Nachricht')];
$data['iban'] = $iban->HumanFormat();
$data = base64_encode(serialize($data));
return redirect(LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route("danke", ['data' => $data])));
}
......@@ -146,9 +183,9 @@ class MailController extends Controller
public static function isEdited($k, $v, $filename)
{
try {
$temp = include resource_path()."/".$filename;
$temp = include resource_path() . "/" . $filename;
foreach ($temp as $key => $value) {
if($k === $key && $v !== $value) {
if ($k === $key && $v !== $value) {
return true;
}
}
......@@ -159,7 +196,7 @@ class MailController extends Controller
return false;
}
public function sendLanguageFile(Request $request, $from, $to, $exclude = "", $email ="")
public function sendLanguageFile(Request $request, $from, $to, $exclude = "", $email = "")
{
$filename = $request->input('filename');
# Wir erstellen nun zunächst den Inhalt der Datei:
......@@ -172,7 +209,7 @@ class MailController extends Controller
if ($key === "filename" || $value === "") {
continue;
}
if($key === "email") {
if ($key === "email") {
$emailAddress = $value;
continue;
}
......@@ -180,11 +217,11 @@ class MailController extends Controller
if (strpos($key, "_new_") === 0 && $value !== "") {
$new++;
$key = substr($key, strpos($key, "_new_") + 5);
$editedKeys = $editedKeys."\n".$key;
$editedKeys = $editedKeys . "\n" . $key;
} else if ($this->isEdited($key, $value, $filename)) {
$new++;
$editedKeys = $editedKeys."\n".$key;
$editedKeys = $editedKeys . "\n" . $key;
}
$key = trim($key);
......@@ -231,7 +268,7 @@ class MailController extends Controller
$ex["new"] += $new;
if ($new > 0) {
if($emailAddress !== "") {
if ($emailAddress !== "") {
Mail::to("dev@suma-ev.de")
->send(new Sprachdatei($message, $output, basename($filename), $emailAddress));
} else {
......
......@@ -15,11 +15,12 @@ class Spende extends Mailable
*
* @return void
*/
public function __construct($from, $message)
public function __construct($from, $message, $name)
{
$this->subject = "MetaGer - Spende";
$this->reply = $from;
$this->message = $message;
$this->name = $name;
}
/**
......@@ -29,7 +30,7 @@ class Spende extends Mailable
*/
public function build()
{
return $this->from($this->reply)
return $this->from($this->reply, $this->name)
->subject($this->subject)
->text('kontakt.mail')
->with('messageText', $this->message);
......
......@@ -10,6 +10,7 @@
"require": {
"php": "^7.1.3",
"fideloper/proxy": "^4.0",
"globalcitizen/php-iban": "^2.6",
"jenssegers/agent": "^2.6",
"laravel/framework": "5.7.*",
"laravel/tinker": "^1.0",
......
......@@ -66,6 +66,22 @@ return [
'engine' => null,
],
'spenden' => [
'driver' => 'mysql',
'host' => env('DB_HOST_SPENDEN', 'localhost'),
'port' => env('DB_PORT_SPENDEN', '3306'),
'database' => env('DB_DATABASE_SPENDEN', 'forge'),
'username' => env('DB_USERNAME_SPENDEN', 'forge'),
'password' => env('DB_PASSWORD_SPENDEN', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', 'localhost'),
......
......@@ -13,13 +13,13 @@ GLS Gemeinschaftsbank, Bochum',
'bankinfo.3' => 'Falls Sie eine Spendenbescheinigung wünschen, teilen Sie uns bitte Ihre vollständige Adresse mit. Bei Spenden bis 200,-€ genügt der Kontoauszug für die Absetzbarkeit beim Finanzamt.',
'lastschrift.1' => 'Spenden mittels elektronischem Lastschriftverfahren:',
'lastschrift.2' => 'Tragen Sie hier Ihre Kontodaten sowie den gewünschten Betrag ein. Wir buchen dann entsprechend von Ihrem Konto ab.',
'lastschrift.3' => 'Bitte geben Sie Ihren Namen ein:',
'lastschrift.2' => 'Tragen Sie hier Ihre Kontodaten sowie den gewünschten Betrag ein. Wir buchen dann entsprechend von Ihrem Konto ab. Notwendige Felder sind mit einem "*" gekennzeichnet.',
'lastschrift.3' => 'Bitte geben Sie den Namen des Kontoinhabers ein:',
'lastschrift.3.placeholder' => 'Name',
'lastschrift.4' => 'Ihre E-Mail Adresse:',
'lastschrift.5' => 'Ihre Telefonnummer, um Ihre Spende ggf. durch einen Rückruf zu verifizieren:',
'lastschrift.6' => 'Ihre IBAN oder Kontonummer:',
'lastschrift.7' => 'Ihre BIC oder Bankleitzahl:',
'lastschrift.6' => 'Ihre IBAN:',
'lastschrift.7' => 'Ihre BIC (Nur notwendig für Transaktionen aus dem EU Ausland):',
'lastschrift.8.value' => 'Hier können Sie uns mitteilen, welchen Betrag (€) Sie spenden möchten:',
'lastschrift.8.value.placeholder' => 'Gewünschter Spendenbetrag (€)',
'lastschrift.8.message' => 'Hier können Sie uns ggf. noch eine Mitteilung dazu senden:',
......
......@@ -22,11 +22,11 @@
</tr>
<tr>
<td>{{ trans('spende.iban') }}</td>
<td>{{ $data['kontonummer'] }}</td>
<td>{{ $data['iban'] }}</td>
</tr>
<tr>
<td>{{ trans('spende.bic') }}</td>
<td>{{ $data['bankleitzahl'] }}</td>
<td>{{ $data['bic'] }}</td>
</tr>
<tr>
<td>{{ trans('spende.betrag') }}</td>
......
......@@ -19,29 +19,29 @@
<form id="donate" method="POST">
<input type="hidden" name="dt" value="{{ md5(date('Y') . date('m') . date('d')) }}">
<div class="form-group donation-form-group">
<label for="Name">{!! trans('spende.lastschrift.3') !!}</label>
<input type="text" class="form-control" id="Name" required="" name="Name" placeholder="{!! trans('spende.lastschrift.3.placeholder') !!}" value="{{ old('Name') }}" />
<label for="Name">*{!! trans('spende.lastschrift.3') !!}</label>
<input type="text" class="form-control" id="Name" required="" name="Name" placeholder="{!! trans('spende.lastschrift.3.placeholder') !!}" @if(isset($data['name'])) value="{{$data['name']}}" @endif />
</div>
<div class="form-group donation-form-group">
<label for="email">{!! trans('spende.lastschrift.4') !!}</label>
<input type="email" class="form-control" id="email" name="email" placeholder="Email" value="{{ old('email') }}">
<input type="email" class="form-control" id="email" name="email" placeholder="Email" @if(isset($data['email'])) value="{{$data['email']}}" @endif>
</div>
<div class="form-group donation-form-group">
<label for="iban">{!! trans('spende.lastschrift.6') !!}</label>
<input type="text" class="form-control" id="iban" required="" name="Kontonummer" placeholder="IBAN" value="{{ old('Kontonummer') }}">
<label for="iban">*{!! trans('spende.lastschrift.6') !!}</label>
<input type="text" class="form-control" id="iban" required="" name="iban" placeholder="IBAN" @if(isset($data['iban'])) value="{{$data['iban']}}" @endif>
</div>
<div class="form-group donation-form-group">
<label for="bic">{!! trans('spende.lastschrift.7') !!}</label>
<input type="text" class="form-control" id="bic" required="" name="Bankleitzahl" placeholder="BIC" value="{{ old('Bankleitzahl') }}">
<input type="text" class="form-control" id="bic" name="bic" placeholder="BIC" @if(isset($data['bic'])) value="{{$data['bic']}}" @endif>
</div>
<div class="form-group donation-form-group">
<label for="value">{!! trans('spende.lastschrift.8.value')!!} </label>
<input type="number" class="form-control" id="value" required="" name="Betrag" placeholder="{!! trans('spende.lastschrift.8.value.placeholder') !!}" value="{{ old('Bankleitzahl') }}">
<label for="value">*{!! trans('spende.lastschrift.8.value')!!} </label>
<input type="number" class="form-control" id="value" required="" name="Betrag" min="1" step="0.01" placeholder="{!! trans('spende.lastschrift.8.value.placeholder') !!}" @if(isset($data['betrag'])) value="{{$data['betrag']}}" @endif>
</div>
<div class="form-group donation-form-group">
<label for="msg">{!! trans('spende.lastschrift.8.message')!!}</label>
<p>{!! trans('spende.bankinfo.3')!!}</p>
<textarea class="form-control" id="msg" name="Nachricht" placeholder="{!! trans('spende.lastschrift.8.message.placeholder') !!}">{{ old('Nachricht') }}</textarea>
<textarea class="form-control" id="msg" name="Nachricht" placeholder="{!! trans('spende.lastschrift.8.message.placeholder') !!}">@if(isset($data['nachricht'])){{$data['nachricht']}}@endif</textarea>
</div>
<button type="submit" form="donate" class="btn btn-default">{!! trans('spende.lastschrift.9') !!}</button>
</form>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment