mein-sterntours/app/Repositories/CustomerMailRepository.php
2020-03-12 09:37:01 +01:00

89 lines
No EOL
2.7 KiB
PHP

<?php
namespace App\Repositories;
use App\Mail\MailSendFeWoService;
use App\Mail\MailSendInfo;
use App\Models\Booking;
use App\Models\CustomerMail;
use Illuminate\Support\Facades\Mail;
class CustomerMailRepository extends BaseRepository {
public function __construct(CustomerMail $model)
{
$this->model = $model;
}
public function update($data)
{
return $this->model;
}
public function sendAndStore($data){
if(isset($data['send_mail_to']) && is_array($data['send_mail_to'])) {
foreach ($data['send_mail_to'] as $booking_id => $on) {
$booking = Booking::find($booking_id);
if ($booking->customer) {
$message = $this->prepareContent($booking, $data['message']);
$subject = $this->prepareContent($booking, $data['subject']);
$customer_mail = $this->store($booking, $subject, $message);
$this->sendMail($customer_mail);
}
}
}
}
public function store($booking, $subject, $message){
$customer_mail = CustomerMail::create([
'booking_id' => $booking->id,
'customer_id' => $booking->customer_id,
'lead_id' => $booking->lead_id,
'email' => $booking->customer->email,
'subject' => $subject,
'message' => $message,
]);
return $customer_mail;
}
private function sendMail($customer_mail){
try{
Mail::to($customer_mail->email)->send(new MailSendInfo($customer_mail->subject, $customer_mail->message));
}
catch(\Exception $e){
// Never reached
$customer_mail->fail = true;
$customer_mail->error = $e->getMessage();
$customer_mail->save();
return false;
}
$customer_mail->send = true;
$customer_mail->sent_at = now();
$customer_mail->save();
return true;
}
private function prepareContent($booking, $content){
$first_name = $booking->customer->firstname;
$last_name = $booking->customer->name;
$country = $booking->travel_country_id ? $booking->travel_country->name : "-";
$program = $booking->travelagenda_id ? $booking->travel_agenda->name : "-";
$salutation = $booking->customer->salutation->name;
$dear = $booking->customer->salutation_id == 1 ? 'geehrter' : 'geehrte';
$search = ['#geehrte/r#', '#Anrede#', '#Vorname#', '#Nachname#', '#Reiseland#', '#Programm#'];
$replace = [$dear, $salutation, $first_name, $last_name, $country, $program, $salutation];
$content = str_replace($search, $replace, $content);
return $content;
}
}