from datetime import date, datetime
import hashlib
from flask import jsonify, request
from models.User import User
from models.Token import Token
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

def Login():
    if request.method == 'POST':
        result = {'type':'error', 'message':'Email or password is incorrect'}
        queryData = request.json
        #queryData = request.form
        if ('email' in queryData) and ('password' in queryData):
            email = queryData['email'].strip()
            password = queryData['password'].strip()
            password = hashlib.md5(password.encode('utf-8')).hexdigest()
            userData = User.query.filter(User.email==email, User.password==password, User.is_deleted==0).first()
            if userData:
                token = datetime.now().strftime("%d%m%Y%H%M%S") +"_"+ str(userData.id)
                token = hashlib.md5(token.encode('utf-8')).hexdigest()
                userData = userData.serialize
                userData['token'] = token
                tokenExpire = db.session.query(Token).filter(Token.user_id==userData.get('id')).update({Token.is_deleted: 1})
                # db.session.commit()
                tokenEntry = Token(token=token, user_id=userData.get('id'), is_deleted=0)
                db.session.add(tokenEntry)
                db.session.commit()
                result =  {'type':'success', 'user':userData, 'message': 'User login success'}
        return jsonify(result)


def CheckUserLogin():
    if request.method == 'POST':
        result = {'type':'error', 'message':'Token is invalid'}
        queryData = request.json
        # queryData = request.form
        if 'token' in queryData and 'userId' in queryData:
            token = queryData['token']
            userId = queryData['userId']
            checkToken = Token.query.filter(Token.user_id==userId, Token.token==token, Token.is_deleted==0).first()
            if checkToken:
                checkToken = checkToken.serialize
                userData = User.query.get(checkToken.get('user_id'))
                userData = userData.serialize
                result =  {'type':'success', 'user':userData, 'message': 'User login success'}
        return jsonify(result)



