from flask import jsonify, 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


# 버퍼링 발생지점
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):
        """경로를 받습니다"""
        not_in_list=[]
        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


