Example #1
0
        public override int Update(GDASession session, ProjetoModelo objUpdate)
        {
            if (objUpdate.Codigo.Contains('§') || objUpdate.Codigo.Contains('+'))
            {
                throw new Exception("O código do Projeto Modelo não pode conter os caracteres '§' e '+'.");
            }

            // Verifica se já existe um modelo com o código informado.
            if (objPersistence.ExecuteScalar(session,
                                             string.Format("SELECT COUNT(*) FROM projeto_modelo WHERE Codigo=?codigo AND IdProjetoModelo<>{0}", objUpdate.IdProjetoModelo),
                                             new GDAParameter("?codigo", objUpdate.Codigo)).ToString().StrParaInt() > 0)
            {
                throw new Exception("Já existe um modelo cadastrado com o código informado.");
            }

            // Verifica se alguma medida foi retirada sendo que a mesma estava sendo usada no projeto
            if (MedidaProjetoModeloDAO.Instance.MedidasRetiradasEmUso(session, objUpdate.IdProjetoModelo, objUpdate.MedidasProjMod))
            {
                throw new Exception("Algumas das medidas retiradas deste modelo de projeto já estão sendo usadas em expressões de cálculo.");
            }

            var projModOld = GetElementByPrimaryKey(session, objUpdate.IdProjetoModelo);

            // Se o código do modelo antigo for diferente do atual, renomeia a figura do modelo e figura engenharia
            if (objUpdate.Codigo != projModOld.Codigo)
            {
                ManipulacaoImagem.RenomearImagem(Utils.GetModelosProjetoPath + projModOld.NomeFigura, Utils.GetModelosProjetoPath + objUpdate.Codigo + ".jpg");
                ManipulacaoImagem.RenomearImagem(Utils.GetModelosProjetoPath + projModOld.NomeFiguraAssociada, Utils.GetModelosProjetoPath + objUpdate.Codigo + "§E.jpg");
                objUpdate.NomeFigura          = objUpdate.Codigo + ".jpg";
                objUpdate.NomeFiguraAssociada = objUpdate.Codigo + "§E.jpg";

                /* Chamado 53479. */
                foreach (var peca in PecaProjetoModeloDAO.Instance.GetByModelo(session, objUpdate.IdProjetoModelo))
                {
                    if (peca.Tipo == 1)
                    {
                        ManipulacaoImagem.RenomearImagem(Utils.GetModelosProjetoPath + projModOld.NomeFigura.Replace(".jpg", string.Format("§{0}.jpg", peca.Item)),
                                                         Utils.GetModelosProjetoPath + objUpdate.Codigo + string.Format("§{0}.jpg", peca.Item));
                    }
                }
            }

            // Salva os tipos de medidas utilizadas neste modelo
            MedidaProjetoModeloDAO.Instance.SalvaMedidas(session, objUpdate.IdProjetoModelo, objUpdate.MedidasProjMod);

            // Se o modelo de projeto não for configurável, não permite alterar alguns campos
            if (!IsConfiguravel(session, objUpdate.IdProjetoModelo))
            {
                objUpdate.TipoMedidasInst  = projModOld.TipoMedidasInst;
                objUpdate.TipoCalcAluminio = projModOld.TipoCalcAluminio;
                objUpdate.TipoDesenho      = projModOld.TipoDesenho;
                objUpdate.EixoPuxador      = projModOld.EixoPuxador;
            }

            objUpdate.TextoOrcamento      = projModOld.TextoOrcamento;
            objUpdate.TextoOrcamentoVidro = projModOld.TextoOrcamentoVidro;

            LogAlteracaoDAO.Instance.LogProjetoModelo(session, objUpdate);
            return(base.Update(session, objUpdate));
        }