email the assignee when a ticket is assigend
This commit is contained in:
parent
4bb35c6951
commit
d59027a277
|
|
@ -2134,6 +2134,31 @@ public class Controller : ControllerBase
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var assigneeChanged = ticket.AssigneeId != existing.AssigneeId
|
||||||
|
&& ticket.AssigneeId.HasValue;
|
||||||
|
|
||||||
|
if (assigneeChanged)
|
||||||
|
{
|
||||||
|
var assignee = Db.GetUserById(ticket.AssigneeId);
|
||||||
|
|
||||||
|
Db.Create(new TicketTimelineEvent
|
||||||
|
{
|
||||||
|
TicketId = ticket.Id,
|
||||||
|
EventType = (Int32)TimelineEventType.Assigned,
|
||||||
|
Description = $"Ticket assigned to {assignee?.Name ?? "unknown"}.",
|
||||||
|
ActorType = (Int32)TimelineActorType.Human,
|
||||||
|
ActorId = user.Id,
|
||||||
|
CreatedAt = DateTime.UtcNow
|
||||||
|
});
|
||||||
|
|
||||||
|
if (assignee is not null)
|
||||||
|
_ = Task.Run(async () =>
|
||||||
|
{
|
||||||
|
try { await assignee.SendTicketAssignedEmail(ticket); }
|
||||||
|
catch (Exception ex) { Console.WriteLine($"Failed to send ticket assignment email: {ex}"); }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return Db.Update(ticket) ? ticket : StatusCode(500, "Update failed.");
|
return Db.Update(ticket) ? ticket : StatusCode(500, "Update failed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -297,5 +297,66 @@ public static class UserMethods
|
||||||
|
|
||||||
return user.SendEmail(subject, body);
|
return user.SendEmail(subject, body);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Task SendTicketAssignedEmail(this User user, Ticket ticket)
|
||||||
|
{
|
||||||
|
var ticketLink = $"https://monitor.inesco.energy/tickets/{ticket.Id}";
|
||||||
|
var priority = (TicketPriority)ticket.Priority;
|
||||||
|
var category = (TicketCategory)ticket.Category;
|
||||||
|
|
||||||
|
var (subject, body) = (user.Language ?? "en") switch
|
||||||
|
{
|
||||||
|
"de" => (
|
||||||
|
$"inesco Energy – Ticket #{ticket.Id} wurde Ihnen zugewiesen",
|
||||||
|
$"Sehr geehrte/r {user.Name},\n\n" +
|
||||||
|
$"Ein Ticket wurde Ihnen zugewiesen:\n\n" +
|
||||||
|
$"Ticket: #{ticket.Id}\n" +
|
||||||
|
$"Betreff: {ticket.Subject}\n" +
|
||||||
|
$"Priorität: {priority}\n" +
|
||||||
|
$"Kategorie: {category}\n\n" +
|
||||||
|
$"Beschreibung:\n{ticket.Description}\n\n" +
|
||||||
|
$"Öffnen Sie das Ticket hier: {ticketLink}\n\n" +
|
||||||
|
"Mit freundlichen Grüssen\ninesco Energy Monitor"
|
||||||
|
),
|
||||||
|
"fr" => (
|
||||||
|
$"inesco Energy – Le ticket #{ticket.Id} vous a été attribué",
|
||||||
|
$"Cher/Chère {user.Name},\n\n" +
|
||||||
|
$"Un ticket vous a été attribué :\n\n" +
|
||||||
|
$"Ticket : #{ticket.Id}\n" +
|
||||||
|
$"Objet : {ticket.Subject}\n" +
|
||||||
|
$"Priorité : {priority}\n" +
|
||||||
|
$"Catégorie : {category}\n\n" +
|
||||||
|
$"Description :\n{ticket.Description}\n\n" +
|
||||||
|
$"Ouvrir le ticket : {ticketLink}\n\n" +
|
||||||
|
"Cordialement,\ninesco Energy Monitor"
|
||||||
|
),
|
||||||
|
"it" => (
|
||||||
|
$"inesco Energy – Il ticket #{ticket.Id} le è stato assegnato",
|
||||||
|
$"Gentile {user.Name},\n\n" +
|
||||||
|
$"Le è stato assegnato un ticket:\n\n" +
|
||||||
|
$"Ticket: #{ticket.Id}\n" +
|
||||||
|
$"Oggetto: {ticket.Subject}\n" +
|
||||||
|
$"Priorità: {priority}\n" +
|
||||||
|
$"Categoria: {category}\n\n" +
|
||||||
|
$"Descrizione:\n{ticket.Description}\n\n" +
|
||||||
|
$"Aprire il ticket: {ticketLink}\n\n" +
|
||||||
|
"Cordiali saluti,\ninesco Energy Monitor"
|
||||||
|
),
|
||||||
|
_ => (
|
||||||
|
$"inesco Energy – Ticket #{ticket.Id} has been assigned to you",
|
||||||
|
$"Dear {user.Name},\n\n" +
|
||||||
|
$"A ticket has been assigned to you:\n\n" +
|
||||||
|
$"Ticket: #{ticket.Id}\n" +
|
||||||
|
$"Subject: {ticket.Subject}\n" +
|
||||||
|
$"Priority: {priority}\n" +
|
||||||
|
$"Category: {category}\n\n" +
|
||||||
|
$"Description:\n{ticket.Description}\n\n" +
|
||||||
|
$"Open the ticket: {ticketLink}\n\n" +
|
||||||
|
"Best regards,\ninesco Energy Monitor"
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
return user.SendEmail(subject, body);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue