Customer Mail, Mails, Views Lead Customer
This commit is contained in:
parent
f1e0900a7a
commit
f53f17f9c1
46 changed files with 2217 additions and 1489 deletions
89
app/Repositories/CustomerMailRepository.php
Normal file
89
app/Repositories/CustomerMailRepository.php
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
<?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;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue