class EmailScheduleServer:
    def __init__(self, user, pw, admin, shopper=[]):
        self.id = "Mail Robot"
        self.admin = admin
        self.shopper = shopper
        self.datapath = sys.argv[0].rsplit("/", 1)[0]
        print "Datapath set to:", self.datapath
        self.memory = memory.Memory(self.datapath, "email_server")
        self.eh = EmailHelper()
        self.eh.setLoginData(user, pw)
        self.cart_send = False

    def saveMail(self, sender, body, date, sender_name):
        self.memory.insertData(date, [sender, body, sender_name])

    def checkForNewJobs(self):
        msgs = self.eh.fetchEmails(True)
        for msg in msgs:  # [from,subject,message body,date,attachmentname,sender_name]

            try:
                if msg[1] == "**newrobotjob":
                    if not self.memory.hasKey(msg[3]):
                        content = self.extractDataFromBody(msg[2])
                        if not self.eh.isAddressValid(content["receiver"]):
                            failmsg = ["FAIL: Job not added", "Invalid recepient address provided. Job skipped"]
                            self.sendFail(msg[0], *failmsg)
                        if content["message"] == "":
                            failmsg = ["FAIL: Job not added", "Message body seems to be empty"]
                            self.sendFail(msg[0], *failmsg)
                        else:  # everything seems fine
                            content["attachment"] = msg[4]
                            self.saveMail(msg[0], content, msg[3], msg[5])
                            self.sendConfirmation(msg[3])
                elif msg[1] == "**shopping":
                    self.updateShoppingCart(msg[0], msg[2])
                elif msg[1] == "**mask":
                    self.sendMask(msg[0])
                else:  # check for keywords in current jobs and send response
                    key = self.validKeywordFound(msg)
                    if not key is None:
                        data = self.memory.getData(key)
                        self.eh.sendMail(msg[5], data[0], data[1]["subject"], msg[2])
                        self.memory.removeData(key)
                    else:
                        print "unknown email received"
                        print "transfering to admin"
                        self.transferMessageToAdmin(msg)
                        print "msg", msg
                self.eh.deleteMailByDate(msg[3])
            except Exception, e:
                print "evaluating new email job failed!"
                print e