tango-app-api-payment-subscription 3.0.35-dev → 3.0.36-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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tango-app-api-payment-subscription",
3
- "version": "3.0.35-dev",
3
+ "version": "3.0.36-dev",
4
4
  "description": "paymentSubscription",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -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 date = new Date();
1990
- let userTimezoneOffset = item.trialEndDate.getTimezoneOffset() / 60000;
1991
- item.trialEndDate = new Date( item.trialEndDate.getTime() - userTimezoneOffset );
1992
- item.trialEndDate.setUTCHours( 0, 0, 0, 0 );
1993
- const diffTime = parseInt( ( item.trialEndDate - date ) / ( 1000 * 60 * 60 * 24 ), 10 ) + 1;
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 ( diffTime == 3 ) {
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 getExpiredClients = async ( req, res ) => {
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
- username: userDetails.userName,
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]}-${dayjs().format( 'MMM YYYY' )}`,
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 Tango Traffic Trial Has Ended</span>
124
+ Unlock Premium Features - Your {{data.product}} Trial Has Ended</span>
125
125
  </div>
126
126
  </td>
127
127
  </tr>