try
{
throw ex;
}
catch (InvalidArgumentRangeException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"مقدار ارسالی خارج از محدوده مجاز می باشد"
);
}
catch (InvalidArgumentException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"اطلاعات وارد شده نامعتبر است"
);
}
catch (InvalidOperationException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"اطلاعات وارد شده نامعتبر است"
);
}
catch (FormatException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"اطلاعات وارد شده نامعتبر است"
);
}
catch (UserBankNationalCodeIsInvalidException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"کد ملی یا شناسه ملی معتبر نیست"
);
}
catch (UserBankIbanCodeIsInvalidException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"شماره شبا معتبر نیست"
);
}
catch (UnauthorizedAccessException e)
{
// NOTE: don't log this
return (
StatusCodes.Status401Unauthorized,
"اعتبار سنجی انجام نشد"
);
}
catch (SignInRequestException e)
{
var statusMessage = "اعتبار سنجی انجام نشد";
var mustBeLogged = true;
switch (e.Message)
{
case "IS_NOT_VERIFIED":
statusMessage = "شماره تلفن تایید نشده است";
break;
case "IS_NOT_COMPLETED":
statusMessage = "ثبت نام کامل نشده است";
break;
case "TEMPORARY_BLOCKED":
statusMessage = "حساب کاربری شما موقتا مسدود می باشد";
break;
case "LOCKED_OUT":
statusMessage = "حساب کاربری شما مسدود شده است";
break;
case "IS_NOT_ALLOWED":
statusMessage = "شما قادر به انجام این عملیات نیستید";
break;
case "REQUIRE_TWO_FACTOR":
statusMessage = "نیاز به ورود دو مرحله ای دارید";
break;
default:
mustBeLogged = false;
break;
}
exceptionDetail = (
StatusCodes.Status401Unauthorized,
statusMessage
);
if (mustBeLogged) return exceptionDetail;
}
catch (SignUpRequestException e)
{
var statusMessage = "اطلاعات وارد شده نامعتبر است";
switch (e.Message)
{
case "DuplicateUserName":
statusMessage = "شماره تلفن یا ایمیل تکراری می باشد";
break;
}
exceptionDetail = (
StatusCodes.Status400BadRequest,
statusMessage
);
}
catch (TokenIsNotVerifiedException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"کد فعالسازی صحیح نمی باشد"
);
}
catch (ChangePasswordRequestException e)
{
var statusMessage = "اطلاعات وارد شده نامعتبر است";
switch (e.Message)
{
case "PasswordTooShort":
statusMessage = "رمز عبور کوتاه است";
break;
case "PasswordRequiresNonAlphanumeric":
statusMessage = "رمز عبور بایستی شامل حروف غیر الفبا باشد";
break;
case "PasswordRequiresLower":
statusMessage = "رمز عبور بایستی شامل حروف کوچک باشد";
break;
case "PasswordRequiresUpper":
statusMessage = "رمز عبور بایستی شامل حروف بزرگ باشد";
break;
}
exceptionDetail = (
StatusCodes.Status400BadRequest,
statusMessage
);
}
catch (ChangePhoneNumberRequestException e)
{
var statusMessage = "اطلاعات وارد شده نامعتبر است";
switch (e.Message)
{
case "DuplicateUserName":
statusMessage = "این شماره توسط کاربر دیگری در حال استفاده می باشد";
break;
}
exceptionDetail = (
StatusCodes.Status400BadRequest,
statusMessage
);
}
catch (AccountIsNotActiveException e)
{
exceptionDetail = (
StatusCodes.Status403Forbidden,
"حساب کاربری فعال نمی باشد"
);
}
catch (UserVerificationRequiredException e)
{
exceptionDetail = (
StatusCodes.Status451UnavailableForLegalReasons,
"لطفا احزار هویت حساب کاربری خود را انجام دهید"
);
}
catch (InsufficientAmountException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"مبلغ مورد نظر کمتر از حداقل مجاز می باشد"
);
}
catch (AccountIsBlockException e)
{
exceptionDetail = (
StatusCodes.Status403Forbidden,
"حساب کاربری مسدود می باشد"
);
}
catch (NotSupportedException e)
{
exceptionDetail = (
StatusCodes.Status405MethodNotAllowed,
"عملیات مورد نظر امکان پذیر نمی باشد"
);
}
catch (NotImplementedException e)
{
exceptionDetail = (
StatusCodes.Status501NotImplemented,
"عملیات مورد نظر پیاده سازی نشده است"
);
}
catch (BankPortalException e)
{
exceptionDetail = (
StatusCodes.Status503ServiceUnavailable,
"خطایی در عملیات مربوط به درگاه بانگی رخ داده است"
);
}
catch (DomainBankAccountInsufficientBalanceException e)
{
exceptionDetail = (
StatusCodes.Status503ServiceUnavailable,
"خطایی در عملیات مربوط به درگاه بانگی رخ داده است"
);
}
catch (FileSizeIsNotValidException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"حجم فایل مورد نظر معتبر نمی باشد"
);
}
catch (FileTypeIsNotValidException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"نوع فابل مورد نظر معتبر نمی باشد"
);
}
catch (ItemNotExistException e)
{
exceptionDetail = (
StatusCodes.Status404NotFound,
"اطلاعات مورد نظر یافت نشد"
);
}
catch (DuplicateItemException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"اطلاعات ارسالی تکراری می باشد"
);
}
catch (SubUserEmptyAccessException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"دسترسی به هیچ حسابی موجود نیست. لطفا با حساب کسب و کار خود تماس بگیرید"
);
}
catch (NotificationSendLimitException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"تعداد پیام شما در واحد زمان به اتمام رسیده است. لطفا بعدا تلاش فرمایید"
);
}
catch (InsufficientBalanceException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"موجودی کافی نمی باشد"
);
}
catch (AccountNotHaveIntermediatePayUserBankException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"حساب بانکی متصل نشده است"
);
}
catch (SubUserHasPendingRequestException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"یک درخواست بررسی نشده توسط کاربر مورد نظر موجود است"
);
}
catch (SubUserAlreadyConnectedException e)
{
exceptionDetail = (
StatusCodes.Status400BadRequest,
"کاربر مورد نظر زیرمجموعه شما می باشد"
);
}
catch (AccountInvalidOperationException e)
{
var statusMessage = "اطلاعات وارد شده نامعتبر است";
switch (e.Message)
{
case "AUTO_SETTLEMENT_FOR_WALLET_ACCOUNT_NOT_ALLOWED":
statusMessage = "تسویه خودکار برای حساب کیف پول مجاز نمی باشد";
break;
}
exceptionDetail = (
StatusCodes.Status400BadRequest,
statusMessage
);
}
catch (Exception e)
{
}
LogContext.Reset();
using (LogContext.PushProperty("Type", ex.GetType().Name))
using (LogContext.PushProperty("Message", ex.Message))
using (LogContext.PushProperty("StackTrace", originStackTrace))
using (LogContext.PushProperty("App", "CLIENT_ENDPOINT"))
using (LogContext.PushProperty("RequestId", Activity.Current?.Id ?? ctx.TraceIdentifier))
{
if (exceptionDetail.statusCode == StatusCodes.Status500InternalServerError)
{
Log.Fatal(
"{Description}",
exceptionDetail.statusMessage
);
}
else
{
Log.Error(
"{Description}",
exceptionDetail.statusMessage
);
}
}
return exceptionDetail;