public ActionResult ConfirmarCreate(FerramentaViewModel viewModel)
        {
            #region Validações

            if (viewModel.Grupo <= 0)
            {
                return(Json(new { status = 100, ex = "Informe um grupo!" }));
            }

            if (viewModel.Tipo <= 0)
            {
                return(Json(new { status = 100, ex = "Informe um tipo!" }));
            }

            if (string.IsNullOrEmpty(viewModel.Descricao))
            {
                return(Json(new { status = 100, ex = "Informe uma descrição!" }));
            }

            if (viewModel.Minimo < 0)
            {
                return(Json(new { status = 100, ex = "Informe uma quantidade minima!" }));
            }

            if (string.IsNullOrEmpty(viewModel.FlgConsumivel))
            {
                return(Json(new { status = 100, ex = "Informe se a ferramenta é consumível ou não!" }));
            }

            if (string.IsNullOrEmpty(viewModel.Numero))
            {
                return(Json(new { status = 100, ex = "Informe um número de patrimonio!" }));
            }

            if (string.IsNullOrEmpty(viewModel.FlgDeprecia))
            {
                return(Json(new { status = 100, ex = "Informe se a ferramenta deprecia ou não!" }));
            }

            if (string.IsNullOrEmpty(viewModel.DataAquisicao))
            {
                return(Json(new { status = 100, ex = "Informe a data de aquisição do veículo!" }));
            }

            if (Convert.ToDateTime(viewModel.DataAquisicao) > DateTime.Now)
            {
                return(Json(new { status = 100, ex = "Informe uma data de aquisição" }));
            }

            if (string.IsNullOrEmpty(viewModel.ValorCompra.Replace("R$", "").Trim()))
            {
                return(Json(new { status = 100, ex = "Informe um valor de compra!" }));
            }

            if (Convert.ToDecimal(viewModel.ValorCompra.Replace("R$", "").Trim()) < 0)
            {
                return(Json(new { status = 100, ex = "Informe um valor de compra!" }));
            }

            if (string.IsNullOrEmpty(viewModel.TipoDepreciacao))
            {
                return(Json(new { status = 100, ex = "Informe um tipo de depreciação!" }));
            }

            if (string.IsNullOrEmpty(viewModel.Depreciacao))
            {
                return(Json(new { status = 100, ex = "Informe o peercentual de depreciação!" }));
            }

            if (Convert.ToDecimal(viewModel.Depreciacao) < 0)
            {
                return(Json(new { status = 100, ex = "Informe o peercentual de depreciação!" }));
            }

            var existe = _db.PATRIMONIO.Any(p => p.NUMERO == viewModel.Numero.ToUpper());

            if (existe)
            {
                return(Json(new { status = 100, ex = "Número de patrimonio já informado para outra ferramenta!" }));
            }

            #endregion

            #region Incluir Ferramenta

            var ferramenta = new FERRAMENTA
            {
                GRUPO          = viewModel.Grupo,
                TIPO           = viewModel.Tipo,
                MINIMO         = viewModel.Minimo,
                FLG_CONSUMIVEL = viewModel.FlgConsumivel
            };

            if (!string.IsNullOrEmpty(viewModel.Descricao))
            {
                ferramenta.DESCRICAO = viewModel.Descricao.ToUpper();
            }

            if (!string.IsNullOrEmpty(viewModel.Observacao))
            {
                ferramenta.OBSERVACAO = viewModel.Observacao.ToUpper();
            }

            _db.FERRAMENTA.Add(ferramenta);

            #endregion

            #region Incluir Patrimonio

            var patrimonio = new PATRIMONIO
            {
                FLG_DEPRECIA     = viewModel.FlgDeprecia,
                DATA_AQUISICAO   = Convert.ToDateTime(viewModel.DataAquisicao),
                VALOR_COMPRA     = Convert.ToDecimal(viewModel.ValorCompra.Replace("R$", "").Trim()),
                TIPO_DEPRECIACAO = viewModel.TipoDepreciacao,
                DEPRECIACAO      = Convert.ToDecimal(viewModel.Depreciacao),
                FERRAMENTA1      = ferramenta
            };

            if (!string.IsNullOrEmpty(viewModel.Numero))
            {
                patrimonio.NUMERO = viewModel.Numero.ToUpper();
            }

            _db.PATRIMONIO.Add(patrimonio);

            #endregion

            #region Incluir Rateio

            var projetos = _db.PROJETO.ToList();

            if (projetos.Count > 0)
            {
                projetos.ForEach(x =>
                {
                    var rateio = new RATEIO {
                        PROJETO = x.ID, FERRAMENTA1 = ferramenta, SITUACAO = "A"
                    };
                    _db.RATEIO.Add(rateio);
                });
            }

            #endregion

            _db.SaveChanges();

            return(Json(new { status = 200, msg = "Incluído com sucesso!" }));
        }
        public ActionResult ConfirmarEdit(FerramentaViewModel viewModel)
        {
            #region Validações

            if (viewModel.Grupo <= 0)
            {
                return(Json(new { status = 100, ex = "Informe um grupo!" }));
            }

            if (viewModel.Tipo <= 0)
            {
                return(Json(new { status = 100, ex = "Informe um tipo!" }));
            }

            if (string.IsNullOrEmpty(viewModel.Descricao))
            {
                return(Json(new { status = 100, ex = "Informe uma descrição!" }));
            }

            if (viewModel.Minimo < 0)
            {
                return(Json(new { status = 100, ex = "Informe uma quantidade minima!" }));
            }

            if (string.IsNullOrEmpty(viewModel.FlgConsumivel))
            {
                return(Json(new { status = 100, ex = "Informe se a ferramenta é consumível ou não!" }));
            }

            if (string.IsNullOrEmpty(viewModel.Numero))
            {
                return(Json(new { status = 100, ex = "Informe um número de patrimonio!" }));
            }

            if (string.IsNullOrEmpty(viewModel.FlgDeprecia))
            {
                return(Json(new { status = 100, ex = "Informe se a ferramenta deprecia ou não!" }));
            }

            if (string.IsNullOrEmpty(viewModel.DataAquisicao))
            {
                return(Json(new { status = 100, ex = "Informe a data de aquisição do veículo!" }));
            }
            try
            {
                if (Convert.ToDateTime(viewModel.DataAquisicao) > DateTime.Now)
                {
                    return(Json(new { status = 100, ex = "Informe uma data de aquisição" }));
                }
            }
            catch (Exception)
            {
                return(Json(new { status = 100, ex = "Informe uma data de aquisição" }));
            }

            if (string.IsNullOrEmpty(viewModel.ValorCompra.Replace("R$", "").Trim()))
            {
                return(Json(new { status = 100, ex = "Informe um valor de compra!" }));
            }

            if (Convert.ToDecimal(viewModel.ValorCompra.Replace("R$", "").Trim()) < 0)
            {
                return(Json(new { status = 100, ex = "Informe um valor de compra!" }));
            }

            if (string.IsNullOrEmpty(viewModel.TipoDepreciacao))
            {
                return(Json(new { status = 100, ex = "Informe um tipo de depreciação!" }));
            }

            if (string.IsNullOrEmpty(viewModel.Depreciacao))
            {
                return(Json(new { status = 100, ex = "Informe o peercentual de depreciação!" }));
            }

            if (Convert.ToDecimal(viewModel.Depreciacao) < 0)
            {
                return(Json(new { status = 100, ex = "Informe o peercentual de depreciação!" }));
            }

            var existe = _db.PATRIMONIO.Any(p => p.NUMERO == viewModel.Numero.ToUpper() && p.ID != viewModel.IdPatrimonio);

            if (existe)
            {
                return(Json(new { status = 100, ex = "Número de patrimonio já informado para outra ferramenta!" }));
            }

            #endregion

            #region Alterar Ferramenta

            var ferramenta = new FERRAMENTA
            {
                ID             = viewModel.Id,
                GRUPO          = viewModel.Grupo,
                TIPO           = viewModel.Tipo,
                MINIMO         = viewModel.Minimo,
                FLG_CONSUMIVEL = viewModel.FlgConsumivel
            };

            if (!string.IsNullOrEmpty(viewModel.Descricao))
            {
                ferramenta.DESCRICAO = viewModel.Descricao.ToUpper();
            }

            if (!string.IsNullOrEmpty(viewModel.Observacao))
            {
                ferramenta.OBSERVACAO = viewModel.Observacao.ToUpper();
            }

            _db.Entry(ferramenta).State = EntityState.Modified;

            #endregion

            #region Alterar Patrimonio

            var patrimonio = new PATRIMONIO
            {
                ID               = viewModel.IdPatrimonio,
                FLG_DEPRECIA     = viewModel.FlgDeprecia,
                DATA_AQUISICAO   = Convert.ToDateTime(viewModel.DataAquisicao),
                VALOR_COMPRA     = Convert.ToDecimal(viewModel.ValorCompra.Replace("R$", "").Trim()),
                TIPO_DEPRECIACAO = viewModel.TipoDepreciacao,
                DEPRECIACAO      = Convert.ToDecimal(viewModel.Depreciacao),
                FERRAMENTA       = viewModel.Id
            };

            if (!string.IsNullOrEmpty(viewModel.Numero))
            {
                patrimonio.NUMERO = viewModel.Numero.ToUpper();
            }

            _db.PATRIMONIO.AddOrUpdate(patrimonio);

            #endregion

            _db.SaveChanges();

            return(Json(new { status = 200, msg = "Alterado com sucesso!" }));
        }