from requests import get
from .models import Location
from django.conf import settings
from .auth_utils import get_gmb_id

ACCESS_TOKEN_URI = settings.HOST_URI + '/token'


def get_all_location_ids():
    locations = Location.objects.only('location_id')
    ids = [loc.location_id for loc in locations]
    '''
    There is a location which we don't need to add into database.
    It is a Medical Billing Service, That's why it is nothing to do with review. 
    '''
    if '5397588228065547694' in ids:
        ids.remove('5397588228065547694')
    return ids


def populate_locations():
    access_token = get(ACCESS_TOKEN_URI).text
    user, gmb_id = get_gmb_id()
    url = 'https://mybusiness.googleapis.com/v4/accounts/' + gmb_id + '/locations'
    headers = {
        'authorization': 'Bearer ' + access_token,
        'content-type': 'application/json'
    }
    res = get(url, headers=headers).json()
    locations = res['locations']
    for loc in locations:
        # loc['name'] = 'accounts/103266181421855655295/locations/8916258876770296726'
        loc_id = loc['name'].split('/')[-1]
        location_ids = get_all_location_ids()
        location_ids.append('5397588228065547694')
        if loc_id in location_ids:
            continue
        loc_name = loc['address']['locality']
        loc_website = loc['websiteUrl']
        loc_display = loc['primaryCategory']['displayName']
        location = Location.objects.create(location_id=loc_id, location_name=loc_name, website_url=loc_website, display_name=loc_display, owner=user)
        location.save()
