import json
import sys
import base64
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from __config import CONFIG
from __mySqlConnector import MYSQLCONNECTOR
from datetime import datetime, timezone, timedelta




class MAILCLIENTHELPER():

    def __init__(self, inputData):
        inputData = json.loads( base64.b64decode(inputData) ) 
        self.identifier = inputData["identifier"]
        self.textMsg = inputData["textMsg"]
        self.date = CONFIG.formatted_date

        self.myConnector = MYSQLCONNECTOR()
        self.myConnector.createMailTable()

        self.debug = ''

    def isTimeWithinTradingTime(self):

        ist_timezone = timezone(timedelta(hours=5, minutes=30))
        now_ist = datetime.now(ist_timezone)

        start_time = datetime(year=now_ist.year, month=now_ist.month, day=now_ist.day, hour=9, minute=15, tzinfo=ist_timezone)
        end_time = datetime(year=now_ist.year, month=now_ist.month, day=now_ist.day, hour=15, minute=30, tzinfo=ist_timezone)

        if start_time <= now_ist <= end_time:
            return True
        else:
            return False


    def sendMail(self):

        if not self.isTimeWithinTradingTime():
            return 
        
        try:
            self.myConnector.addIdentifierToMailTable(self.identifier)
        except:
            #duplicate entry; avoid sending mail
            return
        
        server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
        server.login(CONFIG.mailId, CONFIG.mailPassword)

        msg = MIMEMultipart()
        msg['From'] = CONFIG.mailId
        msg['To'] = ', '.join(CONFIG.rcvMailID)
        msg['Subject'] = self.textMsg

        msg.attach(MIMEText(self.textMsg, 'plain'))  # Change to 'html' for HTML content
        server.sendmail(CONFIG.mailId, CONFIG.rcvMailID, msg.as_string())
        server.quit()
        

    def getDebug(self):
        return str(self.debug)



if __name__== "__main__":

    returnDict = {}
    returnDict['status'] = 'OK'
    returnDict['remarks'] = ''

    try:
        helper = MAILCLIENTHELPER(sys.argv[1])
    except Exception as e:
        returnDict['status'] = 'KO'
        returnDict['remarks'] = str(e)
        print (json.dumps(returnDict))
        sys.exit()

    try:
        helper.sendMail()
    except Exception as e:
        returnDict['status'] = 'KO'
        returnDict['remarks'] = str(e) + ' ' + helper.getDebug()

    print (json.dumps(returnDict))


    