from dostadmin import db
from dostadmin.mixins import TimestampMixin
from flask_sqlalchemy.query import Query as BaseQuery


class ActivitiesQuery(BaseQuery):
    def get_activities_by_id(self, id):
        return self.filter(Activities.id == id).first()

    def get_all_activities(self):
        return self.all()


class Activities(TimestampMixin, db.Model):
    __tablename__ = "activities"
    query_class = ActivitiesQuery

    id = db.Column(db.Integer, primary_key=True)
    date_of_meeting = db.Column(db.Date, nullable=False)
    activity_level = db.Column(db.String(50), nullable=False)
    state = db.Column(db.String(50), nullable=False)
    district_name = db.Column(db.String(50))
    block_name = db.Column(db.String(50))
    sector_name = db.Column(db.String(50))
    centre_name = db.Column(db.String(50))
    panchayat_name = db.Column(db.String(50))
    school_name = db.Column(db.String(50))
    peeo_uceeo_school = db.Column(db.String(50))
    activity_type = db.Column(db.String(50), nullable=False)
    stakeholders_type = db.Column(db.String(50))
    other_stakeholders_type = db.Column(db.String(50))
    channel_type = db.Column(db.String(50))
    engagement_type = db.Column(db.String(50))
    other_engagement_type = db.Column(db.String(50))
    follow_up_through = db.Column(db.String(50))
    spd = db.Column(db.String(50))
    ceo = db.Column(db.String(50))
    aws = db.Column(db.String(50))
    aww = db.Column(db.String(50))
    awh = db.Column(db.String(50))
    balaww = db.Column(db.String(50))
    crc = db.Column(db.String(50))
    brc = db.Column(db.String(50))
    ssadc = db.Column(db.String(50))
    dpo = db.Column(db.String(50))
    cdpo = db.Column(db.String(50))
    beo = db.Column(db.String(50))
    teacher = db.Column(db.String(50))
    number_of_mt = db.Column(db.String(50))
    number_of_peeo_uceeo_cbeo = db.Column(db.String(50))
    home_onboarding = db.Column(db.String(50))
    centre_onboarding = db.Column(db.String(50))
    community_engagement_onboarded = db.Column(db.String(50))
    numbers_of_centers_participated = db.Column(db.String(50))
    workshop_onboarded_caregivers = db.Column(db.String(50))
    workshop_number_of_centre_participated = db.Column(db.String(50))
    notes = db.Column(db.String(1000))
    updated_by = db.Column(db.String(50), nullable=False)
    mother_code = db.Column(db.String(50))
    father_code = db.Column(db.String(50))
    child_code = db.Column(db.String(50))

    family_metrics = db.relationship(
        "FamilyMetrics", backref="activities", lazy="dynamic"
    )
