public void Test3_Finding_BestPath_Will_Pass() { var mapa = _mother.CreateClientExampleMapa(); var resquest = new CalcularMelhorRotaRequest() { Problema = new ProblemaDto() { NomeMapa = "TestMap", Origem = "A", Destino = "D", AutonomiaVeiculo = "10", ValorCombustivel = "2.50" } }; //Arrange var mapaRepository = MockRepository.GenerateMock <IMapaRepository>(); mapaRepository.Stub(x => x.FindByName("TestMap")).Return(mapa); //Act _mapaServices = new MapaServices(mapaRepository); var result = _mapaServices.CalcularRota(resquest); //Assert Assert.IsTrue(result.Success); mapaRepository.VerifyAllExpectations(); }
public CalcularMelhorRotaResponse CalcularRota(CalcularMelhorRotaRequest request) { var response = new CalcularMelhorRotaResponse(); try { var problema = request.Problema.ConvertToProblema(); if (problema.IsValid()) { CalculoService servicoDeCalculo; Mapa mapa = null; if (!string.IsNullOrEmpty(problema.Id)) { var id = Guid.Parse(problema.Id); mapa = _mapaRepository.FindBy(id); } else if (!string.IsNullOrEmpty(problema.NomeMapa)) { var nomeMapa = problema.NomeMapa; mapa = _mapaRepository.FindByName(nomeMapa); } if (mapa != null) { servicoDeCalculo = new CalculoService(mapa); var result = servicoDeCalculo.Process(problema.Origem, problema.Destino, problema.AutonomiaVeiculo, problema.ValorCombustivel); IFormatProvider culture = Thread.CurrentThread.CurrentCulture; response.Success = true; response.Message = Resources.MapaServices_CalcularRota_Success_Message; response.CustoTotal = result.CustoTotal.ToString("n", culture); response.MelhorCaminho = result.MelhorCaminho; } else { response.Success = false; response.Message = Resources.MapaServices_CalcularRota_Fail_Message; } } else { response.Success = false; response.Message = Resources.MapaServices_CalcularRota_Fail2_Message + problema.GetErrorMessages(); response.Rules = problema.BrokenRules; } } catch (Exception ex) { response.Success = false; response.Message = Resources.MapaServices_CalcularRota_Error_Message + ex.Message; } return(response); }
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")); } } }