/// <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()); }
/// <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 })); }
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); }