Пример #1
0
        // Adicionar uma localizacao actual (registo de autoridade geográfico):
        private void btnAdd_Localizacao_Actual_Click(object sender, EventArgs e)
        {
            GISADataset.ControloAutRow caRow = null;
            GISADataset.LicencaObraLocalizacaoObraActualRow locActualRow  = null;
            GISADataset.ControloAutDicionarioRow            dicionarioRow = null;

            FormLeituraLocalizacaoNumPolicia formLeitura = new FormLeituraLocalizacaoNumPolicia();

            formLeitura.ModoTextoLivre = false;

            switch (formLeitura.ShowDialog())
            {
            case DialogResult.OK:
                dicionarioRow = formLeitura.ControloAutDicionarioRow;
                caRow         = dicionarioRow.ControloAutRow;
                if (!existe_LicencaObraLocalizacaoObraActual(caRow, formLeitura.NumeroPolicia))
                {
                    locActualRow = GisaDataSetHelper.GetInstance().LicencaObraLocalizacaoObraActual.NewLicencaObraLocalizacaoObraActualRow();
                    locActualRow.LicencaObraRow = CurrentLicencaObra;
                    locActualRow.ControloAutRow = caRow;
                    locActualRow.NumPolicia     = formLeitura.NumeroPolicia;
                    locActualRow.isDeleted      = 0;
                    // Dados:
                    Add_Row_LocalizacaoActual(locActualRow);
                    // GUI: adicionar `a lista:
                    Add_ViewLocalizacaoActual(dicionarioRow, locActualRow);
                    UpdateButtonState();
                }

                break;

            default:
                break;
            }
        }
Пример #2
0
		private void CADDataRowChangedHandler(object sender, DataRowChangeEventArgs e)
		{
			if (e.Action == DataRowAction.Add)
			{
				GISADataset.ControloAutDicionarioRow changedCadRow = null;
				changedCadRow = (GISADataset.ControloAutDicionarioRow)e.Row;
				GISADataset.ControloAutRow changedCaRow = null;
				changedCaRow = changedCadRow.ControloAutRow;

				Debug.WriteLine("[CONTROLO AUT DICIONARIO ADDED]" + new StackFrame(true).ToString());

				Trace.Assert(e.Row is GISADataset.ControloAutDicionarioRow);

				foreach (ListViewItem item in lstVwIndexacao.Items)
				{
					GISADataset.IndexFRDCARow ifrdcaRow = null;
					ifrdcaRow = (GISADataset.IndexFRDCARow)item.Tag;

					if (changedCaRow == ifrdcaRow.ControloAutRow)
					{
						// actualizar a interface com a forma autorizada do CA em causa
						foreach (GISADataset.ControloAutDicionarioRow cadRow in GisaDataSetHelper.GetInstance().ControloAutDicionario.Select(string.Format("IDControloAut={0}", changedCaRow.ID)))
						{
							if (cadRow.TipoControloAutFormaRow.ID == Convert.ToInt64(TipoControloAutForma.FormaAutorizada))
							{
								lstVwIndexacao.BeginUpdate();
								item.SubItems[0].Text = cadRow.DicionarioRow.Termo;
								lstVwIndexacao.EndUpdate();
								break;
							}
						}
					}
				}
			}
		}
Пример #3
0
        private void AddIdentidadeInstituicao(GISADataset.ControloAutRelRow carRow)
        {
            if (carRow.IDTipoRel != Convert.ToInt64(TipoControloAutRel.Instituicao))
            {
                return;
            }

            DataRow[] cadRows = GisaDataSetHelper.GetInstance().ControloAutDicionario.Select("IDControloAut=" + carRow.ControloAutRowByControloAutControloAutRelAlias.ID.ToString() + " AND IDTipoControloAutForma=" + System.Enum.Format(typeof(TipoControloAutForma), TipoControloAutForma.FormaAutorizada, "D"));

            if (cadRows.Length > 0)
            {
                Debug.Assert(cadRows.Length == 1);
                GISADataset.ControloAutDicionarioRow cadRow = (GISADataset.ControloAutDicionarioRow)(cadRows[0]);
                if (!(alreadyExistInList(carRow)))
                {
                    ListViewItem tempWith1 = lstVwIdentidadeInstituicoes.Items.Add(cadRow.DicionarioRow.Termo);

                    if (((GISADataset.ControloAutDicionarioRow)cadRow).ControloAutRow.IsChaveColectividadeNull())
                    {
                        tempWith1.SubItems.Add(string.Empty);
                    }
                    else
                    {
                        tempWith1.SubItems.Add(((GISADataset.ControloAutDicionarioRow)cadRow).ControloAutRow.ChaveColectividade);
                    }

                    tempWith1.Tag = carRow;
                }
            }
        }
Пример #4
0
        private void retrieveSelection(FormPickControloAut frmPick, TextBox txtBox)
        {
            frmPick.caList.txtFiltroDesignacao.Clear();
            frmPick.caList.ReloadList();

            switch (frmPick.ShowDialog())
            {
            case DialogResult.OK:
                var li = frmPick.caList.SelectedItems.Cast <ListViewItem>().SingleOrDefault();
                if (li == null)
                {
                    return;
                }

                Debug.Assert(li.Tag is GISADataset.ControloAutDicionarioRow);

                var ca = ((GISADataset.ControloAutDicionarioRow)li.Tag).ControloAutRow;

                mTipologia  = GisaDataSetHelper.GetInstance().ControloAutDicionario.Cast <GISADataset.ControloAutDicionarioRow>().Single(r => r.IDControloAut == ca.ID && r.IDTipoControloAutForma == (long)TipoControloAutForma.FormaAutorizada);
                txtBox.Text = mTipologia.DicionarioRow.Termo;

                break;

            case DialogResult.Cancel:
                break;
            }
        }
Пример #5
0
        protected virtual void DisplayFormaAutorizada(GISADataset.ControloAutDicionarioRow ControloAutDicionario)
        {
            Debug.Assert(TempIndexFRDCA != null);

            if (ControloAutDicionario.IDTipoControloAutForma != Convert.ToInt64(TipoControloAutForma.FormaAutorizada))
            {
                Debug.Assert(false, "CAD should always be Autorizado");

                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                try
                {
                    DBAbstractDataLayer.DataAccessRules.ControloAutRule.Current.LoadFormaAutorizada(ControloAutDicionario.ControloAutRow.ID, GisaDataSetHelper.GetInstance(), ho.Connection);
                }
                finally
                {
                    ho.Dispose();
                }

                ControloAutDicionario = GISA.Model.ControloAutHelper.getFormaAutorizada(ControloAutDicionario.ControloAutRow);
            }

            ListViewItem li = ListView.Items.Add(ControloAutDicionario.DicionarioRow.Termo);

            li.Tag = TempIndexFRDCA;
            RaiseEventAddControloAut(li);
        }
Пример #6
0
        private void Add_ViewTecnicoObra(GISADataset.ControloAutDicionarioRow dictRow, GISADataset.LicencaObraTecnicoObraRow new_tecnicoRow)
        {
            // Nome do tecnico:
            ListViewItem item = new ListViewItem(dictRow.DicionarioRow.Termo);

            item.Tag = new_tecnicoRow;
            this.lstVwTecnicoObra.Items.Add(item);
        }
Пример #7
0
        private void Add_ViewLocalizacaoActual(GISADataset.ControloAutDicionarioRow dictRow, GISADataset.LicencaObraLocalizacaoObraActualRow new_locActualRow)
        {
            // Nome:
            ListViewItem item = new ListViewItem(dictRow.DicionarioRow.Termo);

            // Numero:
            item.SubItems.Add(new_locActualRow.NumPolicia);
            item.Tag = new_locActualRow;
            this.lstVwLocalizacaoActual.Items.Add(item);
        }
Пример #8
0
		private void DisplayEntidadeProdutora(GISADataset.ControloAutDicionarioRow ControloAutDicionario)
		{
			if (ControloAutDicionario.IDTipoControloAutForma == Convert.ToInt64(TipoControloAutForma.FormaAutorizada))
			{
                ListViewItem tempWith1 = lstVwIndexacao.Items.Add(ControloAutDicionario.DicionarioRow.Termo);
				tempWith1.SubItems.Add(ControloAutDicionario.ControloAutRow. TipoNoticiaAutRow.Designacao.ToString());
				tempWith1.SubItems.Add(TranslationHelper.FormatBoolean(ControloAutDicionario.ControloAutRow.Autorizado));
				tempWith1.SubItems.Add(TranslationHelper.FormatBoolean(ControloAutDicionario.ControloAutRow.Completo));
				tempWith1.Tag = TempIndexFRDCA;
			}
		}
Пример #9
0
 private void PutDicionarioInTreeView(GISADataset.ControloAutDicionarioRow ControloAutDicionario)
 {
     foreach (TreeNode Node in trVwTermoIndexacao.Nodes)
     {
         if (ControloAutDicionario.IDTipoControloAutForma == ((GISADataset.TipoControloAutFormaRow)Node.Tag).ID)
         {
             RegisterNode(Node, ControloAutDicionario);
             return;
         }
     }
 }
Пример #10
0
        private void DisplayControloAut(GISADataset.ControloAutDicionarioRow ControloAutDicionario)
        {
            if (ControloAutDicionario.IDTipoControloAutForma == Convert.ToInt64(TipoControloAutForma.FormaAutorizada))
            {
                ListViewItem tempWith1 = FilterListView.Items.Add(ControloAutDicionario.DicionarioRow.Termo);

                tempWith1.Tag = TmpIndexFRDCA;
                tempWith1.SubItems.Add(TranslationHelper.FormatBoolean(ControloAutDicionario.ControloAutRow.Autorizado));
                tempWith1.SubItems.Add(TranslationHelper.FormatBoolean(ControloAutDicionario.ControloAutRow.Completo));
            }
        }
Пример #11
0
		protected override void DisplayFormaAutorizada(GISADataset.ControloAutDicionarioRow ControloAutDicionario)
		{
			Debug.Assert(TempRelacaoHierarquica != null);

			if (ControloAutDicionario.IDTipoControloAutForma == Convert.ToInt64(TipoControloAutForma.FormaAutorizada))
			{

				ListViewItem li = ListView.Items.Add(ControloAutDicionario.DicionarioRow.Termo);
				li.Tag = TempRelacaoHierarquica;
				RaiseEventAddControloAut(li);
			}
		}
        private void button_FormPickControloAut_Click(object sender, System.EventArgs e)
        {
            FormPickControloAut frmPick = new FormPickControloAut();

            frmPick.Text = "Notícia de autoridade - Pesquisar registo de autoridade geográfico";
            frmPick.caList.AllowedNoticiaAut(TipoNoticiaAut.ToponimicoGeografico);
            frmPick.caList.ReloadList();

            if (frmPick.caList.Items.Count > 0)
            {
                frmPick.caList.SelectItem(frmPick.caList.Items[0]);
            }

            switch (frmPick.ShowDialog())
            {
            case DialogResult.OK:
                if (frmPick.caList.SelectedItems.Count > 0)
                {
                    var selCadRow = (GISADataset.ControloAutDicionarioRow)frmPick.caList.SelectedItems[0].Tag;
                    if (selCadRow.IDTipoControloAutForma == (long)TipoControloAutForma.FormaAutorizada)
                    {
                        this.cadRow = selCadRow;
                    }
                    else
                    {
                        GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                        try
                        {
                            ControloAutRule.Current.LoadDicionarioAndControloAutDicionario(GisaDataSetHelper.GetInstance(), selCadRow.IDControloAut, ho.Connection);
                        }
                        catch (Exception ex)
                        {
                            Trace.WriteLine(ex);
                            throw;
                        }
                        finally
                        {
                            ho.Dispose();
                        }
                        this.cadRow = selCadRow.ControloAutRow.GetControloAutDicionarioRows().Where(cad => cad.IDTipoControloAutForma == (long)TipoControloAutForma.FormaAutorizada).Single();
                    }
                    this.txtDesignacao.Text = this.cadRow.DicionarioRow.Termo;
                    updateButtons();
                }
                break;

            default:
                break;
            }
        }
Пример #13
0
		private void caList_BeforeNewListSelection(object sender, BeforeNewSelectionEventArgs e)
		{
			if (e.ItemToBeSelected != null && e.ItemToBeSelected.Tag != null)
			{
				GISADataset.ControloAutDicionarioRow cadRow = null;
				cadRow = (GISADataset.ControloAutDicionarioRow)e.ItemToBeSelected.Tag;
				// se o termo encontrado não se tratar de uma forma 
				// autorizada é necessário obter a forma autorizada 
				// da notícia de autoridade respectiva. Se não existir 
				// em memória será necessário obte-la da base de dados.
				if (cadRow.IDTipoControloAutForma != Convert.ToInt64(TipoControloAutForma.FormaAutorizada))
				{
					GISADataset.ControloAutDicionarioRow cadRowAutorizado = null;
					cadRowAutorizado = GetTermoAutorizado(cadRow.ControloAutRow);
					if (cadRowAutorizado == null)
						cadRowAutorizado = GetTermoAutorizadoFromDB(cadRow.ControloAutRow);

					cadRow = cadRowAutorizado;
				}

				GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
				try
				{
					DBAbstractDataLayer.DataAccessRules.NivelRule.Current.LoadNivelByControloAut(cadRow.IDControloAut, GisaDataSetHelper.GetInstance(), ho.Connection);
				}
				finally
				{
					ho.Dispose();
				}

				this.txtDesignacao.Text = cadRow.DicionarioRow.Termo;

                GISADataset.NivelControloAutRow[] ncaRows = null;
                ncaRows = cadRow.ControloAutRow.GetNivelControloAutRows();
                if (ncaRows.Length != 0)
                    this.txtCodigo.Text = ncaRows[0].NivelRow.Codigo;
                else
                {
                    Debug.Assert(false, "Não foi encontrado o código de " + cadRow.DicionarioRow.Termo);
                    this.txtCodigo.Clear();
                }

			}
			else
			{
				this.txtDesignacao.Text = "";
				this.txtCodigo.Text = "";
			}
			this.UpdateButtonState();
		}
Пример #14
0
		private bool validateData()
		{
			if (mContextControloAut == null) return true;

			GISADataset.ControloAutDicionarioRow cadRow = null;
			foreach (ListViewItem item in caList.SelectedItems)
			{
				cadRow = (GISADataset.ControloAutDicionarioRow)item.Tag;
				if (cadRow.ControloAutRow == mContextControloAut)
				{
					MessageBox.Show("Não é permitido relacionar uma notícia de autoridade consigo própria.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Warning);
					return false;
				}
			}
			return true;
		}
Пример #15
0
        // Adicionar um tecnico de obra (registo de autoridade onomastico):
        private void btnAddTecnicoObra_Click(object sender, EventArgs e)
        {
            FormPickControloAut frmPick = new FormPickControloAut();

            frmPick.Text = "Notícia de autoridade - Pesquisar registo de autoridade onomástico";
            frmPick.caList.AllowedNoticiaAut(TipoNoticiaAut.Onomastico);
            frmPick.caList.ReloadList();

            GISADataset.ControloAutRow            caRow         = null;
            GISADataset.LicencaObraTecnicoObraRow tecnicoRow    = null;
            GISADataset.ControloAutDicionarioRow  dicionarioRow = null;

            if (frmPick.caList.Items.Count > 0)
            {
                frmPick.caList.SelectItem(frmPick.caList.Items[0]);
            }

            switch (frmPick.ShowDialog())
            {
            case DialogResult.OK:
                foreach (ListViewItem li in frmPick.caList.SelectedItems)
                {
                    dicionarioRow = (GISADataset.ControloAutDicionarioRow)li.Tag;
                    caRow         = dicionarioRow.ControloAutRow;
                    if (!existe_LicencaObraTecnicoObra(caRow))
                    {
                        tecnicoRow = GisaDataSetHelper.GetInstance().LicencaObraTecnicoObra.NewLicencaObraTecnicoObraRow();
                        tecnicoRow.LicencaObraRow = CurrentLicencaObra;
                        tecnicoRow.ControloAutRow = caRow;
                        tecnicoRow.isDeleted      = 0;
                        // Dados:
                        Add_RowTecnicoObra(tecnicoRow);
                        // GUI: adicionar `a lista:
                        Add_ViewTecnicoObra(dicionarioRow, tecnicoRow);
                    }
                }
                break;

            default:
                break;
            }
        }
Пример #16
0
		// Método que trata da atribuição de uma designação a um Diploma/Modelo durante uma criação ou edição
		private GISADataset.ControloAutDicionarioRow manageDesignacaoDiplomaModelo(GISADataset.ControloAutDicionarioRow cadRow, string termo, GISADataset.TipoNoticiaAutRow TipoNoticiaAutRow, GISADataset.ControloAutRow carow, GISADataset.TipoControloAutFormaRow tcafRowAutorizado)
		{

			// NOTA: é criada na mesma uma linha Dicionario; posteriormente no algoritmo que trata os
			//       conflitos de concorrência vai proceder à reutilização da linha existente na
			//       base de dados
			if (cadRow != null)
			{
				// se por algum motivo a transacção onde este método está inserido voltar a ser executada,
				// mfaPca.cadRow já não será nothing e por esse motivo deverá ser apagada a existente 
				// em memória seja qual for o seu rowstate
				GisaDataSetHelper.GetInstance().ControloAutDicionario.RemoveControloAutDicionarioRow(cadRow);
				GisaDataSetHelper.GetInstance().Dicionario.RemoveDicionarioRow(cadRow.DicionarioRow);
			}
			else if (GisaDataSetHelper.GetInstance().Dicionario.Select("Termo='" + termo.Replace("'", "''") + "' AND CatCode='" + getCatCode(carow.TipoNoticiaAutRow) + "'").Length > 0)
			{
				GISADataset.DicionarioRow dicionarioRow = (GISADataset.DicionarioRow)(GisaDataSetHelper.GetInstance().Dicionario.Select("Termo='" + termo.Replace("'", "''") + "' AND CatCode='" + getCatCode(carow.TipoNoticiaAutRow) + "'")[0]);
				GisaDataSetHelper.GetInstance().Dicionario.RemoveDicionarioRow(dicionarioRow);
			}
			GISADataset.DicionarioRow dRow = GisaDataSetHelper.GetInstance().Dicionario.AddDicionarioRow(termo, getCatCode(carow.TipoNoticiaAutRow), new byte[]{}, 0);
			return GisaDataSetHelper.GetInstance().ControloAutDicionario.AddControloAutDicionarioRow(carow, dRow, tcafRowAutorizado, new byte[]{}, 0);
		}
Пример #17
0
        public static void validateCANewTermo(PersistencyHelper.PreSaveArguments args)
        {
            PersistencyHelper.NewControloAutPreSaveArguments ncaPsa = null;
            ncaPsa = (PersistencyHelper.NewControloAutPreSaveArguments)args;
            GISADataset.DicionarioRow  dicionarioRow = (GISADataset.DicionarioRow)(GisaDataSetHelper.GetInstance().Dicionario.Select(string.Format("ID={0} OR Termo='{1}'", ncaPsa.dID.ToString(), ncaPsa.dTermo))[0]);
            GISADataset.ControloAutRow caRow         = (GISADataset.ControloAutRow)(GisaDataSetHelper.GetInstance().ControloAut.Select("ID=" + ncaPsa.caID.ToString())[0]);
            //É usado a coluna ID do dicionarioRow uma vez que, se a execução deste método corresponder a uma re-execução da transacção na qual está inserida, o valor do ID passado como argumento pode já ter sido alterado no algoritmo de detecção de conflitos de concorrência (neste caso concreto já existir na base de dados o termo na tabela Dicionario)
            GISADataset.ControloAutDicionarioRow cadRow = null;
            if (GisaDataSetHelper.GetInstance().ControloAutDicionario.Select(string.Format("IDControloAut={0} AND IDDicionario={1} AND IDTipoControloAutForma={2}", caRow.ID, dicionarioRow.ID, ncaPsa.cadIDTipoControloAutForma)).Length > 0)
            {
                cadRow = (GISADataset.ControloAutDicionarioRow)(GisaDataSetHelper.GetInstance().ControloAutDicionario.Select(string.Format("IDControloAut={0} AND IDDicionario={1} AND IDTipoControloAutForma={2}", caRow.ID, dicionarioRow.ID, ncaPsa.cadIDTipoControloAutForma))[0]);
            }
            else if (GisaDataSetHelper.GetInstance().ControloAutDicionario.Select(string.Format("IDControloAut={0} AND IDDicionario={1} AND IDTipoControloAutForma={2}", ncaPsa.cadIDControloAut, ncaPsa.cadIDDicionario, ncaPsa.cadIDTipoControloAutForma)).Length > 0)
            {
                cadRow = (GISADataset.ControloAutDicionarioRow)(GisaDataSetHelper.GetInstance().ControloAutDicionario.Select(string.Format("IDControloAut={0} AND IDDicionario={1} AND IDTipoControloAutForma={2}", ncaPsa.cadIDControloAut, ncaPsa.cadIDDicionario, ncaPsa.cadIDTipoControloAutForma))[0]);
            }
            else
            {
                Debug.Assert(false, "Situação imprevista!!");
            }

            GISADataset.NivelControloAutRow ncaRow = null;
            GISADataset.NivelRow            nRow   = null;
            if (caRow.TipoNoticiaAutRow.ID == Convert.ToInt64(TipoNoticiaAut.EntidadeProdutora))
            {
                ncaRow = (GISADataset.NivelControloAutRow)(GisaDataSetHelper.GetInstance().NivelControloAut.Select("ID=" + ncaPsa.nID.ToString())[0]);
                nRow   = (GISADataset.NivelRow)(GisaDataSetHelper.GetInstance().Nivel.Select("ID=" + ncaPsa.nID.ToString())[0]);
            }

            if (!(DBAbstractDataLayer.DataAccessRules.DiplomaModeloRule.Current.isTermoUsedByOthers(caRow.ID, dicionarioRow.CatCode, dicionarioRow.Termo.Trim().Replace("'", "''"), false, caRow.TipoNoticiaAutRow.ID, ncaPsa.tran)))
            {
                ncaPsa.successTermo = true;
            }

            if (caRow.TipoNoticiaAutRow.ID == Convert.ToInt64(TipoNoticiaAut.EntidadeProdutora) && DBAbstractDataLayer.DataAccessRules.NivelRule.Current.isUniqueCodigo(nRow.Codigo, nRow.ID, ncaPsa.tran))
            {
                ncaPsa.successCodigo = true;
            }

            if (!ncaPsa.successTermo || (caRow.TipoNoticiaAutRow.ID == Convert.ToInt64(TipoNoticiaAut.EntidadeProdutora) && !ncaPsa.successCodigo))
            {
                cadRow.RejectChanges();
                if (caRow.TipoNoticiaAutRow.ID == Convert.ToInt64(TipoNoticiaAut.EntidadeProdutora))
                {
                    ncaRow.RejectChanges();

                    nRow.GetTrusteeNivelPrivilegeRows().ToList().ForEach(r => r.RejectChanges());
                    nRow.GetFRDBaseRows().ToList().ForEach(r => r.RejectChanges());
                    nRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquicaUpper().ToList().ForEach(r => r.RejectChanges());

                    nRow.RejectChanges();

                    caRow.GetControloAutEntidadeProdutoraRows().ToList().ForEach(r => r.RejectChanges());
                    caRow.GetControloAutDatasExistenciaRows().ToList().ForEach(r => r.RejectChanges());
                }
                GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao.Cast <GISADataset.ControloAutDataDeDescricaoRow>().Where(r => r.IDControloAut == caRow.ID).ToList().ForEach(r => r.RejectChanges());
                caRow.GetInteg_RelacaoExternaControloAutRows().ToList().ForEach(r => r.RejectChanges());
                caRow.GetIndexFRDCARows().ToList().ForEach(r => r.RejectChanges());
                caRow.RejectChanges();
                dicionarioRow.RejectChanges();
            }
        }
Пример #18
0
        private void btnEdit_Click(object sender, EventArgs e)
        {
            DataRow relRow = null;

            relRow = (DataRow)(lstVwRelacoes.SelectedItems[0].Tag);

            // verificar se tanto a entidade produtora seleccionada como contexto como a relação seleccionada
            // para edição não foram apagadas concorrentemente por outro utilizador
            if (CurrentControloAut.RowState == DataRowState.Detached)
            {
                MessageBox.Show("Não é possível editar qualquer relação da entidade produtora " + System.Environment.NewLine + "selecionada uma vez que foi apagada por outro utilizador.", "Edição de Relações", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                lstVwRelacoes.SelectedItems.Clear();
                lstVwRelacoes.Items.Clear();
                return;
            }
            else if (relRow.RowState == DataRowState.Detached)
            {
                MessageBox.Show("Não é possível editar a relação selecionada uma " + System.Environment.NewLine + "vez que foi apagada por outro utilizador.", "Edição de Relações", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                ListViewItem lvItem = lstVwRelacoes.SelectedItems[0];
                lstVwRelacoes.SelectedItems.Clear();
                lstVwRelacoes.Items.Remove(lvItem);
                return;
            }

            GISADataset.ControloAutRow        caRow  = null;
            GISADataset.ControloAutRelRow     carRow = null;
            GISADataset.RelacaoHierarquicaRow rhRow  = null;

            FormControloAutRel frm = null;

            if (relRow is GISADataset.ControloAutRelRow)
            {
                frm = new FormControloAutRel(CurrentControloAut, ((frmMain)TopLevelControl).MasterPanel);

                carRow = (GISADataset.ControloAutRelRow)relRow;
                if (carRow.ControloAutRowByControloAutControloAutRel == CurrentControloAut)
                {
                    caRow = carRow.ControloAutRowByControloAutControloAutRelAlias;
                }
                else if (carRow.ControloAutRowByControloAutControloAutRelAlias == CurrentControloAut)
                {
                    caRow = carRow.ControloAutRowByControloAutControloAutRel;
                    // nas edições, ao visualizar uma relação pelo outro extremo é necessário alterar a designação da relação apresentada
                    frm.relacaoCA.cbTipoControloAutRel.DisplayMember = "Designacao";
                }
            }
            else if (relRow is GISADataset.RelacaoHierarquicaRow)
            {
                rhRow = (GISADataset.RelacaoHierarquicaRow)relRow;
                caRow = rhRow.NivelRowByNivelRelacaoHierarquica.GetNivelControloAutRows()[0].ControloAutRow;
                // Se estivermos a ver o extremo errado da relação hierarquica trocamos para o outro extremo
                if (CurrentControloAut == caRow)
                {
                    caRow = rhRow.NivelRowByNivelRelacaoHierarquicaUpper.GetNivelControloAutRows()[0].ControloAutRow;

                    frm = new FormControloAutRel(caRow, ((frmMain)TopLevelControl).MasterPanel);
                    // nas edições, ao visualizar uma relação pelo outro extremo é necessário alterar a designação da relação apresentada
                    frm.relacaoCA.cbTipoControloAutRel.DisplayMember = "Designacao";
                }
                else
                {
                    frm = new FormControloAutRel(CurrentControloAut, ((frmMain)TopLevelControl).MasterPanel);
                }
            }

            GISADataset.ControloAutDicionarioRow cadRow = null;
            string termo = null;

            cadRow = ControloAutHelper.getFormaAutorizada(caRow);
            termo  = cadRow.DicionarioRow.Termo;

            frm.ContextRel = relRow;
            frm.caList.AllowedNoticiaAut(TipoNoticiaAut.EntidadeProdutora);
            frm.caList.SelectedItems.Clear();
            frm.caList.txtFiltroDesignacao.Text = termo.Trim();
            frm.caList.ReloadList();
            frm.caList.SelectItem(cadRow);

            frm.caList.txtFiltroDesignacao.Clear();
            // popular datas
            frm.relacaoCA.dtRelacaoInicio.ValueYear  = GisaDataSetHelper.GetDBNullableText(relRow, "InicioAno");
            frm.relacaoCA.dtRelacaoInicio.ValueMonth = GisaDataSetHelper.GetDBNullableText(relRow, "InicioMes");
            frm.relacaoCA.dtRelacaoInicio.ValueDay   = GisaDataSetHelper.GetDBNullableText(relRow, "InicioDia");
            frm.relacaoCA.dtRelacaoFim.ValueYear     = GisaDataSetHelper.GetDBNullableText(relRow, "FimAno");
            frm.relacaoCA.dtRelacaoFim.ValueMonth    = GisaDataSetHelper.GetDBNullableText(relRow, "FimMes");
            frm.relacaoCA.dtRelacaoFim.ValueDay      = GisaDataSetHelper.GetDBNullableText(relRow, "FimDia");
            frm.relacaoCA.txtDescricao.Text          = GisaDataSetHelper.GetDBNullableText(relRow, "Descricao");

            // Encontrar e selecionar o TipoControloAutRel correcto
            if (relRow is GISADataset.ControloAutRelRow)
            {
                foreach (object drView in frm.relacaoCA.cbTipoControloAutRel.Items)
                {
                    if (((GISADataset.TipoControloAutRelRow)drView).ID == carRow.TipoControloAutRelRow.ID)
                    {
                        frm.relacaoCA.cbTipoControloAutRel.SelectedItem = drView;
                    }
                }
            }
            else if (relRow is GISADataset.RelacaoHierarquicaRow)
            {
                foreach (object drView in frm.relacaoCA.cbTipoControloAutRel.Items)
                {
                    if (((GISADataset.TipoControloAutRelRow)drView).ID == Convert.ToInt64(TipoControloAutRel.Hierarquica))
                    {
                        frm.relacaoCA.cbTipoControloAutRel.SelectedItem = drView;
                        break;
                    }
                }

                bool foundTipoNivel = false;
                foreach (TipoNivelRelacionado.PossibleSubNivel subNivel in frm.relacaoCA.cbTipoNivel.Items)
                {
                    if (subNivel.SubIDTipoNivelRelacionado == rhRow.IDTipoNivelRelacionado)
                    {
                        frm.relacaoCA.cbTipoNivel.SelectedItem = subNivel;
                        foundTipoNivel = true;
                        break;
                    }
                }

                // O tipo de nivel já definido pode nao ser encontrado entre os possiveis
                // se o tipo de nivel do pai tiver entretanto também ele mudado. Nesse caso
                // adicionamos mais esse tipo de nivel de forma a ser mantida a selecção
                // anteriormente existente.
                if (!foundTipoNivel)
                {
                    ArrayList data = null;
                    data = (ArrayList)frm.relacaoCA.cbTipoNivel.DataSource;
                    TipoNivelRelacionado.PossibleSubNivel subTipoNivel = null;
                    string inicioAno = string.Empty;
                    string inicioMes = string.Empty;
                    string inicioDia = string.Empty;
                    string fimAno    = string.Empty;
                    string fimMes    = string.Empty;
                    string fimDia    = string.Empty;

                    if (!rhRow.IsInicioAnoNull())
                    {
                        inicioAno = rhRow.InicioAno;
                    }
                    if (!rhRow.IsInicioMesNull())
                    {
                        inicioMes = rhRow.InicioMes;
                    }
                    if (!rhRow.IsInicioDiaNull())
                    {
                        inicioDia = rhRow.InicioDia;
                    }

                    if (!rhRow.IsFimAnoNull())
                    {
                        fimAno = rhRow.FimAno;
                    }
                    if (!rhRow.IsFimMesNull())
                    {
                        fimMes = rhRow.FimMes;
                    }
                    if (!rhRow.IsFimDiaNull())
                    {
                        fimDia = rhRow.FimDia;
                    }

                    subTipoNivel = new TipoNivelRelacionado.PossibleSubNivel(rhRow.IDTipoNivelRelacionado, rhRow.TipoNivelRelacionadoRow.Designacao, inicioAno, inicioMes, inicioDia, fimAno, fimMes, fimDia, true);
                    int idx = data.Add(subTipoNivel);

                    frm.relacaoCA.cbTipoNivel.ImageIndexes.Add(SharedResourcesOld.CurrentSharedResources.NivelImageBase(System.Convert.ToInt32(subTipoNivel.SubIDTipoNivelRelacionado)));
                    frm.relacaoCA.cbTipoNivel.DataSource    = null;
                    frm.relacaoCA.cbTipoNivel.DataSource    = data;
                    frm.relacaoCA.cbTipoNivel.DisplayMember = "DesignacaoComposta";
                    frm.relacaoCA.cbTipoNivel.SelectedItem  = subTipoNivel;
                }
            }
            RetrieveSelection(frm, relRow);
        }
Пример #19
0
        public override void ModelToView()
        {
            IsPopulated = false;
            lstVwRelacoes.Items.Clear();

            // Apresentar relações não hierarquicas
            string carId = CurrentControloAut.ID.ToString();

            QueryFilter = "IDControloAut=" + carId + " OR IDControloAutAlias=" + carId;
            foreach (GISADataset.ControloAutRelRow caRel in GisaDataSetHelper.GetInstance().ControloAutRel.Select(QueryFilter, "InicioAno, InicioMes, InicioDia, FimAno, FimMes, FimDia"))
            {
                if (caRel.TipoControloAutRelRow.ID != Convert.ToInt64(TipoControloAutRel.Instituicao))                 //System.Enum.Format(GetType(TipoControloAutRel), TipoControloAutRel.Instituicao, "D") Then
                {
                    GISADataset.ControloAutRow OtherControloAut = null;
                    if (caRel.ControloAutRowByControloAutControloAutRelAlias.ID != CurrentControloAut.ID)
                    {
                        OtherControloAut = caRel.ControloAutRowByControloAutControloAutRelAlias;
                    }
                    else
                    {
                        OtherControloAut = caRel.ControloAutRowByControloAutControloAutRel;
                    }
                    foreach (GISADataset.ControloAutDicionarioRow cad in OtherControloAut.GetControloAutDicionarioRows())
                    {
                        if (cad.IDTipoControloAutForma == Convert.ToInt64(TipoControloAutForma.FormaAutorizada))
                        {
                            ListViewItem tempWith1 = lstVwRelacoes.Items.Add(cad.DicionarioRow.Termo);
                            tempWith1.Tag = caRel;
                            if (cad.ControloAutRow.IsChaveColectividadeNull())
                            {
                                tempWith1.SubItems.Add(string.Empty);
                            }
                            else
                            {
                                tempWith1.SubItems.Add(cad.ControloAutRow.ChaveColectividade);
                            }
                            string rezDesTipoRel = null;
                            if (caRel.ControloAutRowByControloAutControloAutRelAlias.ID != CurrentControloAut.ID)
                            {
                                rezDesTipoRel = caRel.TipoControloAutRelRow.DesignacaoInversa;
                            }
                            else
                            {
                                rezDesTipoRel = caRel.TipoControloAutRelRow.Designacao;
                            }
                            tempWith1.SubItems.Add(rezDesTipoRel);
                            tempWith1.SubItems.Add(GUIHelper.GUIHelper.FormatStartDate(caRel));
                            tempWith1.SubItems.Add(GUIHelper.GUIHelper.FormatEndDate(caRel));
                            tempWith1.SubItems.Add(GUIHelper.GUIHelper.ClipText(caRel.Descricao));
                        }
                    }
                }
            }

            // Apresentar relações hierarquicas
            GISADataset.NivelRow nRow = null;
            GISADataset.NivelControloAutRow[] ncaRows = null;
            GISADataset.NivelControloAutRow   ncaRow  = null;
            ncaRows = CurrentControloAut.GetNivelControloAutRows();
            if (ncaRows.Length == 0)
            {
                MasterPanelControloAut.CreateAssociatedNivel(CurrentControloAut, ref nRow, ref ncaRow);
                try
                {
                    PersistencyHelper.save();
                    PersistencyHelper.cleanDeletedData();
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex);
                    throw;
                }
            }
            else
            {
                ncaRow = ncaRows[0];
                nRow   = ncaRow.NivelRow;
            }

            foreach (GISADataset.RelacaoHierarquicaRow rhRow in GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} OR IDUpper={0}", nRow.ID), "InicioAno, InicioMes, InicioDia, FimAno, FimMes, FimDia"))
            {
                // Só adicionar relações hierárquicas existentes entre níveis estruturais. Este teste não seria suficiente no caso de existirem níveis estruturais orgânicos relacionados com níveis estruturais temático-funcionais, mas tal não poderá acontecer em qualquer situação.
                if (rhRow.NivelRowByNivelRelacaoHierarquica.TipoNivelRow.ID == TipoNivel.ESTRUTURAL && rhRow.NivelRowByNivelRelacaoHierarquicaUpper.TipoNivelRow.ID == TipoNivel.ESTRUTURAL)
                {
                    GISADataset.ControloAutRow caRow = null;
                    caRow = rhRow.NivelRowByNivelRelacaoHierarquica.GetNivelControloAutRows()[0].ControloAutRow;
                    // Se estivermos a ver o extremo errado da relação hierarquica trocamos para o outro extremo
                    if (CurrentControloAut == caRow)
                    {
                        caRow = rhRow.NivelRowByNivelRelacaoHierarquicaUpper.GetNivelControloAutRows()[0].ControloAutRow;
                    }

                    GISADataset.ControloAutDicionarioRow cadRow = null;
                    cadRow = ControloAutHelper.getFormaAutorizada(caRow);

                    ListViewItem newItem = lstVwRelacoes.Items.Add(cadRow.DicionarioRow.Termo);
                    newItem.Tag = rhRow;
                    AddRelacaoHierarquicaToList(newItem);
                }
            }

            RefreshButtonState();
            PopulateDescricaoText();
            IsPopulated = true;
        }
Пример #20
0
//INSTANT C# NOTE: C# does not support optional parameters. Overloaded method(s) are created above.
//ORIGINAL LINE: Public Shared Sub DeleteControloAut(ByVal caList As ControloAutList, ByVal Caption As String, ByVal Interrogacao As String, ByVal MessageBoxText As String, Optional ByVal caller As Control = null)
		public static void DeleteControloAut(ControloAutList caList, string Caption, string Interrogacao, string MessageBoxText, Control caller)
		{

			bool HasDocumentData = false;
            List<string> nivelIDsAssoc = new List<string>();
			string Detalhes = null;
			
            if (caller != null) ((frmMain)caller.TopLevelControl).EnterWaitMode();
            Detalhes = ControloAutHelper.GetControloAutUsage(caList.SelectedItems.Cast<ListViewItem>().Select(i => i.Tag as GISADataset.ControloAutDicionarioRow).ToList(), ref HasDocumentData, ref nivelIDsAssoc);
            if (caller != null) ((frmMain)caller.TopLevelControl).LeaveWaitMode();

			if (Detalhes.Length > 0)
			{
                FormDeletionReport form = new FormDeletionReport();
                form.Text = Caption;
                form.Interrogacao = Interrogacao;
                form.Detalhes = Detalhes;
				if (HasDocumentData)
				{
                    form.SetBtnOKVisible(false);
                    form.Interrogacao = "Este elemento não pode ser removido enquanto lhe existirem associados níveis documentais.";
				}

                if (form.ShowDialog() == DialogResult.Cancel) return;
			}
			else
			{
				switch (MessageBox.Show(MessageBoxText, Caption, MessageBoxButtons.OKCancel))
				{
					case System.Windows.Forms.DialogResult.OK:
					break;
					case System.Windows.Forms.DialogResult.Cancel:
						return;
					default:
						Debug.Assert(false, "Unexpected DialogResult.");
						break;
				}
			}

			Trace.WriteLine("A apagar notícia de autoridade...");

			ListViewItem selectedItem = null;
			if (caList.SelectedItems.Count > 0)
			{
				Debug.Assert(caList.SelectedItems.Count == 1, "Só deveria existir 1 item selecionado.");
				selectedItem = caList.SelectedItems[0];

				GISADataset.ControloAutDicionarioRow cadRow = null;
				GISADataset.ControloAutRow caRow = null;
				cadRow = (GISADataset.ControloAutDicionarioRow)selectedItem.Tag;
				caRow = cadRow.ControloAutRow;

				// Remover a selecção do item vai provocar uma mudança de contexto que 
				// por sua vez vai provocar uma gravação dos dados
				caList.ClearItemSelection(selectedItem);

                var ho = default(GisaDataSetHelper.HoldOpen);
                if (caller != null && caller.GetType() == typeof(MasterPanelControloAut))
                {
                    ((MasterPanelControloAut)caller).CurrentContext.RaiseRegisterModificationEvent(caRow);

                    if (caRow.IDTipoNoticiaAut == (long)TipoNoticiaAut.EntidadeProdutora)
                    {
                        var frdRow = default(GISADataset.FRDBaseRow);
                        long IDTipoNivelRelacionado = -1;
                        ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                        try
                        {
                            DBAbstractDataLayer.DataAccessRules.FRDRule.Current.LoadFRD(GisaDataSetHelper.GetInstance(), caRow.GetNivelControloAutRows().Single().ID, ho.Connection);
                            frdRow = caRow.GetNivelControloAutRows().Single().NivelRow.GetFRDBaseRows().SingleOrDefault();
                            DBAbstractDataLayer.DataAccessRules.NivelRule.Current.LoadNivelParents(caRow.GetNivelControloAutRows().Single().ID, GisaDataSetHelper.GetInstance(), ho.Connection);
                            if (frdRow != null)
                                IDTipoNivelRelacionado = DBAbstractDataLayer.DataAccessRules.NivelRule.Current.GetNivelLastIDTipoNivelRelacionado(frdRow.ID, ho.Connection);
                        }
                        finally
                        {
                            ho.Dispose();
                        }

                        if (frdRow != null) // frd pode ainda não ter sido criado
                        {
                            var caRegRow = GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao.Cast<GISADataset.ControloAutDataDeDescricaoRow>().Single(r => r.RowState == DataRowState.Added);
                            var nvlRegRow = RecordRegisterHelper
                                            .CreateFRDBaseDataDeDescricaoRow(frdRow,
                                                caRegRow.TrusteeUserRowByTrusteeUserControloAutDataDeDescricao,
                                                caRegRow.TrusteeUserRowByTrusteeUserControloAutDataDeDescricaoAuthority,
                                                caRegRow.DataAutoria,
                                                IDTipoNivelRelacionado);
                            nvlRegRow.DataEdicao = caRegRow.DataEdicao;

                            GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao.AddFRDBaseDataDeDescricaoRow(nvlRegRow);
                        }
                    }
                }

				selectedItem.Remove();

                ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                List<long> lowerIDsList = new List<long>();
                try {
                    lowerIDsList = DiplomaModeloRule.Current.GetIDLowers(caRow.ID, ho.Connection);
                } 
                finally {
                    ho.Dispose();
                }

				// Como os dados acabaram de ser gravados pode ter-se chegado à conclusão que o contexto existente já não existia, daí este teste
				if (caRow.RowState != DataRowState.Detached)
				{
					try
					{
                        var oldTermo = caRow.GetControloAutDicionarioRows().Single(cad => cad.IDTipoControloAutForma == (long)TipoControloAutForma.FormaAutorizada).DicionarioRow.Termo;
                        var IDTipoNoticiaAut = caRow.IDTipoNoticiaAut;
						PersistencyHelper.DeleteIDXPreSaveArguments preSaveArgs = new PersistencyHelper.DeleteIDXPreSaveArguments();
						GISADataset.NivelControloAutRow[] ncaRows = null;
						GISADataset.NivelRow nRow = null;
						ncaRows = caRow.GetNivelControloAutRows();
						if (ncaRows.Length > 0)
						{
							nRow = ((GISADataset.NivelControloAutRow)(ncaRows[0])).NivelRow;
							preSaveArgs.ID = nRow.ID;
						}
						PersistencyHelper.DeleteCAXPreConcArguments preConcArgs = DeleteCAX(caRow);
                        PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(deleteCAXTermos, preConcArgs, Nivel.DeleteNivelXInDataBase, preSaveArgs);
						PersistencyHelper.cleanDeletedData();

                        if (successfulSave == PersistencyHelper.SaveResult.successful) {
                            if (SessionHelper.AppConfiguration.GetCurrentAppconfiguration().IsFedoraEnable())
                                SessionHelper.AppConfiguration.GetCurrentAppconfiguration().FedoraHelperSingleton.ActualizaObjDigitaisPorNivel(nivelIDsAssoc, oldTermo, null, IDTipoNoticiaAut);
                            Search.Updater.updateNivelDocumental(nivelIDsAssoc);
                            Search.Updater.updateNivelDocumentalComProdutores(lowerIDsList.Select(t => t.ToString()).ToList<string>());
                        }
					}
					catch (Exception ex)
					{
						Trace.WriteLine(ex);
						throw;
					}
				}
                else
                    GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao.Cast<GISADataset.ControloAutDataDeDescricaoRow>().Single(r => r.RowState == DataRowState.Added && r.IDControloAut == caRow.ID).RejectChanges();
			}
		}
Пример #21
0
		private bool validateData()
		{
			GISADataset.ControloAutDicionarioRow cadRow = ControloAutDicionarioAutorizado;
			GISADataset.TipoControloAutRelRow tcarRow = null;
			tcarRow = (GISADataset.TipoControloAutRelRow)relacaoCA.cbTipoControloAutRel.SelectedItem;

			PersistencyHelper.VerifyRelExistencePreConcArguments pcArgs = new PersistencyHelper.VerifyRelExistencePreConcArguments();

			IDbConnection conn = GisaDataSetHelper.GetConnection();
			try
			{
				conn.Open();
				DBAbstractDataLayer.DataAccessRules.NivelRule.Current.LoadNivelByControloAut(cadRow.IDControloAut, GisaDataSetHelper.GetInstance(), conn);
            }
			catch (Exception ex)
			{
				Trace.WriteLine(ex);
				throw ex;
			}
			finally
			{
				conn.Close();
			}

			string errorTitle = "Erro ao estabelecer relação";

			if (! mInEditMode)
			{

				// Garantir que uma EP não é relacionada com ela própria. 
				if (cadRow.ControloAutRow.ID == ContextControloAut.ID)
				{
					MessageBox.Show("Não é permitido relacionar uma notícia de autoridade consigo própria.", errorTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning);
					return false;
				}

				// validar que a relação que pretendemos criar ainda não existe
				if (GisaDataSetHelper.GetInstance().ControloAutRel.Select(string.Format("((IDControloAut={0} AND IDControloAutAlias={1}) OR (IDControloAut={1} AND IDControloAutAlias={0})) AND IDTipoRel = {2:d}", cadRow.ControloAutRow.ID, ContextControloAut.ID, tcarRow.ID)).Length > 0 || (tcarRow.ID == Convert.ToInt64(TipoControloAutRel.Hierarquica) && GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1} OR ID={1} AND IDUpper={0}", cadRow.ControloAutRow.GetNivelControloAutRows()[0].NivelRow.ID, ContextControloAut.GetNivelControloAutRows()[0].NivelRow.ID)).Length > 0))
				{

					MessageBox.Show("Não é permitida mais que uma relação do mesmo tipo " + Environment.NewLine + "entre as mesmas duas entidades produtoras.", errorTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning);
					return false;
				}

				//Agir de forma diferente conforme seja uma relação hierarquica ou seja uma relação de outro qualquer tipo
				if (tcarRow.ID == Convert.ToInt64(TipoControloAutRel.Hierarquica))
				{
					// Carregar informação do Nível do CA com que se pretende estabelecer esta relação
					GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
					try
					{
						DBAbstractDataLayer.DataAccessRules.FRDRule.Current.LoadRetrieveSelectionData(GisaDataSetHelper.GetInstance(), cadRow.IDControloAut, ho.Connection);
                        DBAbstractDataLayer.DataAccessRules.FRDRule.Current.LoadFRD(GisaDataSetHelper.GetInstance(), ContextControloAut.GetNivelControloAutRows()[0].NivelRow.ID, ho.Connection);
					}
					finally
					{
						ho.Dispose();
					}

					long tnrID = 0;
					tnrID = ((TipoNivelRelacionado.PossibleSubNivel)relacaoCA.cbTipoNivel.SelectedItem).SubIDTipoNivelRelacionado;
					GISADataset.RelacaoHierarquicaRow rhRow = null;
					rhRow = GisaDataSetHelper.GetInstance().RelacaoHierarquica.NewRelacaoHierarquicaRow();
					rhRow.IDUpper = cadRow.ControloAutRow.GetNivelControloAutRows()[0].NivelRow.ID;
					rhRow.ID = ContextControloAut.GetNivelControloAutRows()[0].NivelRow.ID;
					rhRow.IDTipoNivelRelacionado = tnrID;
					// Guardar datas
					rhRow.InicioAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoInicio.ValueYear);
					rhRow.InicioMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoInicio.ValueMonth);
					rhRow.InicioDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoInicio.ValueDay);
					rhRow.FimAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoFim.ValueYear);
					rhRow.FimMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoFim.ValueMonth);
					rhRow.FimDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoFim.ValueDay);

					rhRow.Descricao = relacaoCA.txtDescricao.Text;
                    //rhRow.isDeleted = 0;
					GisaDataSetHelper.GetInstance().RelacaoHierarquica.AddRelacaoHierarquicaRow(rhRow);

					pcArgs.ID = rhRow.ID;
					pcArgs.IDUpper = rhRow.IDUpper;
					pcArgs.IDTipoRel = rhRow.IDTipoNivelRelacionado;
					pcArgs.isCARRow = false;

                    // actualizar permissões implícitas
                    var postSaveAction = new PostSaveAction();
                    PersistencyHelper.UpdatePermissionsPostSaveArguments args = new PersistencyHelper.UpdatePermissionsPostSaveArguments();
                    postSaveAction.args = args;

                    postSaveAction.postSaveDelegate = delegate(PersistencyHelper.PostSaveArguments postSaveArgs)
                    {
                        if (!postSaveArgs.cancelAction && ContextControloAut.RowState != DataRowState.Detached && pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.NoError)
                        {
                            if (this.parent.GetType() == typeof(MasterPanelControloAut))
                            {
                                ((MasterPanelControloAut)this.parent).CurrentContext.RaiseRegisterModificationEvent(this.ContextControloAut);

                                var caRegRow = GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao.Cast<GISADataset.ControloAutDataDeDescricaoRow>().Single(r => r.RowState == DataRowState.Added);

                                PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao,
                                    new GISADataset.ControloAutDataDeDescricaoRow[] { caRegRow }, postSaveArgs.tran);

                                var frdRow = rhRow.NivelRowByNivelRelacaoHierarquica.GetFRDBaseRows().SingleOrDefault();

                                if (frdRow == null)
                                {
                                    var tipoFRD = (GISADataset.TipoFRDBaseRow)(GisaDataSetHelper.GetInstance().TipoFRDBase.Select("ID=" + DomainValuesHelper.stringifyEnumValue(TipoFRDBase.FRDOIRecolha))[0]);
                                    frdRow = GisaDataSetHelper.GetInstance().FRDBase.AddFRDBaseRow(rhRow.NivelRowByNivelRelacaoHierarquica, tipoFRD, "", "", new byte[] { }, 0);
                                    var dp = GisaDataSetHelper.GetInstance().SFRDDatasProducao.AddSFRDDatasProducaoRow(frdRow, "", "", "", "", false, "", "", "", "", false, new byte[] { }, 0);
                                    var ce = GisaDataSetHelper.GetInstance().SFRDConteudoEEstrutura.AddSFRDConteudoEEstruturaRow(frdRow, "", "", new byte[] { }, 0);
                                    var c = GisaDataSetHelper.GetInstance().SFRDContexto.AddSFRDContextoRow(frdRow, "", "", "", false, new byte[] { }, 0);
                                    var da = GisaDataSetHelper.GetInstance().SFRDDocumentacaoAssociada.AddSFRDDocumentacaoAssociadaRow(frdRow, "", "", "", "", new byte[] { }, 0);
                                    var ds = GisaDataSetHelper.GetInstance().SFRDDimensaoSuporte.AddSFRDDimensaoSuporteRow(frdRow, "", new byte[] { }, 0);
                                    var ng = GisaDataSetHelper.GetInstance().SFRDNotaGeral.AddSFRDNotaGeralRow(frdRow, "", new byte[] { }, 0);
                                    var CurrentSFRDAvaliacao = GisaDataSetHelper.GetInstance().SFRDAvaliacao.NewSFRDAvaliacaoRow();
                                    CurrentSFRDAvaliacao.FRDBaseRow = frdRow;
                                    CurrentSFRDAvaliacao.IDPertinencia = 1;
                                    CurrentSFRDAvaliacao.IDDensidade = 1;
                                    CurrentSFRDAvaliacao.IDSubdensidade = 1;
                                    CurrentSFRDAvaliacao.Publicar = false;
                                    CurrentSFRDAvaliacao.Observacoes = "";
                                    CurrentSFRDAvaliacao.AvaliacaoTabela = false;
                                    GisaDataSetHelper.GetInstance().SFRDAvaliacao.AddSFRDAvaliacaoRow(CurrentSFRDAvaliacao);
                                    var condA = GisaDataSetHelper.GetInstance().SFRDCondicaoDeAcesso.AddSFRDCondicaoDeAcessoRow(frdRow, "", "", "", "", new byte[] { }, 0);

                                    PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().FRDBase, new DataRow[] { frdRow }, postSaveArgs.tran);
                                    PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDDatasProducao, new DataRow[] { dp }, postSaveArgs.tran);
                                    PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDConteudoEEstrutura, new DataRow[] { ce }, postSaveArgs.tran);
                                    PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDContexto, new DataRow[] { c }, postSaveArgs.tran);
                                    PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDDocumentacaoAssociada, new DataRow[] { da }, postSaveArgs.tran);
                                    PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDDimensaoSuporte, new DataRow[] { ds }, postSaveArgs.tran);
                                    PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDNotaGeral, new DataRow[] { ng }, postSaveArgs.tran);
                                    PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDAvaliacao, new DataRow[] { CurrentSFRDAvaliacao }, postSaveArgs.tran);
                                    PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDCondicaoDeAcesso, new DataRow[] { condA }, postSaveArgs.tran);
                                }

                                var nvlRegRow = RecordRegisterHelper
                                        .CreateFRDBaseDataDeDescricaoRow(frdRow,
                                            caRegRow.TrusteeUserRowByTrusteeUserControloAutDataDeDescricao,
                                            caRegRow.TrusteeUserRowByTrusteeUserControloAutDataDeDescricaoAuthority,
                                            caRegRow.DataAutoria);
                                nvlRegRow.DataEdicao = caRegRow.DataEdicao;
                                nvlRegRow.IDTipoNivelRelacionado = rhRow.IDTipoNivelRelacionado;

                                GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao.AddFRDBaseDataDeDescricaoRow(nvlRegRow);

                                PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao,
                                    GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao.Cast<GISADataset.FRDBaseDataDeDescricaoRow>().Where(r => r.RowState == DataRowState.Added).ToArray(), postSaveArgs.tran);
                            }
                        }
                    };

                    PersistencyHelper.save(ValidateCreateRel, pcArgs, postSaveAction);
					PersistencyHelper.cleanDeletedData();

					if (ContextControloAut.RowState == DataRowState.Detached)
					{
						MessageBox.Show("Não é possível estabelecer a relação uma vez que a notícia de autoridade " + System.Environment.NewLine + "selecionada no painel superior foi apagada por outro utilizador.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Warning);
						return false;
					}
					else
					{
						if (pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.RelationAlreadyExists)
						{
							MessageBox.Show("Não é permitida mais que uma relação do mesmo tipo entre as mesmas duas entidades produtoras.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Warning);

							return false;
						}
						else if (pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.CyclicRelation)
						{
							MessageBox.Show("Prestes a criar um conjunto de relações cíclicas.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Warning);

							return false;
						}
                        else if (pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.CADeleted)
                        {
                            MessageBox.Show("Não é possível estabelecer a relação uma vez que uma das notícias de autoridade " + System.Environment.NewLine + "foi apagada por outro utilizador.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                            return false;
                        }
                        else
                        {
                            GISA.Search.Updater.updateProdutor(new List<string>() { 
                                cadRow.ControloAutRow.ID.ToString(), ContextControloAut.ID.ToString()});
                            GISA.Search.Updater.updateNivelDocumentalComProdutores(cadRow.ControloAutRow.GetNivelControloAutRows()[0].ID);
                        }
					}
				}
				else
				{
					GISADataset.ControloAutRelRow carRow = null;
					carRow = GisaDataSetHelper.GetInstance().ControloAutRel.NewControloAutRelRow();
					carRow.IDControloAut = cadRow.ControloAutRow.ID;
					carRow.IDControloAutAlias = ContextControloAut.ID;
					carRow.IDTipoRel = tcarRow.ID;
					// Guardar datas
					carRow.InicioAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoInicio.ValueYear);
					carRow.InicioMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoInicio.ValueMonth);
					carRow.InicioDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoInicio.ValueDay);
					carRow.FimAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoFim.ValueYear);
					carRow.FimMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoFim.ValueMonth);
					carRow.FimDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoFim.ValueDay);

					carRow.Descricao = relacaoCA.txtDescricao.Text;
					GisaDataSetHelper.GetInstance().ControloAutRel.AddControloAutRelRow(carRow);

					pcArgs.ID = carRow.IDControloAut;
					pcArgs.IDUpper = carRow.IDControloAutAlias;
					pcArgs.IDTipoRel = carRow.IDTipoRel;
					pcArgs.isCARRow = true;

                    var postSaveAction = new PostSaveAction();
                    PersistencyHelper.UpdatePermissionsPostSaveArguments args = new PersistencyHelper.UpdatePermissionsPostSaveArguments();
                    postSaveAction.args = args;

                    postSaveAction.postSaveDelegate = delegate(PersistencyHelper.PostSaveArguments postSaveArgs)
                    {
                        if (!postSaveArgs.cancelAction && ContextControloAut.RowState != DataRowState.Detached && pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.NoError)
                        {
                            if (this.parent.GetType() == typeof(MasterPanelControloAut))
                            {
                                ((MasterPanelControloAut)this.parent).CurrentContext.RaiseRegisterModificationEvent(this.ContextControloAut);

                                PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao,
                                        GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao.Cast<GISADataset.ControloAutDataDeDescricaoRow>().Where(r => r.RowState == DataRowState.Added).ToArray(), postSaveArgs.tran);
                            }
                        }
                    };

					PersistencyHelper.save(ValidateCreateRel, pcArgs, postSaveAction);
					PersistencyHelper.cleanDeletedData();

					if (ContextControloAut.RowState == DataRowState.Detached)
					{
						MessageBox.Show("Não é possível estabelecer a relação uma vez que a notícia de autoridade " + System.Environment.NewLine + "selecionada no painel superior foi apagada por outro utilizador.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Warning);
						return false;
					}
					else
					{
                        if (pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.RelationAlreadyExists)
                        {
                            MessageBox.Show("Não é permitida mais que uma relação do mesmo tipo entre as mesmas duas entidades produtoras.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return false;
                        }
                        else
                        {
                            GISA.Search.Updater.updateProdutor(new List<string>() { 
                                carRow.IDControloAut.ToString(), carRow.IDControloAutAlias.ToString() });
                        }
					}
				}
			}
			else // edição
			{
				//Agir de forma diferente conforme seja uma relação hierarquica ou seja uma relação de outro qualquer tipo
				if (tcarRow.ID == Convert.ToInt64(TipoControloAutRel.Hierarquica))
				{
					long tnrID = 0;
					tnrID = ((TipoNivelRelacionado.PossibleSubNivel)relacaoCA.cbTipoNivel.SelectedItem).SubIDTipoNivelRelacionado;
					GISADataset.RelacaoHierarquicaRow rhRow = null;
					rhRow = (GISADataset.RelacaoHierarquicaRow)ContextRel;
					// Guardar tipo de nivel
					rhRow.IDTipoNivelRelacionado = tnrID;
					// Guardar datas
					rhRow.InicioAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoInicio.ValueYear);
					rhRow.InicioMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoInicio.ValueMonth);
					rhRow.InicioDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoInicio.ValueDay);
					rhRow.FimAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoFim.ValueYear);
					rhRow.FimMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoFim.ValueMonth);
					rhRow.FimDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoFim.ValueDay);
					// Guardar descrição
					rhRow.Descricao = relacaoCA.txtDescricao.Text;

                    var postSaveAction = new PostSaveAction();
                    PersistencyHelper.UpdatePermissionsPostSaveArguments args = new PersistencyHelper.UpdatePermissionsPostSaveArguments();
                    postSaveAction.args = args;

                    postSaveAction.postSaveDelegate = delegate(PersistencyHelper.PostSaveArguments postSaveArgs)
                    {
                        if (!postSaveArgs.cancelAction && ContextControloAut.RowState != DataRowState.Detached && pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.NoError)
                        {
                            if (this.parent.GetType() == typeof(MasterPanelControloAut))
                            {
                                ((MasterPanelControloAut)this.parent).CurrentContext.RaiseRegisterModificationEvent(this.ContextControloAut);

                                PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao,
                                        GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao.Cast<GISADataset.ControloAutDataDeDescricaoRow>().Where(r => r.RowState == DataRowState.Added).ToArray(), postSaveArgs.tran);
                            }
                        }
                    };

                    PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(postSaveAction);
				    PersistencyHelper.cleanDeletedData();

                    if (successfulSave == PersistencyHelper.SaveResult.successful)
                        UpdateCA(rhRow);
				}
				else
				{
					GISADataset.ControloAutRelRow carRow = null;
					carRow = (GISADataset.ControloAutRelRow)ContextRel;

					// Actualização de uma relação previamente existente
					carRow["IDTipoRel"] = ((GISADataset.TipoControloAutRelRow)relacaoCA.cbTipoControloAutRel.SelectedItem).ID;
					// guardar datas
					carRow.InicioAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoInicio.ValueYear);
					carRow.InicioMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoInicio.ValueMonth);
					carRow.InicioDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoInicio.ValueDay);
					carRow.FimAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoFim.ValueYear);
					carRow.FimMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoFim.ValueMonth);
					carRow.FimDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoFim.ValueDay);

					carRow.Descricao = relacaoCA.txtDescricao.Text;

                    var postSaveAction = new PostSaveAction();
                    PersistencyHelper.UpdatePermissionsPostSaveArguments args = new PersistencyHelper.UpdatePermissionsPostSaveArguments();
                    postSaveAction.args = args;

                    postSaveAction.postSaveDelegate = delegate(PersistencyHelper.PostSaveArguments postSaveArgs)
                    {
                        if (!postSaveArgs.cancelAction && ContextControloAut.RowState != DataRowState.Detached && pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.NoError)
                        {
                            if (this.parent.GetType() == typeof(MasterPanelControloAut))
                            {
                                ((MasterPanelControloAut)this.parent).CurrentContext.RaiseRegisterModificationEvent(this.ContextControloAut);

                                PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao,
                                        GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao.Cast<GISADataset.ControloAutDataDeDescricaoRow>().Where(r => r.RowState == DataRowState.Added).ToArray(), postSaveArgs.tran);
                            }
                        }
                    };

                    PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(postSaveAction);
				    PersistencyHelper.cleanDeletedData();

                    if (successfulSave == PersistencyHelper.SaveResult.successful)
                        UpdateCA(carRow);
				}

			}

			//TODO: PARA ALGUMAS DAS SEGUINTES VALIDACOES SERÁ NECESSÁRIO TRAZER PARA DENTRO DESTE FORM UMA GRANDE PARTE DA LOGICA EXISTENTE FORA DELE, NOMEADAMENTE A NOÇÃO DE SE ESTE FORM ESTÁ A SER UTILIZADO NA CRIAÇÃO OU NA EDIÇÃO DE UMA DADA RELAÇÃO
			//ToDo: validar que as datas da relação não vão para alem das datas de existencia de ambos os níveis (superior e inferior)
			//ToDo: validar que o tipo de nivel escolhido está de acordo com os tipos de nivel subordinados
			return true;
		}
Пример #22
0
		private void ToolBarButtonClickEvent(object sender, ToolBarButtonClickEventArgs e)
		{
			// obter o tipo de noticia em causa
			GISADataset.TipoNoticiaAutRow tnaRow = null;
			//tnaRow = DirectCast(GisaDataSetHelper.GetInstance().TipoNoticiaAut.Select("ID=" + DomainValuesHelper.stringifyEnumValue(TipoNoticiaAut.Diploma))(0), GISADataset.TipoNoticiaAutRow)
			tnaRow = (GISADataset.TipoNoticiaAutRow)caList.cbNoticiaAut.SelectedItem;
			if (tnaRow.ID == -1 && caList.cbNoticiaAut.Items.Count == 2)
			{
				tnaRow = (GISADataset.TipoNoticiaAutRow)(caList.cbNoticiaAut.Items[1]);
			}

			Trace.Assert(tnaRow != null);
			Trace.Assert(! (tnaRow.ID == -1));

			if (e.Button == ToolBarButtonNew)
			{
				FormCreateDiplomaModelo form = new FormCreateDiplomaModelo();
				if (tnaRow.ID == Convert.ToInt64(TipoNoticiaAut.Diploma))
				{
					form.Text = "Criar diploma";
				}
				else if (tnaRow.ID == Convert.ToInt64(TipoNoticiaAut.Modelo))
				{
					form.Text = "Criar modelo";
				}
				switch (form.ShowDialog())
				{
					case System.Windows.Forms.DialogResult.OK:

						//adicionar o novo controlo de autoridade ao modelo de dados e à interface
						GISADataset.ControloAutRow caRow = null;
						caRow = GisaDataSetHelper.GetInstance().ControloAut.NewControloAutRow();
						caRow.Autorizado = false;
						caRow.Completo = false;
						caRow.IDTipoNoticiaAut = tnaRow.ID;
						caRow.NotaExplicativa = "";
						caRow["IDIso639p2"] = DBNull.Value;
						caRow["IDIso15924"] = DBNull.Value;
						caRow.ChaveColectividade = "";
						caRow.ChaveRegisto = "";
						caRow.RegrasConvencoes = "";
						caRow.Observacoes = "";
						caRow.DescContextoGeral = "";
						caRow.DescEnquadramentoLegal = "";
						caRow.DescEstatutoLegal = "";
						caRow.DescEstruturaInterna = "";
						caRow.DescOcupacoesActividades = "";
						caRow.DescHistoria = "";
						caRow.DescOutraInformacaoRelevante = "";
						caRow.DescZonaGeografica = "";

						try
						{
							GisaDataSetHelper.GetInstance().ControloAut.AddControloAutRow(caRow);
							PersistencyHelper.ManageFormasAutorizadasPreConcArguments args = new PersistencyHelper.ManageFormasAutorizadasPreConcArguments();
							args.termo = form.Designacao.Trim().Replace("'", "''");
							args.caRowID = caRow.ID;

							PersistencyHelper.save(setNewTermo, args);
							PersistencyHelper.cleanDeletedData();

							caList.cbNoticiaAut.SelectedItem = tnaRow;
							caList.ReloadList();

							if (args.message.Length > 0)
							{
								MessageBox.Show(args.message, form.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
							}

							if (args.cadRow != null)
                                caList.SelectItem(args.cadRow);
						}
						catch (Exception ex)
						{
							Trace.WriteLine(ex);
							throw;
						}

						break;
					case System.Windows.Forms.DialogResult.Cancel:

					break;
					default:

					break;
				}
			}
			else if (e.Button == ToolBarButtonEdit)
			{
				GISADataset.ControloAutDicionarioRow cad = null;
				GISADataset.DicionarioRow d = null;
				cad = (GISADataset.ControloAutDicionarioRow)(caList.SelectedItems[0].Tag);
				Debug.Assert(cad.IDTipoControloAutForma == Convert.ToInt64(TipoControloAutForma.FormaAutorizada));
				d = cad.DicionarioRow;

				FormCreateDiplomaModelo form = new FormCreateDiplomaModelo();
				if (tnaRow.ID == Convert.ToInt64(TipoNoticiaAut.Diploma))
				{
					form.Text = "Editar diploma";
				}
				else if (tnaRow.ID == Convert.ToInt64(TipoNoticiaAut.Modelo))
				{
					form.Text = "Editar modelo";
				}
				form.Designacao = d.Termo;
				switch (form.ShowDialog())
				{
					case System.Windows.Forms.DialogResult.OK:
						try
						{
							PersistencyHelper.ManageFormasAutorizadasPreConcArguments args = new PersistencyHelper.ManageFormasAutorizadasPreConcArguments();
							args.termo = form.Designacao.Trim().Replace("'", "''");
							args.caRowID = cad.ControloAutRow.ID;

							PersistencyHelper.save(setNewTermo, args);
							PersistencyHelper.cleanDeletedData();

							caList.ReloadList();

							if (args.message.Length > 0)
								MessageBox.Show(args.message, form.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);

							if (args.cadRow != null)
                                caList.SelectItem(args.cadRow);
						}
						catch (Exception ex)
						{
							Trace.WriteLine(ex);
							throw;
						}
						break;
					case System.Windows.Forms.DialogResult.Cancel:

					break;
					default:

					break;
				}
			}
			else if (e.Button == ToolBarButtonDelete)
				DeleteControloAut(caList, "Eliminar diplomas/modelos", "Os items serão removidos apesar das associações existentes. Pretende continuar?", "Deseja apagar os elementos selecionados?");
			else if (e.Button == ToolBarButtonFilter)
                caList.FilterVisible = ToolBarButtonFilter.Pushed;
			else
				Debug.Assert(false, "Unexpected button clicked in ToolBar.");
		}
Пример #23
0
 public void RegisterNode(TreeNode Node, GISADataset.ControloAutRelRow ControloAutRel, GISADataset.ControloAutDicionarioRow ControloAutDicionario)
 {
     RegisterNode(Node, ControloAutRel, ControloAutDicionario, true);
 }
        private void button_FormPickControloAut_Click(object sender, System.EventArgs e) {
            FormPickControloAut frmPick = new FormPickControloAut();
            frmPick.Text = "Notícia de autoridade - Pesquisar registo de autoridade geográfico";
            frmPick.caList.AllowedNoticiaAut(TipoNoticiaAut.ToponimicoGeografico);
            frmPick.caList.ReloadList();

            if (frmPick.caList.Items.Count > 0)
                frmPick.caList.SelectItem(frmPick.caList.Items[0]);

            switch (frmPick.ShowDialog()) {
                case DialogResult.OK:
                    if (frmPick.caList.SelectedItems.Count > 0) {
                        var selCadRow = (GISADataset.ControloAutDicionarioRow)frmPick.caList.SelectedItems[0].Tag;
                        if (selCadRow.IDTipoControloAutForma == (long)TipoControloAutForma.FormaAutorizada)
                            this.cadRow = selCadRow;
                        else
                        {
                            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                            try
                            {
                                ControloAutRule.Current.LoadDicionarioAndControloAutDicionario(GisaDataSetHelper.GetInstance(), selCadRow.IDControloAut, ho.Connection);                                
                            }
                            catch (Exception ex)
                            {
                                Trace.WriteLine(ex);
                                throw;
                            }
                            finally
                            {
                                ho.Dispose();
                            }
                            this.cadRow = selCadRow.ControloAutRow.GetControloAutDicionarioRows().Where(cad => cad.IDTipoControloAutForma == (long)TipoControloAutForma.FormaAutorizada).Single();
                        }
                        this.txtDesignacao.Text = this.cadRow.DicionarioRow.Termo;
                        updateButtons();
                    }
                    break;
                default:
                    break;
            }
        }
Пример #25
0
 public void RegisterNode(TreeNode Node, GISADataset.ControloAutRelRow ControloAutRel, GISADataset.ControloAutDicionarioRow ControloAutDicionario, bool selectIt)
 {
     RegisterNode(Node, ControloAutDicionario.DicionarioRow.Termo, ControloAutRel, selectIt);
 }
Пример #26
0
		private void setNewTermo(PersistencyHelper.PreConcArguments args)
		{
			try
			{
				PersistencyHelper.ManageFormasAutorizadasPreConcArguments mfaPca = (PersistencyHelper.ManageFormasAutorizadasPreConcArguments)args;
				string termo = mfaPca.termo;
				GISADataset.ControloAutRow carow = (GISADataset.ControloAutRow)(GisaDataSetHelper.GetInstance().ControloAut.Select("ID=" + mfaPca.caRowID.ToString())[0]);
				GISADataset.TipoControloAutFormaRow tcafRowAutorizado = (GISADataset.TipoControloAutFormaRow)(GisaDataSetHelper.GetInstance().TipoControloAutForma.Select("ID=" + System.Enum.Format(typeof(TipoControloAutForma), TipoControloAutForma.FormaAutorizada, "D"))[0]);
				DataSet gisaBackup = mfaPca.gisaBackup;
				//Dim dataReader As IDataReader
				GISADataset.DicionarioRow dRowOrig = null;
				GISADataset.ControloAutDicionarioRow cadRowOrig = ControloAutHelper.getFormaAutorizada(carow);
				bool existsOrigCad = false;

				ArrayList termoUsed = DiplomaModeloRule.Current.GetDicionario(getCatCode(carow.TipoNoticiaAutRow), termo.Trim(), mfaPca.tran);

				// Distinguir entre criar e editar um Diploma/Modelo
				if (carow.ID < 0)
				{
					// Criar Diploma/Modelo:
					//  - verificar se o termo escolhido existe na base de dados e se nesse caso, verificar se
					//    está a ser utilizado noutro Diploma/Modelo
					if (((long)(termoUsed[0])) > 0 && (bool)(termoUsed[1]))
					{
						// A designação já existe na base de dados mas está marcada como apagada
						mfaPca.cadRow = manageDesignacaoDiplomaModelo(mfaPca.cadRow, mfaPca.termo, carow.TipoNoticiaAutRow, carow, tcafRowAutorizado);
					}
					else if (((long)(termoUsed[0])) > 0 && ! ((bool)(termoUsed[1])))
					{
						// A designação já existe na base de dados mas não está marcada como apagada; no entanto, 
						// é preciso saber se está a ser usada por outro Diploma/Modelo (tipicamente, nesta 
						// situação a designação está a ser utilizada por um Diploma/Modelo mas já aconteceu não 
						// estar a ser utilizada fruto de uma resolução de conflito de concorrência)
						if (DiplomaModeloRule.Current.ExistsControloAutDicionario((long)(termoUsed[0]), 1, carow.TipoNoticiaAutRow.ID, mfaPca.tran))
						{
							carow.RejectChanges();
							mfaPca.message = "A designação especificada já existe, deverá escolhê-la da lista caso a pretenda utilizar.";
						}
						else
						{
							mfaPca.cadRow = manageDesignacaoDiplomaModelo(mfaPca.cadRow, mfaPca.termo, carow.TipoNoticiaAutRow, carow, tcafRowAutorizado);
						}
					}
					else
					{
						// A designação não existe na base de dados
						mfaPca.cadRow = manageDesignacaoDiplomaModelo(mfaPca.cadRow, mfaPca.termo, carow.TipoNoticiaAutRow, carow, tcafRowAutorizado);
					}
				}
				else
				{
					// Editar Diploma/Modelo
					//  - verificar se entretanto outro utilizador já editou o Diploma/Modelo
					//  - verificar se o termo escolhido existe na base de dados e se nesse caso, verificar se
					//    está a ser utilizado noutro Diploma/Modelo
					existsOrigCad = DiplomaModeloRule.Current.ExistsControloAutDicionario(cadRowOrig.IDDicionario, cadRowOrig.IDTipoControloAutForma, carow.TipoNoticiaAutRow.ID, mfaPca.tran);

					dRowOrig = cadRowOrig.DicionarioRow;

					PersistencyHelper.BackupRow(ref gisaBackup, cadRowOrig);
					PersistencyHelper.BackupRow(ref gisaBackup, dRowOrig);

					cadRowOrig.Delete();
					// é permitido apagar o termo antigo uma vez que é único para diplomas/modelo
					dRowOrig.Delete();

					if (existsOrigCad)
					{
						// o Diploma/Modelo não foi editado por nenhum outro utilizador
						if (((long)(termoUsed[0])) > 0 && (bool)(termoUsed[1]))
						{
							// A designação já existe na base de dados mas está marcada como apagada
							mfaPca.cadRow = manageDesignacaoDiplomaModelo(mfaPca.cadRow, mfaPca.termo, carow.TipoNoticiaAutRow, carow, tcafRowAutorizado);
						}
						else if (((long)(termoUsed[0])) > 0 && ! ((bool)(termoUsed[1])))
						{
							// A designação já existe na base de dados mas não está marcada como apagada; no entanto, 
							// é preciso saber se está a ser usada por outro Diploma/Modelo (tipicamente, nesta 
							// situação a designação está a ser utilizada por um Diploma/Modelo mas já aconteceu não 
							// estar a ser utilizada fruto de uma resolução de conflito de concorrência)
							if (DiplomaModeloRule.Current.ExistsControloAutDicionario((long)(termoUsed[0]), 1, carow.TipoNoticiaAutRow.ID, mfaPca.tran))
							{
								dRowOrig.RejectChanges();
								cadRowOrig.RejectChanges();
								mfaPca.message = "A designação especificada já existe, deverá escolhê-la da lista caso a pretenda utilizar.";
							}
							else
							{
								mfaPca.cadRow = manageDesignacaoDiplomaModelo(mfaPca.cadRow, mfaPca.termo, carow.TipoNoticiaAutRow, carow, tcafRowAutorizado);
							}
						}
						else
						{
							// A designação não existe na base de dados
							mfaPca.cadRow = manageDesignacaoDiplomaModelo(mfaPca.cadRow, mfaPca.termo, carow.TipoNoticiaAutRow, carow, tcafRowAutorizado);
						}
					}
					else
					{
						// Outro utilizador já editou este Diploma/Modelo pelo que não é possível reeditá-lo
						dRowOrig.RejectChanges();
						cadRowOrig.RejectChanges();
						mfaPca.message = "Não foi possível executar a operação pretendida pois o controlo de autoridade foi alterado por outro utilizador.";
					}
				}
			}
			catch (Exception ex)
			{
				Trace.WriteLine(ex);
				throw;
			}
		}
Пример #27
0
        // Adicionar um tecnico de obra (registo de autoridade onomastico):
        private void btnAddTecnicoObra_Click(object sender, EventArgs e)
        {
            FormPickControloAut frmPick = new FormPickControloAut();

            frmPick.Text = "Notícia de autoridade - Pesquisar registo de autoridade onomástico";
            frmPick.caList.AllowedNoticiaAut(TipoNoticiaAut.Onomastico);
            frmPick.caList.ReloadList();

            GISADataset.ControloAutRow            caRow      = null;
            GISADataset.LicencaObraTecnicoObraRow tecnicoRow = null;
            GISADataset.ControloAutDicionarioRow  cadRow     = null;

            if (frmPick.caList.Items.Count > 0)
            {
                frmPick.caList.SelectItem(frmPick.caList.Items[0]);
            }

            switch (frmPick.ShowDialog())
            {
            case DialogResult.OK:
                foreach (ListViewItem li in frmPick.caList.SelectedItems)
                {
                    cadRow = (GISADataset.ControloAutDicionarioRow)li.Tag;
                    caRow  = cadRow.ControloAutRow;
                    if (!existe_LicencaObraTecnicoObra(caRow))
                    {
                        if (cadRow.IDTipoControloAutForma != (long)TipoControloAutForma.FormaAutorizada)
                        {
                            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                            try
                            {
                                ControloAutRule.Current.LoadDicionarioAndControloAutDicionario(GisaDataSetHelper.GetInstance(), cadRow.IDControloAut, ho.Connection);
                            }
                            catch (Exception ex)
                            {
                                Trace.WriteLine(ex);
                                throw;
                            }
                            finally
                            {
                                ho.Dispose();
                            }
                            cadRow = caRow.GetControloAutDicionarioRows().Where(cad => cad.IDTipoControloAutForma == (long)TipoControloAutForma.FormaAutorizada).Single();
                        }

                        tecnicoRow = GisaDataSetHelper.GetInstance().LicencaObraTecnicoObra.NewLicencaObraTecnicoObraRow();
                        tecnicoRow.LicencaObraRow = CurrentLicencaObra;
                        tecnicoRow.ControloAutRow = caRow;
                        tecnicoRow.isDeleted      = 0;
                        // Dados:
                        Add_RowTecnicoObra(tecnicoRow);
                        // GUI: adicionar `a lista:
                        Add_ViewTecnicoObra(cadRow, tecnicoRow);
                    }
                }
                break;

            default:
                break;
            }
        }
Пример #28
0
 private void PutControloAutRelInTreeView(GISADataset.ControloAutRelRow carRow, GISADataset.ControloAutDicionarioRow ControloAutDicionario)
 {
     PutControloAutRelInTreeView(carRow, ControloAutDicionario, true);
 }
Пример #29
0
        private void PutControloAutRelInTreeView(GISADataset.ControloAutRelRow carRow, GISADataset.ControloAutDicionarioRow ControloAutDicionario, bool selectNewItem)
        {
            GISADataset.TipoControloAutRelRow tcarRow = null;
            DataRow[] cadRows = null;

            // procurar o ramo correcto onde adicionar a relação
            foreach (TreeNode Node in trVwTermoIndexacao.Nodes)
            {
                if (Node.Tag is GISADataset.TipoControloAutRelRow)
                {
                    try
                    {
                        tcarRow = (GISADataset.TipoControloAutRelRow)Node.Tag;
                        if (carRow.IDTipoRel == tcarRow.ID)
                        {
                            long ControloAutID = -1;
                            if (carRow.IDControloAut == currentControloAut.ID && carRow.TipoControloAutRelRow.Designacao.Equals(Node.Text))
                            {
                                ControloAutID = carRow.ControloAutRowByControloAutControloAutRelAlias.ID;
                            }
                            else if (carRow.IDControloAutAlias == currentControloAut.ID && carRow.TipoControloAutRelRow.DesignacaoInversa.Equals(Node.Text))
                            {
                                ControloAutID = carRow.ControloAutRowByControloAutControloAutRel.ID;
                            }

                            if (ControloAutID != -1)
                            {
                                // procurar a forma autorizada
                                cadRows = GisaDataSetHelper.GetInstance().ControloAutDicionario.Select(string.Format("IDControloAut={0} AND IDTipoControloAutForma=1", ControloAutID));
                                if (cadRows.Length > 0)
                                {
                                    // adicionar o CA à árvore
                                    RegisterNode(Node, carRow, (GISADataset.ControloAutDicionarioRow)(cadRows[0]), selectNewItem);
                                    break;
                                }
                            }
                        }
                    }
                    catch (NullReferenceException ex)
                    {
                        // Ignore the Null Pointer, it's "Termo de Topo"
                        if (string.Compare(Node.Text, "termo de topo", true) != 0)
                        {
                            throw ex;
                        }
                    }
                    catch (Exception ex)
                    {
                        Trace.WriteLine(ex);
                        throw;
                    }
                }
            }
        }
Пример #30
0
 public void SetControloAutDicionarioRow(GISADataset.ControloAutDicionarioRow cadRow)
 {
     ListTermos.ValidAuthorizedForm = cadRow.DicionarioRow.Termo;
     mOriginalCADRow = cadRow;
     UpdateButtonState();
 }