import { forwardRef, Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Plan } from 'src/entities/plan.entity';
import { PlanPermission } from 'src/entities/plan-permission.entity';
import { StripeModule } from 'src/common/services/payment-gateway/stripe/stripe.module';
import { PaymentController } from './payment.controller';
import { PaymentService } from './payment.service';
import { PaymentRepository } from './payment.reporitory';
import { Card } from 'src/entities/card.entity';
import { Subscription } from 'src/entities/subscription.entity';
import { NotificationModule } from 'src/common/services/notification/notification.module';
import { Users } from 'src/entities/users.entity';
import { SubscriptionHistory } from 'src/entities/subscription-history.entity';
import { UserPermissions } from '../../entities/user-permissions.entity';
import { StripeServices } from 'src/common/services/payment-gateway/stripe/stripe.service';
import { SendMailService } from 'src/common/config/send-mail.service';
import { EncryptionModule } from 'src/common/services/encryption/encryption.module';

@Module({
    imports: [
        TypeOrmModule.forFeature([Plan, PlanPermission, Card, Subscription, Users, SubscriptionHistory, UserPermissions]),
        forwardRef(() => StripeModule),
        NotificationModule, EncryptionModule],
    controllers: [PaymentController],
    providers: [PaymentService, PaymentRepository, SendMailService],
    exports: [PaymentService, PaymentRepository],
})
export class PaymentModule { }
