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


class NudgesQuery(BaseQuery):
    def get_details_by_id(self, nudge_id):
        return self.filter(Nudges.id == nudge_id).first()

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

    def get_active_nudge(self):
        return self.filter(Nudges.status == Nudges.Status.ACTIVE).all()


class Nudges(TimestampMixin, db.Model):
    __tablename__ = "nudges"
    query_class = NudgesQuery

    class Status:
        ACTIVE = "active"
        INACTIVE = "inactive"

    class Frequency:
        ONCE = "once"
        DAILY = "daily"
        WEEKLY = "weekly"
        MONTHLY = "monthly"

    class Time:
        USER_TIME_SLOT = "users-time-slot"

    id = db.Column(db.Integer, primary_key=True)
    group_version_id = db.Column(db.Integer, db.ForeignKey("group_version.id"))
    name = db.Column(db.String(50))
    deployment_date = db.Column(db.Date)
    deployment_time = db.Column(db.String(20))
    nudge_repeat_frequency = db.Column(db.String(20))
    content_id = db.Column(db.Integer)
    content_version_id = db.Column(db.Integer)
    status = db.Column(db.String(30))

    group_version = db.relationship(
        "GroupVersion",
        backref="nudges",
        primaryjoin="GroupVersion.id == Nudges.group_version_id",
    )
