예제 #1
0
        /// <summary>
        /// Realiza o cadastro direto de um produto sem verificar se é um novo produto ou uma alteração de um existente
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public static bool Cadastrar(Produto p)
        {
            ctx.Produtos.Add(p);
            ctx.SaveChanges();

            //Atualizando CapacidadeAtual LocalArmazenamento
            LocalArmazenamentoDao.AtualizarCapacidadeAtual(p.IdLocalArmazenamento, p.QuantEstoque, "Cadastrar");
            return(true);
        }
        public IHttpActionResult LocalArmazenamentoList()
        {
            List <LocalArmazenamento> lista = LocalArmazenamentoDao.RecuperarLista();

            if (lista != null)
            {
                return(Ok(lista));
            }
            return(NotFound());
        }
예제 #3
0
        /// <summary>
        /// Realiza a exclusão de um produto pelo id
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static bool ExcluirPeloId(int id)
        {
            int idLocalReservado = 0;
            var ret      = false;
            var existing = ctx.Produtos.Include("LocalArmazenamento").FirstOrDefault(x => x.Id == id);

            if (existing != null)
            {
                ctx.Entry(existing).State = EntityState.Detached;
            }

            try
            {
                existing = ctx.Produtos.Include("LocalArmazenamento").FirstOrDefault(x => x.Id == id);
                if (existing != null)
                {
                    ctx.Entry(existing).State   = EntityState.Detached;
                    existing.LocalArmazenamento = ctx.LocaisArmazenamentos.Find(existing.IdLocalArmazenamento);
                    existing.MarcaProduto       = ctx.MarcasProdutos.Find(existing.IdMarca);
                    existing.Fornecedor         = ctx.Fornecedores.Find(existing.IdFornecedor);
                    existing.GrupoProduto       = ctx.GruposProdutos.Find(existing.IdGrupo);
                    existing.UnidadeMedida      = ctx.UnidadesMedida.Find(existing.IdUnidadeMedida);
                }



                idLocalReservado = existing.IdLocalArmazenamento;
                ctx.Produtos.Attach(existing);
                ctx.Entry(existing).State = EntityState.Deleted;
                ctx.SaveChanges();

                ret = true;
            }
            catch (DbUpdateException)
            {
                ret = false;
            }
            catch (InvalidOperationException)
            {
                ret = false;
            }

            if (ret)
            {
                LocalArmazenamentoDao.AtualizarCapacidadeAtual(idLocalReservado, existing.QuantEstoque, "Remover");
            }

            //Limpando qualquer Exception que tenha ficado gravado no Object do Entity
            //Se não limpar, caso ocorra uma excessão na exclusão, ele sempre vai ficar persistindo
            //o erro, mesmo que o proximo objeto esteja sem nenhum problema.
            ctx.DetachAllEntities();
            return(ret);
        }
        public ActionResult Index()
        {
            ViewBag.ListaTamPag = new SelectList(new int[] { _quantMaxLinhasPorPagina, 10, 15, 20 }, _quantMaxLinhasPorPagina);

            ViewBag.QuantMaxLinhasPorPagina = _quantMaxLinhasPorPagina;
            ViewBag.PaginaAtual             = 1;

            var lista = LocalArmazenamentoDao.RecuperarLista(ViewBag.PaginaAtual, _quantMaxLinhasPorPagina);

            var quant           = LocalArmazenamentoDao.RecuperarQuantidade();
            var difQuantPaginas = (quant % ViewBag.QuantMaxLinhasPorPagina) > 0 ? 1 : 0;

            ViewBag.QuantPaginas = (quant / ViewBag.QuantMaxLinhasPorPagina) + difQuantPaginas;


            return(View(lista));
        }
        public JsonResult SalvarLocalArmazenamento(LocalArmazenamento model)
        {
            var resultado = "OK";
            var mensagens = new List <string>();
            var idSalvo   = string.Empty;

            if (!ModelState.IsValid)
            {
                resultado = "AVISO";
                mensagens = ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage).ToList();
            }
            else
            {
                try
                {
                    if (!LocalArmazenamentoDao.VerificarNome(model) || LocalArmazenamentoDao.VerificarNomeEId(model))
                    {
                        var id = LocalArmazenamentoDao.Salvar(model);
                        if (id > 0)
                        {
                            idSalvo = id.ToString();
                        }
                        else
                        {
                            resultado = "ERRO";
                        }
                    }
                    else
                    {
                        resultado = "Não foi possível cadastrar esse local de armazenamento pois já existe outro local de armazenamento com o mesmo Nome.";
                    }
                }
                #pragma warning disable 0168
                catch (Exception ex)
                {
                    resultado = "ERRO";
                }
            }



            return(Json(new { Resultado = resultado, Mensagens = mensagens, IdSalvo = idSalvo }));
        }
        public JsonResult ExcluirLocalArmazenamento(int id)
        {
            string             resultado = null;
            bool               Ok        = false;
            LocalArmazenamento logData   = LocalArmazenamentoDao.RecuperarPeloId(id);


            Ok = LocalArmazenamentoDao.ExcluirPeloId(id);

            if (Ok)
            {
                resultado = "OK";
            }
            else
            {
                resultado = "Não foi possível excluir esse Local de Armazenamento.";
            }



            return(Json(new { OK = Ok, Resultado = resultado }));
        }
        public ActionResult Index()
        {
            ViewBag.ListaTamPag             = new SelectList(new int[] { _quantMaxLinhasPorPagina, 10, 15, 20 }, _quantMaxLinhasPorPagina);
            ViewBag.QuantMaxLinhasPorPagina = _quantMaxLinhasPorPagina;
            ViewBag.PaginaAtual             = 1;

            var lista = ProdutoDao.RecuperarLista(ViewBag.PaginaAtual, _quantMaxLinhasPorPagina);
            var quant = ProdutoDao.RecuperarQuantidade();

            var difQuantPaginas = (quant % ViewBag.QuantMaxLinhasPorPagina) > 0 ? 1 : 0;

            ViewBag.QuantPaginas = (quant / ViewBag.QuantMaxLinhasPorPagina) + difQuantPaginas;

            /*Recuperando os itens abaixos para os DropDownLists
             * Obs: O método deverá retornar todas as linhas, sem filtragem e apenas os ativos*/
            ViewBag.UnidadesMedida      = UnidadeMedidaDao.RecuperarLista(0, 0, "", true);
            ViewBag.Grupos              = GrupoProdutoDao.RecuperarLista(0, 0, "", true);
            ViewBag.Marcas              = MarcaProdutoDao.RecuperarLista(0, 0, "", true);
            ViewBag.Fornecedores        = FornecedorDao.RecuperarLista(0, 0, "", true);
            ViewBag.LocaisArmazenamento = LocalArmazenamentoDao.RecuperarLista(0, 0, "", true);

            return(View(lista));
        }
 public JsonResult RecuperarLocalArmazenamento(int id)
 {
     return(Json(LocalArmazenamentoDao.RecuperarPeloId(id)));
 }
        public JsonResult LocalArmazenamentoPagina(int pagina, int tamPag, string filtro, string ordem)
        {
            var lista = LocalArmazenamentoDao.RecuperarLista(pagina, tamPag, filtro);

            return(Json(lista));
        }
        public IHttpActionResult LocalArmazenamentoDelete(LocalArmazenamento LocalArmazenamento)
        {
            var ret = LocalArmazenamentoDao.ExcluirPeloId(LocalArmazenamento.Id);

            return(Ok(ret));
        }
        public IHttpActionResult LocalArmazenamentoUpdate(LocalArmazenamento LocalArmazenamento)
        {
            var ret = LocalArmazenamentoDao.Alterar(LocalArmazenamento);

            return(Ok(ret));
        }
        public IHttpActionResult LocalArmazenamentoCreate(LocalArmazenamento LocalArmazenamento)
        {
            var ret = LocalArmazenamentoDao.Cadastrar(LocalArmazenamento);

            return(Ok(ret));
        }
        public JsonResult SalvarProduto(Produto model)
        {
            //Iniciando variáveis auxiliares
            var    resultado = "OK";
            var    mensagens = new List <string>();
            var    idSalvo   = string.Empty;
            bool   validationDropDownListError        = false;
            string validationDropDownListErrorMessage = "Os campos a seguir são obrigatórios: ";

            //Recuperando relações
            model.UnidadeMedida      = UnidadeMedidaDao.RecuperarPeloId(model.IdUnidadeMedida);
            model.GrupoProduto       = GrupoProdutoDao.RecuperarPeloId(model.IdGrupo);
            model.MarcaProduto       = MarcaProdutoDao.RecuperarPeloId(model.IdMarca);
            model.Fornecedor         = FornecedorDao.RecuperarPeloId(model.IdFornecedor);
            model.LocalArmazenamento = LocalArmazenamentoDao.RecuperarPeloId(model.IdLocalArmazenamento);


            /*Validando se todas os DropDownList foram preenchidos pelo usuário,
             * Caso não tenha, será construido uma mensagem de erro na variável
             * validationDropDownListErrorMessage e a variável validationDropDownListError receberá true
             * e ao final será retornado a mensagem ao usuário via JSON.
             * Cabe ao Front-end exibir essa mensagem.
             * */
            if (model.UnidadeMedida == null)
            {
                validationDropDownListError         = true;
                validationDropDownListErrorMessage += "  • Unidade de Medida ";
            }
            if (model.GrupoProduto == null)
            {
                validationDropDownListError         = true;
                validationDropDownListErrorMessage += "  • Grupo ";
            }
            if (model.MarcaProduto == null)
            {
                validationDropDownListError         = true;
                validationDropDownListErrorMessage += "  • Marca ";
            }
            if (model.Fornecedor == null)
            {
                validationDropDownListError         = true;
                validationDropDownListErrorMessage += "  • Fornecedor ";
            }
            if (model.LocalArmazenamento == null)
            {
                validationDropDownListError         = true;
                validationDropDownListErrorMessage += "  • Local de Armazenamento ";
            }

            /*
             * A condicional verifica se o validationDropDownListError está falso,
             * se estiver, significa que a validação anterior foi aprovada e o usuário
             * preencheu todos os campos, não existem dados nullos no modelo a ser gravado.
             */
            if (!validationDropDownListError)
            {
                /*Verificando se o Local de Armazenamento possui espaço suficiente para
                 * armazenar os produtos
                 * */
                int capacidadeAtual = LocalArmazenamentoDao.VerificarCapacidadeAtual(model.LocalArmazenamento);
                int capacidadeTotal = LocalArmazenamentoDao.VerificarCapacidadeTotal(model.LocalArmazenamento);
                if ((capacidadeTotal - capacidadeAtual) >= model.QuantEstoque)
                {
                    /*
                     * O ModelState verifica se os demais campos atribuidos como required no
                     * modelo foram preenchidos, caso não atribui a mensagem "Aviso" ao resultado
                     * e resulta uma lista de todos as mensagens de erros do ModelState para
                     * "mensagens"
                     */
                    if (!ModelState.IsValid)
                    {
                        resultado = "AVISO";
                        mensagens = ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage).ToList();
                    }
                    else
                    {
                        /*O ModelState e todos os DropDownList estão validos
                         * Agora o sistema deverá tentar gravar as informações.
                         */
                        try
                        {
                            /*O método salvar é chamado e realiza a operação, o mesmo
                             * deverá retornar o id do modelo gravado caso tenha ocorrido
                             * tudo certo, esse id será fundamental para o front-end caso
                             * esteja utilizando uma abordagem em AJAX.
                             * */

                            if (!ProdutoDao.VerificarCodigo(model) || ProdutoDao.VerificarCodigoEId(model))
                            {
                                var id = ProdutoDao.Salvar(model);
                                //Se o id for maior que 0 significa que ocorreu tudo certo
                                if (id > 0)
                                {
                                    idSalvo = id.ToString();
                                }
                                else
                                {
                                    /*Aparentemente ocorreu um erro no processo de Salvar*/
                                    resultado = "ERRO";
                                }
                            }
                            else
                            {
                                resultado = "Não foi possível cadastrar esse produto pois já existe outro produto com o mesmo Código.";
                            }
                        }
                        #pragma warning disable 0168
                        catch (Exception ex) //Uma exception foi detectada
                        {
                            /*Como o sistema está utilizando uma abordagem em AJAX,
                             * a tela não será atualizada, logo o usuário não receberá a mensagem de
                             * error gigantesca do Asp.net, para isso será atribuido a mensagem
                             * "Erro" ao resultado.
                             * Para que assim será tratado no front-end uma mensagem mais amigável.
                             * */

                            resultado = "ERRO";
                        }
                    }
                }
                else
                {
                    resultado = "O Local de Armazenamento selecionado não possui espaço suficiente para isso, " +
                                " • Capacidade Atual é " + capacidadeAtual + "  • Capacidade Total é " + capacidadeTotal +
                                " • Espaço Livre: " + (capacidadeTotal - capacidadeAtual);
                }
            }
            else
            {
                /* A validação dos DropDownList FALHOU, assim o resultado recebe
                 * todas as mensagens de erros construídas referente aos DropDownList
                 */
                resultado = validationDropDownListErrorMessage;
            }

            /* Será retornado para o front-end:
             *  - Resultado: Se o front-end recebere algo além de "OK" que é o valor inicial
             * da variável resultado, o mesmo saberá que por algum motivo não foi realizado o
             * cadastro no banco de daods, e cabe a ele exibir oque a variável resultado retornou.
             *  - Mensagens: Caso a validação dos demais campos tenha falhado no ModelState, será
             *  retornado uma lista com todas as mensagens de erros.
             *  - IdSalvo: O Id será retonado para que o sistema consiga trabalhar utilizando
             *  AJAX, pois como a tela não atualiza, será necessário saber o IdSalvo para que
             *  caso o usuário queira realizar um novo cadastro na mesma tela, ele consiga assim
             *  mostrar os dados corretos para o mesmo.
             *
             *
             * */



            return(Json(new { Resultado = resultado, Mensagens = mensagens, IdSalvo = idSalvo }));
        }
예제 #14
0
        public static string SalvarPedido(DateTime data, Dictionary <int, int> produtos, string nomeTabela, bool entrada)
        {
            var ret = "";
            int idLocalArmazenamento = 0;

            try
            {
                var numPedido        = "";
                var numPedidoCalculo = 0;
                if (nomeTabela.Equals("entrada_produto"))
                {
                    EntradaProduto resultadoConsulta = null;

                    var quantidadeEntradas = ctx.EntradasProdutos.Count();
                    if (quantidadeEntradas > 0)
                    {
                        resultadoConsulta = ctx.EntradasProdutos.OrderByDescending(x => x.Id).Take(1).Single();
                        numPedidoCalculo  = (Convert.ToInt32(resultadoConsulta.Numero) + 1);
                        numPedido         = numPedidoCalculo.ToString();
                    }
                    else
                    {
                        numPedido = Convert.ToString(1);
                    }
                }
                else if (nomeTabela.Equals("saida_produto"))
                {
                    SaidaProduto resultadoConsulta = null;

                    var quantidadeSaidas = ctx.SaidasProdutos.Count();
                    if (quantidadeSaidas > 0)
                    {
                        resultadoConsulta = ctx.SaidasProdutos.OrderByDescending(x => x.Id).Take(1).Single();
                        numPedidoCalculo  = (Convert.ToInt32(resultadoConsulta.Numero) + 1);
                        numPedido         = numPedidoCalculo.ToString();
                    }
                    else
                    {
                        numPedido = Convert.ToString(1);
                    }
                }


                using (var transacao = ctx.Database.BeginTransaction())
                {
                    foreach (var produto in produtos)
                    {
                        if (nomeTabela.Equals("entrada_produto"))
                        {
                            EntradaProduto ep = new EntradaProduto();
                            ep.Numero     = numPedido;
                            ep.Data       = data;
                            ep.IdProduto  = produto.Key;
                            ep.Quantidade = produto.Value;

                            ctx.EntradasProdutos.Add(ep);


                            Produto recuperado = ctx.Produtos.Find(produto.Key);

                            var existingProduto = ctx.Produtos.Include("LocalArmazenamento").FirstOrDefault(x => x.Id == produto.Key);
                            if (existingProduto != null)
                            {
                                ctx.Entry(existingProduto).State = EntityState.Detached;
                            }

                            idLocalArmazenamento = existingProduto.IdLocalArmazenamento;

                            try
                            {
                                ctx.Produtos.Attach(recuperado);
                                recuperado.QuantEstoque     = recuperado.QuantEstoque + produto.Value;
                                ctx.Entry(recuperado).State = EntityState.Modified;
                                ctx.SaveChanges();
                                LocalArmazenamentoDao.AtualizarCapacidadeAtual(idLocalArmazenamento, produto.Value, "Cadastrar");
                            }
                            catch (System.Exception ex)
                            {
                                throw;
                            }
                        }
                        else if (nomeTabela.Equals("saida_produto"))
                        {
                            SaidaProduto ep = new SaidaProduto();
                            ep.Numero     = numPedido;
                            ep.Data       = data;
                            ep.IdProduto  = produto.Key;
                            ep.Quantidade = produto.Value;

                            ctx.SaidasProdutos.Add(ep);


                            Produto recuperado = ctx.Produtos.Find(produto.Key);

                            var existingProduto = ctx.Produtos.Include("LocalArmazenamento").FirstOrDefault(x => x.Id == produto.Key);
                            if (existingProduto != null)
                            {
                                ctx.Entry(existingProduto).State = EntityState.Detached;
                            }

                            idLocalArmazenamento = existingProduto.IdLocalArmazenamento;

                            try
                            {
                                ctx.Produtos.Attach(recuperado);
                                if ((recuperado.QuantEstoque - produto.Value) < 0)
                                {
                                    recuperado.QuantEstoque = 0;
                                }
                                else
                                {
                                    recuperado.QuantEstoque = recuperado.QuantEstoque - produto.Value;
                                }

                                ctx.Entry(recuperado).State = EntityState.Modified;
                                ctx.SaveChanges();
                                LocalArmazenamentoDao.AtualizarCapacidadeAtual(idLocalArmazenamento, produto.Value, "Remover");
                            }
                            catch (System.Exception ex)
                            {
                                throw;
                            }
                        }
                    }

                    transacao.Commit();

                    ret = numPedido;
                }
            }
            catch (Exception ex)
            {
            }

            return(ret);
        }