public static Orcamento GetOne(int pId)
        {
            StringBuilder sql = new StringBuilder();
            Orcamento orcamento = new Orcamento();

            sql.Append("select oc.IdOrcamento, oc.Servico, oc.Valor, oc.ValorTotal, oc.IdCliente, cl.Nome as nomecliente");
            sql.Append(" from Orcamento as oc");
            sql.Append(" inner join Cliente as cl");
            sql.Append(" on oc.IdCliente = cl.IdCliente");
            sql.Append(" WHERE oc.IdOrcamento = " + pId);

            SqlDataReader dr = SqlConn.Get(sql.ToString());

            while (dr.Read())
            {
                orcamento.IdOrcamento = (int)dr["IdOrcamento"];
                orcamento.Servico = dr.IsDBNull(dr.GetOrdinal("Servico")) ? "" : (string)dr["Servico"];
                orcamento.Valor = dr.IsDBNull(dr.GetOrdinal("Valor")) ? null : (decimal?)dr["Valor"];
                orcamento.ValorTotal = (decimal)dr["ValorTotal"];
                orcamento.IdCliente = (int)dr["IdCliente"];
                orcamento.ClienteNome = (string)dr["nomecliente"];

            }
            dr.Close();
            return orcamento;
        }
        // POST: api/Orcamento
        public HttpResponseMessage Post(Orcamento pOrcamento)
        {
            if (!ModelState.IsValid)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
            }

            try
            {
                OrcamentoRepository create = new OrcamentoRepository();
                create.Create(pOrcamento);
                return Request.CreateResponse(HttpStatusCode.OK);
            }
            catch (ArgumentException ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
            }
        }
        // PUT: api/Orcamento/5
        public HttpResponseMessage Put(int pId, Orcamento pOrcamento)
        {
            if (!ModelState.IsValid)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
            }

            if (pId != pOrcamento.IdCliente)
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }

            try
            {
                OrcamentoRepository update = new OrcamentoRepository();
                update.Update(pOrcamento);
                return Request.CreateResponse(HttpStatusCode.OK);
            }
            catch (ArgumentException ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
            }
        }
        public ActionResult EditOrcamento(int pId, Orcamento pOrcamento)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    ViewBag.IdProduto = new SelectList(ProdutoRepository.GetAll(), "IdProduto", "Nome", pOrcamento.IdProduto);
                    //int? IdProd = pOrcamento.IdProduto;
                    //var getProd = ProdutoRepository.GetOne(IdProd);
                    //pOrcamento.ValorTotal = pOrcamento.Valor + getProd.Valor;

                    OrcamentoRepository edit = new OrcamentoRepository();
                    edit.Update(pOrcamento);
                    return RedirectToAction("ListOrcamentos").ComMensagemDeSucesso("Orçamento editado com sucesso!");
                }
                else
                {
                    return View("EditOrcamento");
                }
            }
            catch
            {
                throw;
            }
        }
 public ActionResult DeleteOrcamento(int pId, Orcamento pOrcamento)
 {
     try
     {
         OrcamentoRepository exclui = new OrcamentoRepository();
         exclui.Delete(pId);
         return RedirectToAction("ListOrcamentos").ComMensagemDeSucesso("Orçamento excluído com sucesso!");
     }
     catch
     {
         throw;
     }
 }
        public void Update(Orcamento pOrcamento)
        {
            StringBuilder sql = new StringBuilder();
            SqlCommand cmd = new SqlCommand();

            sql.Append("UPDATE Orcamento SET Servico=@Servico, Valor=@Valor, IdProduto=@IdProduto, ValorTotal=@ValorTotal");
            sql.Append(" WHERE IdOrcamento=" + pOrcamento.IdOrcamento);

            if (!string.IsNullOrEmpty(pOrcamento.Servico))
                cmd.Parameters.Add("@Servico", SqlString.Null).Value = pOrcamento.Servico;
            else
                cmd.Parameters.Add("@Servico", SqlString.Null);

            if (pOrcamento.Valor != null)
                cmd.Parameters.Add("@Valor", SqlString.Null).Value = pOrcamento.Valor;
            else
                cmd.Parameters.Add("@Valor", SqlString.Null);

            if (pOrcamento.IdProduto != null)
                cmd.Parameters.Add("@IdProduto", SqlString.Null).Value = pOrcamento.IdProduto;
            else
                cmd.Parameters.Add("@IdProduto", SqlString.Null);

            cmd.Parameters.AddWithValue("@ValorTotal", pOrcamento.ValorTotal);
            cmd.Parameters.AddWithValue("@IdCliente", pOrcamento.IdCliente);

            cmd.CommandText = sql.ToString();
            SqlConn.CommandPersist(cmd);
        }
        public Orcamento GetLast()
        {
            StringBuilder sql = new StringBuilder();
            Orcamento orcamento = new Orcamento();

            sql.Append("SELECT TOP 1 *");
            sql.Append(" FROM Orcamento");
            sql.Append(" ORDER BY IdOrcamento DESC");

            SqlDataReader dr = SqlConn.Get(sql.ToString());

            while (dr.Read())
            {
                orcamento.IdOrcamento = (int)dr["IdOrcamento"];
            }
            dr.Close();
            return orcamento;
        }
        public void Create(Orcamento pOrcamento)
        {
            StringBuilder sql = new StringBuilder();
            SqlCommand cmd = new SqlCommand();

            sql.Append("INSERT INTO Orcamento (Servico, Valor, ValorTotal, IdCliente)");
            sql.Append("VALUES(@Servico, @Valor, @ValorTotal, @IdCliente)");

            if (!string.IsNullOrEmpty(pOrcamento.Servico))
                cmd.Parameters.Add("@Servico", SqlString.Null).Value = pOrcamento.Servico;
            else
                cmd.Parameters.Add("@Servico", SqlString.Null);

            if (pOrcamento.Valor != null)
                cmd.Parameters.Add("@Valor", SqlString.Null).Value = pOrcamento.Valor;
            else
                cmd.Parameters.Add("@Valor", SqlString.Null);

            cmd.Parameters.AddWithValue("@ValorTotal", pOrcamento.ValorTotal);

            cmd.Parameters.AddWithValue("@IdCliente", pOrcamento.IdCliente);

            cmd.CommandText = sql.ToString();
            SqlConn.CommandPersist(cmd);
        }
        public void AddProdutos(Orcamento pOrcamento)
        {
            StringBuilder sql = new StringBuilder();
            SqlCommand cmd = new SqlCommand();

            sql.Append("INSERT INTO Orcamento_Produto (IdProduto, IdOrcamento, Qntd)");
            sql.Append("VALUES(@IdProduto, @IdOrcamento, @Qntd)");

             var LastIdOrc = GetLast();

             if (pOrcamento.IdProduto != null)
                 cmd.Parameters.Add("@IdOrcamento", SqlString.Null).Value = LastIdOrc.IdOrcamento;
             else
                 cmd.Parameters.Add("@IdOrcamento", SqlString.Null);

            if (pOrcamento.IdProduto != null)
                cmd.Parameters.Add("@IdProduto", SqlString.Null).Value = pOrcamento.IdProduto;
            else
                cmd.Parameters.Add("@IdProduto", SqlString.Null);

            if (pOrcamento.IdProduto != null)
                cmd.Parameters.Add("@Qntd", SqlString.Null).Value = pOrcamento.ProdutoQntd;
            else
                cmd.Parameters.Add("@Qntd", SqlString.Null);

            cmd.CommandText = sql.ToString();
            SqlConn.CommandPersist(cmd);
        }