diff --git a/apps/OpenSign/src/pages/PlanSubscriptions.js b/apps/OpenSign/src/pages/PlanSubscriptions.js index abae7edbc..bff48d33f 100644 --- a/apps/OpenSign/src/pages/PlanSubscriptions.js +++ b/apps/OpenSign/src/pages/PlanSubscriptions.js @@ -45,10 +45,25 @@ const PlanSubscriptions = () => { }, []); const handleFreePlan = async () => { - const params = { userId: Parse.User.current().id }; - const res = await Parse.Cloud.run("freesubscription", params); - if (res.status === "success") { - navigate("/"); + setIsLoader(true); + try { + const params = { userId: Parse.User.current().id }; + const res = await Parse.Cloud.run("freesubscription", params); + console.log("res.result ", res.result); + if (res.status === "success" && res.result === "already subscribed!") { + setIsLoader(false); + alert("You have already subscription of free plan"); + } else if (res.status === "success") { + setIsLoader(false); + navigate("/"); + } else if (res.status === "error") { + setIsLoader(false); + alert(res.result); + } + } catch (err) { + setIsLoader(false); + console.log("err in free subscribe", err.message); + alert("Somenthing went wrong, please try again later!"); } }; return ( diff --git a/apps/OpenSignServer/cloud/parsefunction/SubscribeFree.js b/apps/OpenSignServer/cloud/parsefunction/SubscribeFree.js index d2f63cdc5..70d5d4834 100644 --- a/apps/OpenSignServer/cloud/parsefunction/SubscribeFree.js +++ b/apps/OpenSignServer/cloud/parsefunction/SubscribeFree.js @@ -5,17 +5,20 @@ export default async function SubscribeFree(request) { const extQuery = new Parse.Query('contracts_Users'); extQuery.equalTo('UserId', userPtr); const extUser = await extQuery.first({ useMasterKey: true }); - - if (extUser && extUser?.Next_billing_date < new Date()) { - try { - const extUpdate = new Parse.Object('contracts_Users'); - extUpdate.id = extUser.id; - extUpdate.set('Plan', { plan_code: 'freeplan' }); - const updatePlan = await extUpdate.save(null, { useMasterKey: true }); - return { status: 'success', result: 'subscribed!' }; - } catch (err) { - console.log('err ', err); - return { status: 'error', result: err.message }; + if (extUser) { + if (extUser?.get('Plan')?.plan_code === 'freeplan') { + return { status: 'success', result: 'already subscribed!' }; + } else if (extUser?.get('Next_billing_date') < new Date()) { + try { + const extUpdate = new Parse.Object('contracts_Users'); + extUpdate.id = extUser.id; + extUpdate.set('Plan', { plan_code: 'freeplan' }); + const updatePlan = await extUpdate.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!' };