Esempio n. 1
0
def determineMessage(receivedMessage: str, phoneNum: str):
    receivedMessage = receivedMessage.strip()
    if receivedMessage.lower() == 'new':
        groupNum = generateCode()
        if not DataBase.MakeNewGroup(phoneNum, groupNum):
            messageToSend = 'You are already in a group. Please check out that group before you create a new one.'
            send_sms(messageToSend, phoneNum)
            return 'ERRORONNEW'
        messageToSend = 'You have successfully created a group. The code of the group is ' + str(groupNum) + '. Share this code with your friends and have them send it to (949) 835-5128 within 10 minutes.'
        send_sms(messageToSend, phoneNum)
        return groupNum
    elif (typeisint(receivedMessage) and len(receivedMessage) == 6):
        if DataBase.AddMember(phoneNum, int(receivedMessage)):
            messageToSend = 'You have successfully entered the group ' + str(receivedMessage) + '. To request money from this group, simply reply the amount of it.'
        else:
            messageToSend = 'Sorry, the group code you entered ({}) is invalid.'.format(receivedMessage)
        send_sms(messageToSend, phoneNum)
    elif re.match(r'^\$?(\d+(\.\d{1,2})?)$', receivedMessage) != None:
        messageToSend = 'We have got your split request of ${} in this group. All the friends in this group will be notified.'.format(receivedMessage)
        DataBase.AddTrans(phoneNum, re.match(r'^\$?(\d+(\.\d{1,2})?)$', receivedMessage).group(1))
        send_sms(messageToSend, phoneNum)
        receiver = DataBase.getMembers(phoneNum)
        receiver.remove(phoneNum)
        comfirm = '{} just requested a ${} bill split from the group. Reply \'N\' within 10 minutes to withdraw from the split.'.format(phoneNum, receivedMessage)
        for num in receiver:
            send_sms(comfirm, num)
    elif re.match(r'^\d+[+\-\*//]\d+([+\-\*//]\d+)*$',receivedMessage) != None:
        total = str(round(eval(receivedMessage), 2))
        messageToSend = 'We have got your split request of ${} in this group. All the friends in this group will be notified.'.format(total)
        DataBase.AddTrans(phoneNum, total)
        send_sms(messageToSend, phoneNum)
        receiver = DataBase.getMembers(phoneNum)
        receiver.remove(phoneNum)
        comfirm = '{} just requested a ${} bill split from the group. Reply \'N\' within 10 minutes to withdraw from the split.'.format(phoneNum, total)
        for num in receiver:
            send_sms(comfirm, num)
    elif receivedMessage.lower() == 'n':
        messageToSend = 'You have successfully quit from the last bill split.'
        if DataBase.Deny(phoneNum):
            send_sms(messageToSend, phoneNum)
        else:
            messageToSend = 'The 10-minute time limit has been exeeded and you are unable to quit from the last bill split.'
            send_sms(messageToSend, phoneNum)
    elif receivedMessage.lower() == 'checkout':
        result = DataBase.summary(phoneNum)
        if result == False:
            messageToSend = 'Your check out request is not accepted: only the creater of the group ({}) can make the check out request.'.format(DataBase.getMaster(phoneNum))
            send_sms(messageToSend, phoneNum)
        else:
            for payer, topay in result.items():
                messageToSend = 'User {} need pay to follwing person(s):\n'.format(payer)
                for receiver, amount in topay.items():
                    messageToSend += '{}: ${}\n'.format(receiver, amount)
                send_sms(messageToSend, payer)
            DataBase.clear(phoneNum)
            messageToSend = 'Group Deleted. See you next time!'
            send_sms(messageToSend, phoneNum)
    else:
        messageToSend = 'We are unable to recognize this command. To request money from this group, reply the amount of it.'
        send_sms(messageToSend, phoneNum)