from werkzeug.security import check_password_hash
from flask_login import UserMixin


class User(UserMixin):
    def __init__(self, id, username, password, fullname="",
                 takeProfit1_Percen=0, stopLoss1_Percen=0,
                 takeProfit2_Percen=0, stopLoss2_Percen=0,
                 takeProfit3_Percen=0, stopLoss3_Percen=0,
                 takeProfit4_Percen=0, stopLoss4_Percen=0,
                 takeProfit5_Percen=0, stopLoss5_Percen=0,
                 takeProfit6_Percen=0, stopLoss6_Percen=0,
                 takeProfit7_Percen=0, stopLoss7_Percen=0,
                 takeProfit8_Percen=0, stopLoss8_Percen=0,
                 takeProfit9_Percen=0, stopLoss9_Percen=0,
                 takeProfit10_Percen=0, stopLoss10_Percen=0,

                 takeProfit1_Dollar=0, stopLoss1_Dollar=0,
                 takeProfit2_Dollar=0, stopLoss2_Dollar=0,
                 takeProfit3_Dollar=0, stopLoss3_Dollar=0,
                 takeProfit4_Dollar=0, stopLoss4_Dollar=0,
                 takeProfit5_Dollar=0, stopLoss5_Dollar=0,
                 takeProfit6_Dollar=0, stopLoss6_Dollar=0,
                 takeProfit7_Dollar=0, stopLoss7_Dollar=0,
                 takeProfit8_Dollar=0, stopLoss8_Dollar=0,
                 takeProfit9_Dollar=0, stopLoss9_Dollar=0,
                 takeProfit10_Dollar=0, stopLoss10_Dollar=0,

                 offset=0, contracts=0, userPlan=1, start_trial="") -> None:

        self.id = id
        self.username = username
        self.password = password
        self.fullname = fullname
        self.userPlan = userPlan

        self.takeProfit1_Percen = takeProfit1_Percen
        self.stopLoss1_Percen = stopLoss1_Percen
        self.takeProfit1_Dollar = takeProfit1_Dollar
        self.stopLoss1_Dollar = stopLoss1_Dollar

        self.takeProfit2_Percen = takeProfit2_Percen
        self.stopLoss2_Percen = stopLoss2_Percen
        self.takeProfit2_Dollar = takeProfit2_Dollar
        self.stopLoss2_Dollar = stopLoss2_Dollar

        self.takeProfit3_Percen = takeProfit3_Percen
        self.stopLoss3_Percen = stopLoss3_Percen
        self.takeProfit3_Dollar = takeProfit3_Dollar
        self.stopLoss3_Dollar = stopLoss3_Dollar

        self.takeProfit4_Percen = takeProfit4_Percen
        self.stopLoss4_Percen = stopLoss4_Percen
        self.takeProfit4_Dollar = takeProfit4_Dollar
        self.stopLoss4_Dollar = stopLoss4_Dollar

        self.takeProfit5_Percen = takeProfit5_Percen
        self.stopLoss5_Percen = stopLoss5_Percen
        self.takeProfit5_Dollar = takeProfit5_Dollar
        self.stopLoss5_Dollar = stopLoss5_Dollar

        self.takeProfit6_Percen = takeProfit6_Percen
        self.stopLoss6_Percen = stopLoss6_Percen
        self.takeProfit6_Dollar = takeProfit6_Dollar
        self.stopLoss6_Dollar = stopLoss6_Dollar

        self.takeProfit7_Percen = takeProfit7_Percen
        self.stopLoss7_Percen = stopLoss7_Percen
        self.takeProfit7_Dollar = takeProfit7_Dollar
        self.stopLoss7_Dollar = stopLoss7_Dollar

        self.takeProfit8_Percen = takeProfit8_Percen
        self.stopLoss8_Percen = stopLoss8_Percen
        self.takeProfit8_Dollar = takeProfit8_Dollar
        self.stopLoss8_Dollar = stopLoss8_Dollar

        self.takeProfit9_Percen = takeProfit9_Percen
        self.stopLoss9_Percen = stopLoss9_Percen
        self.takeProfit9_Dollar = takeProfit9_Dollar
        self.stopLoss9_Dollar = stopLoss9_Dollar

        self.takeProfit10_Percen = takeProfit10_Percen
        self.stopLoss10_Percen = stopLoss10_Percen
        self.takeProfit10_Dollar = takeProfit10_Dollar
        self.stopLoss10_Dollar = stopLoss10_Dollar
        self.offset = offset
        self.contracts = contracts
        self.start_trial = start_trial

    @classmethod
    def check_password(self, hashed_password, password):
        return check_password_hash(hashed_password, password)
