diff --git a/EasyRCP.csproj b/EasyRCP.csproj
index bba430d..3b63039 100644
--- a/EasyRCP.csproj
+++ b/EasyRCP.csproj
@@ -52,6 +52,7 @@
+
diff --git a/Program.cs b/Program.cs
index 692549f..bf99b4d 100644
--- a/Program.cs
+++ b/Program.cs
@@ -15,6 +15,25 @@ static async Task Main()
{
try
{
+#if DEBUG
+ string environment = "Development";
+#else
+ string environment = "Production";
+#endif
+ SentrySdk.Init(o =>
+ {
+ o.Dsn = "https://fc312c602b39fe2f9c974049fa40bc6f@o4509757627367424.ingest.de.sentry.io/4509768557068368";
+#if DEBUG
+ o.Debug = true;
+#else
+ o.Debug = false;
+#endif
+ o.Environment = environment;
+ o.TracesSampleRate = 1.0;
+ });
+
+ Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
+
// Ensure the application is running from the correct location on the PC
SelfRelocationService.EnsureRunningFromCorrectLocation();
@@ -104,14 +123,18 @@ static async Task Main()
}
catch (Exception ex)
{
- // TODO: tutaj może mail jeszcze do mnie z informacją że coś poszło komuś nie tak - komu i co poszło nie tak
- File.AppendAllText("output.txt", $"[{DateTime.Now}] {ex}\nMetoda: Program.cs -> Main()\n\n");
+ SentrySdk.CaptureException(ex);
+ File.AppendAllText("output.txt", $"[{DateTime.Now}] {ex}\n\n");
MessageBox.Show(
"Wystąpił nieoczekiwany błąd. Szczegóły zapisano w pliku output.txt, proszę skonsultować się z administratorem.",
"EasyRCP - Błąd",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
+ finally
+ {
+ SentrySdk.Close();
+ }
}
static void AddApplicationToStartup()
diff --git a/Services/RcpApiClient.cs b/Services/RcpApiClient.cs
index 0bdfbd0..0a6cdd3 100644
--- a/Services/RcpApiClient.cs
+++ b/Services/RcpApiClient.cs
@@ -178,9 +178,10 @@ public async Task CheckIfWorkAlreadyStarted()
catch (Exception ex)
{
// Sth not right but cannot throw error to Program.cs as this is in Polly retry policy. Needs to be handled here
+ SentrySdk.CaptureException(ex);
File.AppendAllText("output.txt", $"[{DateTime.Now}] Coś poszło nie tak, nie udało się sprawdzić," +
- $"czy użytkownik jest już w pracy.\nMetoda: RcpApiClient -> CheckIfWorkAlreadyStarted()\n ex.Message: {ex.Message}\n" +
- $"Możliwe, że zmieniło się coś w zwracanym z /dashboard/getMyStatus/ HTMLu.\n\n");
+ $"czy użytkownik jest już w pracy.\nMożliwe, że zmieniło się coś w zwracanym z /dashboard/getMyStatus/ HTMLu.\n" +
+ $"Metoda: RcpApiClient -> CheckIfWorkAlreadyStarted()\n ex.Message: {ex.Message}\n\n");
MessageBox.Show(
"Wystąpił nieoczekiwany błąd. Szczegóły zapisano w pliku output.txt, proszę skonsultować się z administratorem.",
"EasyRCP - Błąd",
@@ -303,8 +304,10 @@ private async Task SendPostAndHandleResponseAsync(string requestUri, FormU
if (!resp.IsSuccessStatusCode)
{
// TODO: tu może wystarczy zrobić throw do Program.cs
+ SentrySdk.CaptureException(new Exception($"[{DateTime.Now}] HTTP {(int)resp.StatusCode}: {resp.ReasonPhrase}\n{json}\n" +
+ $"Metoda: RcpApiClient -> SendPostAndHandleResponseAsync()\n\n"));
File.AppendAllText("output.txt", $"[{DateTime.Now}] HTTP {(int)resp.StatusCode}: {resp.ReasonPhrase}\n{json}\n" +
- $"Metoda: RcpApiClient -> SendPostAndHandleResponseAsync()\n\n");
+ $"Metoda: RcpApiClient -> SendPostAndHandleResponseAsync()\n\n");
MessageBox.Show(
$"Błąd, szczegóły zostały zapisane w pliku output.txt, proszę skonsultować się z administratorem.",
"EasyRCP - Błąd",
@@ -318,8 +321,10 @@ private async Task SendPostAndHandleResponseAsync(string requestUri, FormU
if (!success)
{
// TODO: tu może wystarczy zrobić throw do Program.cs
+ SentrySdk.CaptureException(new Exception($"[{DateTime.Now}] API zwróciło success = false\n{json}\n" +
+ $"Metoda: RcpApiClient -> SendPostAndHandleResponseAsync()\n\n"));
File.AppendAllText("output.txt", $"[{DateTime.Now}] API zwróciło success = false\n{json}\n" +
- $"Metoda: RcpApiClient -> SendPostAndHandleResponseAsync()\n\n");
+ $"Metoda: RcpApiClient -> SendPostAndHandleResponseAsync()\n\n");
MessageBox.Show(
$"Błąd, szczegóły zostały zapisane w pliku output.txt, proszę skonsultować się z administratorem.",
"EasyRCP - Błąd",
diff --git a/Services/RcpAutomationService.cs b/Services/RcpAutomationService.cs
index 5b2a07a..1d7b8af 100644
--- a/Services/RcpAutomationService.cs
+++ b/Services/RcpAutomationService.cs
@@ -15,8 +15,9 @@ public static class RcpAutomationService
sleepDurationProvider: retryAttempt => TimeSpan.FromMinutes(1),
onRetry: (exception, timeSpan, retryCount, _) =>
{
+ SentrySdk.CaptureException(exception);
File.AppendAllText("output.txt", $"[{DateTime.Now}] [Retry {retryCount}] Błąd: {exception.Message}. Próba ponownie za {timeSpan.TotalSeconds} sek.\n" +
- $"Metoda: RcpAutomationService -> CheckIfWorkAlreadyStartedAsync()\n\n");
+ $"Metoda: RcpAutomationService -> CheckIfWorkAlreadyStartedAsync()\n\n");
});
///
@@ -36,8 +37,9 @@ public static class RcpAutomationService
}
catch (Exception ex)
{
+ SentrySdk.CaptureException(ex);
File.AppendAllText("output.txt", $"[{DateTime.Now}] {ex}\n" +
- $"Metoda: RcpAutomationService -> CheckIfWorkAlreadyStartedWithRetryAsync()\n\n");
+ $"Metoda: RcpAutomationService -> CheckIfWorkAlreadyStartedWithRetryAsync()\n\n");
Console.WriteLine($"Wszystkie retry zakończone niepowodzeniem (pewnie brak internetu). Szczegóły błędu zapisano w pliku output.txt");
return null;
}
@@ -93,9 +95,9 @@ public static async Task StartWorkAsync(RcpApiClient api)
// TODO: error handling jest w PRogram.cs - sprawdzić, czy bez try catcha tutaj będą ładnie szły błędy do
// Program.cs właśnie w każdym przypadku (zarówno z metody wywoływanej w Program.cs, jak i z opcji w tray menu)
- // TODO: tutaj może mail jeszcze do mnie z informacją że coś poszło komuś nie tak - komu i co poszło nie tak
+ SentrySdk.CaptureException(ex);
File.AppendAllText("output.txt", $"[{DateTime.Now}] {ex}\n" +
- $"Metoda: RcpAutomationService -> StartWorkAsync()\n\n");
+ $"Metoda: RcpAutomationService -> StartWorkAsync()\n\n");
MessageBox.Show(
"Wystąpił nieoczekiwany błąd, nie udało się zarejestrować początku pracy. Szczegóły błędu zapisano w pliku output.txt, proszę skonsultować się z administratorem.",
"EasyRCP - Błąd",
@@ -145,9 +147,9 @@ public static async Task EndWork(RcpApiClient api)
// TODO: error handling jest w PRogram.cs - sprawdzić, czy bez try catcha tutaj będą ładnie szły błędy do
// Program.cs właśnie w każdym przypadku (zarówno z metody wywoływanej w Program.cs, jak i z opcji w tray menu)
- // TODO: tutaj może mail jeszcze do mnie z informacją że coś poszło komuś nie tak - komu i co poszło nie tak
+ SentrySdk.CaptureException(ex);
File.AppendAllText("output.txt", $"[{DateTime.Now}] {ex}\n" +
- $"Metoda: RcpAutomationService -> EndWork()\n\n");
+ $"Metoda: RcpAutomationService -> EndWork()\n\n");
MessageBox.Show(
"Wystąpił nieoczekiwany błąd, nie udało się zarejestrować końca pracy. Szczegóły błędu zapisano w pliku output.txt, proszę skonsultować się z administratorem.",
"EasyRCP - Błąd",