import { query } from '../db.js';
import { sendPushToUsers } from './push.js';

export async function deliverTicketAssignment(input: { engineerId: string; ticketId: string; ticketNumber?: string; plannedAt?: string | null }) {
  try {
    const { rows } = await query<{ user_id: string }>('SELECT user_id FROM engineers WHERE id=$1 AND is_active=true', [input.engineerId]);
    const userId = rows[0]?.user_id;
    if (!userId) return;
    const title = 'New service job assigned';
    const body = input.plannedAt
      ? `${input.ticketNumber ?? 'Service ticket'} is scheduled for ${new Date(input.plannedAt).toLocaleString('en-GB')}.`
      : `${input.ticketNumber ?? 'A service ticket'} has been assigned to you.`;
    await query(
      `INSERT INTO notifications (user_id,title,body,event_type,entity_type,entity_id)
       VALUES ($1,$2,$3,'ticket.assigned','service_ticket',$4)`,
      [userId, title, body, input.ticketId]
    );
    await sendPushToUsers([userId], { title, body, data: { ticketId: input.ticketId, eventType: 'ticket.assigned' } });
  } catch (error) {
    console.error('Assignment notification failed:', error);
  }
}
