public async Task Executar(VeiculoNaLinhasDto veiculoNaLinhaDto) { var linha = await context.Linhas .Include(x => x.Veiculos) .SingleOrDefaultAsync(x => x.Id == veiculoNaLinhaDto.LinhaId); var veiculo = await context.Veiculos.FindAsync(veiculoNaLinhaDto.VeiculoId); if (linha is null) { Notifications.Add("linha-nao-encontrada", "Linha não encontrada!"); } if (veiculo is null) { Notifications.Add("veiculo-nao-encontrado", "Parada não encontrada!"); } if (!Notifications.Any()) { linha.AdicionarVeiculo(veiculo); await context.SaveChangesAsync(); } }
public async Task NaoDeveVincularUmVeiculoNaLinhaPoisOVeiculoNaoFoiEncontrado() { //arrange var veiculoNaLinhaDto = new VeiculoNaLinhasDto() { LinhaId = 1, VeiculoId = 2 }; var veiculoDto = new VeiculoDto() { Nome = "Veículo 1", Modelo = "Mercedes", Localizacao = new LocalizacaoDto() { Latitude = -8.771593, Longitude = -63.847208 } }; var veiculo = new Domain.Entities.Veiculo( veiculoDto.Nome, veiculoDto.Modelo, new Domain.ValueObjects.Localizacao( veiculoDto.Localizacao.Latitude, veiculoDto.Localizacao.Longitude ) ); var linha = new Domain.Entities.Linha( nome: "Linha 1", id: 1 ); linha.AdicionarVeiculo(veiculo); await context.AddAsync(veiculo); await context.AddAsync(linha); await context.SaveChangesAsync(); //act await vincularVeiculo.Executar(veiculoNaLinhaDto); //assert Assert.True(vincularVeiculo.Notifications.ContainsKey("veiculo-nao-encontrado")); }
public async Task <IActionResult> Post([FromServices] VincularVeiculo vincularVeiculo, VeiculoNaLinhasDto veiculoNaLinhasDto) { await vincularVeiculo.Executar(veiculoNaLinhasDto); if (vincularVeiculo.Notifications.Any()) { return(BadRequest(vincularVeiculo.Notifications)); } return(Ok()); }