"""
Read file into texts and calls.
It's ok if you don't understand how to read files.
"""
import csv

with open('/Users/shehryarbajwa/algorithms-challenges/texts.csv', 'r') as f:
    reader = csv.reader(f)
    texts = list(reader)

with open('/Users/shehryarbajwa/algorithms-challenges/calls.csv', 'r') as f:
    reader = csv.reader(f)
    calls = list(reader)

"""
TASK 3:
(080) is the area code for fixed line telephones in Bangalore.
Fixed line numbers include parentheses, so Bangalore numbers
have the form (080)xxxxxxx.)

Part A: Find all of the area codes and mobile prefixes called by people
in Bangalore.
 - Fixed lines start with an area code enclosed in brackets. The area
   codes vary in length but always begin with 0.
 - Mobile numbers have no parentheses, but have a space in the middle
   of the number to help readability. The prefix of a mobile number
   is its first four digits, and they always start with 7, 8 or 9.
 - Telemarketers' numbers have no parentheses or space, but they start
   with the area code 140.

Print the answer as part of a message:
"The numbers called by people in Bangalore have codes:"
 <list of codes>
The list of codes should be print out one per line in lexicographic order with no duplicates.

Part B: What percentage of calls from fixed lines in Bangalore are made
to fixed lines also in Bangalore? In other words, of all the calls made
from a number starting with "(080)", what percentage of these calls
were made to a number also starting with "(080)"?

Print the answer as a part of a message::
"<percentage> percent of calls from fixed lines in Bangalore are calls
to other fixed lines in Bangalore."
The percentage should have 2 decimal digits
"""

"""Check if the number belongs to Bangalore"""
def numberFromBangalore(num):
  isFromBangalore = num.startswith('(080)')
  return isFromBangalore

"""Check area codes"""
def checkAreacodes(num):
  if num.startswith('('):
    fixedLine = num.split(')')[0].strip('()')
    return fixedLine

  if num.find(' ') and num[0] == '7' or num[0] == '8' or num[0] == '9':
    return num[0:4]

  if num.startswith('140'):
    return num.startswith('140')
  
  

"""Keep track of local calls to Bangalore numbers and all other calls"""
count_bangalore_calls = 0
count_all_calls = 0
areaCodesList = []

for call in calls:
  if numberFromBangalore(call[0]):
    count_all_calls += 1
    get_area_codes = checkAreacodes(call[1])
    if get_area_codes not in areaCodesList:
      areaCodesList.append(get_area_codes)
    if numberFromBangalore(call[1]):
      count_bangalore_calls += 1

areaCodesList.sort()

print('The numbers called by people in Bangalore have codes:')
for code in areaCodesList:
  print(code)

percentage = ((count_bangalore_calls / count_all_calls) * 100)
print(f"{round(percentage,2)}  percent of calls from fixed lines in Bangalore are calls to other fixed lines in Bangalore.")

