from django.conf import settings
from fmls_api.models import Data
from fmls_api.management.fmlsUpdater import bridgeApi

def createRequest(FMLS_SECRET_KEY, countryName):
    url = 'https://api.bridgedataoutput.com/api/v2/OData/fmls/Properties'
    access_token = FMLS_SECRET_KEY
    statusFilter = "$filter=(CountyOrParish eq '"+countryName+"') and (StandardStatus eq 'Active' or StandardStatus eq 'Pending' or StandardStatus eq 'Hold' or StandardStatus eq 'Active Under Contract')"
    # statusFilter = "$filter=StandardStatus eq '"+countryName+"'"
    # statusFilter = "$filter=(FMLS_MlsPropertyType eq 'Residential Attached' or FMLS_MlsPropertyType eq 'Residential Detached') and (StandardStatus eq '"+countryName+"')"

    apiUrl ="{0}?access_token={1}&{2}&$top=200".format(
        url,
        access_token,
        statusFilter)

    sendRequest(apiUrl)    
    # apiUrl = "https://api.bridgedataoutput.com/api/v2/OData/fmls/Properties?access_token=dfc72dc837e59be168de5b27086a5085&$top=20&$filter=CountyOrParish eq 'Fulton'"

def sendRequest(apiUrl):
    response = bridgeApi._get_forecast_json("GET", apiUrl)

    if(response.status_code==200):
        getData = response.json()
        if getData is not None:
            try:
                for apiData in getData['value']:
                    status = apiData['StandardStatus'] if "StandardStatus" in apiData and apiData['StandardStatus'] else 'Expired'
                    listing_display = apiData['InternetEntireListingDisplayYN'] if "InternetEntireListingDisplayYN" in apiData and apiData['InternetEntireListingDisplayYN'] else 'False'
                    address_display = apiData['InternetAddressDisplayYN'] if "InternetAddressDisplayYN" in apiData and apiData['InternetAddressDisplayYN'] else 'False'
                    obj, created = Data.objects.update_or_create(fmls_listing_no=apiData['ListingKeyNumeric'], defaults={'fmls_listing_no': apiData['ListingKeyNumeric'], 'county_name':apiData['CountyOrParish'], 'status':status, 'listing_display':listing_display, 'address_display':address_display, 'json_value':apiData})
                if "@odata.nextLink" in getData:
                    sendRequest(getData['@odata.nextLink'])
            except:
                print("error")
                pass

def _assign_country():
    FMLS_SECRET_KEY = settings.FMLS_SECRET_KEY
    countries = ["Cherokee", "Fulton", "Douglas", "Clayton", "Cobb", "Dekalb", "Fayette", "Forsyth", "Gwinnett", "Henry", "Paulding", "Rockdale"]
    # countries = ["Active", "Pending", "Hold", "Active Under Contract"]
    for country in countries:
        createRequest(FMLS_SECRET_KEY, country)