feat: Enhance Slack notification with design and size details

- Add emoji () and design name to order creation Slack message
- Include print size information (wallpaper length or mural dimensions)
- Extract design/size info once and reuse for both Slack and Trello
- Message format: 'New [type] order: Order #[number]\\nDesign: [name]\\nSize: [dimensions]'
This commit is contained in:
twotalesanimation
2026-01-02 16:15:57 +02:00
parent d29f08bd98
commit 9fd138582a
+20 -16
View File
@@ -18,7 +18,25 @@ class NotifySlackOnOrderCreated
public function handle(OrderCreated $event): void
{
$order = $event->order;
$message = "New {$event->orderType} order created: Order #{$order->order_number}";
// Extract design name from first order item's product
$designName = $order->items->first()?->product?->name ?? '—';
// Calculate print size from first item's dimensions
$printSize = '—';
$firstItem = $order->items->first();
if ($firstItem) {
if ($firstItem->type === 'wallpaper' && $firstItem->length) {
$printSize = $firstItem->length . 'm';
} elseif ($firstItem->type === 'mural' && $firstItem->width && $firstItem->height) {
$printSize = $firstItem->width . 'cm × ' . $firstItem->height . 'cm';
}
}
// Build detailed Slack message
$message = "🆕 New {$event->orderType} order: Order #{$order->order_number}\n" .
"Design: '{$designName}'\n" .
"Size: {$printSize}";
// Notify Slack
$this->slack->orders($message);
@@ -35,21 +53,7 @@ class NotifySlackOnOrderCreated
if ($cardId) {
$order->update(['trello_card_id' => $cardId]);
// Extract design name from first order item's product
$designName = $order->items->first()?->product?->name ?? '—';
// Calculate print size from first item's dimensions
$printSize = '—';
$firstItem = $order->items->first();
if ($firstItem) {
if ($firstItem->type === 'wallpaper' && $firstItem->length) {
$printSize = $firstItem->length . 'm';
} elseif ($firstItem->type === 'mural' && $firstItem->width && $firstItem->height) {
$printSize = $firstItem->width . 'cm × ' . $firstItem->height . 'cm';
}
}
// Populate custom fields
// Populate custom fields with the same info
$this->trello->setTextField($cardId, 'order_id', $order->uuid);
$this->trello->setTextField($cardId, 'design_name', $designName);
$this->trello->setTextField($cardId, 'customer_name', $order->customer_name ?? '—');