void SuggestionPickerRA_BrowseEntidadeInterna(object sender, ref EntidadeInterna ei, TipoEntidadeExterna tee, out bool cancel, out TipoEstado estado)
        {
            estado = TipoEstado.Novo;
            cancel = false;
            var rai = (RegistoAutoridadeInterno)ei;
            var tna = TipoEntidade.GetTipoNoticiaAut(tee);
            FormPickControloAut frmPick = new FormPickControloAut();
            frmPick.Text = "Notícia de autoridade - Pesquisar registo de autoridade";
            frmPick.caList.AllowedNoticiaAut(tna);
            frmPick.caList.ReloadList();

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

            switch (frmPick.ShowDialog())
            {
                case DialogResult.OK:
                    var cadRow = (GISADataset.ControloAutDicionarioRow)frmPick.caList.SelectedItems[0].Tag;
                    switch (tna)
                    {
                        case TipoNoticiaAut.EntidadeProdutora:
                            var produtor = new Model.EntidadesInternas.Produtor();
                            var nRowCA = cadRow.ControloAutRow.GetNivelControloAutRows()[0].NivelRow;
                            produtor.Codigo = nRowCA.Codigo;
                            rai = produtor;
                            estado = Database.Database.IsProdutor(this.correspDocumento.EntidadeInterna.Id, nRowCA.ID) ? TipoEstado.SemAlteracoes : TipoEstado.Novo;
                            break;
                        case TipoNoticiaAut.Onomastico:
                            rai = new Model.EntidadesInternas.Onomastico();
                            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();
                            if (this.Documento.Id > 0)
                            {
                                var nRow = GisaDataSetHelper.GetInstance().Nivel.Cast<GISADataset.NivelRow>().Single(r => r.ID == this.Documento.Id);
                                if (GisaDataSetHelper.GetInstance().IndexFRDCA.Cast<GISADataset.IndexFRDCARow>().SingleOrDefault(r => r.IDControloAut == cadRow.IDControloAut && r.IDFRDBase == nRow.GetFRDBaseRows()[0].ID) != null)
                                    estado = TipoEstado.SemAlteracoes;
                                else if (nRow.GetFRDBaseRows()[0].GetIndexFRDCARows().Select(r => r.ControloAutRow).Count(caRow => caRow.IDTipoNoticiaAut == (long)TipoNoticiaAut.TipologiaInformacional) > 0)
                                    estado = TipoEstado.Editar;
                                else
                                    estado = TipoEstado.Novo;
                            }
                            break;
                    }
                    rai.Titulo = cadRow.DicionarioRow.Termo;
                    rai.Estado = TipoEstado.SemAlteracoes;
                    rai.Id = cadRow.IDControloAut;
                    ei = rai;
                    break;
                case DialogResult.Cancel:
                    cancel = true;
                    break;
            }
        }
        // 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;
            }
        }
		private void retrieveSelection(FormPickControloAut frmPick, TextBox txtBox)
		{
			switch (frmPick.ShowDialog())
			{
				case DialogResult.OK:
					foreach (ListViewItem li in frmPick.caList.SelectedItems)
					{
						Debug.Assert(li.Tag is GISADataset.ControloAutDicionarioRow);

						var ca = ((GISADataset.ControloAutDicionarioRow)li.Tag).ControloAutRow;
						var cadRows = GisaDataSetHelper.GetInstance().ControloAutDicionario.Select("IDControloAut=" + ca.ID.ToString() + " AND IDTipoControloAutForma=" + System.Enum.Format(typeof(TipoControloAutForma), TipoControloAutForma.FormaAutorizada, "D"));
						if (cadRows.Length > 0)
                            AddTermoToSearchField(txtBox, (GISADataset.ControloAutDicionarioRow)cadRows[0]);
					}
					break;
				case DialogResult.Cancel:
				break;
			}
		}
        // 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;
            }
        }
Exemple #5
0
		private void btnAdd_Click(object sender, EventArgs e)
		{
			if (CurrentControloAut.RowState == DataRowState.Detached)
			{
				MessageBox.Show("A notícia de autoridade selecionada como contexto foi " + System.Environment.NewLine + "apagada por outro utilizador e por esse motivo não pode ser editada.", "Edição de Notícia de Autoridade", MessageBoxButtons.OK, MessageBoxIcon.Warning);
				return;
			}

			FormPickControloAut frmPick = new FormPickControloAut(CurrentControloAut);
            frmPick.Text = "Notícia de autoridade - Pesquisar entidades produtoras";
			frmPick.caList.AllowedNoticiaAut(TipoNoticiaAut.EntidadeProdutora);
			frmPick.caList.ReloadList();

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

			GISADataset.ControloAutRow caRow = null;
			GISADataset.ControloAutRelRow carRow = null;
			GISADataset.TipoControloAutRelRow tcarRow = null;
			switch (frmPick.ShowDialog())
			{
				case DialogResult.OK:
					foreach (ListViewItem li in frmPick.caList.SelectedItems)
					{
						caRow = ((GISADataset.ControloAutDicionarioRow)li.Tag).ControloAutRow;

						// Proteger contra relações repetidas
						string query = string.Format("({0} OR {1}) AND IDTipoRel = {2}", GetRelConstraint(caRow, CurrentControloAut), GetRelConstraint(CurrentControloAut, caRow), System.Enum.Format(typeof(TipoControloAutRel), TipoControloAutRel.Instituicao, "D"));

						if ((GisaDataSetHelper.GetInstance().ControloAutRel.Select(query)).Length == 0)
						{
							tcarRow = (GISADataset.TipoControloAutRelRow)(GisaDataSetHelper.GetInstance().TipoControloAutRel.Select("ID=" + System.Enum.Format(typeof(TipoControloAutRel), TipoControloAutRel.Instituicao, "D"))[0]);
							carRow = GisaDataSetHelper.GetInstance().ControloAutRel.NewControloAutRelRow();
							carRow.ControloAutRowByControloAutControloAutRel = CurrentControloAut;
							carRow.ControloAutRowByControloAutControloAutRelAlias = caRow;
							carRow.TipoControloAutRelRow = tcarRow;
							carRow["Descricao"] = DBNull.Value;
							carRow["InicioAno"] = DBNull.Value;
							carRow["InicioMes"] = DBNull.Value;
							carRow["InicioDia"] = DBNull.Value;
							carRow["FimAno"] = DBNull.Value;
							carRow["FimMes"] = DBNull.Value;
							carRow["FimDia"] = DBNull.Value;

							GisaDataSetHelper.GetInstance().ControloAutRel.AddControloAutRelRow(carRow);

							PersistencyHelper.VerifyRelExistencePreConcArguments pcArgs = new PersistencyHelper.VerifyRelExistencePreConcArguments();
							pcArgs.ID = caRow.ID;
							pcArgs.IDUpper = CurrentControloAut.ID;
							pcArgs.IDTipoRel = Convert.ToInt64(TipoControloAutRel.Instituicao);

						 	PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(GetRelPanelCAControl, pcArgs);
							PersistencyHelper.cleanDeletedData();

							if (carRow.RowState == DataRowState.Detached)
								MessageBox.Show("Não foi possível estabelecer a relação uma vez que a notícia de autoridade " + System.Environment.NewLine + "que pretende associar foi apagada por outro utilizador.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
							else
							{
								AddIdentidadeInstituicao(carRow);

                                // registar inserção
                                ((frmMain)TopLevelControl).CurrentContext.RaiseRegisterModificationEvent(CurrentControloAut);

                                if (successfulSave == PersistencyHelper.SaveResult.successful)
                                {
                                    UpdateCA(CurrentControloAut);
                                    UpdateCA(caRow);
                                }
							}
						}
						else
							MessageBox.Show("A relação que pretende adicionar já existe.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
					}
					break;
				case DialogResult.Cancel:
				break;
			}
		}
        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;
            }
        }