mirror of
https://github.com/OpenSignLabs/OpenSign.git
synced 2026-08-17 21:25:54 +02:00
87 lines
3.6 KiB
JavaScript
87 lines
3.6 KiB
JavaScript
export default async function SubscribeFree(request) {
|
|
const userId = request.params.userId;
|
|
const userPtr = { __type: 'Pointer', className: '_User', objectId: userId };
|
|
try {
|
|
const extQuery = new Parse.Query('contracts_Users');
|
|
extQuery.equalTo('UserId', userPtr);
|
|
const extUser = await extQuery.first({ useMasterKey: true });
|
|
if (extUser) {
|
|
const subscriptionCls = new Parse.Query('contracts_Subscriptions');
|
|
subscriptionCls.equalTo('TenantId', {
|
|
__type: 'Pointer',
|
|
className: 'partners_Tenant',
|
|
objectId: extUser.get('TenantId').id,
|
|
});
|
|
subscriptionCls.descending('createdAt');
|
|
const subcripitions = await subscriptionCls.first({ useMasterKey: true });
|
|
if (subcripitions) {
|
|
if (subcripitions?.get('PlanCode') === 'freeplan') {
|
|
return { status: 'success', result: 'already subscribed!' };
|
|
} else if (subcripitions?.get('Next_billing_date') < new Date()) {
|
|
try {
|
|
const updateSubscription = new Parse.Object('contracts_Subscriptions');
|
|
updateSubscription.id = subcripitions.id;
|
|
updateSubscription.set('PlanCode', 'freeplan');
|
|
updateSubscription.set('AllowedCredits', 0);
|
|
updateSubscription.set('PlanCredits', 0);
|
|
await updateSubscription.save(null, { useMasterKey: true });
|
|
return { status: 'success', result: 'subscribed!' };
|
|
} catch (err) {
|
|
console.log('err ', err);
|
|
return { status: 'error', result: err.message };
|
|
}
|
|
} else if (subcripitions?.get('Next_billing_date') > new Date()) {
|
|
return { status: 'success', result: 'already subscribed!' };
|
|
} else {
|
|
try {
|
|
const updateSubscription = new Parse.Object('contracts_Subscriptions');
|
|
updateSubscription.id = subcripitions.id;
|
|
updateSubscription.set('PlanCode', 'freeplan');
|
|
updateSubscription.set('AllowedCredits', 0);
|
|
updateSubscription.set('PlanCredits', 0);
|
|
await updateSubscription.save(null, { useMasterKey: true });
|
|
return { status: 'success', result: 'subscribed!' };
|
|
} catch (err) {
|
|
console.log('err ', err);
|
|
return { status: 'error', result: err.message };
|
|
}
|
|
}
|
|
} else {
|
|
try {
|
|
const createSubscription = new Parse.Object('contracts_Subscriptions');
|
|
createSubscription.set('PlanCode', 'freeplan');
|
|
createSubscription.set('ExtUserPtr', {
|
|
__type: 'Pointer',
|
|
className: 'contracts_Users',
|
|
objectId: extUser.id,
|
|
});
|
|
createSubscription.set('CreatedBy', {
|
|
__type: 'Pointer',
|
|
className: '_User',
|
|
objectId: extUser.get('UserId').id,
|
|
});
|
|
if (extUser?.get('TenantId')) {
|
|
createSubscription.set('TenantId', {
|
|
__type: 'Pointer',
|
|
className: 'partners_Tenant',
|
|
objectId: extUser.get('TenantId').id,
|
|
});
|
|
}
|
|
createSubscription.set('AllowedCredits', 0);
|
|
createSubscription.set('PlanCredits', 0);
|
|
await createSubscription.save(null, { useMasterKey: true });
|
|
return { status: 'success', result: 'subscribed!' };
|
|
} catch (err) {
|
|
console.log('err ', err);
|
|
return { status: 'error', result: err.message };
|
|
}
|
|
}
|
|
} else {
|
|
return { status: 'error', result: 'User not found!' };
|
|
}
|
|
} catch (err) {
|
|
console.log('err ', err);
|
|
return { status: 'error', result: err.message };
|
|
}
|
|
}
|