import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import * as collection from './index';

@Injectable()
export class ModelsService {
    constructor(
        //user auth
        @InjectModel('users') public UserModel: Model<collection.Users.UsersDocument>,
        @InjectModel('sessions') public SessionModel: Model<collection.Sessions.Sessions>,
        @InjectModel('otps') public OTPModel: Model<collection.OTP.OTP>,

        // chat
        @InjectModel('connections') public Connections: Model<collection.Connections.ConnectionDocument>,
        @InjectModel('messages') public Messages: Model<collection.Messages.Message>,
        @InjectModel('chat-medias') public ChatMedias: Model<collection.MessageMedias.MessageMedia>,
        @InjectModel('group-members') public GroupMembers: Model<collection.GroupMembers.GroupMembers>,
        @InjectModel('message-reactions') public MsgReactions: Model<collection.MessageReactions.ReactionEmoji>,
        @InjectModel('block-users') public blockUsers: Model<collection.BlockUser.BlockUser>,



        //call
        @InjectModel('calls') public callings: Model<collection.Calling.Calling>,
        @InjectModel('call-members') public callJoinedMembers: Model<collection.CallJoinedMember.CallJoinedMember>,
    
        
        @InjectModel('notifications') public notifications: Model<collection.Notifications.Notification>,

        // pages
        @InjectModel('pages') public PageModel: Model<collection.Pages.Pages>,
    

        // settings
        @InjectModel('settings') public SettingsModel: Model<collection.Settings.SettingsDocument>,
        // broadcast
        @InjectModel('broadcasts') public BroadcastModel: Model<collection.Broadcast.Broadcast>,
        // email templates
        @InjectModel('email-templates') public EmailTemplateModel: Model<collection.EmailTemplates.EmailTemplates>,

        // languages
        @InjectModel('languages') public LanguageModel: Model<collection.Language.Language>,
        @InjectModel('translation-keys') public TranslationKeyModel: Model<collection.TranslationKey.TranslationKey>,
        @InjectModel('translations') public TranslationModel: Model<collection.Translation.Translation>,
        // catalog
        @InjectModel('categories') public CategoryModel: Model<collection.Category.Category>,
        @InjectModel('insurers') public InsurerModel: Model<collection.Insurer.Insurer>,
        @InjectModel('regions') public RegionModel: Model<collection.Region.Region>,

        // audit trail
        @InjectModel('activity-logs') public ActivityLogModel: Model<collection.ActivityLog.ActivityLog>,

        // customers and leads
        @InjectModel('customers') public CustomerModel: Model<collection.Customer.Customer>,
        @InjectModel('leads') public LeadModel: Model<collection.Lead.Lead>,

        // products
        @InjectModel('products') public ProductModel: Model<collection.Product.Product>,

        // policies
        @InjectModel('policies') public PolicyModel: Model<collection.Policy.Policy>,
    ) { }
}
