from flask import request
from flask_restx import Resource, Api, Namespace, fields
from navigation_model.model_trip import path_finder
import time
import numpy as np
import networkx

todos = {}
count = 1

not_in_list=[]


#trip = path_finder()



Trip = Namespace(
    name="trip",
    description="경로 노드를 받기위한 사용하는 API.",
)

trip_fields = Trip.model('Trip', {  # Model 객체 생성
    'path_start': fields.String(description='a Todo', required=True),'path_end' : fields.String(description='a Todo', required=True)
})



@Trip.route('/trip')
class TripPost(Resource):
    @Trip.expect(trip_fields)
    @Trip.response(201, 'Success', trip_fields)
    def post(self):
        """경로를 받습니다"""
        start_time=time.time()
        start = request.json['path_start']
        end = request.json['path_end']
        
        return {
            'nodes' : trip.get_trip(start,end),
            'start_point' : trip.get_dest(start),
            'end_point' : trip.get_dest(end)
            
            
        }, 201
@Trip.route('/trip2')
class TripPost(Resource):
    @Trip.expect(trip_fields)
    @Trip.response(201, 'Success', trip_fields)
    def post(self):
        """경로를 받습니다"""
        start_time=time.time()
        start_x = request.json['dest1_x']
        start_y = request.json['dest1_y']
        end = request.json['path_end']
        return {
            'nodes' : trip.get_trip_2(start_x,start_y,end,not_in_list),
            'start_point' : (start_x,start_y),
            'end_point' : trip.get_dest(end)
            
            
        }, 201


@Trip.route('/remove')
class removenodePost(Resource):
    def post(self):
        """경로를 받습니다"""
        gps_x = request.json['gps_x']
        gps_y = request.json['gps_y']
        trip.G.remove_node((float(gps_x),float(gps_y)))
        not_in_list.append((float(gps_x),float(gps_y)))
        
        return {
            "done" : "done"
        }, 201


