public PartialViewResult CalcularCusto(string id) { ViewBag.Title = Resources.MapaController_HttpGet_Action_CalcularCusto_ViewBag_Title; //"Calcular custo para o trajeto:" var request = new EncontrarMapaPorRequest() { Mapa = new MapaDto() { Id = id } }; var response = _mapaServices.EncontrarMapaPor(request); if (response.Success) { ViewBag.MessageType = "alert-warning"; ViewBag.Message = Resources.MapaController_HttpGet_Action_CalcularCusto_ViewBag_Message;//"Utilize esta ferramenta para calcular o menor trajeto e seu custo."; var origens = response.Mapa.Rotas.ConvertToListRotaOrigemViewMode(); var destinos = response.Mapa.Rotas.ConvertToListRotaDestinoViewMode(); IFormatProvider culture = Thread.CurrentThread.CurrentCulture; var model = new CalculoCustoViewModel() { Id = id, NomeMapa = response.Mapa.NomeMapa, Origens = origens, Destinos = destinos, AutonomiaVeiculo = (0m).ToString("n", culture), ValorCombustivel = (0m).ToString("n", culture), }; return(PartialView("CalcularCustoPartialView", model)); } else { ViewBag.MessageType = "alert-danger"; ViewBag.Message = response.Message; return(PartialView("SucessoPartialView")); } }
public PartialViewResult CalcularCusto(CalculoCustoViewModel model, FormCollection forms) { ViewBag.Title = Resources.MapaController_HttpPost_Action_CalcularCusto_ViewBag_Title;//"Calculadora de Rota e Custo:"; model.Origem = forms["Origens"]; model.Destino = forms["Destinos"]; //Fix to compromise the calculation if one of the states was not set //Selecione if (model.Origem.Equals(Resources.SelectList_Null_Item)) { model.Origem = string.Empty; } //Selecione if (model.Destino.Equals(Resources.SelectList_Null_Item)) { model.Destino = string.Empty; } var request = new CalcularMelhorRotaRequest() { Problema = new ProblemaDto() { Id = model.Id, NomeMapa = model.NomeMapa, Origem = model.Origem, Destino = model.Destino, AutonomiaVeiculo = model.AutonomiaVeiculo, ValorCombustivel = model.ValorCombustivel, } }; var response = _mapaServices.CalcularRota(request); if (response.Success) { ViewBag.MessageType = "alert-success"; ViewBag.Message = response.Message; var caminho = new StringBuilder(); foreach (var state in response.MelhorCaminho) { caminho.Append(state); caminho.Append(" > "); } var resultado = new ResultadoCustoViewModel() { Id = model.Id, NomeMapa = model.NomeMapa, Caminho = caminho.ToString(), CustoTotal = response.CustoTotal }; return(PartialView("ResultadoCustoPartialView", resultado)); } else { ViewBag.Title = Resources.MapaController_HttpPost_Action_CalcularCusto_ViewBag_Title;//"Calculadora de Rota e Custo:"; response.Rules.ForEach(x => ModelState.AddModelError(x.Key, x.Value)); var requestMapa = new EncontrarMapaPorRequest() { Mapa = new MapaDto() { Id = model.Id, NomeMapa = model.NomeMapa } }; var responseMapa = _mapaServices.EncontrarMapaPor(requestMapa); if (responseMapa.Success) { ViewBag.MessageType = "alert-warning"; ViewBag.Message = response.Message; var origens = responseMapa.Mapa.Rotas.ConvertToListRotaOrigemViewMode(); var destinos = responseMapa.Mapa.Rotas.ConvertToListRotaDestinoViewMode(); model.Destinos = destinos; model.Origens = origens; return(PartialView("CalcularCustoPartialView", model)); } else { ViewBag.MessageType = "alert-danger"; ViewBag.Message = response.Message; return(PartialView("SucessoPartialView")); } } }