from django.db import models
from django.contrib.auth.hashers import make_password, check_password
from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy import Column, DateTime, String, text, DATE
from sqlalchemy.dialects.mysql import INTEGER,LONGTEXT

Base = declarative_base()
metadata = Base.metadata




# idpwoa

class AuthToken(models.Model):
    key = models.CharField(max_length=255, null=True, blank=True)
    created = models.CharField(max_length=50, null=True, blank=True)
    user_id = models.CharField(max_length=50, null=True, blank=True)
    class Meta:
        db_table = 'auth_token'

    
class AuthToken(Base):
    __tablename__ = 'auth_token'

    id = Column(INTEGER(11), primary_key=True)
    key = Column(String(255))
    created = Column(DateTime)
    user_id = Column(String(50))

class userregistartion(models.Model):
    fname = models.CharField(max_length=255, null=False, blank=False)
    lname = models.CharField(max_length=255, null=True, blank=True)
    idno = models.CharField(max_length=255, null=False, blank=False)
    useraddress = models.TextField(null=False, blank=False)
    shopaddress = models.TextField(null=False, blank=False)
    contactno = models.CharField(max_length=20, null=True, blank=True)
    whatsappno = models.CharField(max_length=20, null=False, blank=False)
    shoptype = models.CharField(max_length=255, null=False, blank=False)
    bloodgroup = models.CharField(max_length=20, null=True, blank=True)
    email = models.CharField(max_length=255, null=False, blank=False)
    gender = models.CharField(max_length=20, null=False, blank=False)
    userimageurl = models.TextField(null=False, blank=False)
    shopimageurl = models.TextField(null=False, blank=False)
    district = models.CharField(max_length=50, null=False, blank=False)
    constituency = models.CharField(max_length=255, null=False, blank=False)
    panchayath = models.CharField(max_length=255, null=False, blank=False)
    status = models.CharField(max_length=20, null=False, blank=False)
    paymenttype = models.CharField(max_length=20, null=False, blank=False)
    receipturl = models.TextField(null=True, blank=True)
    createddate = models.DateField(auto_now=True)
    class Meta:
        db_table = 'idpwoauserregistartion' 
 
class UserRegistrationTbl(Base):
    __tablename__ = 'idpwoauserregistartion'

    id = Column(INTEGER, primary_key=True, autoincrement=True)
    fname = Column(String(255), nullable=False)
    lname = Column(String(255))
    idno = Column(String(255))
    useraddress = Column(LONGTEXT, nullable=False)
    shopaddress = Column(LONGTEXT, nullable=False)
    contactno = Column(String(20))
    whatsappno = Column(String(20), nullable=False)
    shoptype = Column(String(255), nullable=False)
    bloodgroup = Column(String(20))
    email = Column(LONGTEXT, nullable=False)
    gender = Column(LONGTEXT, nullable=False)
    userimageurl = Column(LONGTEXT, nullable=False)
    shopimageurl = Column(LONGTEXT, nullable=False)
    district = Column(String(50), nullable=False)
    constituency = Column(String(255), nullable=False)
    panchayath = Column(String(255), nullable=False)
    status = Column(String(20), nullable=False)
    paymenttype = Column(String(20), nullable=False)
    receipturl = Column(LONGTEXT, nullable=True)
    createddate = Column(DateTime)

class user_otp(models.Model):
    email = models.CharField(max_length=200, null=False, blank=True)
    otp = models.CharField(max_length=50, null=False, blank=True)
    key = models.CharField(max_length=200, null=False, blank=True)
    type = models.CharField(max_length=200, null=True, blank=False)
    name = models.CharField(max_length=200, null=True, blank=False)
    phone = models.CharField(max_length=200, null=True, blank=False)
    status = models.CharField(max_length=20, null=True, blank=False)
    createdtime = models.TimeField(auto_now=False, auto_now_add=False)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'idpwoauser_otp'
   
class Otpdtl(Base):
    __tablename__ = 'idpwoauser_otp'

    id = Column(INTEGER(11), primary_key=True)
    email = Column(String(255))
    otp = Column(String(45))
    key = Column(String(45))
    type = Column(String(200))
    name = Column(String(200))
    phone = Column(String(200))
    status = Column(String(20))
    createdtime = Column(DateTime)
    createddate = Column(DateTime)


class login(models.Model):
    login_id = models.CharField(max_length=50, null=True, blank=True)
    userid = models.CharField(max_length=50, null=True, blank=True)
    username = models.CharField(max_length=200, null=False, blank=True)
    password = models.TextField()
    last_logineddate = models.CharField(max_length=200, null=True,blank=True)
    type = models.CharField(max_length=200, null=True, blank=True)
    status = models.CharField(max_length=200, null=True, blank=True)
    email = models.CharField(max_length=500, null=True, blank=True)
    purchasedate = models.CharField(max_length=500, null=True, blank=True)
    accountstatus = models.CharField(max_length=500, null=True, blank=True)
    duration = models.CharField(max_length=500, null=True, blank=True)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'idpwoalogin' 

    # def __str__(self):
    #     return self.usernames

class loginTbl(Base):
    __tablename__ = 'idpwoalogin'

    id = Column(INTEGER(11), primary_key=True)
    userid = Column(String(50))
    login_id = Column(String(50))
    username = Column(String(200))
    password = Column(String(500))
    last_logineddate = Column(String(200))
    type = Column(String(200))
    status = Column(String(200))
    email = Column(String(500))
    purchasedate = Column(String(500))
    accountstatus = Column(String(500))
    duration = Column(String(500))
    createddate = Column(DateTime)
    def check_password(self, raw_password):
        return check_password(raw_password, self.password)
    
    def is_authenticated():
        return True

class usefulllinks(models.Model):
    imageurl = models.TextField(null=False, blank=False)
    description = models.TextField(null=False, blank=False)
    link = models.TextField(null=False, blank=False)
    status = models.CharField(max_length=255, null=True, blank=True)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'idpwoausefulllinks' 

    # def __str__(self):
    #     return self.usernames

class usefullLinksTbl(Base):
    __tablename__ = 'idpwoausefulllinks'

    id = Column(INTEGER(11), primary_key=True)
    imageurl = Column(LONGTEXT)
    description = Column(LONGTEXT)
    link = Column(LONGTEXT)
    status = Column(String(255))
    createddate = Column(DateTime)

class banner(models.Model):
    imageurl = models.TextField(null=False, blank=False)
    linkurl = models.TextField(null=False, blank=False)
    status = models.CharField(max_length=255, null=True, blank=True)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'idpwoabanner' 

class bannerTbl(Base):
    __tablename__ = 'idpwoabanner'

    id = Column(INTEGER(11), primary_key=True)
    imageurl = Column(LONGTEXT)
    linkurl = Column(LONGTEXT)
    status = Column(String(255))
    createddate = Column(DateTime)

class marque(models.Model):
    marque = models.TextField(null=False, blank=False)
    status = models.CharField(max_length=255, null=True, blank=True)
    type = models.CharField(max_length=255, null=True, blank=True)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'idpwoamarque' 

class marqueTbl(Base):
    __tablename__ = 'idpwoamarque'

    id = Column(INTEGER(11), primary_key=True)
    marque = Column(LONGTEXT)
    status = Column(String(255))
    type = Column(String(255))
    createddate = Column(DateTime)

class aboutus(models.Model):
    about = models.TextField(null=False, blank=False)
    status = models.CharField(max_length=255, null=True, blank=True)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'idpwoaaboutus' 

class aboutUsTbl(Base):
    __tablename__ = 'idpwoaaboutus'

    id = Column(INTEGER(11), primary_key=True)
    about = Column(LONGTEXT)
    status = Column(String(255))
    createddate = Column(DateTime)

class contactform(models.Model):
    fname = models.CharField(max_length=255, null=True, blank=True)
    lname = models.CharField(max_length=255, null=True, blank=True)
    district = models.CharField(max_length=255, null=True, blank=True)
    subject = models.TextField(null=False, blank=False)
    status = models.CharField(max_length=255, null=True, blank=True)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'idpwoacontactform' 

class contactFormTbl(Base):
    __tablename__ = 'idpwoacontactform'

    id = Column(INTEGER(11), primary_key=True)
    fname = Column(String(255))
    lname = Column(String(255))
    district = Column(String(255))
    subject = Column(LONGTEXT)
    status = Column(String(255))
    createddate = Column(DateTime)

class gallery(models.Model):
    imageurl = models.TextField(null=False, blank=False)
    status = models.CharField(max_length=255, null=True, blank=True)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'idpwoagallery' 

class galleryTbl(Base):
    __tablename__ = 'idpwoagallery'

    id = Column(INTEGER(11), primary_key=True)
    imageurl = Column(LONGTEXT)
    status = Column(String(255))
    createddate = Column(DateTime)

class userid(models.Model):
    district = models.CharField(max_length=255, null=False, blank=False)
    idno = models.CharField(max_length=255, null=False, blank=False)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'idpwoauserid' 
        
class userIdTbl(Base):
    __tablename__ = 'idpwoauserid'

    id = Column(INTEGER(11), primary_key=True)
    district = Column(String(255))
    idno = Column(String(255))
    createddate = Column(DateTime)

class ratechart(models.Model):
    file = models.TextField(null=False, blank=False)
    district = models.CharField(max_length=255, null=False, blank=False)
    description = models.TextField(null=False, blank=False)
    status = models.CharField(max_length=255, null=False, blank=False)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'idpwoaratechart' 
        
class rateChartTbl(Base):
    __tablename__ = 'idpwoaratechart'

    id = Column(INTEGER(11), primary_key=True)
    file = Column(LONGTEXT)
    district = Column(String(255))
    description = Column(LONGTEXT)
    status =  Column(String(255))
    createddate = Column(DateTime)

class upcommingevents(models.Model):
    imageurl = models.TextField(null=False, blank=False)
    eventname = models.CharField(max_length=255, null=False, blank=False)
    status = models.CharField(max_length=255, null=False, blank=False)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'idpwoaupcommingevents' 
        
class upcommingEvents(Base):
    __tablename__ = 'idpwoaupcommingevents'

    id = Column(INTEGER(11), primary_key=True)
    imageurl = Column(LONGTEXT)
    eventname = Column(String(255))
    status =  Column(String(255))
    createddate = Column(DateTime)

# class accountstbl(models.Model):
#     amountrecieved = models.CharField(max_length=255, null=False, blank=False)
#     paidby = models.CharField(max_length=255, null=False, blank=False)
#     description = models.CharField(max_length=255, null=True, blank=True)
#     paymenttype = models.CharField(max_length=255, null=False, blank=False)
#     collecteddate = models.CharField(max_length=255, null=False, blank=False)
#     month =  models.CharField(max_length=255, null=True, blank=True)
#     collectedby = models.CharField(max_length=255, null=False, blank=False)
#     position = models.CharField(max_length=255, null=False, blank=False)
#     fileurl = models.TextField(null=True, blank=True)
#     type = models.CharField(max_length=255, null=False, blank=False)
#     status = models.CharField(max_length=255, null=False, blank=False)
#     createddate = models.DateTimeField(auto_now=True)
#     class Meta:
#         db_table = 'idpwoaaccountstbl' 
        

# class accountsTbl(Base):
#     __tablename__ = 'idpwoaaccountstbl'
    
#     id = Column(INTEGER(11), primary_key=True)
#     amountrecieved = Column(String(255))
#     paidby = Column(String(255))
#     description = Column(String(255))
#     paymenttype = Column(String(255))
#     collecteddate = Column(String(255))
#     month = Column(String(255))
#     collectedby = Column(String(255))
#     position = Column(String(255))
#     fileurl = Column(LONGTEXT)
#     type = Column(String(255))
#     status = Column(String(255))
#     createddate = Column(DateTime)

class visitorstbl(models.Model):
    count = models.TextField(null=False, blank=False)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'idpwoavisitorstbl' 
        
class VisitorsDtl(Base):
    __tablename__ = 'idpwoavisitorstbl'

    id = Column(INTEGER(11), primary_key=True)
    count = Column(LONGTEXT)
    createddate = Column(DateTime)
    
class registrationfeetbl(models.Model):
    fee = models.CharField(max_length=255, null=False, blank=False)
    status = models.CharField(max_length=255, null=False, blank=False)
    type = models.CharField(max_length=255, null=False, blank=False)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'feetbl' 
        
class RegistrationDtl(Base):
    __tablename__ = 'feetbl'

    id = Column(INTEGER(11), primary_key=True)
    fee = Column(String(255))
    status = Column(String(255))
    type = Column(String(255))
    createddate = Column(DateTime)    
    
    
class payamenttbl(models.Model):
    paymentid = models.CharField(max_length=200, null=False, blank=False)
    orderid = models.CharField(max_length=20, null=False, blank=False)
    signature = models.TextField(null=False, blank=False)
    packageid = models.CharField(max_length=20, null=False, blank=False)
    amount = models.CharField(max_length=20, null=False, blank=False)
    uid = models.CharField(max_length=200, null=False, blank=False)
    profileid = models.CharField(max_length=20, null=False, blank=False)
    status = models.CharField(max_length=20, null=False, blank=False)
    type = models.CharField(max_length=20, null=False, blank=False)
    dateofpurchase = models.CharField(max_length=20, null=True, blank=True)
    duration = models.CharField(max_length=20, null=True, blank=True)
    paymenttype = models.CharField(max_length=20, null=False, blank=False)
    receipturl = models.TextField(null=True, blank=True)
    receiptdate = models.CharField(max_length=20, null=True, blank=True)
    receiptno = models.CharField(max_length=20, null=True, blank=True)
    createddate = models.DateField(auto_now=True)
    class Meta:
        db_table = 'payamenttbl'


class PaymentDtl(Base):
    __tablename__ = 'payamenttbl'
    
    id = Column(INTEGER, primary_key=True, autoincrement=True)
    paymentid = Column(String(200), nullable=False)
    orderid = Column(String(20), nullable=False)
    signature = Column(LONGTEXT)
    packageid = Column(String(20), nullable=False)
    amount = Column(String(20), nullable=False)
    uid = Column(String(200), nullable=False)
    profileid = Column(String(20), nullable=False)
    status = Column(String(20), nullable=False)
    type = Column(String(20), nullable=False)
    paymenttype = Column(String(20), nullable=False)
    dateofpurchase = Column(String(20), nullable=True)
    duration = Column(String(20), nullable=True)
    receipturl = Column(LONGTEXT)
    receiptdate =  Column(String(20), nullable=False)
    receiptno =  Column(String(20), nullable=False)
    createddate = Column(DateTime)
    

class formsandcirculars(models.Model):
    imageurl = models.TextField(null=False, blank=False)
    circularname = models.TextField(null=False, blank=False)
    status = models.CharField(max_length=255, null=True, blank=True)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'formsandcircularstbl' 

class formsandcircularsTbl(Base):
    __tablename__ = 'formsandcircularstbl'

    id = Column(INTEGER(11), primary_key=True)
    imageurl = Column(LONGTEXT)
    circularname = Column(LONGTEXT)
    status = Column(String(255))
    createddate = Column(DateTime)
    
class latestupdates(models.Model):
    imageurl = models.TextField(null=False, blank=False)
    linkurl =  models.TextField(null=False, blank=False)
    heading = models.TextField(null=False, blank=False)
    content = models.TextField(null=False, blank=False)
    status = models.CharField(max_length=255, null=True, blank=True)
    createddate = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'latestupdatestbl' 

class latestupdatesTbl(Base):
    __tablename__ = 'latestupdatestbl'

    id = Column(INTEGER(11), primary_key=True)
    imageurl = Column(LONGTEXT)
    linkurl = Column(LONGTEXT)
    heading = Column(LONGTEXT)
    content = Column(LONGTEXT)
    status = Column(String(255))
    createddate = Column(DateTime)
  
    
class dbbackuptbl(models.Model):
    filename = models.CharField(max_length=250,null=True)
    date = models.CharField(max_length=250,null=True) 
    backupedid = models.CharField(max_length=250,null=True)
    status =  models.CharField(max_length=250,null=True)
    createddate = models.CharField(max_length=250,null=True) 
    
    class Meta:
        db_table = "databasebackup_tbl" 
    
class dbbackupDtl(Base):
    __tablename__ = 'databasebackup_tbl'
    
    id = Column(INTEGER(11), primary_key=True)
    filename = Column(String(250))
    date = Column(String(250)) 
    backupedid = Column(String(250))
    status =  Column(String(250)) 
    createddate = Column(String(250)) 
    
    
class automaticbackuptbl(models.Model):
    filename = models.CharField(max_length=250,null=True)
    date = models.CharField(max_length=250,null=True) 
    backupedid = models.CharField(max_length=250,null=True)
    status =  models.CharField(max_length=250,null=True)
    createddate = models.CharField(max_length=250,null=True) 
    
    class Meta:
        db_table = "automaticdbbackup_tbl" 
    
class automaticbackupDtl(Base): 
    __tablename__ = 'automaticdbbackup_tbl'
    
    id = Column(INTEGER(11), primary_key=True)
    filename = Column(String(250))
    date = Column(String(250)) 
    backupedid = Column(String(250))
    status =  Column(String(250)) 
    createddate = Column(String(250)) 
    
   