import { BadRequestException, HttpException, HttpStatus, Injectable, InternalServerErrorException, NotFoundException } from '@nestjs/common';
import { InjectStripe } from 'nestjs-stripe';
import Stripe from 'stripe'
// import { ModelService } from 'src/model/model.service';
import { ModelService } from '../model/model.service';
import { on } from 'events';
import * as moment from 'moment'

@Injectable()
export class StripeWebhooksService {
    constructor(@InjectStripe() private readonly stripeClient: Stripe,
        private readonly model: ModelService) { }


    async webhooks(req: any) {
        try {
            let data = req.body
            // console.log('webhooks_data', data);
            let { id, object, status } = req.body?.data?.object
            switch (req.body.type) {
                case 'customer.subscription.deleted':
                    if (object === 'subscription') {
                        let query = {
                            subscription_id: id
                        }
                        let data_to_update = {
                            status: status
                        }
                        await this.model.subscriptionModel.findOneAndUpdate(query, data_to_update, { new: true })
                    }
                    break
                case 'customer.subscription.updated':
                    if (object === 'subscription') {
                        let query = {
                            subscription_id: id
                        }
                        let data_to_update = {
                            status: status,
                            is_active: status != "active" ? false : true
                        }
                        await this.model.subscriptionModel.findOneAndUpdate(query, data_to_update, { new: true })
                    }
                    break;
            }
            return data
        } catch (error) {
            throw error
        }
    }

}