tango-app-api-payment-subscription 3.0.35-dev → 3.0.37-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1526,6 +1526,9 @@ export const invoiceList = async ( req, res ) => {
|
|
|
1526
1526
|
if ( item.products?.length>0 ) {
|
|
1527
1527
|
let newProducts = [];
|
|
1528
1528
|
for ( let productIndex = 0; productIndex < item.products.length; productIndex++ ) {
|
|
1529
|
+
let [ firstWord, secondWord ] = item.products[productIndex]?.product?.product.replace( /([a-z])([A-Z])/g, '$1 $2' ).split( ' ' );
|
|
1530
|
+
firstWord = firstWord.charAt( 0 ).toUpperCase() + firstWord.slice( 1 );
|
|
1531
|
+
item.products[productIndex].product.product = firstWord + ' ' + secondWord;
|
|
1529
1532
|
newProducts.push( item.products[productIndex]?.product?.product );
|
|
1530
1533
|
}
|
|
1531
1534
|
item.productList = newProducts;
|
|
@@ -1985,15 +1988,18 @@ export const getRemindClients = async ( req, res ) => {
|
|
|
1985
1988
|
clientDetails.forEach( async ( client ) => {
|
|
1986
1989
|
if ( client.planDetails?.product && client.planDetails?.product.length ) {
|
|
1987
1990
|
client.planDetails.product.forEach( async ( item ) => {
|
|
1988
|
-
if ( item.status == 'trial' ) {
|
|
1989
|
-
let
|
|
1990
|
-
let
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1991
|
+
if ( item.status == 'trial' && item?.trialEndDate ) {
|
|
1992
|
+
let endDate = dayjs( item.trialEndDate ).startOf( 'day' );
|
|
1993
|
+
let date = dayjs().startOf( 'day' );
|
|
1994
|
+
let leftDays = endDate.diff( date, 'day' );
|
|
1995
|
+
// let date = new Date();
|
|
1996
|
+
// let userTimezoneOffset = item.trialEndDate.getTimezoneOffset() / 60000;
|
|
1997
|
+
// item.trialEndDate = new Date( item.trialEndDate.getTime() - userTimezoneOffset );
|
|
1998
|
+
// item.trialEndDate.setUTCHours( 0, 0, 0, 0 );
|
|
1999
|
+
// const diffTime = parseInt( ( item.trialEndDate - date ) / ( 1000 * 60 * 60 * 24 ), 10 ) + 1;
|
|
1994
2000
|
let userDetails= await userService.findOne( { clientId: client.clientId, role: 'superadmin' } );
|
|
1995
2001
|
if ( userDetails ) {
|
|
1996
|
-
if (
|
|
2002
|
+
if ( leftDays == 3 ) {
|
|
1997
2003
|
let [ firstWord, secondWord ] = item.productName.replace( /([a-z])([A-Z])/g, '$1 $2' ).split( ' ' );
|
|
1998
2004
|
firstWord = firstWord.charAt( 0 ).toUpperCase() + firstWord.slice( 1 );
|
|
1999
2005
|
let data = {
|
|
@@ -2025,7 +2031,7 @@ export const getRemindClients = async ( req, res ) => {
|
|
|
2025
2031
|
};
|
|
2026
2032
|
|
|
2027
2033
|
|
|
2028
|
-
export const
|
|
2034
|
+
export const getExpiredClientsOld = async ( req, res ) => {
|
|
2029
2035
|
try {
|
|
2030
2036
|
let start = new Date();
|
|
2031
2037
|
let userTimezoneOffset = start.getTimezoneOffset() * 60000;
|
|
@@ -2044,7 +2050,6 @@ export const getExpiredClients = async ( req, res ) => {
|
|
|
2044
2050
|
{
|
|
2045
2051
|
$match: {
|
|
2046
2052
|
'planDetails.product.status': 'trial',
|
|
2047
|
-
'planDetails.product.trialEndDate': { $gt: end },
|
|
2048
2053
|
},
|
|
2049
2054
|
},
|
|
2050
2055
|
];
|
|
@@ -2060,7 +2065,7 @@ export const getExpiredClients = async ( req, res ) => {
|
|
|
2060
2065
|
let [ firstWord, secondWord ] = item.productName.replace( /([a-z])([A-Z])/g, '$1 $2' ).split( ' ' );
|
|
2061
2066
|
firstWord = firstWord.charAt( 0 ).toUpperCase() + firstWord.slice( 1 );
|
|
2062
2067
|
let data = {
|
|
2063
|
-
|
|
2068
|
+
userName: userDetails.userName,
|
|
2064
2069
|
product: firstWord +' '+secondWord,
|
|
2065
2070
|
};
|
|
2066
2071
|
const templateHtml = fs.readFileSync( path.resolve( path.dirname( '' ) ) + '/src/hbs/trialExpiredEmail.hbs', 'utf8' );
|
|
@@ -2083,6 +2088,56 @@ export const getExpiredClients = async ( req, res ) => {
|
|
|
2083
2088
|
return res.sendError( e, 500 );
|
|
2084
2089
|
}
|
|
2085
2090
|
};
|
|
2091
|
+
export const getExpiredClients = async ( req, res ) => {
|
|
2092
|
+
try {
|
|
2093
|
+
let clientDetails = await paymentService.find( { status: 'active' } );
|
|
2094
|
+
if ( !clientDetails.length ) {
|
|
2095
|
+
return res.sendError( 'no data found', 204 );
|
|
2096
|
+
}
|
|
2097
|
+
clientDetails.forEach( async ( client ) => {
|
|
2098
|
+
if ( client.planDetails?.product && client.planDetails?.product.length ) {
|
|
2099
|
+
client.planDetails.product.forEach( async ( item ) => {
|
|
2100
|
+
if ( item.status == 'trial' && item?.trialEndDate ) {
|
|
2101
|
+
let endDate = dayjs( item.trialEndDate ).startOf( 'day' );
|
|
2102
|
+
let date = dayjs().startOf( 'day' );
|
|
2103
|
+
let leftDays = endDate.diff( date, 'day' );
|
|
2104
|
+
// let date = new Date();
|
|
2105
|
+
// let userTimezoneOffset = item.trialEndDate.getTimezoneOffset() / 60000;
|
|
2106
|
+
// item.trialEndDate = new Date( item.trialEndDate.getTime() - userTimezoneOffset );
|
|
2107
|
+
// item.trialEndDate.setUTCHours( 0, 0, 0, 0 );
|
|
2108
|
+
// const diffTime = parseInt( ( item.trialEndDate - date ) / ( 1000 * 60 * 60 * 24 ), 10 ) + 1;
|
|
2109
|
+
let userDetails= await userService.findOne( { clientId: client.clientId, role: 'superadmin' } );
|
|
2110
|
+
if ( userDetails ) {
|
|
2111
|
+
if ( leftDays == -1 ) {
|
|
2112
|
+
let [ firstWord, secondWord ] = item.productName.replace( /([a-z])([A-Z])/g, '$1 $2' ).split( ' ' );
|
|
2113
|
+
firstWord = firstWord.charAt( 0 ).toUpperCase() + firstWord.slice( 1 );
|
|
2114
|
+
let data = {
|
|
2115
|
+
userName: userDetails.userName,
|
|
2116
|
+
product: firstWord + ' ' + secondWord,
|
|
2117
|
+
};
|
|
2118
|
+
const templateHtml = fs.readFileSync( path.resolve( path.dirname( '' ) ) + '/src/hbs/trialExpiredEmail.hbs', 'utf8' );
|
|
2119
|
+
const template = Handlebars.compile( templateHtml );
|
|
2120
|
+
const html = template( { data: data } );
|
|
2121
|
+
let params = {
|
|
2122
|
+
toEmail: userDetails.email,
|
|
2123
|
+
mailSubject: 'TangoEye | Trial Expired - Upgrade to Continue',
|
|
2124
|
+
htmlBody: html,
|
|
2125
|
+
attachment: '',
|
|
2126
|
+
sourceEmail: appConfig.cloud.aws.ses.adminEmail,
|
|
2127
|
+
};
|
|
2128
|
+
await sendEmailWithSES( params.toEmail, params.mailSubject, params.htmlBody, params.attachment, params.sourceEmail );
|
|
2129
|
+
}
|
|
2130
|
+
}
|
|
2131
|
+
}
|
|
2132
|
+
} );
|
|
2133
|
+
}
|
|
2134
|
+
} );
|
|
2135
|
+
return res.sendSuccess();
|
|
2136
|
+
} catch ( e ) {
|
|
2137
|
+
logger.error( { error: e, function: 'getExpiredClients' } );
|
|
2138
|
+
return res.sendError( e, 500 );
|
|
2139
|
+
}
|
|
2140
|
+
};
|
|
2086
2141
|
|
|
2087
2142
|
export const invoiceDownload = async ( req, res ) => {
|
|
2088
2143
|
try {
|
|
@@ -2396,7 +2451,7 @@ export const invoiceGenerate = async ( req, res ) => {
|
|
|
2396
2451
|
};
|
|
2397
2452
|
let storeCount = await storeService.count( storeQuery );
|
|
2398
2453
|
let data = {
|
|
2399
|
-
invoice: `invoice#${requestClient[clientIndex]}-${
|
|
2454
|
+
invoice: `invoice#${requestClient[clientIndex]}-${new Date().getTime()}`,
|
|
2400
2455
|
products: invoiceDetails,
|
|
2401
2456
|
status: 'pending',
|
|
2402
2457
|
amount: amount,
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
style="margin-top: 0px;margin-bottom: 0px;font-size: 24px;line-height: 28px;color: #82899a;">
|
|
122
122
|
<span class="o_heading o_text-dark o_mb-xxs"
|
|
123
123
|
style="font-weight: 700;margin-top: 0px;margin-bottom: 4px;color: #121A26;line-height: 39px;">
|
|
124
|
-
Unlock Premium Features - Your
|
|
124
|
+
Unlock Premium Features - Your {{data.product}} Trial Has Ended</span>
|
|
125
125
|
</div>
|
|
126
126
|
</td>
|
|
127
127
|
</tr>
|