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;