2026-05-19 16:19:55 +10:00
|
|
|
|
namespace PARR.Domain.Exceptions
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Базовый класс для всех ошибок
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public abstract class BaseException : Exception
|
|
|
|
|
|
{
|
|
|
|
|
|
protected BaseException(string message) : base(message) { }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Ошибка БД. 502
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class DbErrorException : BaseException
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Ошибка БД.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="message"></param>
|
|
|
|
|
|
public DbErrorException(string message) : base(message) { }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Объект не найден. 404
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class NotFoundException : BaseException
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Объект не найден.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="message"></param>
|
|
|
|
|
|
public NotFoundException(string message) : base(message) { }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Ошибка валидации. 400.
|
|
|
|
|
|
/// Использовать эту ошибку, если не подходит валидация от Fluent (ValidationException)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class AppValidationException : BaseException
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Ошибка валидации.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="message"></param>
|
|
|
|
|
|
public AppValidationException(string message) : base(message) { }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Объект уже существует. 409
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class AlreadyExistsException : BaseException
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Объект уже существует.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="message"></param>
|
|
|
|
|
|
public AlreadyExistsException(string message) : base(message) { }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Ошибка при работе с внешним сервисом. 502
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class ExternalServiceException : BaseException
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Ошибка при работе с внешним сервисом.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="message"></param>
|
|
|
|
|
|
public ExternalServiceException(string message) : base(message) { }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Пользователь не аутентифицирован. 401
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class UnauthorizedException : BaseException
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Пользователь не аутентифицирован.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="message"></param>
|
|
|
|
|
|
public UnauthorizedException(string message) : base(message) { }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Доступ запрещен. 403.
|
|
|
|
|
|
/// Пользователь вошел в систему (мы знаем, кто он), но у него нет прав на конкретное действие или объект.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class ForbiddenException : BaseException
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Доступ запрещен.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="message"></param>
|
|
|
|
|
|
public ForbiddenException(string message) : base(message) { }
|
|
|
|
|
|
}
|
2026-05-26 11:26:52 +10:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Ошибка при расчете NextRun. 422 (запрос валиден, но бизнес логика не смогла нормально его обработать)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class NextRunException : BaseException
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Ошибка при расчете NextRun
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="message"></param>
|
|
|
|
|
|
public NextRunException(string message) : base(message){}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-19 16:19:55 +10:00
|
|
|
|
}
|