Exemplo n.º 1
0
        public async Task Executar(ParadaNaLinhaDto paradaNaLinhaDto)
        {
            var linha = await context.Linhas
                        .Include(x => x.Paradas)
                        .SingleOrDefaultAsync(x => x.Id == paradaNaLinhaDto.LinhaId);

            var parada = await context.Paradas.FindAsync(paradaNaLinhaDto.ParadaId);

            if (linha is null)
            {
                Notifications.Add("linha-nao-encontrada", "Linha não encontrada!");
            }

            if (parada is null)
            {
                Notifications.Add("parada-nao-encontrada", "Parada não encontrada!");
            }

            if (linha is not null && linha.Paradas.Any(x => x.Id == paradaNaLinhaDto.ParadaId))
            {
                Notifications.Add("parada-vinculada", "Esta parada já está vinculada a esta linha!");
            }

            if (!Notifications.Any())
            {
                linha.AdicionarParada(parada);

                await context.SaveChangesAsync();
            }
        }
Exemplo n.º 2
0
        public async Task NaoDeveVincularUmaParadaNaLinhaPoisAParadaJaEstaVinculada()
        {
            //arrange
            var paradaNaLinhaDto = new ParadaNaLinhaDto()
            {
                LinhaId = 1, ParadaId = 2
            };

            var paradaDto = new ParadaDto()
            {
                Nome        = "Parada 1",
                Localizacao = new LocalizacaoDto()
                {
                    Latitude  = -8.771593,
                    Longitude = -63.847208
                }
            };

            var parada = new Domain.Entities.Parada(
                paradaDto.Nome,
                new Domain.ValueObjects.Localizacao(
                    paradaDto.Localizacao.Latitude,
                    paradaDto.Localizacao.Longitude
                    )
                );

            var linha = new Domain.Entities.Linha(
                nome: "Linha 1",
                id: 1
                );

            linha.AdicionarParada(parada);

            await context.AddAsync(parada);

            await context.AddAsync(linha);

            await context.SaveChangesAsync();

            //act
            await vincularParada.Executar(paradaNaLinhaDto);

            //assert
            Assert.False(vincularParada.Notifications.ContainsKey("parada-vinculada"));
        }
        public async Task <IActionResult> Post([FromServices] VincularParada vincularParada, ParadaNaLinhaDto paradaNaLinhaDto)
        {
            await vincularParada.Executar(paradaNaLinhaDto);

            if (vincularParada.Notifications.Any())
            {
                return(BadRequest(vincularParada.Notifications));
            }

            return(Ok());
        }