public static bool Alterar(LocalArmazenamento la)
        {
            var existing = ctx.LocaisArmazenamentos.FirstOrDefault(x => x.Id == la.Id);

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

            try
            {
                ctx.LocaisArmazenamentos.Attach(la);

                /*Não desejo atualizar a capacidade atual
                 * para que assim não perca o relatório dos dados já armazenados
                 * */

                la.CapacidadeAtual  = existing.CapacidadeAtual;
                ctx.Entry(la).State = EntityState.Modified;
                ctx.SaveChanges();
            }
            #pragma warning disable 0168
            catch (System.Exception ex)
            {
                return(false);
            }
            return(true);
        }
 //TODO: Verificar possivel delete de armazenamento não permitido
 public static bool Cadastrar(LocalArmazenamento la)
 {
     //la.CapacidadeAtual = la.CapacidadeTotal;
     ctx.LocaisArmazenamentos.Add(la);
     ctx.SaveChanges();
     return(true);
 }
        public static int VerificarCapacidadeTotal(LocalArmazenamento la)
        {
            LocalArmazenamento localA = null;
            int capacidadeTotal       = 0;

            localA          = ctx.LocaisArmazenamentos.AsNoTracking().Where(x => x.Nome.Equals(la.Nome)).FirstOrDefault();
            capacidadeTotal = localA.CapacidadeTotal;
            return(capacidadeTotal);
        }
        public static bool VerificarNomeEId(LocalArmazenamento p)
        {
            var result = ctx.LocaisArmazenamentos.FirstOrDefault(x => x.Nome.Equals(p.Nome) && x.Id == p.Id);

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

            return(true);
        }
        public static int Salvar(LocalArmazenamento la)
        {
            var ret   = 0;
            var model = RecuperarPeloId(la.Id);

            if (model == null)
            {
                Cadastrar(la);
            }
            else
            {
                Alterar(la);
            }
            ret = la.Id;
            ctx.SaveChanges();
            return(ret);
        }
        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 static bool AtualizarCapacidadeAtual(int idLocal = 0, int quantidade = 0, string acao = "")
        {
            LocalArmazenamento la = null;

            if (idLocal != 0)
            {
                la = ctx.LocaisArmazenamentos.Find(idLocal);
            }

            if (acao.Equals("Cadastrar"))
            {
                la.CapacidadeAtual += quantidade;
            }
            else if (acao.Equals("Remover"))
            {
                la.CapacidadeAtual -= quantidade;
            }
            ctx.Entry(la).State = EntityState.Modified;
            ctx.SaveChanges();
            return(true);
        }
        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 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));
        }