import random
import string

def PrintCardInfo(card):
	print("Owner's Name: " + card.account.name)
	print("Owner's Surname: " + card.account.surname)
	print("Card's Number: " + card.number)
	print("Card's Type: " + card.type)
	print("Card's PIN: " + card.pin)

def VerifyInvalidCard(card):
	if card.type not in ["ATM", "Credit", "Prepaid"]:
		return True
	return False

def VerifyOwner(card):
	inputPin = input("Enter PIN for this card, please: ")
	if inputPin == card.pin:
		card.wrongCounter = 0
		return True
	else:
		card.wrongCounter += 1
		if card.wrongCounter == 3:
			card.wrongCounter = 0
			card.blocked = True
			print("You've entered wrong PIN three times. This card will be blocked.")
			return False
		continueAnswer = input("Do you want to try again? (Y/N): ")
		if continueAnswer in ["Y", "y", "Yes", "yes"]:
			VerifyOwner(card)
		else:
			return False

def WithdrawMoney(amount, account):
	if amount > account.credit:
		print("You dont't have enough money on your account")
		return 0
	if amount%10 != 0:
		print("Enter multiple of 10")
		return 0
	account.subCredit(amount)
	out = ""
	while amount >= 200:
		amount -= 200 
		out = out + "200 "
	while amount >= 100:
		amount -= 100 
		out = out + "100 "
	while amount >= 50:
		amount -= 50 
		out = out + "50 "
	while amount >= 20:
		amount -= 20 
		out = out + "20 "
	while amount >= 10:
		amount -= 10 
		out = out + "10 "
	print (out)
	return 1

def GeneratePrepaidPhoneCode(amount, operator, account):
	if amount > account.credit:
		print("You dont't have enough money on your account")
		return 0
	# print(operatorAPI(amount, operator))
	print(''.join(random.choices(string.ascii_uppercase + string.digits, k=14)))
	account.subCredit(amount)
	return 1

def DepositMoney(notes, account):
	amount = 0
	for note in notes:
		amount += int(note)
	account.addCredit(amount)
	return 1

def CheckAccount(account):
	print("Stored money: " + str(account.credit))
	return 1

def TransferMoney(accountFrom, accountTo, amount):
	if amount > accountFrom.credit:
		print("You dont't have enough money on your account")
		return 0
	accountFrom.subCredit(amount)
	accountTo.addCredit(amount)
	return 1