Files
gameno-api/utils/errors.json
T
kavehhn 22b57eeae2 Add professor share calculation and financial reporting feature
Introduces per-class payout configuration (percentage or hourly rate,
plus an optional per-session expense allowance), pure calculation
utilities for professor payout/net profit/receivables, and a new
financial-reports API surface with per-class, per-session, and
date-range/monthly reports. Also adds full CRUD for institutional
expenses used in the range report, and wires up the new permissions
and roles. Fixes a pre-existing ReferenceError (missing
parseImportDate import) in paymentService that blocked creating
payments with dated transactions.
2026-08-21 12:19:09 +03:30

198 lines
6.6 KiB
JSON

{
"USER_NOT_FOUND": {
"statusCode": 404,
"en": "User not found.",
"fa": "کاربر یافت نشد."
},
"USER_ALREADY_EXISTS": {
"statusCode": 409,
"en": "User with this national ID, phone number, or email already exists.",
"fa": "کاربری با این کدملی، شماره تلفن یا ایمیل از قبل وجود دارد."
},
"PROFESSOR_NOT_FOUND": {
"statusCode": 404,
"en": "Professor not found.",
"fa": "استاد یافت نشد."
},
"PROFESSOR_ALREADY_EXISTS": {
"statusCode": 409,
"en": "Professor with this national ID, phone number, or email already exists.",
"fa": "استادی با این کدملی، شماره تلفن یا ایمیل از قبل وجود دارد."
},
"COURSE_NOT_FOUND": {
"statusCode": 404,
"en": "Course not found.",
"fa": "دوره یافت نشد."
},
"COURSE_CAPACITY_FULL": {
"statusCode": 400,
"en": "Course capacity is full.",
"fa": "ظرفیت دوره تکمیل است."
},
"ALREADY_ENROLLED": {
"statusCode": 400,
"en": "User is already enrolled in this course.",
"fa": "کاربر قبلاً در این دوره ثبت‌نام کرده است."
},
"SESSION_NOT_FOUND": {
"statusCode": 404,
"en": "Session not found.",
"fa": "جلسه یافت نشد."
},
"ATTENDANCE_NOT_FOUND": {
"statusCode": 404,
"en": "Attendance record not found.",
"fa": "سابقه حضور و غیاب یافت نشد."
},
"ATTENDANCE_ALREADY_EXISTS": {
"statusCode": 409,
"en": "Attendance record already exists for this student in this session.",
"fa": "سابقه حضور و غیاب برای این دانشجو در این جلسه قبلاً ثبت شده است."
},
"PAYMENT_NOT_FOUND": {
"statusCode": 404,
"en": "Payment record not found.",
"fa": "سابقه پرداخت یافت نشد."
},
"TRANSACTION_NOT_FOUND": {
"statusCode": 404,
"en": "Transaction not found.",
"fa": "تراکنش یافت نشد."
},
"ROLE_NOT_FOUND": {
"statusCode": 404,
"en": "Role not found.",
"fa": "نقش یافت نشد."
},
"ROLE_ALREADY_EXISTS": {
"statusCode": 409,
"en": "Role with this name already exists.",
"fa": "نقشی با این نام از قبل وجود دارد."
},
"SYSTEM_ROLE_PROTECTED": {
"statusCode": 403,
"en": "System roles cannot be modified or deleted.",
"fa": "نقش‌های سیستمی قابل تغییر یا حذف نیستند."
},
"NOTIFICATION_NOT_FOUND": {
"statusCode": 404,
"en": "Notification record not found.",
"fa": "اعلان یافت نشد."
},
"CERTIFICATE_NOT_FOUND": {
"statusCode": 404,
"en": "Certificate not found.",
"fa": "مدرک یافت نشد."
},
"DOCUMENT_NOT_FOUND": {
"statusCode": 404,
"en": "Document not found.",
"fa": "سند یافت نشد."
},
"CLASS_NOT_FOUND": {
"statusCode": 404,
"en": "Class not found.",
"fa": "کلاس یافت نشد."
},
"EXPENSE_NOT_FOUND": {
"statusCode": 404,
"en": "Expense record not found.",
"fa": "هزینه یافت نشد."
},
"DEFAULT_ROLE_NOT_FOUND": {
"statusCode": 500,
"en": "Default user role was not found. Please seed the database.",
"fa": "نقش پیش‌فرض کاربر یافت نشد. لطفاً دیتابیس را seed کنید."
},
"VALIDATION_FAILED": {
"statusCode": 400,
"en": "Validation failed.",
"fa": "اعتبارسنجی ناموفق بود."
},
"UNAUTHORIZED": {
"statusCode": 401,
"en": "Authentication required. Invalid or missing token.",
"fa": "احراز هویت لازم است. توکن نامعتبر یا یافت نشد."
},
"FORBIDDEN": {
"statusCode": 403,
"en": "Access denied. Insufficient permissions.",
"fa": "دسترسی رد شد. مجوز کافی ندارید."
},
"INVALID_CREDENTIALS": {
"statusCode": 401,
"en": "Invalid username or password.",
"fa": "نام کاربری یا رمز عبور اشتباه است."
},
"INVALID_CURRENT_PASSWORD": {
"statusCode": 401,
"en": "Current password is incorrect.",
"fa": "رمز عبور فعلی اشتباه است."
},
"WEAK_PASSWORD": {
"statusCode": 400,
"en": "Password must be at least 6 characters.",
"fa": "رمز عبور باید حداقل ۶ نویسه باشد."
},
"PHONE_NUMBER_REQUIRED": {
"statusCode": 400,
"en": "A phone number is required to send login credentials by SMS.",
"fa": "برای ارسال اطلاعات ورود با پیامک، شماره همراه الزامی است."
},
"TOKEN_EXPIRED": {
"statusCode": 401,
"en": "Token has expired. Please login again.",
"fa": "توکن منقضی شده است. لطفا مجددا وارد شوید."
},
"INVALID_REFRESH_TOKEN": {
"statusCode": 401,
"en": "Invalid or revoked refresh token.",
"fa": "توکن بازنشانی نامعتبر یا باطل شده است."
},
"DUPLICATE_KEY": {
"statusCode": 409,
"en": "Duplicate key error. A unique field already exists.",
"fa": "خطای کلید تکراری. مقداری یکتا از قبل وجود دارد."
},
"NOT_FOUND": {
"statusCode": 404,
"en": "Requested route or resource not found.",
"fa": "مسیر یا منبع درخواستی یافت نشد."
},
"INTERNAL_SERVER_ERROR": {
"statusCode": 500,
"en": "An internal server error occurred.",
"fa": "خطای داخلی سرور رخ داده است."
},
"FILE_REQUIRED": {
"statusCode": 400,
"en": "File is required.",
"fa": "ارسال فایل الزامی است."
},
"FILE_NOT_FOUND": {
"statusCode": 404,
"en": "The requested file was not found.",
"fa": "فایل مورد نظر یافت نشد."
},
"UNSUPPORTED_FILE_TYPE": {
"statusCode": 400,
"en": "This file type is not allowed. Use JPEG, PNG, WebP, GIF, or PDF.",
"fa": "این نوع فایل مجاز نیست. از JPEG، PNG، WebP، GIF یا PDF استفاده کنید."
},
"FILE_COMMIT_FAILED": {
"statusCode": 502,
"en": "Failed to store the uploaded file. Please try again.",
"fa": "ذخیره فایل آپلودشده ناموفق بود. لطفا دوباره تلاش کنید."
},
"SEED_LOCKED": {
"statusCode": 409,
"en": "Database seeding has already been completed and is locked.",
"fa": "راه‌اندازی پایگاه داده قبلاً انجام شده و قفل است."
},
"SEED_FAILED": {
"statusCode": 500,
"en": "Database seeding failed.",
"fa": "راه‌اندازی پایگاه داده با خطا مواجه شد."
}
}