Beispiel #1
0
        public ActionResult ShortPath([FromServices] ICidadeService cidadeService, [FromServices] IFronteiraService fronteiraService, int inicio, int final)
        {
            var cidadeInicio = cidadeService.GetById(inicio).Result;

            if (cidadeInicio == null)
            {
                return(NotFound(new { success = false, msg = "Cidade inicial não informada" }));
            }

            var cidadeFim = cidadeService.GetById(final).Result;

            if (cidadeInicio == null)
            {
                return(NotFound(new { success = false, msg = "Cidade final não informada" }));
            }

            var vertices   = cidadeService.GetAll().Result.ToArray();
            var fronteiras = fronteiraService.GetAll().Result.ToArray();
            var edges      = new List <Tuple <Cidade, Cidade> >();

            foreach (var fronteira in fronteiras)
            {
                var cidade1 = cidadeService.GetById(fronteira.Cidade1);
                var cidade2 = cidadeService.GetById(fronteira.Cidade2);
                edges.Add(Tuple.Create(cidade1.Result, cidade2.Result));
            }

            // var grafo = new Graph<int>(vertices, edges.ToArray());
            var grapho       = new Graph <Cidade>(vertices, edges);
            var menorCaminho = BuscaMenorCaminho.ShortestPathFunction(grapho, cidadeInicio);

            // var menorCaminho = BuscaMenorCaminho.ShortestPathFunction(grafo, inicio);
            return(Json(new { result = _mapper.Map <IEnumerable <CidadeViewModel> >(menorCaminho(cidadeFim)) }));
            // return Json(new { result = menorCaminho(final) });
        }
Beispiel #2
0
 public CidadeService(IRepositoryBase <Cidade> repository, ICidadeRepository cidadeRepository,
                      IFronteiraService fronteiraService) : base(repository)
 {
     _cidadeRepositoy  = cidadeRepository;
     _fronteiraService = fronteiraService;
 }
Beispiel #3
0
 public async Task <IEnumerable <Fronteira> > GetAll([FromServices] IFronteiraService fronteiraService)
 {
     return(await fronteiraService.GetAll());
 }