public ActionResult Create(int idProjeto)
        {
            try
            {
                using (var db = new Context())
                {
                    var _bll = new BLL.ProjetoBLL(db, _idUsuario);

                    var _projeto = _bll.FindSingle(e => e.idProjeto == idProjeto, u => u.Produtos.Select(k => k.ProdutoMateriais.Select(j => j.Material)));
                    var _result = new RequisicaoVM
                    {
                        Projeto = RP.Sistema.Web.Models.Projeto.Consultar.GetModel(_projeto),
                        Itens = RequisicaoVM.RequisicaoItemVM.GetItens(_projeto.Produtos.ToList()),
                    };

                    return View(_result);
                }
            }
            catch (Exception ex)
            {
                RP.Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario);
                return RedirectToAction("Index", "Erro", new { area = string.Empty });
            }
        }
        private ActionResult GetView(int id)
        {
            try
            {
                using (var db = new Context())
                {
                    var _bll = new BLL.ProjetoBLL(db, _idUsuario);

                    var _projeto = _bll.FindSingle(e => e.idProjeto == id,
                        u => u.Cliente, u => u.Vendedor, u => u.Produtos, u => u.ProjetoCustos,
                        u => u.Produtos.Select(l => l.ProdutoMateriais),
                        u => u.Produtos.Select(k => k.Marceneiro), u => u.Produtos.Select(k => k.Projetista));

                    return View(AprovarVM.GetProjeto(_projeto));
                }
            }
            catch (Exception ex)
            {
                RP.Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario);
                return RedirectToAction("Index", "Erro", new { area = string.Empty });
            }
        }
        public ActionResult AddCusto(int id)
        {
            try
            {
                using (var db = new Context())
                {
                    var _bll = new BLL.ProjetoBLL(db, _idUsuario);

                    var _projeto = _bll.FindSingle(e => e.idProjeto == id, u => u.Cliente, u => u.ProjetoCustos);

                    return View(CustoProjetoVM.GetProjeto(_projeto));
                }
            }
            catch (Exception ex)
            {
                RP.Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario);
                return RedirectToAction("Index", "Erro", new { area = string.Empty });
            }
        }
        public ActionResult Orcamento(int idProjeto, string dsObservacao, string dsCondicao, string dsGarantia, string dsPrevisao, string dsIncluso, string dsValidade)
        {
            try
            {
                LogBLL.Insert(new LogDado("Orcamento", "Projeto", _idUsuario));
                using (var db = new Context())
                {

                    using (var trans = new RP.DataAccess.RPTransactionScope(db))
                    {
                        var _bll = new BLL.ProjetoBLL(db, _idUsuario);

                        var _projeto = _bll.FindSingle(u => u.idProjeto == idProjeto);

                        _projeto.dsCondicao = dsCondicao;
                        _projeto.dsGarantia = dsGarantia;
                        _projeto.dsIncluso = dsIncluso;
                        _projeto.dsObservacao = dsObservacao;
                        _projeto.dsPrevisao = dsPrevisao;
                        _projeto.dsValidade = dsValidade;
                        _bll.SaveChanges();

                        trans.Complete();
                    }
                    return new Report.Class.OrcamentoCliente().GetReport(db, idProjeto, dsObservacao, dsCondicao, dsGarantia, dsPrevisao, dsIncluso, dsValidade, _idUsuario);
                }
            }
            catch (Exception ex)
            {
                RP.Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario);
                return RedirectToAction("Index", "Erro", new { area = string.Empty });
            }
        }
        public ActionResult AddItem(AprovarVM model)
        {
            try
            {
                LogBLL.Insert(new LogDado("AddItem", "Projeto", _idUsuario));
                using (var db = new Context())
                {
                    using (var trans = new RP.DataAccess.RPTransactionScope(db))
                    {
                        var _bll = new BLL.ProjetoBLL(db, _idUsuario);

                        var margemGanho = model.margemGanhoMaterial;

                        var _projeto = _bll.FindSingle(e => e.idProjeto == model.idProjeto,
                            u => u.Cliente, u => u.Vendedor, u => u.Produtos, u => u.ProjetoCustos,
                            u => u.Produtos.Select(l => l.ProdutoMateriais),
                            u => u.Produtos.Select(k => k.Marceneiro), u => u.Produtos.Select(k => k.Projetista));

                        model = AprovarVM.GetProjeto(_projeto);

                        _projeto.vlProjeto = model.Produtos.Sum(u => u.vlProduto);
                        _projeto.vlVenda = model.Produtos.Sum(u => u.vlVenda);
                        _projeto.vlDesconto = model.Produtos.Sum(u => u.vlDesconto);

                        foreach (var item in _projeto.Produtos)
                        {
                            item.vlVenda = model.Produtos.First(u => u.idProduto == item.idProduto).vlVenda;
                            item.vlProduto = model.Produtos.First(u => u.idProduto == item.idProduto).vlProduto;
                            item.vlDesconto = model.Produtos.First(u => u.idProduto == item.idProduto).vlDesconto;
                        }

                        _bll.Aprovar(_projeto);
                        _bll.SaveChanges();
                        if (margemGanho != null)
                        {
                            _bll.AlterarMargemGanhoMaterial(margemGanho.Value, model.idProjeto);
                        }
                        _bll.SaveChanges();


                        model = AprovarVM.GetProjeto(_projeto);

                        _projeto.vlProjeto = model.Produtos.Sum(u => u.vlProduto);
                        _projeto.vlVenda = model.Produtos.Sum(u => u.vlVenda);
                        _projeto.vlDesconto = model.Produtos.Sum(u => u.vlDesconto);

                        foreach (var item in _projeto.Produtos)
                        {
                            item.vlVenda = model.Produtos.First(u => u.idProduto == item.idProduto).vlVenda;
                            item.vlProduto = model.Produtos.First(u => u.idProduto == item.idProduto).vlProduto;
                            item.vlDesconto = model.Produtos.First(u => u.idProduto == item.idProduto).vlDesconto;
                        }
                        _bll.Aprovar(_projeto);
                        _bll.SaveChanges();
                        trans.Complete();

                        this.AddFlashMessage("Projeto atualizado com sucesso!", FlashMessage.SUCCESS);
                        return RedirectToAction("Index");
                    }
                }
            }
            catch (Exception ex)
            {
                RP.Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario);
                return RedirectToAction("Index", "Erro", new { area = string.Empty });
            }
        }