Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion Core/Resgrid.Localization/Areas/User/Dispatch/Call.ar.resx
Original file line number Diff line number Diff line change
Expand Up @@ -263,4 +263,19 @@
<data name="RouteStep" xml:space="preserve"><value>خطوة</value></data>
<data name="RouteUnitKilometers" xml:space="preserve"><value>كم</value></data>
<data name="RouteUnitMinutes" xml:space="preserve"><value>دقيقة</value></data>
</root>
<data name="ScheduleDispatchLabel" xml:space="preserve">
<value>جدولة الإرسال</value>
</data>
<data name="ScheduleDispatchPlaceholder" xml:space="preserve">
<value>اختر تاريخ ووقت مستقبلي...</value>
</data>
<data name="ScheduleDispatchHelp" xml:space="preserve">
<value>قم بتعيين تاريخ/وقت مستقبلي اختياريًا لتأخير الإرسال. يجب أن يكون 15 دقيقة على الأقل في المستقبل.</value>
</data>
<data name="ScheduleDispatchValidationError" xml:space="preserve">
<value>يجب أن يكون الإرسال المجدول 15 دقيقة على الأقل في المستقبل.</value>
</data>
<data name="ScheduledDispatchDate" xml:space="preserve">
<value>تاريخ الإرسال المجدول</value>
</data>
</root>
15 changes: 15 additions & 0 deletions Core/Resgrid.Localization/Areas/User/Dispatch/Call.de.resx
Original file line number Diff line number Diff line change
Expand Up @@ -830,4 +830,19 @@
<data name="RouteUnitMinutes" xml:space="preserve">
<value>min</value>
</data>
<data name="ScheduleDispatchLabel" xml:space="preserve">
<value>Alarmierung planen</value>
</data>
<data name="ScheduleDispatchPlaceholder" xml:space="preserve">
<value>Wählen Sie ein zukünftiges Datum und eine Uhrzeit...</value>
</data>
<data name="ScheduleDispatchHelp" xml:space="preserve">
<value>Legen Sie optional ein zukünftiges Datum/Uhrzeit fest, um die Alarmierung zu verzögern. Muss mindestens 15 Minuten in der Zukunft liegen.</value>
</data>
<data name="ScheduleDispatchValidationError" xml:space="preserve">
<value>Die geplante Alarmierung muss mindestens 15 Minuten in der Zukunft liegen.</value>
</data>
<data name="ScheduledDispatchDate" xml:space="preserve">
<value>Geplantes Alarmierungsdatum</value>
</data>
</root>
15 changes: 15 additions & 0 deletions Core/Resgrid.Localization/Areas/User/Dispatch/Call.en.resx
Original file line number Diff line number Diff line change
Expand Up @@ -733,4 +733,19 @@
<data name="RouteStep" xml:space="preserve"><value>Step</value></data>
<data name="RouteUnitKilometers" xml:space="preserve"><value>km</value></data>
<data name="RouteUnitMinutes" xml:space="preserve"><value>min</value></data>
<data name="ScheduleDispatchLabel" xml:space="preserve">
<value>Schedule Dispatch</value>
</data>
<data name="ScheduleDispatchPlaceholder" xml:space="preserve">
<value>Select a future date and time...</value>
</data>
<data name="ScheduleDispatchHelp" xml:space="preserve">
<value>Optionally set a future date/time to delay dispatch. Must be at least 15 minutes in the future.</value>
</data>
<data name="ScheduleDispatchValidationError" xml:space="preserve">
<value>Scheduled dispatch must be at least 15 minutes in the future.</value>
</data>
<data name="ScheduledDispatchDate" xml:space="preserve">
<value>Scheduled Dispatch Date</value>
</data>
</root>
15 changes: 15 additions & 0 deletions Core/Resgrid.Localization/Areas/User/Dispatch/Call.es.resx
Original file line number Diff line number Diff line change
Expand Up @@ -879,4 +879,19 @@
<data name="RouteUnitMinutes" xml:space="preserve">
<value>min</value>
</data>
<data name="ScheduleDispatchLabel" xml:space="preserve">
<value>Programar despacho</value>
</data>
<data name="ScheduleDispatchPlaceholder" xml:space="preserve">
<value>Seleccione una fecha y hora futura...</value>
</data>
<data name="ScheduleDispatchHelp" xml:space="preserve">
<value>Opcionalmente, establezca una fecha/hora futura para retrasar el despacho. Debe ser al menos 15 minutos en el futuro.</value>
</data>
<data name="ScheduleDispatchValidationError" xml:space="preserve">
<value>El despacho programado debe ser al menos 15 minutos en el futuro.</value>
</data>
<data name="ScheduledDispatchDate" xml:space="preserve">
<value>Fecha de despacho programada</value>
</data>
</root>
15 changes: 15 additions & 0 deletions Core/Resgrid.Localization/Areas/User/Dispatch/Call.fr.resx
Original file line number Diff line number Diff line change
Expand Up @@ -830,4 +830,19 @@
<data name="RouteUnitMinutes" xml:space="preserve">
<value>min</value>
</data>
<data name="ScheduleDispatchLabel" xml:space="preserve">
<value>Planifier l'envoi</value>
</data>
<data name="ScheduleDispatchPlaceholder" xml:space="preserve">
<value>Sélectionnez une date et une heure futures...</value>
</data>
<data name="ScheduleDispatchHelp" xml:space="preserve">
<value>Définissez éventuellement une date/heure future pour retarder l'envoi. Doit être au moins 15 minutes dans le futur.</value>
</data>
<data name="ScheduleDispatchValidationError" xml:space="preserve">
<value>L'envoi planifié doit être au moins 15 minutes dans le futur.</value>
</data>
<data name="ScheduledDispatchDate" xml:space="preserve">
<value>Date d'envoi planifiée</value>
</data>
</root>
15 changes: 15 additions & 0 deletions Core/Resgrid.Localization/Areas/User/Dispatch/Call.it.resx
Original file line number Diff line number Diff line change
Expand Up @@ -830,4 +830,19 @@
<data name="RouteUnitMinutes" xml:space="preserve">
<value>min</value>
</data>
<data name="ScheduleDispatchLabel" xml:space="preserve">
<value>Programmazione invio</value>
</data>
<data name="ScheduleDispatchPlaceholder" xml:space="preserve">
<value>Seleziona una data e ora futura...</value>
</data>
<data name="ScheduleDispatchHelp" xml:space="preserve">
<value>Opzionalmente imposta una data/ora futura per ritardare l'invio. Deve essere almeno 15 minuti nel futuro.</value>
</data>
<data name="ScheduleDispatchValidationError" xml:space="preserve">
<value>L'invio programmato deve essere almeno 15 minuti nel futuro.</value>
</data>
<data name="ScheduledDispatchDate" xml:space="preserve">
<value>Data di invio programmata</value>
</data>
</root>
15 changes: 15 additions & 0 deletions Core/Resgrid.Localization/Areas/User/Dispatch/Call.pl.resx
Original file line number Diff line number Diff line change
Expand Up @@ -830,4 +830,19 @@
<data name="RouteUnitMinutes" xml:space="preserve">
<value>min</value>
</data>
<data name="ScheduleDispatchLabel" xml:space="preserve">
<value>Zaplanuj wysyłkę</value>
</data>
<data name="ScheduleDispatchPlaceholder" xml:space="preserve">
<value>Wybierz przyszłą datę i godzinę...</value>
</data>
<data name="ScheduleDispatchHelp" xml:space="preserve">
<value>Opcjonalnie ustaw przyszłą datę/godzinę, aby opóźnić wysyłkę. Musi być co najmniej 15 minut w przyszłości.</value>
</data>
<data name="ScheduleDispatchValidationError" xml:space="preserve">
<value>Zaplanowana wysyłka musi być co najmniej 15 minut w przyszłości.</value>
</data>
<data name="ScheduledDispatchDate" xml:space="preserve">
<value>Zaplanowana data wysyłki</value>
</data>
</root>
15 changes: 15 additions & 0 deletions Core/Resgrid.Localization/Areas/User/Dispatch/Call.sv.resx
Original file line number Diff line number Diff line change
Expand Up @@ -830,4 +830,19 @@
<data name="RouteUnitMinutes" xml:space="preserve">
<value>min</value>
</data>
<data name="ScheduleDispatchLabel" xml:space="preserve">
<value>Schemalägg larm</value>
</data>
<data name="ScheduleDispatchPlaceholder" xml:space="preserve">
<value>Välj ett framtida datum och tid...</value>
</data>
<data name="ScheduleDispatchHelp" xml:space="preserve">
<value>Ställ valfritt in ett framtida datum/tid för att fördröja larmet. Måste vara minst 15 minuter i framtiden.</value>
</data>
<data name="ScheduleDispatchValidationError" xml:space="preserve">
<value>Schemalagt larm måste vara minst 15 minuter i framtiden.</value>
</data>
<data name="ScheduledDispatchDate" xml:space="preserve">
<value>Schemalagt larmdatum</value>
</data>
</root>
15 changes: 15 additions & 0 deletions Core/Resgrid.Localization/Areas/User/Dispatch/Call.uk.resx
Original file line number Diff line number Diff line change
Expand Up @@ -830,4 +830,19 @@
<data name="RouteUnitMinutes" xml:space="preserve">
<value>хв</value>
</data>
<data name="ScheduleDispatchLabel" xml:space="preserve">
<value>Запланувати відправку</value>
</data>
<data name="ScheduleDispatchPlaceholder" xml:space="preserve">
<value>Виберіть майбутню дату та час...</value>
</data>
<data name="ScheduleDispatchHelp" xml:space="preserve">
<value>За бажанням встановіть майбутню дату/час для затримки відправки. Має бути щонайменше 15 хвилин у майбутньому.</value>
</data>
<data name="ScheduleDispatchValidationError" xml:space="preserve">
<value>Запланована відправка має бути щонайменше 15 хвилин у майбутньому.</value>
</data>
<data name="ScheduledDispatchDate" xml:space="preserve">
<value>Запланована дата відправки</value>
</data>
</root>
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,10 @@
<data name="Routes" xml:space="preserve">
<value>المسارات</value>
</data>
<data name="ScheduledCalls" xml:space="preserve">
<value>البلاغات المجدولة</value>
</data>
<data name="ScheduledCallsHeader" xml:space="preserve">
<value>البلاغات المجدولة</value>
</data>
</root>
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,10 @@
<data name="Routes" xml:space="preserve">
<value>Routen</value>
</data>
<data name="ScheduledCalls" xml:space="preserve">
<value>Geplante Einsätze</value>
</data>
<data name="ScheduledCallsHeader" xml:space="preserve">
<value>Geplante Einsätze</value>
</data>
</root>
Original file line number Diff line number Diff line change
Expand Up @@ -135,4 +135,10 @@
<data name="Routes" xml:space="preserve">
<value>Routes</value>
</data>
<data name="ScheduledCalls" xml:space="preserve">
<value>Scheduled Calls</value>
</data>
<data name="ScheduledCallsHeader" xml:space="preserve">
<value>Scheduled Calls</value>
</data>
</root>
Original file line number Diff line number Diff line change
Expand Up @@ -135,4 +135,10 @@
<data name="Routes" xml:space="preserve">
<value>Rutas</value>
</data>
<data name="ScheduledCalls" xml:space="preserve">
<value>Llamadas programadas</value>
</data>
<data name="ScheduledCallsHeader" xml:space="preserve">
<value>Llamadas programadas</value>
</data>
</root>
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,10 @@
<data name="Routes" xml:space="preserve">
<value>Itinéraires</value>
</data>
<data name="ScheduledCalls" xml:space="preserve">
<value>Appels planifiés</value>
</data>
<data name="ScheduledCallsHeader" xml:space="preserve">
<value>Appels planifiés</value>
</data>
</root>
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,10 @@
<data name="Routes" xml:space="preserve">
<value>Percorsi</value>
</data>
<data name="ScheduledCalls" xml:space="preserve">
<value>Chiamate programmate</value>
</data>
<data name="ScheduledCallsHeader" xml:space="preserve">
<value>Chiamate programmate</value>
</data>
</root>
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,10 @@
<data name="Routes" xml:space="preserve">
<value>Trasy</value>
</data>
<data name="ScheduledCalls" xml:space="preserve">
<value>Zaplanowane zgłoszenia</value>
</data>
<data name="ScheduledCallsHeader" xml:space="preserve">
<value>Zaplanowane zgłoszenia</value>
</data>
</root>
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,10 @@
<data name="Routes" xml:space="preserve">
<value>Rutter</value>
</data>
<data name="ScheduledCalls" xml:space="preserve">
<value>Schemalagda larm</value>
</data>
<data name="ScheduledCallsHeader" xml:space="preserve">
<value>Schemalagda larm</value>
</data>
</root>
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,10 @@
<data name="Routes" xml:space="preserve">
<value>Маршрути</value>
</data>
<data name="ScheduledCalls" xml:space="preserve">
<value>Заплановані виклики</value>
</data>
<data name="ScheduledCallsHeader" xml:space="preserve">
<value>Заплановані виклики</value>
</data>
</root>
5 changes: 4 additions & 1 deletion Core/Resgrid.Model/TwilioVoicePromptCatalog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ public static class TwilioVoicePromptCatalog
public const string NoStaffingSelection = "No staffing selection made. Returning to the main menu.";
public const string CommunicationTestRecorded = "Thank you. Your response has been recorded.";

public const string PleaseWaitForDispatch = "Please wait while we prepare your dispatch information.";

public static string CallClosedByNumber(string callNumber) => $"This call, ID {callNumber}, has been closed. Goodbye.";

public static string RespondingToStation(string stationName) => $"You have been marked responding to {stationName}. Goodbye.";
Expand Down Expand Up @@ -84,7 +86,8 @@ public static IReadOnlyCollection<string> GetStaticPrompts()
NoStatusSelection,
InvalidStaffingSelection,
NoStaffingSelection,
CommunicationTestRecorded
CommunicationTestRecorded,
PleaseWaitForDispatch
};
}
}
Expand Down
6 changes: 2 additions & 4 deletions Core/Resgrid.Services/WeatherAlertService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -381,22 +381,20 @@ public async Task SendPendingNotificationsAsync(CancellationToken ct = default)
var members = await _departmentsService.GetAllMembersForDepartmentAsync(departmentId);
if (members != null && members.Any())
{
// Use department managing user as sender for notifications
var senderId = department?.ManagingUserId ?? members.First().UserId;
// Weather alerts are system-generated — use the system do-not-reply email, not the department admin

var subject = FormatAlertSubject(alert);
var body = FormatAlertMessageBody(alert, department);

foreach (var member in members)
{
if (member.UserId == senderId || member.IsDisabled.GetValueOrDefault() || member.IsDeleted)
if (member.IsDisabled.GetValueOrDefault() || member.IsDeleted)
continue;

var notifyMsg = new Message
{
Subject = subject,
Body = body,
SendingUserId = senderId,
ReceivingUserId = member.UserId,
SentOn = DateTime.UtcNow,
SystemGenerated = true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,13 @@ protected override void Before_all_tests()
}
return System.Threading.Tasks.Task.CompletedTask;
});
_twilioVoiceResponseServiceMock
.Setup(x => x.GetPromptUrlAsync(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<CancellationToken>()))
.Returns<string, string, CancellationToken>((text, _, __) =>
System.Threading.Tasks.Task.FromResult(new Uri($"https://tts.example/{Uri.EscapeDataString(text)}.wav")));
_twilioVoiceResponseServiceMock
.Setup(x => x.PreWarmPromptAsync(It.IsAny<string>(), It.IsAny<string>()))
.Returns(System.Threading.Tasks.Task.CompletedTask);
}

private TwilioController BuildController()
Expand Down Expand Up @@ -293,10 +300,6 @@ public void dispatch_prompt_helpers_should_end_with_sentence_punctuation()
.Should().Be("Call 42, Priority High Address 123 Main St Nature Structure fire.");
InvokeBuildDispatchPrompt(typeof(TwilioController), call, null)
.Should().Be("Call 42, Priority High Nature Structure fire.");
InvokeBuildDispatchPrompt(typeof(TwilioProviderController), call, "123 Main St")
.Should().Be("Call 42, Priority High Address 123 Main St Nature Structure fire.");
InvokeBuildDispatchPrompt(typeof(TwilioProviderController), call, null)
.Should().Be("Call 42, Priority High Nature Structure fire.");
}

[TestCase("1", "https://resgridapi.local/api/Twilio/VoiceCall?userId=user1&amp;callId=42")]
Expand Down
2 changes: 1 addition & 1 deletion Tests/Resgrid.Tests/Web/Tts/TtsServiceTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ public void create_ffmpeg_start_info_should_apply_the_requested_telephone_filter
"-ac",
"1",
"-acodec",
"pcm_s16le",
"pcm_mulaw",
"-af",
"highpass=f=200, lowpass=f=3000, anequalizer=c0 f=2500 w=1000 g=3 t=1",
"/tmp/normalized.wav");
Expand Down
Loading
Loading