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)); }