import v
from v import *

def no_load_departures(country, operator, station):
    import requests
    import datetime
    import urllib.request, json
    query = '''
    {
    stopPlace(id: \"''' + station + '''\") {
        id
        name
        estimatedCalls(numberOfDepartures: 40) {     
        realtime
        aimedArrivalTime
        aimedDepartureTime
        expectedArrivalTime
        expectedDepartureTime
        actualArrivalTime
        actualDepartureTime
        date
        forBoarding
        forAlighting
        destinationDisplay {
            frontText
        }
        quay {
            id
        }
        serviceJourney {
            journeyPattern {
            line {
                id
                name
                transportMode
            }
            }
        }
        }
    }
    }
    '''

    hdr = {
        'Cache-Control': 'no-cache',
        'Content-Type': 'application/json',
        'Tskylt': 'departure-board'
    }

    url = "https://api.entur.io/journey-planner/v3/graphql"
    response = requests.post(url, headers=hdr, data=json.dumps({'query': query}))
    out = response.text
    x = json.loads(out)

    #print(out["data"])
    
    #return
    results = []
    
    def convert_seconds_to_datetime(seconds):
      midnight = datetime.datetime.combine(datetime.date.today(), datetime.time(0, 0))
      result = midnight + datetime.timedelta(seconds=seconds)
      #x = str(datetime.datetime.now())
      #if x[11:13] == "00": pass
      result -= datetime.timedelta(hours=1)
      return result.strftime("%Y-%m-%dT%H:%M:%S")
    #print(x)
    x = x["data"]["stopPlace"]["estimatedCalls"]
        
    for departures in x:
          
          #print(departures)
      
     # try:
          name = departures["destinationDisplay"]["frontText"]
          line = departures["serviceJourney"]["journeyPattern"]["line"]["id"].split("Line:")[1]
          t_type = departures["serviceJourney"]["journeyPattern"]["line"]["transportMode"]
          _time = departures["expectedDepartureTime"][:19]
          """name = x["stopPlace"]["estimatedCalls"][0]["destinationDisplay"]["frontText"]
          
          time = x["stopPlace"]["estimatedCalls"][0]["expectedDepartureTime"][:19]
          line = x["stopPlace"]["estimatedCalls"][0]["serviceJourney"]["journeyPattern"]["line"]["id"].split("Line:")[1]
          t_type = x["stopPlace"]["estimatedCalls"][0]["serviceJourney"]["journeyPattern"]["line"]["transportMode"]"""
          print(name, line, t_type, _time)
          
          
          new_record = {"destination" : name,
                      "direction_code" : "0",
                      "expected" : _time,
                      "line" : {"id": line, "transport_mode":t_type.upper().replace("RAIL", "TRAIN").replace("WATER", "FERRY").replace("FLYTOG", "TRAIN").replace("FLYBUSS", "BUS")},
                      "deviations": []}
          results.append(new_record)
          
    #  except Exception as e: 
    #      print("Error: ", e)
    #      continue
    print(results)
    if len(results): 
        v.operators[country][operator][station]["departures"] = results
        return results

#no_load_departures("no","no","NSR:StopPlace:4024")

def no_lookup(country, operator, station):
    import requests
    import json
    url = "https://api.entur.io/geocoder/v1/autocomplete?text="+station
    response = requests.get(url)
    out = response.text
    x = json.loads(out)
    x = x["features"]
    search_list = {}
    for i in x:
        #try:
        if ":StopPlace:" in i["properties"]["id"]:
            #print(i["properties"]["id"])
            #print(i["properties"]["name"])
            id = i["properties"]["id"]
            kommun = i["properties"]["county"]
            name = i["properties"]["name"]
            try: 
                if name in search_list:
                    name = str(name) + " " + kommun #" 2"
                    print(name)
                    #name = str(name) + " 2"
            except: pass
            search_list[name] = id
        #except: pass
    return search_list
    
#print(no_lookup("no","no","bergen"))