MailController.php 8.48 KB
Newer Older
1
2
3
4
5
6
<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
7
use Illuminate\Http\Response;
8
use LaravelLocalization;
9
10
11
12
13
14
15
16
17
18
use Mail;

class MailController extends Controller
{
    /**
     * Load Startpage accordingly to the given URL-Parameter and Mobile
     *
     * @param  int  $id
     * @return Response
     */
Dominik Hebeler's avatar
Dominik Hebeler committed
19
20
    public function contactMail(Request $request)
    {
21
22

        # Nachricht, die wir an den Nutzer weiterleiten:
Dominik Hebeler's avatar
Dominik Hebeler committed
23
        $messageType   = ""; # [success|error]
24
        $returnMessage = '';
Dominik Hebeler's avatar
Dominik Hebeler committed
25
26
        $replyTo       = $request->input('email', 'noreply@metager.de');
        if ($replyTo === "") {
27
            $replyTo = "noreply@metager.de";
Dominik Hebeler's avatar
Dominik Hebeler committed
28
        } else {
29
30
31
            $replyTo = $request->input('email');
        }

Dominik Hebeler's avatar
Dominik Hebeler committed
32
33
        if (!$request->has('message')) {
            $messageType   = "error";
34
            $returnMessage = "Tut uns leid, aber leider haben wir mit Ihrer Kontaktanfrage keine Daten erhalten. Die Email wurde nicht versand";
Dominik Hebeler's avatar
Dominik Hebeler committed
35
        } else {
36
37
            # Wir versenden die Mail des Benutzers an uns:
            $message = $request->input('message');
38
            $subject = "[Ticket " . date("Y") . date("d") . date("m") . date("H") . date("i") . date("s") . "] MetaGer - Kontaktanfrage";
Dominik Hebeler's avatar
Dominik Hebeler committed
39
            if (Mail::send(['text' => 'kontakt.mail'], ['messageText' => $message], function ($message) use ($replyTo, $subject) {
40
41
42
                $message->to("office@suma-ev.de", $name = null);
                $message->from($replyTo, $name = null);
                $message->replyTo($replyTo, $name = null);
43
                $message->subject($subject);
Dominik Hebeler's avatar
Dominik Hebeler committed
44
            })) {
45
                # Mail erfolgreich gesendet
Dominik Hebeler's avatar
Dominik Hebeler committed
46
                $messageType   = "success";
47
                $returnMessage = 'Ihre Email wurde uns erfolgreich zugestellt. Vielen Dank dafür! Wir werden diese schnellstmöglich bearbeiten und uns dann ggf. wieder bei Ihnen melden.';
Dominik Hebeler's avatar
Dominik Hebeler committed
48
            } else {
49
                # Fehler beim senden der Email
Dominik Hebeler's avatar
Dominik Hebeler committed
50
                $messageType   = "error";
Dominik Hebeler's avatar
Dominik Hebeler committed
51
                $returnMessage = 'Beim Senden Ihrer Email ist ein Fehler aufgetreten. Bitte schicken Sie eine Email an: office@suma-ev.de, damit wir uns darum kümmern können.';
52
53
54
55
56
57
            }

            $messageType = "success";
        }

        return view('kontakt.kontakt')
Dominik Hebeler's avatar
Dominik Hebeler committed
58
59
60
61
            ->with('title', 'Kontakt')
            ->with('css', 'kontakt.css')
            ->with('js', ['openpgp.min.js', 'kontakt.js'])
            ->with($messageType, $returnMessage);
62
    }
Dominik Hebeler's avatar
Dominik Hebeler committed
63
64
65
66
67

    public function donation(Request $request)
    {
        # Der enthaltene String wird dem Benutzer nach der Spende ausgegeben
        $messageToUser = "";
Dominik Hebeler's avatar
Dominik Hebeler committed
68
        $messageType   = ""; # [success|error]
Dominik Hebeler's avatar
Dominik Hebeler committed
69
70
71
72
73
74
75
76

        # Folgende Felder werden vom Spendenformular als Input übergeben:
        # Name
        # Telefon
        # email
        # Kontonummer ( IBAN )
        # Bankleitzahl ( BIC )
        # Nachricht
Dominik Hebeler's avatar
Dominik Hebeler committed
77
        if (!$request->has('Kontonummer') || !$request->has('Bankleitzahl') || !$request->has('Nachricht')) {
Dominik Hebeler's avatar
Dominik Hebeler committed
78
            $messageToUser = "Sie haben eins der folgenden Felder nicht ausgefüllt: IBAN, BIC, Nachricht. Bitte korrigieren Sie Ihre Eingabe und versuchen es erneut.\n";
Dominik Hebeler's avatar
Dominik Hebeler committed
79
80
            $messageType   = "error";
        } else {
81
82
83
84
85
            $message = "\r\nName: " . $request->input('Name', 'Keine Angabe');
            $message .= "\r\nTelefon: " . $request->input('Telefon', 'Keine Angabe');
            $message .= "\r\nKontonummer: " . $request->input('Kontonummer');
            $message .= "\r\nBankleitzahl: " . $request->input('Bankleitzahl');
            $message .= "\r\nNachricht: " . $request->input('Nachricht');
Dominik Hebeler's avatar
Dominik Hebeler committed
86
87
88
89
90
91

            $replyTo = $request->input('email', 'anonymous-user@metager.de');
            if (!filter_var($replyTo, FILTER_VALIDATE_EMAIL)) {
                $messageToUser .= "Die eingegebene Email-Addresse ($replyTo) scheint nicht korrekt zu sein.";
            }

Dominik Hebeler's avatar
Dominik Hebeler committed
92
93
            try {
                if (Mail::send(['text' => 'kontakt.mail'], ['messageText' => $message], function ($message) use ($replyTo) {
94
                    $message->to("office@suma-ev.de", $name = null);
Dominik Hebeler's avatar
Dominik Hebeler committed
95
96
97
98
                    $message->from($replyTo, $name = null);
                    $message->replyTo($replyTo, $name = null);
                    $message->subject("MetaGer - Spende");
                })) {
Dominik Hebeler's avatar
Dominik Hebeler committed
99
100
101
102
                    $messageType   = "success";
                    $messageToUser = "Herzlichen Dank!! Wir haben Ihre Spendenbenachrichtigung erhalten.";
                } else {
                    $messageType   = "error";
Dominik Hebeler's avatar
Dominik Hebeler committed
103
104
                    $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.';
                }
Dominik Hebeler's avatar
Dominik Hebeler committed
105
106
            } catch (\Swift_TransportException $e) {
                $messageType   = "error";
Dominik Hebeler's avatar
Dominik Hebeler committed
107
108
109
110
                $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.';
            }
        }

111
112
113
114
115
116
117
118
        if ($messageType === "error") {
            return view('spende.danke')
                ->with('title', 'Kontakt')
                ->with('css', 'donation.css')
                ->with($messageType, $messageToUser);
        } else {
            $data = ['name' => $request->input('Name', 'Keine Angabe'), 'telefon' => $request->input('Telefon', 'Keine Angabe'), 'kontonummer' => $request->input('Kontonummer'), 'bankleitzahl' => $request->input('Bankleitzahl'), 'email' => $request->input('email', 'anonymous-user@metager.de'), 'nachricht' => $request->input('Nachricht')];
            $data = base64_encode(serialize($data));
119
            return redirect(LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route("danke", ['data' => $data])));
120
121
        }

Dominik Hebeler's avatar
Dominik Hebeler committed
122
    }
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162

    public function sendLanguageFile(Request $request, $from, $to, $exclude = "")
    {

        $filename = $request->input('filename');

        # Wir erstellen nun zunächst den Inhalt der Datei:
        $data = [];
        $new  = 0;
        foreach ($request->all() as $key => $value) {
            if ($key === "filename" || $value === "") {
                continue;
            }
            if (strpos($key, "_new_") === 0 && $value !== "") {
                $new++;
                $key = substr($key, strpos($key, "_new_") + 5);
            }
            $key = trim($key);
            if (!strpos($key, "#")) {
                $data[$key] = $value;
            } else {
                $ref = &$data;
                do {
                    $ref = &$ref[substr($key, 0, strpos($key, "#"))];
                    $key = substr($key, strpos($key, "#") + 1);
                } while (strpos($key, "#"));
                $ref = &$ref[$key];
                $ref = $value;
            }

        }
        $output = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
        $output = preg_replace("/\{/si", "[", $output);
        $output = preg_replace("/\}/si", "]", $output);
        $output = preg_replace("/\": ([\"\[])/si", "\"\t=>\t$1", $output);

        $output = "<?php\n\nreturn $output;\n";

        $message = "Moin moin,\n\nein Benutzer hat eine Sprachdatei aktualisiert.\nSollten die Texte so in Ordnung sein, ersetzt, oder erstellt die Datei aus dem Anhang in folgendem Pfad:\n$filename\n\nFolgend zusätzlich der Inhalt der Datei:\n\n$output";

163
164
165
166
167
168
        #Mail::send(['text' => 'kontakt.mail'], ['messageText' => $message], function ($message) use ($output, $filename) {
        #    $message->subject('MetaGer - Sprachdatei');
        #    $message->from('noreply@metager.de');
        #    $message->to('office@suma-ev.de');
        #    $message->attachData($output, basename($filename));
        #});
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191

        # Wir haben nun eine Mail an uns geschickt, welche die entsprechende Datei beinhaltet.
        # Nun müssen wir den Nutzer eigentlich nur noch zurück leiten und die Letzte bearbeitete Datei ausschließen:
        $ex = [];
        if ($exclude !== "") {
            try {
                $ex = unserialize(base64_decode($exclude));
            } catch (\ErrorException $e) {
                $ex = [];
            }

            if (!isset($ex["files"])) {
                $ex["files"] = [];
            }
        }
        if (!isset($ex["new"])) {
            $ex["new"] = 0;
        }
        $ex['files'][] = basename($filename);
        $ex["new"] += $new;
        $ex = base64_encode(serialize($ex));
        return redirect(url('languages/edit', ['from' => $from, 'to' => $to, 'exclude' => $ex]));
    }
Dominik Hebeler's avatar
Dominik Hebeler committed
192
}