512a2200c6
* Added default Api unhandled exceptions * Fixed config file
121 lines
4.0 KiB
C#
121 lines
4.0 KiB
C#
using System;
|
|
using System.Windows.Forms;
|
|
using Step.Model;
|
|
using TeamDev.SDK.MVVM;
|
|
using static Step.Utils.Constants;
|
|
using static Step.Utils.StepLogger;
|
|
|
|
namespace Step.Utils
|
|
{
|
|
public static class ExceptionManager
|
|
{
|
|
public static void Manage(Exception ex)
|
|
{
|
|
if (ex is System.IO.FileNotFoundException)
|
|
{
|
|
// File not found
|
|
LogAndNotifyUsers(CreateMessageModel("Configuration file not found!", ex.Message, ERROR_LEVEL.FATAL));
|
|
// Close the application
|
|
Environment.Exit(1);
|
|
}
|
|
else if(ex is MySql.Data.MySqlClient.MySqlException)
|
|
{
|
|
// MySql Error
|
|
LogAndNotifyUsers(CreateMessageModel("Database Error!", ex.Message, ERROR_LEVEL.FATAL));
|
|
}
|
|
else
|
|
{
|
|
if (ex.InnerException != null)
|
|
{
|
|
Manage(ex.InnerException); // TODO test
|
|
}
|
|
else
|
|
{
|
|
// Default case
|
|
LogAndNotifyUsers(CreateMessageModel("Generic Error!", ex.Message, ERROR_LEVEL.FATAL));
|
|
// Close the application
|
|
Environment.Exit(1);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void Manage(ERROR_LEVEL errorLevel, Exception exception)
|
|
{
|
|
Manage(errorLevel, exception.Message);
|
|
}
|
|
|
|
public static void Manage(ERROR_LEVEL errorLevel, string message)
|
|
{
|
|
switch (errorLevel)
|
|
{
|
|
case ERROR_LEVEL.INFO:
|
|
{
|
|
// Log
|
|
LogInfo(message);
|
|
// Notify users
|
|
NotifyUsers(CreateMessageModel("Info!", message, ERROR_LEVEL.INFO));
|
|
}
|
|
break;
|
|
case ERROR_LEVEL.WARNING:
|
|
{
|
|
LogWarning(message);
|
|
NotifyUsers(CreateMessageModel("Warning!", message, ERROR_LEVEL.WARNING));
|
|
}
|
|
break;
|
|
case ERROR_LEVEL.ERROR:
|
|
{
|
|
LogError(message);
|
|
NotifyUsers(CreateMessageModel("Error!", message, ERROR_LEVEL.ERROR));
|
|
}
|
|
break;
|
|
case ERROR_LEVEL.FATAL:
|
|
{
|
|
LogFatal(message);
|
|
NotifyUsers(CreateMessageModel("Fatal Error!", message, ERROR_LEVEL.FATAL));
|
|
// Close the application
|
|
Environment.Exit(1);
|
|
}break;
|
|
default:
|
|
{
|
|
LogFatal(message);
|
|
NotifyUsers(CreateMessageModel("Generic Error!", message, ERROR_LEVEL.FATAL));
|
|
// Close the application
|
|
Environment.Exit(1);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
private static void LogAndNotifyUsers(ErrorMessageModel error)
|
|
{
|
|
// Log
|
|
LogMessage(error.Message, (ERROR_LEVEL)error.errorLevel);
|
|
NotifyUsers(error);
|
|
}
|
|
|
|
private static void NotifyUsers(ErrorMessageModel error)
|
|
{
|
|
if (error.errorLevel > (int)ERROR_LEVEL.WARNING)
|
|
{
|
|
// Notify user
|
|
MessageBox.Show(error.Message, error.Title, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
else
|
|
{
|
|
// Notify user
|
|
MessageServices.Current.Publish(SEND_MESSAGE, null, error);
|
|
}
|
|
}
|
|
|
|
private static ErrorMessageModel CreateMessageModel(string title, string message, ERROR_LEVEL level)
|
|
{
|
|
return new ErrorMessageModel()
|
|
{
|
|
Title = title,
|
|
Message = message,
|
|
errorLevel = (int)level
|
|
};
|
|
}
|
|
}
|
|
}
|