// NOTA: este processo evolui normalmente partindo sempre do princípio que o CA a // editar existe na BD. Se não for o caso, essa informação não existe, // neste ponto de execução tendo de ser verificada somente aquando da gravação dos dados private void ClickBtnEditar() { ((frmMain)TopLevelControl).EnterWaitMode(); FormCreateControloAut form = null; ListViewItem cadItem = null; GISADataset.ControloAutDicionarioRow contextCadRow = null; GISADataset.TipoNoticiaAutRow contextNoticiaAutRow = null; try { if (caList.SelectedItems.Count < 1) return; cadItem = caList.SelectedItems[0]; contextCadRow = (GISADataset.ControloAutDicionarioRow)cadItem.Tag; if (contextCadRow.RowState == DataRowState.Detached) { MessageBox.Show("Não é possível editar a notícia de autoridade selecionada " + System.Environment.NewLine + "uma vez que foi apagada por outro utilizador.", "Edição de notícias de autoridade", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // so é possível editar termos autorizados if (contextCadRow.IDTipoControloAutForma != Convert.ToInt64(TipoControloAutForma.FormaAutorizada)) return; contextNoticiaAutRow = contextCadRow.ControloAutRow.TipoNoticiaAutRow; if (GetCurrentTipoNoticiaAut()[0] == TipoNoticiaAut.EntidadeProdutora) { form = new FormCreateEntidadeProdutora(); ((FormCreateEntidadeProdutora)form).txtCodigo.Text = contextCadRow.ControloAutRow.GetNivelControloAutRows()[0].NivelRow.Codigo; } else form = new FormCreateControloAut(); form.Text = "Editar notícia de autoridade"; form.cbNoticiaAut.DataSource = caList.cbNoticiaAut.DataSource; form.cbNoticiaAut.DisplayMember = caList.cbNoticiaAut.DisplayMember; form.cbNoticiaAut.SelectedItem = contextNoticiaAutRow; if (form.cbNoticiaAut.Items.Count == 2) form.cbNoticiaAut.Enabled = false; form.ListTermos.rbEscolher.Checked = true; form.SetControloAutDicionarioRow(contextCadRow); form.LoadData(true); } finally { ((frmMain)TopLevelControl).LeaveWaitMode(); } bool updateIndex = false; switch (form.ShowDialog()) { case DialogResult.OK: Trace.WriteLine("A editar notícia de autoridade..."); GISADataset.DicionarioRow dicionarioRow = null; if (GisaDataSetHelper.GetInstance().Dicionario.Select(string.Format("Termo = '{0}'", form.ListTermos.ValidAuthorizedForm.Replace("'", "''"))).Length > 0 && form.ListTermos.ValidAuthorizedForm != null) dicionarioRow = (GISADataset.DicionarioRow)(GisaDataSetHelper.GetInstance().Dicionario.Select(string.Format("Termo = '{0}'", form.ListTermos.ValidAuthorizedForm.Replace("'", "''")))[0]); else if (form.ListTermos.ValidAuthorizedForm != null && form.ListTermos.ValidAuthorizedForm.Length > 0) { dicionarioRow = GisaDataSetHelper.GetInstance().Dicionario.NewDicionarioRow(); dicionarioRow.Termo = form.ListTermos.ValidAuthorizedForm;//.Replace("'", "''"); dicionarioRow.CatCode = "CA"; dicionarioRow.Versao = new byte[]{}; dicionarioRow.isDeleted = 0; } GISADataset.ControloAutRow caRow = contextCadRow.ControloAutRow; // excluir selecção de termos inválidos. nunca deveria acontecer Trace.Assert(dicionarioRow != null); // obter o tipo de noticia de autoridade escolhido GISADataset.TipoNoticiaAutRow tnaRow = null; tnaRow = form.SelectedTipoNoticiaAut; if (caRow.IDTipoNoticiaAut != tnaRow.ID) caRow.TipoNoticiaAutRow = tnaRow; GISADataset.NivelRow nRow = null; if (GetCurrentTipoNoticiaAut()[0] == TipoNoticiaAut.EntidadeProdutora) nRow = caRow.GetNivelControloAutRows()[0].NivelRow; // excluir selecção de tipos de noticia de autoridade inválidos. nunca deveria acontecer Trace.Assert(tnaRow != null); // se estiver a ser usado o mesmo termo e o mesmo tipo de noticia de // autoridade não é necessária mais nenhuma acção if (dicionarioRow == contextCadRow.DicionarioRow && tnaRow == contextNoticiaAutRow && (GetCurrentTipoNoticiaAut()[0] != TipoNoticiaAut.EntidadeProdutora || ((FormCreateEntidadeProdutora)form).txtCodigo.Text.Equals(nRow.Codigo))) return; //Dim QueryFilter As String // se o estado da row for detached trata-se de um novo termo // criado. nesse caso é necessário adiciona-lo ao dataset. if (dicionarioRow.RowState == DataRowState.Detached) GisaDataSetHelper.GetInstance().Dicionario.AddDicionarioRow(dicionarioRow); if (GetCurrentTipoNoticiaAut()[0] == TipoNoticiaAut.EntidadeProdutora) nRow.Codigo = ((FormCreateEntidadeProdutora)form).txtCodigo.Text; // Marcar que houve uma edição para posteriormente ser adicinado um registo na lista de revisões CurrentContext.RaiseRegisterModificationEvent(caRow); GISADataset.TipoControloAutFormaRow tcafRowAutorizado = null; tcafRowAutorizado = (GISADataset.TipoControloAutFormaRow)(GisaDataSetHelper.GetInstance().TipoControloAutForma.Select("ID=" + System.Enum.Format(typeof(TipoControloAutForma), TipoControloAutForma.FormaAutorizada, "D"))[0]); PersistencyHelper.EditControloAutPreConcArguments args = new PersistencyHelper.EditControloAutPreConcArguments(); var oldTermo = string.Empty; var newTermo = string.Empty; if (contextCadRow.IDDicionario != dicionarioRow.ID) { oldTermo = contextCadRow.DicionarioRow.Termo; newTermo = dicionarioRow.Termo; args.origDRowID = contextCadRow.DicionarioRow.ID; // alterar o registo de ControloAutDicionario com TipoControloAutforma "autorizado" para que faça uso do novo termo contextCadRow.Delete(); GISADataset.ControloAutDicionarioRow cadRow = null; cadRow = GisaDataSetHelper.GetInstance().ControloAutDicionario.AddControloAutDicionarioRow(caRow, dicionarioRow, tcafRowAutorizado, new byte[]{}, 0); try { args.newCadRowIDControloAut = cadRow.IDControloAut; args.newCadRowIDDicionario = cadRow.IDDicionario; args.newCadRowIDTipoControloAutForma = cadRow.IDTipoControloAutForma; args.newDRowID = dicionarioRow.ID; args.origCadRowIDControloAut = (long)(contextCadRow["IDControloAut", DataRowVersion.Original]); args.origCadRowIDDicionario = (long)(contextCadRow["IDDicionario", DataRowVersion.Original]); args.origCadRowIDTipoControloAutForma = (long)(contextCadRow["IDTipoControloAutForma", DataRowVersion.Original]); if (caRow.IDTipoNoticiaAut == Convert.ToInt64(TipoNoticiaAut.EntidadeProdutora)) args.nRowID = nRow.ID; args.caRowID = caRow.ID; PersistencyHelper.save(editCA, args); if (args.editCAError == PersistencyHelper.EditControloAutPreConcArguments.EditCAErrors.NoError) { updateIndex = true; cadItem.Tag = cadRow; cadItem.Text = cadRow.DicionarioRow.Termo; cadItem.SubItems[2].Text = TranslationHelper.FormatBoolean(cadRow.ControloAutRow.Autorizado); cadItem.SubItems[3].Text = TranslationHelper.FormatBoolean(cadRow.ControloAutRow.Completo); // se o item da GUI tiver sido removido pelo handler de rowchange tornamos a readiciona-lo if (cadItem.ListView == null) { caList.Items.Add(cadItem); } // é forçada uma mudança de contexto por forma a proceder-se à actualização do código de // no painel de descrição das entidades produtoras //if (caRow.IDTipoNoticiaAut == Convert.ToInt64(TipoNoticiaAut.EntidadeProdutora)) //{ ((PxListView)cadItem.ListView).clearItemSelection(cadItem); //} ((PxListView)cadItem.ListView).selectItem(cadItem); } else { if (args.editCAError == PersistencyHelper.EditControloAutPreConcArguments.EditCAErrors.OrigCadDeleted) { IDbConnection conn = GisaDataSetHelper.GetConnection(); try { conn.Open(); ControloAutRule.Current.LoadDicionarioAndControloAutDicionario(GisaDataSetHelper.GetInstance(), caRow.ID, conn); } finally { conn.Close(); } string QueryFilterNewCad = string.Format("IDControloAut = {0} AND NOT IDDicionario = {1} AND IDTipoControloAutForma = 1", caRow.ID, contextCadRow.IDDicionario); GISADataset.ControloAutDicionarioRow newCad = (GISADataset.ControloAutDicionarioRow)(GisaDataSetHelper.GetInstance().ControloAutDicionario.Select(QueryFilterNewCad)[0]); cadItem.Tag = newCad; cadItem.Text = newCad.DicionarioRow.Termo; } else if (args.editCAError == PersistencyHelper.EditControloAutPreConcArguments.EditCAErrors.CADeleted) { // forçar uma perda de contexto uma vez que o contexto actual não é válido caList.ClearItemSelection(caList.SelectedItems[0]); } else if (args.editCAError == PersistencyHelper.EditControloAutPreConcArguments.EditCAErrors.AlreadyUsedCodigo) { // não está prevista qualquer operação nesta situação } MessageBox.Show(args.message, "Editar notícia de autoridade", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } catch (Exception ex) { Trace.WriteLine(ex); throw; } finally { PersistencyHelper.cleanDeletedData(new List<TableDepthOrdered.TableCloudType>(new TableDepthOrdered.TableCloudType[] { PersistencyHelper.determinaNuvem("Nivel"), PersistencyHelper.determinaNuvem("ControloAut") })); } } else if (nRow != null && nRow.RowState == DataRowState.Modified) { try { //só o código da Entidade Produtora foi alterado args.nRowID = nRow.ID; args.caRowID = -1; //indicar que a operação só envolve a edição do código PersistencyHelper.save(editCA, args); if (args.editCAError == PersistencyHelper.EditControloAutPreConcArguments.EditCAErrors.CADeleted) { MessageBox.Show(args.message, "Editar notícia de autoridade", MessageBoxButtons.OK, MessageBoxIcon.Warning); // forçar uma perda de contexto uma vez que o contexto actual não é válido caList.ClearItemSelection(caList.SelectedItems[0]); } else if (args.editCAError == PersistencyHelper.EditControloAutPreConcArguments.EditCAErrors.AlreadyUsedCodigo) MessageBox.Show(args.message, "Editar notícia de autoridade", MessageBoxButtons.OK, MessageBoxIcon.Warning); else if (args.editCAError == PersistencyHelper.EditControloAutPreConcArguments.EditCAErrors.NoError) { updateIndex = true; ((PxListView)cadItem.ListView).clearItemSelection(cadItem); ((PxListView)cadItem.ListView).selectItem(cadItem); } } catch (Exception ex) { Trace.WriteLine(ex); throw; } finally { PersistencyHelper.cleanDeletedData(new List<TableDepthOrdered.TableCloudType>(new TableDepthOrdered.TableCloudType[] { PersistencyHelper.determinaNuvem("Nivel"), PersistencyHelper.determinaNuvem("ControloAut") })); } } else { try { //só o tipo de notícia de autoridade do conteúdo foi alterado args.caRowID = caRow.ID; PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(editCA, args); if (args.editCAError == PersistencyHelper.EditControloAutPreConcArguments.EditCAErrors.CADeleted) { MessageBox.Show(args.message, "Editar notícia de autoridade", MessageBoxButtons.OK, MessageBoxIcon.Warning); // forçar uma perda de contexto uma vez que o contexto actual não é válido caList.ClearItemSelection(caList.SelectedItems[0]); } else { updateIndex = successfulSave == PersistencyHelper.SaveResult.successful; ((PxListView)cadItem.ListView).clearItemSelection(cadItem); ((PxListView)cadItem.ListView).selectItem(cadItem); } } catch (Exception ex) { Trace.WriteLine(ex); throw; } finally { PersistencyHelper.cleanDeletedData(new List<TableDepthOrdered.TableCloudType>(new TableDepthOrdered.TableCloudType[] { PersistencyHelper.determinaNuvem("Nivel"), PersistencyHelper.determinaNuvem("ControloAut") })); } } if (updateIndex) { GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection()); try { List<string> IDNiveis = ControloAutRule.Current.GetNiveisDocAssociados(caRow.ID, ho.Connection); GISA.Search.Updater.updateNivelDocumental(IDNiveis); switch (caRow.IDTipoNoticiaAut) { case (long)TipoNoticiaAut.EntidadeProdutora: GISA.Search.Updater.updateProdutor(caRow.ID); GISA.Search.Updater.updateNivelDocumentalComProdutores(caRow.GetNivelControloAutRows()[0].ID); break; case (long)TipoNoticiaAut.Onomastico: case (long)TipoNoticiaAut.Ideografico: case (long)TipoNoticiaAut.ToponimicoGeografico: GISA.Search.Updater.updateAssunto(caRow.ID); if (SessionHelper.AppConfiguration.GetCurrentAppconfiguration().IsFedoraEnable()) SessionHelper.AppConfiguration.GetCurrentAppconfiguration().FedoraHelperSingleton.ActualizaObjDigitaisPorNivel(IDNiveis, oldTermo, newTermo, caRow.IDTipoNoticiaAut); break; case (long)TipoNoticiaAut.TipologiaInformacional: GISA.Search.Updater.updateTipologia(caRow.ID); if (SessionHelper.AppConfiguration.GetCurrentAppconfiguration().IsFedoraEnable()) SessionHelper.AppConfiguration.GetCurrentAppconfiguration().FedoraHelperSingleton.ActualizaObjDigitaisPorNivel(IDNiveis, oldTermo, newTermo, caRow.IDTipoNoticiaAut); break; } } catch (Exception ex) { Trace.WriteLine(ex.ToString()); throw; } finally { ho.Dispose(); } } if (! (tnaRow == contextNoticiaAutRow)) cadItem.SubItems[1].Text = tnaRow.Designacao; break; case DialogResult.Cancel: break; } }
void SuggestionPickerRA_CreateEntidadeInterna(object sender, ref EntidadeInterna ei, TipoEntidadeExterna tee, out bool cancel, out TipoEstado estado) { estado = TipoEstado.Novo; cancel = false; FormCreateControloAut form = null; var rai = (RegistoAutoridadeInterno)ei; var tna = TipoEntidade.GetTipoNoticiaAut(tee); if (tna == TipoNoticiaAut.EntidadeProdutora) form = new FormCreateEntidadeProdutora(); else form = new FormCreateControloAut(); if (tna == TipoNoticiaAut.Onomastico) { form.SetOptionalControlsVisible(true); form.NIF = ei != null ? ((Model.EntidadesInternas.Onomastico)ei).Codigo : ""; } GISADataset.TipoNoticiaAutRow allNoticiaAut = null; allNoticiaAut = GisaDataSetHelper.GetInstance().TipoNoticiaAut.NewTipoNoticiaAutRow(); allNoticiaAut.ID = -1; allNoticiaAut.Designacao = "<Todos>"; List<GISADataset.TipoNoticiaAutRow> rows = new List<GISADataset.TipoNoticiaAutRow>(); rows.Add(allNoticiaAut); rows.AddRange(GisaDataSetHelper.GetInstance().TipoNoticiaAut.Cast<GISADataset.TipoNoticiaAutRow>().Where(r => r.ID == (long)tna)); form.cbNoticiaAut.BeginUpdate(); form.cbNoticiaAut.DataSource = rows; form.cbNoticiaAut.DisplayMember = "Designacao"; form.cbNoticiaAut.EndUpdate(); if (form.cbNoticiaAut.Items.Count == 2) { form.cbNoticiaAut.SelectedIndex = 1; form.cbNoticiaAut.Enabled = false; } form.LoadData(true); switch (form.ShowDialog()) { case DialogResult.OK: var termo = form.ListTermos.ValidAuthorizedForm.Replace("'", "''"); switch (tna) { case TipoNoticiaAut.EntidadeProdutora: var produtor = new Model.EntidadesInternas.Produtor(); produtor.Codigo = ((FormCreateEntidadeProdutora)form).txtCodigo.Text; estado = TipoEstado.Novo; rai = produtor; break; case TipoNoticiaAut.Onomastico: rai = new Model.EntidadesInternas.Onomastico(); ((Model.EntidadesInternas.Onomastico)rai).Codigo = form.NIF; estado = TipoEstado.Novo; break; case TipoNoticiaAut.Ideografico: rai = new Model.EntidadesInternas.Ideografico(); estado = TipoEstado.Novo; break; case TipoNoticiaAut.ToponimicoGeografico: rai = new Model.EntidadesInternas.Geografico(); estado = TipoEstado.Novo; break; case TipoNoticiaAut.TipologiaInformacional: rai = new Model.EntidadesInternas.Tipologia(); var tipOriginal = this.correspDocumento.CorrespondenciasRAs.Where(cRa => cRa.GetEntidadeInterna(TipoOpcao.Original) != null && cRa.EntidadeInterna.GetType() == typeof(Model.EntidadesInternas.Tipologia)).SingleOrDefault(); estado = tipOriginal != null ? TipoEstado.Editar : TipoEstado.Novo; break; } rai.Titulo = termo; rai.Estado = TipoEstado.Novo; ei = this.InternalEntitiesLst.AddInternalEntity(rai); break; case DialogResult.Cancel: cancel = true; break; } }
private void ClickBtnCriar() { ((frmMain)TopLevelControl).EnterWaitMode(); if (((frmMain)TopLevelControl).isSuportPanel && !PersistencyHelper.hasCurrentDatasetChanges()) { if (GetCurrentTipoNoticiaAut()[0] == TipoNoticiaAut.EntidadeProdutora) { MessageBox.Show("Não é permitido criar entidades produtores a partir de um painel de suporte." + System.Environment.NewLine + "Selecione a área de menu referente às entidades produtoras para efetuar a operação", "Criação de entidade produtora", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } try { Trace.WriteLine("Saving before creating new CA in suport panel..."); PersistencyHelper.save(); PersistencyHelper.cleanDeletedData(); } catch (Exception) { MessageBox.Show("Ocorreu um erro ao tentar abrir o formulário de criação." + System.Environment.NewLine + "Por favor contacte o administrador de sistema.", "Criação de controlo de autoridade", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } FormCreateControloAut form = null; try { if (GetCurrentTipoNoticiaAut()[0] == TipoNoticiaAut.EntidadeProdutora) form = new FormCreateEntidadeProdutora(); else form = new FormCreateControloAut(); form.cbNoticiaAut.BeginUpdate(); form.cbNoticiaAut.DataSource = caList.cbNoticiaAut.DataSource; form.cbNoticiaAut.DisplayMember = caList.cbNoticiaAut.DisplayMember; form.cbNoticiaAut.EndUpdate(); if (form.cbNoticiaAut.Items.Count == 2) { form.cbNoticiaAut.SelectedIndex = 1; form.cbNoticiaAut.Enabled = false; } form.LoadData(true); } finally { ((frmMain)TopLevelControl).LeaveWaitMode(); } switch (form.ShowDialog()) { case DialogResult.OK: Trace.WriteLine("A criar notícia de autoridade..."); GISADataset.DicionarioRow dicionarioRow = null; if (GisaDataSetHelper.GetInstance().Dicionario.Select(string.Format("Termo = '{0}'", form.ListTermos.ValidAuthorizedForm.Replace("'", "''"))).Length > 0 && form.ListTermos.ValidAuthorizedForm != null) dicionarioRow = (GISADataset.DicionarioRow)(GisaDataSetHelper.GetInstance().Dicionario.Select(string.Format("Termo = '{0}'", form.ListTermos.ValidAuthorizedForm.Replace("'", "''")))[0]); else if (form.ListTermos.ValidAuthorizedForm != null && form.ListTermos.ValidAuthorizedForm.Length > 0) { dicionarioRow = GisaDataSetHelper.GetInstance().Dicionario.NewDicionarioRow(); dicionarioRow.Termo = form.ListTermos.ValidAuthorizedForm; dicionarioRow.CatCode = "CA"; dicionarioRow.Versao = new byte[]{}; } // excluir selecção de termos inválidos. nunca deveria acontecer Trace.Assert(dicionarioRow != null); // se o estado da row for detached trata-se de um novo termo // criado. nesse caso é necessário adiciona-lo ao dataset. if (dicionarioRow.RowState == DataRowState.Detached) { dicionarioRow.isDeleted = 0; GisaDataSetHelper.GetInstance().Dicionario.AddDicionarioRow(dicionarioRow); } // obter o tipo de noticia de autoridade escolhido GISADataset.TipoNoticiaAutRow tnaRow = null; tnaRow = (GISADataset.TipoNoticiaAutRow)form.cbNoticiaAut.SelectedItem; Trace.Assert(tnaRow != null); // adicionar a nova notícia de autoridade ao modelo de dados e à interface GISADataset.ControloAutRow caRow = GisaDataSetHelper.GetInstance().ControloAut.NewControloAutRow(); caRow.Autorizado = false; caRow.Completo = false; caRow.IDTipoNoticiaAut = tnaRow.ID; caRow.NotaExplicativa = ""; caRow.IDIso639p2 = 348L; // language: portuguese caRow.IDIso15924 = 60L; // script: latin caRow.ChaveColectividade = ""; caRow.ChaveRegisto = ""; caRow.RegrasConvencoes = ""; caRow.Observacoes = ""; caRow.DescContextoGeral = ""; caRow.DescEnquadramentoLegal = ""; caRow.DescEstatutoLegal = ""; caRow.DescEstruturaInterna = ""; caRow.DescOcupacoesActividades = ""; caRow.DescHistoria = ""; caRow.DescOutraInformacaoRelevante = ""; caRow.DescZonaGeografica = ""; caRow.isDeleted = 0; GisaDataSetHelper.GetInstance().ControloAut.AddControloAutRow(caRow); GISADataset.TipoControloAutFormaRow tcafRowAutorizado = null; tcafRowAutorizado = (GISADataset.TipoControloAutFormaRow)(GisaDataSetHelper.GetInstance().TipoControloAutForma.Select("ID=" + System.Enum.Format(typeof(TipoControloAutForma), TipoControloAutForma.FormaAutorizada, "D"))[0]); // criar um registo em ControloAutDicionario usando o termo obtido e com TipoControloAutforma "autorizado" byte[] Versao = null; GISADataset.ControloAutDicionarioRow cadRow = null; cadRow = GisaDataSetHelper.GetInstance().ControloAutDicionario.AddControloAutDicionarioRow(caRow, dicionarioRow, tcafRowAutorizado, Versao, 0); //Ao criar uma EP criar também um nível correspondente, de forma a ser possível adicionar "RelacaoHierarquica"s GISADataset.NivelRow nRow = null; GISADataset.NivelControloAutRow ncaRow = null; var args = new PersistencyHelper.NewControloAutPreSaveArguments(); var postSaveAction = new PostSaveAction(); var argsPostSave = new PersistencyHelper.UpdatePermissionsPostSaveArguments(); postSaveAction.args = argsPostSave; postSaveAction.postSaveDelegate = delegate(PersistencyHelper.PostSaveArguments postSaveArgs) { if ((tnaRow.ID == (long)TipoNoticiaAut.EntidadeProdutora && !args.successCodigo) || !args.successTermo) return; // registar a criação do controlo de autoridade (o registo deve ser feito à parte do save visto que a tabela ControloAutDataDeExistencia não está ligada a ControloAut e por esse motivo, o ID na tabela de registo ser igual em ControloAut em vez de ser negativo) if (((frmMain)TopLevelControl).isSuportPanel) { GISADataset.TrusteeUserRow tuAuthorRow = null; if (SessionHelper.GetGisaPrincipal().TrusteeUserAuthor != null && !(SessionHelper.GetGisaPrincipal().TrusteeUserAuthor.RowState == DataRowState.Detached)) tuAuthorRow = SessionHelper.GetGisaPrincipal().TrusteeUserAuthor; var r = GISA.Model.RecordRegisterHelper.CreateControlAutDataDeDescricaoRow(caRow, SessionHelper.GetGisaPrincipal().TrusteeUserOperator, tuAuthorRow, DateTime.Now); GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao.AddControloAutDataDeDescricaoRow(r); } else CurrentContext.RaiseRegisterModificationEvent(caRow); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao, GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao.Cast<GISADataset.ControloAutDataDeDescricaoRow>().Where(ca => ca.RowState == DataRowState.Added).ToArray(), postSaveArgs.tran); }; if (caRow.TipoNoticiaAutRow.ID == Convert.ToInt64(TipoNoticiaAut.EntidadeProdutora)) { var tep = GisaDataSetHelper.GetInstance().TipoEntidadeProdutora.Cast<GISADataset.TipoEntidadeProdutoraRow>().First(); GisaDataSetHelper.GetInstance().ControloAutEntidadeProdutora.AddControloAutEntidadeProdutoraRow(caRow, tep, new byte[] { }, 0); GisaDataSetHelper.GetInstance().ControloAutDatasExistencia.AddControloAutDatasExistenciaRow(caRow, "", "", "", "", false, "", "", "", false, new byte[] { }, 0); CreateAssociatedNivel(caRow, ref nRow, ref ncaRow); nRow.Codigo = ((FormCreateEntidadeProdutora)form).txtCodigo.Text; args.nID = nRow.ID; } try { args.caID = caRow.ID; args.dID = dicionarioRow.ID; args.dTermo = dicionarioRow.Termo.Replace("'", "''"); args.cadIDControloAut = cadRow.IDControloAut; args.cadIDDicionario = cadRow.IDDicionario; args.cadIDTipoControloAutForma = cadRow.IDTipoControloAutForma; PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(DelegatesHelper.validateCANewTermo, args, postSaveAction); PersistencyHelper.cleanDeletedData(new List<TableDepthOrdered.TableCloudType>(new TableDepthOrdered.TableCloudType[] { PersistencyHelper.determinaNuvem("Nivel"), PersistencyHelper.determinaNuvem("ControloAut") })); if (args.successTermo && (!(form is FormCreateEntidadeProdutora) || args.successCodigo)) { if (successfulSave == PersistencyHelper.SaveResult.successful) { GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection()); try { List<string> IDNiveis = ControloAutRule.Current.GetNiveisDocAssociados(caRow.ID, ho.Connection); GISA.Search.Updater.updateNivelDocumental(IDNiveis); } catch (Exception ex) { Trace.WriteLine(ex.ToString()); throw; } finally { ho.Dispose(); } } caList.AddNivel(cadRow); } else { if (form is FormCreateEntidadeProdutora) MessageBox.Show("Não foi possível criar a notícia de autoridade " + Environment.NewLine + "uma vez que essa designação e/ou código já" + Environment.NewLine + "é utilizada.", "Nova Notícia de autoridade", MessageBoxButtons.OK, MessageBoxIcon.Warning); else MessageBox.Show("Não foi possível criar a notícia de autoridade " + Environment.NewLine + "uma vez que já existe uma com essa designação.", "Nova Notícia de autoridade", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } catch (Exception ex) { Trace.WriteLine(ex); throw; } break; case DialogResult.Cancel: break; } }