send emails even if target has no email

This commit is contained in:
Godfrey M 2024-10-31 12:45:29 -07:00
parent 7e996c40f5
commit e65942064e
2 changed files with 32 additions and 16 deletions

View file

@ -73,14 +73,17 @@ class CheckoutableListener
* 2. The item has a EULA * 2. The item has a EULA
* 3. The item should send an email at check-in/check-out * 3. The item should send an email at check-in/check-out
*/ */
if ($notifiable instanceof User && $notifiable->email != '') { if ($notifiable instanceof User) {
if ($event->checkoutable->requireAcceptance() || $event->checkoutable->getEula() || if ($event->checkoutable->requireAcceptance() || $event->checkoutable->getEula() ||
(method_exists($event->checkoutable, 'checkin_email') && $event->checkoutable->checkin_email())) { (method_exists($event->checkoutable, 'checkin_email') && $event->checkoutable->checkin_email())) {
Mail::to($notifiable)->cc($ccEmails)->send($mailable); if (!empty($notifiable->email)) {
Mail::to($notifiable)->cc($ccEmails)->send($mailable);
} else {
Mail::cc($ccEmails)->send($mailable);
}
Log::info('Sending email, Locale: ' . ($event->checkedOutTo->locale ?? 'default')); Log::info('Sending email, Locale: ' . ($event->checkedOutTo->locale ?? 'default'));
} }
} }
// Send Webhook notification // Send Webhook notification
if ($this->shouldSendWebhookNotification()) { if ($this->shouldSendWebhookNotification()) {
Notification::route(Setting::getSettings()->webhook_selected, Setting::getSettings()->webhook_endpoint) Notification::route(Setting::getSettings()->webhook_selected, Setting::getSettings()->webhook_endpoint)

View file

@ -25,7 +25,9 @@ use App\Http\Controllers\Auth\ForgotPasswordController;
use App\Http\Controllers\Auth\ResetPasswordController; use App\Http\Controllers\Auth\ResetPasswordController;
use App\Livewire\Importer; use App\Livewire\Importer;
use App\Models\Asset; use App\Models\Asset;
use App\Models\Setting;
use App\Models\User; use App\Models\User;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
@ -552,21 +554,32 @@ Route::middleware(['auth'])->get(
[DashboardController::class, 'index'] [DashboardController::class, 'index']
)->name('home'); )->name('home');
Route::get('/test-email', function() { Route::get('/test-email', function() {
$item = Asset::find(1); // Load some test data $item = \App\Models\LicenseSeat::find(1); // Load some test data
$admin = User::find(1); $admin = User::find(2);
$target = User::find(2); $target = User::find(1);
$acceptance = null; // Simulate acceptance data $acceptance = null; // Simulate acceptance data
$note = 'Test note'; $note = 'Test note';
$settings = Setting::getSettings();
$adminCcEmailsArray = [];
$fields = []; if($settings->admin_cc_email !== '') {
if (($item->model) && ($item->model->fieldset)) { $adminCcEmail = $settings->admin_cc_email;
$fields = $item->model->fieldset->fields; $adminCcEmailsArray = array_map('trim', explode(',', $adminCcEmail));
}
$ccEmails = array_filter($adminCcEmailsArray);
if (!empty($target->email)) {
Mail::to($target)->cc($ccEmails)->send( new \App\Mail\CheckoutLicenseMail(
$item,
$admin,
$target,
$acceptance,
$note));
} else {
Mail::cc($ccEmails)->send(new \App\Mail\CheckoutLicenseMail(
$item,
$admin,
$target,
$acceptance,
$note));
} }
return new \App\Mail\CheckoutAssetMail(
$item,
$admin,
$target,
$acceptance,
$note);
}); });