pay
This commit is contained in:
@@ -53,8 +53,14 @@ const getOfferTypes = async (req, res, next) => {
|
||||
]
|
||||
}
|
||||
|
||||
const canFree =
|
||||
(user.monthly_free_offer || 0) > 0 && canUseFreeCreation(user)
|
||||
// رایگان بودن درخواست به «گیرنده» بستگی دارد: اگر گیرنده «دریافت هدیه» را غیرفعال
|
||||
// کرده باشه، فرستنده (با سهمیهی رایگانِ خودش) میتونه درخواست رایگان بده
|
||||
const receiverForFree = req.query.userId
|
||||
? await UserModel.findById(req.query.userId).select('gift_enabled offer_payment_enabled').lean()
|
||||
: null
|
||||
// رایگان وقتی فعاله که گیرنده «دریافت هدیه» یا «دریافت پرداختی از چت» رو غیرفعال کرده باشه
|
||||
const freeEligible = receiverForFree?.gift_enabled === false || receiverForFree?.offer_payment_enabled === false
|
||||
const canFree = freeEligible && canUseFreeCreation(user)
|
||||
|
||||
// رایگان را حذف نکن — اگر مجاز نیست، با فلگ disabled برگردان تا UI نشان دهد
|
||||
offerTypes = offerTypes.map((t) => {
|
||||
@@ -63,8 +69,8 @@ const getOfferTypes = async (req, res, next) => {
|
||||
plain.disabled = !canFree
|
||||
plain.unavailableReason = canFree
|
||||
? null
|
||||
: (user.monthly_free_offer || 0) <= 0
|
||||
? 'سهمیه رایگان ماهانه شما تمام شده است'
|
||||
: !freeEligible
|
||||
? 'برای درخواست رایگان، دریافت هدیه از چت را در تنظیمات حساب غیرفعال کنید'
|
||||
: 'سقف ثبت رایگان شما به پایان رسیده است'
|
||||
}
|
||||
return plain
|
||||
@@ -206,19 +212,15 @@ const handleSuccessfulOfferPayment = async (req, res) => {
|
||||
|
||||
// اگر گیرنده «دریافت پرداختی از چت» رو غیرفعال کرده باشه، درخواست همکاری براش
|
||||
// همیشه رایگانه — مستقل از سهمیهی رایگان ماهانهی فرستنده
|
||||
const receiverOffersFree = reciverUser?.offer_payment_enabled === false
|
||||
const receiverFreeEligible = reciverUser?.gift_enabled === false || reciverUser?.offer_payment_enabled === false
|
||||
|
||||
let price
|
||||
if (receiverOffersFree) {
|
||||
price = 0
|
||||
} else if (user.monthly_free_offer > 0 && offerType === 'free' && canUseFreeCreation(user)) {
|
||||
if (offerType === 'free' && receiverFreeEligible && canUseFreeCreation(user)) {
|
||||
const consumed = await consumeFreeCreation(user)
|
||||
if (!consumed.ok) {
|
||||
return res.status(403).json(freeCreationLimitResponse())
|
||||
}
|
||||
price = 0
|
||||
user.monthly_free_offer -= 1
|
||||
await user.save()
|
||||
} else if (offerType === 'free') {
|
||||
return res.status(403).json({
|
||||
error: true,
|
||||
|
||||
Reference in New Issue
Block a user