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:
@@ -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 ?? '—');
|
||||
|
||||
Reference in New Issue
Block a user