예제 #1
0
        public void OpcionalValidacaoDeEstoqueComEstoqueMaiorDoQueZero()
        {
            Opcional op        = new Opcional("TesteOpcional", "TesteOpcional testando1", 59, 8);
            var      resultado = op.EstaDisponivel();

            Assert.IsTrue(resultado);
        }
예제 #2
0
        public bool VerSeEhPossivelCriar(Reserva reserva)
        {
            Produto produto = contexto.Produtos.Where(x => x.Id == reserva.Produto.Id).FirstOrDefault();

            if (produto.Quantidade < 0)
            {
                return(false);
            }


            if (reserva.Opcional.Count > 0)
            {
                // verifica se tem opcionais em estoque
                foreach (var opcional in reserva.Opcional)
                {
                    Opcional aux = contexto.Opcionais.Where(x => x.Id == opcional.Id).FirstOrDefault();

                    if (aux == null)
                    {
                        return(false);
                    }

                    if (aux.Quantidade <= 0)
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
예제 #3
0
        public void Deve_Criar_Entidade_Opcional_Valida()
        {
            var opcional = new Opcional("Piscina de bolinhas", 100, 150, 10);

            Assert.IsTrue(opcional.Validar());
            Assert.IsFalse(opcional.Mensagens.Count > 0);
        }
        public List <string> Validar(Opcional opcional)
        {
            List <string> mensagens = new List <string>();

            if (string.IsNullOrEmpty(opcional.Nome))
            {
                mensagens.Add("É necessário informar o nome do opcional");
                return(mensagens);
            }

            if (string.IsNullOrEmpty(opcional.Descricao))
            {
                mensagens.Add("É necessário informar a descrição");
                return(mensagens);
            }

            if (opcional.Valor <= 0 || opcional.Valor == null)
            {
                mensagens.Add("É necessário informar um valor válido");
                return(mensagens);
            }

            if (opcional == null)
            {
                mensagens.Add("Nenhum opcional foi encontrado");
                return(mensagens);
            }

            return(mensagens);
        }
예제 #5
0
        public Pedido Registrar(Pedido pedido)
        {
            contexto.Entry(pedido.Cliente).State = System.Data.Entity.EntityState.Unchanged;
            contexto.Entry(pedido.Produto).State = System.Data.Entity.EntityState.Unchanged;
            var     produtoRepositorio = new ProdutoRepositorio();
            Produto produto            = (Produto)produtoRepositorio.Obter(pedido.Produto.Id);

            produto = produtoRepositorio.RemoverEstoque(produto);
            if (pedido.Pacote != null)
            {
                contexto.Entry(pedido.Pacote).State = System.Data.Entity.EntityState.Unchanged;
                var    pacoteRepositorio = new PacoteRepositorio();
                Pacote pacote            = (Pacote)pacoteRepositorio.Obter(pedido.Pacote.Id);
                pacote = pacoteRepositorio.RemoverEstoque(pacote);
            }
            if (pedido.Opcionais != null)
            {
                foreach (var produtoOpcional in pedido.Opcionais)
                {
                    contexto.Entry(produtoOpcional).State = System.Data.Entity.EntityState.Unchanged;
                    var      opcionalRepositorio = new OpcionalRepositorio();
                    Opcional opcional            = (Opcional)opcionalRepositorio.Obter(produtoOpcional.Id);
                    opcional = opcionalRepositorio.RemoverEstoque(opcional);
                }
            }
            contexto.Pedido.Add(pedido);
            contexto.SaveChanges();
            return(pedido);
        }
예제 #6
0
        public Opcional AtualizarOpcional(int id, Opcional opcionalAtualizado)
        {
            var opcional = contexto.Opcionais.FirstOrDefault(p => p.Id == id);

            opcional?.Atualizar(opcionalAtualizado);
            return(opcional);
        }
예제 #7
0
 public Opcional RemoverEstoque(Opcional item)
 {
     item.retirar();
     contexto.Entry(item).State = System.Data.Entity.EntityState.Modified;
     contexto.SaveChanges();
     return(item);
 }
 public Opcional AtualizarEstoque(Opcional opcional)
 {
     contexto.Entry(opcional).State = EntityState.Modified;
     opcional.Quantidade--;
     contexto.SaveChanges();
     return(opcional);
 }
예제 #9
0
 public Itens(Pacote pacote, Festa festa, Opcional opcional, Usuario usuario, Cliente cliente)
 {
     Pacote   = pacote;
     Festa    = festa;
     Opcional = opcional;
     Usuario  = usuario;
     Cliente  = cliente;
 }
예제 #10
0
        public Opcional DeletarOpcional(int id)
        {
            Opcional opcional = contexto.Opcionais.FirstOrDefault(x => x.Id == id);

            contexto.Opcionais.Remove(opcional);
            contexto.SaveChanges();
            return(opcional);
        }
예제 #11
0
        public void Nao_Deve_Criar_Entidade_Opcional_Com_CustoMulta_Negativo()
        {
            var opcional = new Opcional("Piscina de bolinhas", 100, -10, 10);

            Assert.IsFalse(opcional.Validar());
            Assert.IsTrue(opcional.Mensagens.Count > 0);
            Assert.IsTrue(opcional.Mensagens[0] == "Custo da multa inválido.");
        }
예제 #12
0
        public void Nao_Deve_Criar_Entidade_Opcional_Com_Quantidade_Negativa()
        {
            var opcional = new Opcional("Piscina de bolinhas", 100, 150, -10);

            Assert.IsFalse(opcional.Validar());
            Assert.IsTrue(opcional.Mensagens.Count > 0);
            Assert.IsTrue(opcional.Mensagens[0] == "Quantidade inválida.");
        }
예제 #13
0
        public void Nao_Deve_Criar_Entidade_Opcional_Sem_CustoDiaria()
        {
            var opcional = new Opcional("Piscina de bolinhas", 0, 150, 10);

            Assert.IsFalse(opcional.Validar());
            Assert.IsTrue(opcional.Mensagens.Count > 0);
            Assert.IsTrue(opcional.Mensagens[0] == "Custo diário inválido.");
        }
예제 #14
0
        public void DiminuirEstoqueFuncionaCorretamente()
        {
            Opcional op = new Opcional("TesteOpcional", "TesteOpcional testando1", 59, 8);

            op.DiminuirEstoque();

            Assert.AreEqual(7, op.QuantidadeDisponivel);
        }
예제 #15
0
        public Opcional AtualizarOpcional(int id, Opcional opcional)
        {
            var opcionalCadastrado = contexto.Opcionais.FirstOrDefault(p => p.Id == id);

            if (opcionalCadastrado != null)
            {
                opcionalCadastrado.Atualizar(opcionalCadastrado);
            }
            return(opcionalCadastrado);
        }
        public HttpResponseMessage ObterPorId(int id)
        {
            Opcional opcional = repositorio.ObterPorId(id);

            if (opcional == null)
            {
                return(ResponderErro("Opcional não encontrado."));
            }
            return(ResponderOK(opcional));
        }
예제 #17
0
        public Itens ObterItensReserva(int idCliente, int idUsuario, int idOpcional, int idPacote, int idFesta)
        {
            Cliente  cliente  = contexto.Clientes.FirstOrDefault(x => x.Id == idCliente);
            Usuario  usuario  = contexto.Usuarios.FirstOrDefault(x => x.Id == idUsuario);
            Opcional opcional = contexto.Opcionais.FirstOrDefault(x => x.Id == idOpcional);
            Pacote   pacote   = contexto.Pacotes.FirstOrDefault(x => x.Id == idPacote);
            Festa    festa    = contexto.Festas.FirstOrDefault(x => x.Id == idFesta);

            return(new Itens(pacote, festa, opcional, usuario, cliente));
        }
예제 #18
0
        public void OpcionalForaDoEstoque()
        {
            int     id         = 843;
            string  descricao  = "sou legal";
            decimal preco      = 4.44M;
            int?    quantidade = 0;

            Opcional o = new Opcional(id, descricao, preco, quantidade);

            o.diminuirEstoque();
        }
        public bool Alterar(Opcional op)
        {
            if (contexto.Opcionais.Count(x => x.Id == op.Id) == 0)
            {
                return(false);
            }

            contexto.Entry(op).State = System.Data.Entity.EntityState.Modified;
            contexto.SaveChanges();
            return(true);
        }
        public IHttpActionResult Criar(Opcional op)
        {
            List <string> msg = null;

            if (op.Validar(out msg) == false)
            {
                return(BadRequest(String.Join(" ", msg)));
            }

            return(Ok(repo.Criar(op)));
        }
예제 #21
0
        public ReservaOpcional(Reserva reserva, Opcional opcional, int quantidade)
        {
            Reserva    = reserva;
            Opcional   = opcional;
            Quantidade = quantidade;

            if (Quantidade < 1)
            {
                AddMessage("Quanitade inválido.");
            }
        }
예제 #22
0
        public void TestaOptionalValido()
        {
            var optional = new Opcional("Open bar de chá", "Open bar de chá gelado", 0.6);

            var erros = new List <string>();

            var optionalService = new OpcionalService();

            var resultado = optionalService.Validar(optional);

            CollectionAssert.AreEqual(erros, resultado);
        }
예제 #23
0
        public void OpcionalAumentarComRecursoIlimitado()
        {
            int     id         = 843;
            string  descricao  = "sou legal";
            decimal preco      = 4.44M;
            int?    quantidade = null;

            Opcional o = new Opcional(id, descricao, preco, quantidade);

            o.aumentarEstoque();

            Assert.AreEqual(quantidade, o.Quantidade);
        }
        public bool Excluir(int id)
        {
            Opcional pacote = contexto.Opcionais.Where(x => x.Id == id).FirstOrDefault();

            if (pacote == null)
            {
                return(false);
            }

            contexto.Opcionais.Remove(pacote);
            contexto.SaveChanges();
            return(true);
        }
        public IHttpActionResult ObterPacote(int id)
        {
            Opcional p = repo.Obter(id);

            if (p == null)
            {
                return(NotFound());
            }
            else
            {
                return(Ok(p));
            }
        }
예제 #26
0
        public void TestaOpcionalComDescricaoInvalida()
        {
            var optional = new Opcional("Open bar de chá", "", 0.6);

            var erros = new List <string>();

            erros.Add("Campo descrição é obrigatorio");

            var optionalService = new OpcionalService();

            var resultado = optionalService.Validar(optional);

            CollectionAssert.AreEqual(erros, resultado);
        }
예제 #27
0
        public void TestaOpcionalComNomeInvalido()
        {
            var optional = new Opcional("", "Open bar de chá gelado", 0.6);

            var erros = new List <string>();

            erros.Add("Campo nome é obrigatorio");

            var optionalService = new OpcionalService();

            var resultado = optionalService.Validar(optional);

            CollectionAssert.AreEqual(erros, resultado);
        }
        public void Nao_Deve_Criar_Entidade_Reserva_Sem_Cliente()
        {
            var valor = 1000;
            var duracaoReservaEmDias = 5;
            var festa    = new Festa("Festa infantil", 100, 150);
            var pacote   = new Pacote("Pacote Premium", true, true, true, 100, 150);
            var opcional = new Opcional("Piscina de bolinhas", 100, 150, 10);
            var usuario  = new Usuario("Giovani", "123456", "*****@*****.**", "Funcionario");
            var reserva  = new Reserva(valor, duracaoReservaEmDias, pacote, festa, usuario, null, opcional);

            Assert.IsFalse(reserva.Validar());
            Assert.IsTrue(reserva.Mensagens.Count > 0);
            Assert.IsTrue(reserva.Mensagens[0] == "Cliente inválido");
        }
예제 #29
0
        public void TestaOpcionalComValorInvalido()
        {
            var optional = new Opcional("Open bar de chá", "Open bar de chá gelado", 666);

            var erros = new List <string>();

            erros.Add("O valor porcentagem precisa estar entre 0 e 1");

            var optionalService = new OpcionalService();

            var resultado = optionalService.Validar(optional);

            CollectionAssert.AreEqual(erros, resultado);
        }
        public void Nao_Deve_Criar_Entidade_Reserva_Sem_Festa()
        {
            var data  = new DateTime();
            var valor = 2000;
            var duracaoReservaEmDias = 10;
            var pacote   = new Pacote("Pacote Premium", true, true, true, 100, 150);
            var opcional = new Opcional("Piscina de bolinhas", 100, 150, 10);
            var usuario  = new Usuario("Giovani", "123456", "*****@*****.**", "Funcionario");
            var cliente  = new Cliente("Giovani", "Rua X Bairro Y", "12345678956", "Masculino", data, "*****@*****.**");

            var reserva = new Reserva(valor, duracaoReservaEmDias, pacote, null, usuario, cliente, opcional);

            Assert.IsFalse(reserva.Validar());
            Assert.IsTrue(reserva.Mensagens.Count > 0);
            Assert.IsTrue(reserva.Mensagens[0] == "Festa inválida");
        }