from mongoengine import Document, StringField, IntField, BooleanField, DateTimeField
from datetime import datetime

class User(Document):
    name = StringField()
    email = StringField(unique=True, sparse=True)
    phone = StringField(unique=True, sparse=True)
    password = StringField()
    user_type = StringField(choices=['Learner', 'Teacher'])
    referral_code = StringField(unique=True)
    refer_by = StringField()
    referral_points_learner = IntField(default=0)
    referral_points_teacher = IntField(default=0)
    total_referral_points = IntField(default=0)
    total_referrals = IntField(default=0)
    coins_wallet_balance = IntField(default=0) 
    profile_image = StringField(null=True)
    login_otp = StringField()
    # is_email_verified = BooleanField(default=False)
    # status = IntField(default=0)
    is_email_verified = IntField(default=0)
    status = IntField(default=0)
    # is_deleted = BooleanField(default=False)
    is_deleted = IntField(default=0)
    created_date = DateTimeField(default=datetime.utcnow)
    meta = {'collection': 'users'}

    def to_json(self):
        return {
            'id': str(self.id),
            'name': self.name,
            'email': self.email,
            'phone': self.phone,
            'user_type': self.user_type,
            'profile_image': self.profile_image,
            'referral_code': self.referral_code,
            'refer_by': self.refer_by,
            'coins_wallet_balance': self.coins_wallet_balance,
            'referral_points_learner': self.referral_points_learner,
            'referral_points_teacher': self.referral_points_teacher,
            'total_referral_points': self.total_referral_points,
            'total_referrals': self.total_referrals,
            'is_email_verified': self.is_email_verified,
            'status': self.status,
            'created_date': self.created_date.isoformat() if self.created_date else None,
            'is_deleted': self.is_deleted
        }


from mongoengine import Document, StringField, IntField, BooleanField, DateTimeField
from datetime import datetime

# class User(Document):
#     name = StringField(null=True)
#     # email = StringField(null=True)
#     email = StringField(required=False, null=True)
#     # email = StringField(unique=True, sparse=True)

#     password = StringField(null=True)
#     phone = StringField(null=True)
#     login_otp = StringField(null=True)
#     user_type = StringField(choices=['Learner', 'Teacher'], null=True)
#     profile_image = StringField(null=True)
#     referral_code = StringField(unique=True, required=True)
#     refer_by = StringField(null=True)
#     total_referrals = IntField(default=0)
#     total_referral_points = IntField(default=0)
#     referral_points_learner = IntField(default=0)
#     referral_points_teacher = IntField(default=0)
#     is_email_verified = IntField(choices=[0, 1], null=True)  # 0 = Not Verified, 1 = Verified
#     status = IntField(default=1)                             # 0 = Inactive, 1 = Active
#     is_deleted = IntField(default=0)                         # 0 = Not Deleted, 1 = Deleted
#     created_date = DateTimeField(default=datetime.utcnow)

#     meta = {'collection': 'users'}

#     def to_json(self):
#         return {
#             'id': str(self.id),
#             'name': self.name,
#             'email': self.email,
#             'phone': self.phone,
#             'user_type': self.user_type,
#             'profile_image': self.profile_image,
#             'referral_code': self.referral_code,
#             'refer_by': self.refer_by,
#             'total_referrals': self.total_referrals,
#             'total_referral_points': self.total_referral_points,
#             'referral_points_learner': self.referral_points_learner,
#             'referral_points_teacher': self.referral_points_teacher,
#             'is_email_verified': self.is_email_verified,
#             'status': self.status,
#             'is_deleted': self.is_deleted,
#             'created_date': self.created_date.strftime('%Y-%m-%d %H:%M:%S') if self.created_date else None

#         }
