Untitled

 avatar
unknown
plain_text
2 years ago
3.7 kB
8
Indexable
async updateSubcriptionManyTable(payload) {
    const { companyData } = payload;
    let dataCompanyBusinessModels = [];
    const companySubscription = companyData.data.subscription;

    if (companySubscription.type === SUBSCRIPTION_TYPE.PERIODIC_PARTNERS) {
      if (validate.isEmpty(companySubscription.freeTrialStartDate) 
      || validate.isEmpty(companySubscription.freeTrialEndDate)){
        dataCompanyBusinessModels.push({
          company_id: dataCompany.id,
          type: companySubscription.type,
          status: companySubscription.status,
          start_date: companySubscription.startDate,
          end_date: companySubscription.endDate,
          free_trial_start_date: '',
          free_trial_end_date: '',
          value: companySubscription.price,
          field_assistant: companySubscription.fieldAssistant,
          field_assistant_schema: companySubscription.fieldAssistantSchema
        });
      } else {
        dataCompanyBusinessModels.push({
          company_id: dataCompany.id,
          type: companySubscription.type,
          status: companySubscription.status,
          start_date: companySubscription.startDate,
          end_date: companySubscription.endDate,
          free_trial_start_date: companySubscription.freeTrialStartDate,
          free_trial_end_date: companySubscription.freeTrialEndDate,
          value: companySubscription.price,
          field_assistant: companySubscription.fieldAssistant,
          field_assistant_schema: companySubscription.fieldAssistantSchema
        });
      }
    } else {
      if (validate.isEmpty(companySubscription.freeTrialStartDate) 
      || validate.isEmpty(companySubscription.freeTrialEndDate)){
        dataCompanyBusinessModels.push({
          company_id: dataCompany.id,
          type: companySubscription.type,
          status: companySubscription.status,
          start_date: companySubscription.startDate,
          end_date: companySubscription.endDate,
          free_trial_start_date: '',
          free_trial_end_date: '',
          value: companySubscription.percent,
          field_assistant: companySubscription.fieldAssistant,
          field_assistant_schema: companySubscription.fieldAssistantSchema
        });
      } else {
        dataCompanyBusinessModels.push({
          company_id: dataCompany.id,
          type: companySubscription.type,
          status: companySubscription.status,
          start_date: companySubscription.startDate,
          end_date: companySubscription.endDate,
          free_trial_start_date: companySubscription.freeTrialStartDate,
          free_trial_end_date: companySubscription.freeTrialEndDate,
          value: companySubscription.percent,
          field_assistant: companySubscription.fieldAssistant,
          field_assistant_schema: companySubscription.fieldAssistantSchema
        });
      }
    }
    await this.commandCompanyBusinessModels.delete({ 'company_id': companyData.id });
    await this.commandCompanyBusinessModels.insertOne(dataCompanyBusinessModels);
  }

  async resetStatusPaid() {
    const ctx = 'company-reset-status-paid';
    const dateNow = new Date();

    crontab.scheduleJob("0 0 0 * * *" , function(){
      const query = {
        status: SUBSCRIPTION_STATUS.ACTIVE,
        free_trial_start_date: '',
        free_trial_end_date: '',
        modifiedAt: new Date(),
        modifiedBy: 'Admin'
      }
    },
    {
     schedule: true,
     timezone: "Asia/Jakarta"
    });

    await this.command.updateMany('free_trial_end_date', '=<', dateNow, query);

    return wrapper.data('', ctx, 200);
  }
Editor is loading...