Add photobooth uploader download email
This commit is contained in:
@@ -3,12 +3,16 @@
|
||||
namespace App\Http\Controllers\Api\Tenant;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Photobooth\PhotoboothSendUploaderDownloadRequest;
|
||||
use App\Http\Resources\Tenant\PhotoboothStatusResource;
|
||||
use App\Mail\PhotoboothUploaderDownload;
|
||||
use App\Models\Event;
|
||||
use App\Models\PhotoboothSetting;
|
||||
use App\Services\Photobooth\PhotoboothProvisioner;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
class PhotoboothController extends Controller
|
||||
{
|
||||
@@ -69,6 +73,39 @@ class PhotoboothController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
public function sendUploaderDownloadEmail(PhotoboothSendUploaderDownloadRequest $request, Event $event): JsonResponse
|
||||
{
|
||||
$this->assertEventBelongsToTenant($request, $event);
|
||||
|
||||
$user = $request->user();
|
||||
|
||||
if (! $user || ! $user->email) {
|
||||
throw ValidationException::withMessages([
|
||||
'email' => __('No email address is configured for this account.'),
|
||||
]);
|
||||
}
|
||||
|
||||
$locale = $user->preferred_locale ?: app()->getLocale();
|
||||
$eventName = $this->resolveEventName($event, $locale);
|
||||
$recipientName = $user->fullName ?? $user->name ?? $user->email;
|
||||
|
||||
Mail::to($user->email)
|
||||
->locale($locale)
|
||||
->queue(new PhotoboothUploaderDownload(
|
||||
recipientName: $recipientName,
|
||||
eventName: $eventName,
|
||||
links: [
|
||||
'windows' => url('/downloads/PhotoboothUploader-win-x64.exe'),
|
||||
'macos' => url('/downloads/PhotoboothUploader-macos-x64'),
|
||||
'linux' => url('/downloads/PhotoboothUploader-linux-x64'),
|
||||
],
|
||||
));
|
||||
|
||||
return response()->json([
|
||||
'message' => __('Download links sent via email.'),
|
||||
]);
|
||||
}
|
||||
|
||||
protected function resource(Event $event): PhotoboothStatusResource
|
||||
{
|
||||
return PhotoboothStatusResource::make([
|
||||
@@ -92,4 +129,30 @@ class PhotoboothController extends Controller
|
||||
|
||||
return in_array($mode, ['sparkbooth', 'ftp'], true) ? $mode : 'ftp';
|
||||
}
|
||||
|
||||
protected function resolveEventName(Event $event, ?string $locale = null): string
|
||||
{
|
||||
$name = $event->name;
|
||||
|
||||
if (is_string($name) && trim($name) !== '') {
|
||||
return $name;
|
||||
}
|
||||
|
||||
if (is_array($name)) {
|
||||
$locale = $locale ?: app()->getLocale();
|
||||
$localized = $name[$locale] ?? null;
|
||||
|
||||
if (is_string($localized) && trim($localized) !== '') {
|
||||
return $localized;
|
||||
}
|
||||
|
||||
foreach ($name as $value) {
|
||||
if (is_string($value) && trim($value) !== '') {
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $event->slug ?: __('emails.photobooth_uploader.event_fallback');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user