Ejemplo n.º 1
0
        private void btnAutoEliminacaoManager_Click(object sender, System.EventArgs e)
        {
            FormAutoEliminacaoEditor formAutoEditor = new FormAutoEliminacaoEditor();
            IDbConnection            conn           = GisaDataSetHelper.GetConnection();

            try
            {
                conn.Open();
                RelatorioRule.Current.LoadAutosEliminacao(GisaDataSetHelper.GetInstance(), conn);
            }
            finally
            {
                conn.Close();
            }

            formAutoEditor.LoadData(GisaDataSetHelper.GetInstance().AutoEliminacao.Select(string.Empty, "Designacao"), "Designacao");
            formAutoEditor.ShowDialog();

            PersistencyHelper.save();
            PersistencyHelper.cleanDeletedData();

            long selectedAutoEliminacaoID = 0;

            if (cbAutoEliminacao.SelectedValue == null)
            {
                selectedAutoEliminacaoID = long.MinValue;
            }
            else
            {
                selectedAutoEliminacaoID = (long)cbAutoEliminacao.SelectedValue;
            }

            rebindToData();
            cbAutoEliminacao.SelectedValue = selectedAutoEliminacaoID;
        }
Ejemplo n.º 2
0
        private void ClickBtnApagar()
        {
            if (MessageBox.Show("Tem a certeza que pretende eliminar o depósito?", "Eliminar depósito", MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            Trace.WriteLine("A apagar depósito...");

            var depItem = depList.SelectedItems[0];
            var depRow  = depItem.Tag as GISADataset.DepositoRow;

            if (CurrentContext.Deposito.RowState == DataRowState.Detached)
            {
                depList.ClearItemSelection(depItem);
            }
            else
            {
                var args = new PersistencyHelper.DeleteDepositoPreConcArguments();
                args.IDDeposito = depRow.ID;

                depRow.Delete();

                PersistencyHelper.save(DeleteDeposito, args);
                PersistencyHelper.cleanDeletedData();
            }

            depItem.Remove();
            UpdateToolBarButtons();
            UpdateContext();
        }
		public GISADataset.TrusteeUserRow CreateNewUser()
		{
			//adicionar um utilizador sem grupo nem permissões para utilização da aplicação
			//, com builtinuser = false, com isauhtority = true e com isactive = false
			GISADataset.TrusteeRow tRow = null;
			GISADataset.TrusteeUserRow tuRow = null;
			
			byte[] Versao = null;
			try
			{
				tRow = GisaDataSetHelper.GetInstance().Trustee.AddTrusteeRow("autor", "", "USR", false, false, true, true, Versao, 0);
				tuRow = GisaDataSetHelper.GetInstance().TrusteeUser.NewTrusteeUserRow();
				tuRow.TrusteeRow = tRow;
				tuRow.Password = "";
				tuRow.FullName = "Novo autor";
				tuRow.IsAuthority = true;
				tuRow["IDTrusteeUserDefaultAuthority"] = DBNull.Value;
				GisaDataSetHelper.GetInstance().TrusteeUser.AddTrusteeUserRow(tuRow);

                // TODO: apagar?
				//GisaDataSetHelper.GetTrusteeDataAdapter.Update(New DataRow() {tRow})
				//GisaDataSetHelper.GetTrusteeUserDataAdapter.Update(New DataRow() {tuRow})

				PersistencyHelper.save();
				PersistencyHelper.cleanDeletedData();
			}
			finally
			{
                // TODO: apagar?
				//ho.Dispose()
			}

			return tuRow;
		}
Ejemplo n.º 4
0
		protected override void EditTrustee()
		{
			if (lstVwTrustees.SelectedItems.Count == 0)
				return;

            ((frmMain)TopLevelControl).EnterWaitMode();
			ListViewItem item = null;
			GISADataset.TrusteeRow truRow = null;
			item = lstVwTrustees.SelectedItems[0];
			truRow = (GISADataset.TrusteeRow)item.Tag;
		
			GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
			try
			{
				if (TrusteeRule.Current.hasRegistos(((GISADataset.TrusteeRow)(lstVwTrustees.SelectedItems[0].Tag)).ID, ho.Connection))
					MessageBox.Show("Tenha em conta que alterações no nome de utilizador terá reflexos no registos no sistema.", "Utilizador", MessageBoxButtons.OK, MessageBoxIcon.Information);
			}
			catch (Exception ex)
			{
				Trace.WriteLine(ex);
				throw;
			}
			finally
			{
				ho.Dispose();
			}

			FormCreateTrustee form = new FormCreateTrustee();
			form.Text = "Editar utilizador";
			form.txtTrusteeName.Text = truRow.Name;
			switch (form.ShowDialog())
			{
				case DialogResult.OK:
		
					PersistencyHelper.EditTrusteePreConcArguments ctpca = new PersistencyHelper.EditTrusteePreConcArguments();
					ctpca.truRow = truRow;
					ctpca.username = form.txtTrusteeName.Text;

					Trace.WriteLine("A editar utilizador...");

					PersistencyHelper.save(EditTrusteeIfUsernameDoesntExist, ctpca);
					PersistencyHelper.cleanDeletedData();

					if (! ctpca.successful)
					{
						MessageBox.Show("Este nome já existe atribuído a um utilizador ou grupo, " + Environment.NewLine + "por favor escolha outro nome.", form.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
						UpdateTrustees(null);
					}
					else
					{
						UpdateTrustees(truRow);
						UpdateContext();
					}
					UpdateToolBarButtons();
					break;
				case DialogResult.Cancel:
				    break;
			}
            ((frmMain)TopLevelControl).LeaveWaitMode();
		}
Ejemplo n.º 5
0
        private void ClickTbEditar()
        {
            FormMovimento frm = new FormMovimento();

            frm.Text = "Editar " + this.NomeMovimento;

            //obter row seleccionada e colocar a informação no form
            GISADataset.MovimentoRow reqRow = (GISADataset.MovimentoRow)movList.SelectedItems[0].Tag;
            frm.Entidade         = reqRow.MovimentoEntidadeRow;
            frm.Data             = reqRow.Data;
            frm.CurrentMovimento = reqRow;
            frm.LoadData();

            if (frm.ShowDialog() == DialogResult.OK)
            {
                // ler os valores do form e gravá-los
                reqRow.MovimentoEntidadeRow = frm.Entidade;
                reqRow.Data = frm.Data;

                PersistencyHelper.save();
                PersistencyHelper.cleanDeletedData();

                movList.ReloadList(reqRow);
            }
        }
Ejemplo n.º 6
0
        private void btnAdd_Click(object sender, System.EventArgs e)
        {
            FormUserGroups form = new FormUserGroups();

            byte[] Versao = null;
            if (form.ShowDialog() == DialogResult.OK)
            {
                this.Cursor = Cursors.WaitCursor;
                GISADataset.TrusteeRow tRow    = null;
                List <long>            tRowIDs = new List <long>();
                foreach (ListViewItem item in form.lstVwTrustees.SelectedItems)
                {
                    tRow = (GISADataset.TrusteeRow)item.Tag;
                    // verificar se o utilizador foi anteriormente adicionado ao grupo
                    if (GisaDataSetHelper.GetInstance().UserGroups.Select(string.Format("IDUser={0} AND IDGroup={1}", (CurrentTrusteeRow.GetTrusteeUserRows()[0]).ID.ToString(), (tRow.GetTrusteeGroupRows()[0]).ID.ToString())).Length == 0)
                    {
                        tRowIDs.Add(tRow.ID);
                        GisaDataSetHelper.GetInstance().UserGroups.AddUserGroupsRow(CurrentTrusteeRow.GetTrusteeUserRows()[0], tRow.GetTrusteeGroupRows()[0], Versao, 0);
                    }
                }

                PersistencyHelper.save();
                PersistencyHelper.cleanDeletedData();
                EnumerateMembership(CurrentTrusteeRow);
                this.Cursor = Cursors.Default;
            }
        }
Ejemplo n.º 7
0
        private void DeleteItem()
        {
            ListViewItem item = this.lstVwNiveisAssoc.SelectedItems[0];

            GISADataset.DocumentosMovimentadosRow dmRow = (GISADataset.DocumentosMovimentadosRow)item.Tag;

            var args = new PersistencyHelper.ValidateMovimentoDeleteItemPreConcArguments();

            args.IDMovimento = dmRow.IDMovimento;
            args.IDNivel     = dmRow.IDNivel;
            args.CatCode     = dmRow.MovimentoRow.CatCode.Equals("REQ") ? "DEV" : "REQ";

            dmRow.Delete();

            PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(ValidateMovimentoDelete, args);
            PersistencyHelper.cleanDeletedData();

            if (!args.continueSave)
            {
                var message = dmRow.MovimentoRow.CatCode.Equals("REQ")
                    ? "Não é permitido eliminar a associação de documentos a requisições com devolução posterior"
                    : "Não é permitido eliminar a associação de documentos a devoluções com requisições posteriores mas sem devolução";
                MessageBox.Show(message, "Eliminar a associação de documento com a requisição/devolução", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            this.lstVwNiveisAssoc.Items.Remove(item);
            UpdateListButtonsState();
        }
Ejemplo n.º 8
0
		public static void CascadeDeleteFRD(GISADataset.FRDBaseRow FRDRow)
		{
			PersistencyHelper.DeleteIDXPreSaveArguments args = new PersistencyHelper.DeleteIDXPreSaveArguments();
			args.ID = FRDRow.ID;
			DeleteInDataSet(FRDRow);
			PersistencyHelper.save(new PersistencyHelper.preSaveDelegate(DeleteFRDBaseXInDataBase), args);
			PersistencyHelper.cleanDeletedData();
		}
Ejemplo n.º 9
0
        private void ExecuteFilter()
        {
            PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save();
            PersistencyHelper.cleanDeletedData();
            if (successfulSave == PersistencyHelper.SaveResult.unsuccessful)
            {
                return;
            }
            else if (successfulSave == PersistencyHelper.SaveResult.successful)
            {
                GISA.Search.Updater.updateUnidadeFisica(CurrentNivel.GetFRDBaseRows()[0].NivelRow.ID);
            }

            if ((FilterTipoNivelRelacionado == -1) && (TextFilterDesignacao == string.Empty))
            {
                filtered = false;
                filter.Clear();
                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                try
                {
                    ordem    = FRDRule.Current.LoadUFUnidadesDescricaoData(GisaDataSetHelper.GetInstance(), CurrentNivel.ID, ho.Connection);
                    detalhes = FRDRule.Current.LoadUFUnidadesDescricaoDetalhe(GisaDataSetHelper.GetInstance(), CurrentNivel.ID, SessionHelper.GetGisaPrincipal().TrusteeUserOperator.ID, ho.Connection);
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex);
                    throw;
                }
                finally
                {
                    ho.Dispose();
                }
            }
            else
            {
                filtered = true;
                filter.Clear();
                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                try
                {
                    ordem    = FRDRule.Current.LoadUFUnidadesDescricaoData(GisaDataSetHelper.GetInstance(), CurrentNivel.ID, ho.Connection);
                    detalhes = FRDRule.Current.LoadUFUnidadesDescricaoDetalhe(GisaDataSetHelper.GetInstance(), CurrentNivel.ID, SessionHelper.GetGisaPrincipal().TrusteeUserOperator.ID, ho.Connection);
                    filter   = FRDRule.Current.FilterUFUnidadesDescricao(TextFilterDesignacao, FilterTipoNivelRelacionado, CurrentNivel.ID, ho.Connection);
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex);
                    throw;
                }
                finally
                {
                    ho.Dispose();
                }
            }

            RepopulateNiveisAssociados();
        }
Ejemplo n.º 10
0
        public static PersistencyHelper.SaveResult CascadeDeleteNivel(GISADataset.NivelRow NivelRow)
		{
			//DeleteNivelInDataBase(NivelRow)
			PersistencyHelper.DeleteIDXPreSaveArguments args = new PersistencyHelper.DeleteIDXPreSaveArguments();
			args.ID = NivelRow.ID;
			DeleteInDataSet(NivelRow); // é possível que esta linha não seja já precisa uma vez que o cleandeleteddata seguinte irá limpar do DS de trabalho as linhas que já não existam
            PersistencyHelper.SaveResult saveSuccess = PersistencyHelper.save(new PersistencyHelper.preSaveDelegate(DeleteNivelXInDataBase), args);
			PersistencyHelper.cleanDeletedData();
            return saveSuccess;
		}
		private void btnSair_Click(object sender, System.EventArgs e)
		{
            // TODO: que fazer com o código?
			//GisaDataSetHelper.GetTrusteeDataAdapter().Update(GisaDataSetHelper.GetInstance().Trustee.Select("", "", DataViewRowState.Added Or DataViewRowState.ModifiedCurrent))
			//GisaDataSetHelper.GetTrusteeUserDataAdapter().Update(GisaDataSetHelper.GetInstance().TrusteeUser.Select("", "", DataViewRowState.Added Or DataViewRowState.ModifiedCurrent))
			//GisaDataSetHelper.GetUserGroupsDataAdapter().Update(GisaDataSetHelper.GetInstance().UserGroups.Select("", "", DataViewRowState.Added))
			PersistencyHelper.save();
			PersistencyHelper.cleanDeletedData();
			this.Close();
		}
Ejemplo n.º 12
0
		protected override void EditTrustee()
		{
			if (lstVwTrustees.SelectedItems.Count == 0)
				return;

			GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
			try
			{
				if (TrusteeRule.Current.hasUsers(((GISADataset.TrusteeRow)(lstVwTrustees.SelectedItems[0].Tag)).ID, ho.Connection))
					MessageBox.Show("Tenha em conta que o Grupo de Utilizadores a editar já tem Utilizadores associados.", "Utilizador", MessageBoxButtons.OK, MessageBoxIcon.Warning);
			}
			catch (Exception ex)
			{
				Trace.WriteLine(ex);
				throw;
			}
			finally
			{
				ho.Dispose();
			}

			ListViewItem item = null;
			GISADataset.TrusteeRow truRow = null;
			item = lstVwTrustees.SelectedItems[0];
			truRow = (GISADataset.TrusteeRow)item.Tag;
            
			FormCreateTrustee form = new FormCreateTrustee();
			form.Text = "Editar grupo de utilizadores";
			form.txtTrusteeName.Text = truRow.Name;
			switch (form.ShowDialog())
			{
				case DialogResult.OK:

					PersistencyHelper.EditTrusteePreConcArguments etpca = new PersistencyHelper.EditTrusteePreConcArguments();
					etpca.truRow = truRow;
					etpca.username = form.txtTrusteeName.Text;

					Trace.WriteLine("A editar o grupo de utilizador...");

					PersistencyHelper.save(editTrusteeIfUsernameDoesntExist, etpca);
					PersistencyHelper.cleanDeletedData();

					if (! etpca.successful)
					{
						MessageBox.Show("Este nome já existe atribuído a um utilizador ou grupo, " + Environment.NewLine + "por favor escolha outro nome.", form.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
						UpdateTrustees(null);
					}
					else
						UpdateTrustees(truRow);

					break;
				case DialogResult.Cancel:
				break;
			}
		}
Ejemplo n.º 13
0
        public override PersistencyHelper.SaveResult Save(bool activateOpcaoCancelar)
        {
            var IDsToUpdate = GisaDataSetHelper.GetInstance().NivelUnidadeFisica.Cast <GISADataset.NivelUnidadeFisicaRow>().Where(r => r.RowState == DataRowState.Added || r.RowState == DataRowState.Modified).Select(r => r.ID.ToString()).ToList();
            var res         = PersistencyHelper.save(activateOpcaoCancelar);

            if (res == PersistencyHelper.SaveResult.successful)
            {
                GISA.Search.Updater.updateUnidadeFisica(IDsToUpdate);
            }
            return(res);
        }
Ejemplo n.º 14
0
        public override PersistencyHelper.SaveResult Save(bool activateOpcaoCancelar)
        {
            var preTransactionAction = new PreTransactionAction();
            var args = new PersistencyHelper.FedoraIngestPreTransactionArguments();

            preTransactionAction.args = args;
            bool ingestSuccess = true;

            if (controlObjetoDigital1.disableSave)
            {
                return(PersistencyHelper.SaveResult.nothingToSave);
            }

            preTransactionAction.preTransactionDelegate = delegate(PersistencyHelper.PreTransactionArguments preTransactionArgs)
            {
                string msg = null;

                if (odHelper.currentODComp != null)
                {
                    ingestSuccess = SessionHelper.AppConfiguration.GetCurrentAppconfiguration().FedoraHelperSingleton.Ingest(odHelper.currentODComp, out msg);
                }
                else
                {
                    odHelper.currentODSimples.ForEach(odSimples => ingestSuccess &= SessionHelper.AppConfiguration.GetCurrentAppconfiguration().FedoraHelperSingleton.Ingest(odSimples, out msg));
                }

                if (ingestSuccess)
                {
                    odHelper.newObjects.Keys.ToList().ForEach(k => { k.pid = odHelper.newObjects[k].pid; });
                }

                preTransactionArgs.cancelAction = !ingestSuccess;
                preTransactionArgs.message      = msg;
            };

            PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(preTransactionAction, activateOpcaoCancelar);

            if (successfulSave != PersistencyHelper.SaveResult.successful && !ingestSuccess)
            {
                MessageBox.Show("Ocorreu um erro na ingestão do objeto digital.", "Ingestão", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                odHelper.newObjects.Clear();
                odHelper.mContexto        = ObjetoDigitalFedoraHelper.Contexto.nenhum;
                odHelper.currentODComp    = null;
                odHelper.currentODSimples = null;
            }
            else if (successfulSave == PersistencyHelper.SaveResult.successful)
            {
                GISA.Search.Updater.updateNivelDocumental(odHelper.currentNivel.ID);
            }

            return(successfulSave);
        }
        public override PersistencyHelper.SaveResult Save(bool activateOpcaoCancelar)
        {
            List <long> niveisIDs = new List <long>();

            foreach (GISADataset.TrusteeNivelPrivilegeRow tnpRow in GisaDataSetHelper.GetInstance().TrusteeNivelPrivilege.Select("", "", DataViewRowState.Added | DataViewRowState.ModifiedOriginal))
            {
                niveisIDs.Add(tnpRow.IDNivel);
            }

            PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(activateOpcaoCancelar);

            return(successfulSave);
        }
Ejemplo n.º 16
0
        private void ExecuteFilter()
        {
            PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save();
            PersistencyHelper.cleanDeletedData();
            if (successfulSave == PersistencyHelper.SaveResult.unsuccessful)
            {
                return;
            }

            if (TextFilterDesignacao == string.Empty)
            {
                filter.Clear();
                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                try
                {
                    documentos = MovimentoRule.Current.GetDocumentos(CurrentMovimento.ID, GisaDataSetHelper.GetInstance(), ho.Connection);
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex);
                    throw;
                }
                finally
                {
                    ho.Dispose();
                }
            }
            else
            {
                filter.Clear();
                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                try
                {
                    documentos = MovimentoRule.Current.GetDocumentos(CurrentMovimento.ID, TextFilterDesignacao, GisaDataSetHelper.GetInstance(), ho.Connection);
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex);
                    throw;
                }
                finally
                {
                    ho.Dispose();
                }
            }

            RepopulateDocumentosAssociados();
        }
Ejemplo n.º 17
0
		protected override void AddTrustee()
		{
			GISADataset.TrusteeRow truRow = null;
			GISADataset.TrusteeGroupRow grpRow = null;

			FormCreateTrustee form = new FormCreateTrustee();
			form.Text = "Novo grupo de utilizadores";
			switch (form.ShowDialog())
			{
				case DialogResult.OK:
					truRow = GisaDataSetHelper.GetInstance().Trustee.NewTrusteeRow();
					truRow.Name = form.txtTrusteeName.Text;
					truRow.Description = string.Empty;
					truRow.CatCode = "GRP";
					truRow.BuiltInTrustee = false;
					truRow.IsActive = true;
					truRow.Versao = new byte[]{};
					truRow.isDeleted = 0;
					grpRow = GisaDataSetHelper.GetInstance().TrusteeGroup.NewTrusteeGroupRow();
					grpRow.Versao = new byte[]{};
					grpRow.isDeleted = 0;
					grpRow.TrusteeRow = truRow;

					GisaDataSetHelper.GetInstance().Trustee.AddTrusteeRow(truRow);
					GisaDataSetHelper.GetInstance().TrusteeGroup.AddTrusteeGroupRow(grpRow);

					PersistencyHelper.CreateTrusteePreConcArguments ctpca = new PersistencyHelper.CreateTrusteePreConcArguments();
					ctpca.truRowID = truRow.ID;
					ctpca.grpRowID = grpRow.ID;

					Trace.WriteLine("A criar o grupo de utilizador...");

                    PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(addTrusteeIfUsernameDoesntExist, ctpca);
					PersistencyHelper.cleanDeletedData();

					if (! ctpca.successful)
					{
						MessageBox.Show("Este nome já existe atribuído a um utilizador ou grupo, " + Environment.NewLine + "por favor escolha outro nome.", form.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
						UpdateTrustees(null);
					}
					else
						UpdateTrustees(truRow);

					break;
				case DialogResult.Cancel:
				break;
			}
		}
Ejemplo n.º 18
0
        private void PersistDepositoChanges(FormHandleDeposito formHandleDeposito, bool editMode)
        {
            switch (formHandleDeposito.ShowDialog())
            {
            case DialogResult.OK:
                ((frmMain)TopLevelControl).EnterWaitMode();
                var depRow = default(GISADataset.DepositoRow);
                if (!editMode)
                {
                    depRow                = GisaDataSetHelper.GetInstance().Deposito.NewDepositoRow();
                    depRow.Designacao     = formHandleDeposito.Designacao;
                    depRow.MetrosLineares = System.Convert.ToDecimal(formHandleDeposito.Metragem);
                    depRow.Versao         = new byte[] { };
                    depRow.isDeleted      = 0;
                    GisaDataSetHelper.GetInstance().Deposito.AddDepositoRow(depRow);

                    Trace.WriteLine("A criar depósito...");
                }
                else
                {
                    depRow                = CurrentContext.Deposito;
                    depRow.Designacao     = formHandleDeposito.Designacao;
                    depRow.MetrosLineares = System.Convert.ToDecimal(formHandleDeposito.Metragem);

                    Trace.WriteLine("A editar depósito...");
                }

                var saveResult = PersistencyHelper.save();
                PersistencyHelper.cleanDeletedData();

                if (saveResult == PersistencyHelper.SaveResult.successful)
                {
                    depList.AddItem(depRow);
                }
                else
                {
                    // ToDo: já existe um depósito com essa designação
                }

                ((frmMain)TopLevelControl).LeaveWaitMode();
                break;

            case DialogResult.Cancel:
                break;
            }
        }
Ejemplo n.º 19
0
        private void ClickTbEliminar()
        {
            // obter a row selecciona e apresentar uma messagebox a perguntar se o utilizador quer realmente apagar a requisição
            if (MessageBox.Show("Tem a certeza que deseja eliminar a " + this.NomeMovimento + " selecionada?", "Eliminação de " + this.NomeMovimento, MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)
            {
                return;
            }

            // Dúvida: deve ser permitido apagar requisições com documentos associados?

            ListViewItem movItem = null;

            GISADataset.MovimentoRow movRow = null;
            movItem = movList.SelectedItems[0];
            movRow  = (GISADataset.MovimentoRow)movItem.Tag;

            if (movRow.RowState == DataRowState.Detached)
            {
                movList.ClearItemSelection(movItem);
            }
            else
            {
                var args = new PersistencyHelper.DeleteMovimentoPreConcArguments();
                args.CatCode     = movRow.CatCode.Equals("REQ") ? "DEV" : "REQ";
                args.IDMovimento = movRow.ID;

                movRow.Delete();

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

                if (!args.continueSave)
                {
                    var message = movRow.CatCode.Equals("REQ")
                        ? "Não é permitido eliminar requisições de documentos devolvidos posteriormente"
                        : "Não é permitido eliminar devoluções com requisições posteriores (sem devolução) dos mesmos documentos";
                    MessageBox.Show(message, "Eliminar " + this.NomeMovimento, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
            }

            movItem.Remove();
            UpdateToolBarButtons();
            UpdateContext();
        }
Ejemplo n.º 20
0
		private void btnOk_Click(object sender, System.EventArgs e)
		{
			GISADataset.TrusteeUserRow lastTrusteeUserRowParent = SessionHelper.GetGisaPrincipal().TrusteeUserAuthor;
            if (ControloAutores1.SelectedAutor != null && ((GISADataset.TrusteeRow)ControloAutores1.SelectedAutor).GetTrusteeUserRows().Length > 0)
			{
				SessionHelper.GetGisaPrincipal().TrusteeUserAuthor = ((GISADataset.TrusteeRow)ControloAutores1.SelectedAutor).GetTrusteeUserRows()[0];
				SessionHelper.GetGisaPrincipal().TrusteeUserOperator.TrusteeUserRowParent = SessionHelper.GetGisaPrincipal().TrusteeUserAuthor;
			}
			else
			{
				SessionHelper.GetGisaPrincipal().TrusteeUserAuthor = null; //DirectCast(ControloAutores1.cbAutor.Items(0), GISADataset.TrusteeRow)
				SessionHelper.GetGisaPrincipal().TrusteeUserOperator["IDTrusteeUserDefaultAuthority"] = DBNull.Value;
			}

            PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save();
			PersistencyHelper.cleanDeletedData();
			SessionHelper.GetGisaPrincipal().TrusteeUserAuthor = SessionHelper.GetGisaPrincipal().TrusteeUserOperator.TrusteeUserRowParent;
		}
Ejemplo n.º 21
0
        private void DeleteItems()
        {
            this.Cursor = Cursors.WaitCursor;

            if (((DataRow)(lvMembers.SelectedItems[0].Tag)).RowState == DataRowState.Detached)
            {
                ListViewItem item = lvMembers.SelectedItems[0];
                lvMembers.SelectedItems.Clear();
                lvMembers.Items.Remove(item);
            }
            else
            {
                GUIHelper.GUIHelper.deleteSelectedLstVwItems(lvMembers);
                PersistencyHelper.save();
                PersistencyHelper.cleanDeletedData();
            }
            MultiPanel.Recontextualize();

            this.Cursor = Cursors.Default;
        }
Ejemplo n.º 22
0
        private void SaveLastTimeStamp()
        {
            var ts = GisaDataSetHelper.GetInstance().Integ_Config.Cast <GISADataset.Integ_ConfigRow>().SingleOrDefault();

            if (ts == null)
            {
                var newRow = GisaDataSetHelper.GetInstance().Integ_Config.NewInteg_ConfigRow();
                newRow.ID            = 1;
                newRow.LastTimeStamp = lastTimeStamp;
                newRow.Versao        = new byte[] { };
                newRow.isDeleted     = 0;
                GisaDataSetHelper.GetInstance().Integ_Config.AddInteg_ConfigRow(newRow);
            }
            else
            {
                ts.LastTimeStamp = lastTimeStamp;
            }

            PersistencyHelper.save();
            PersistencyHelper.cleanDeletedData();
        }
Ejemplo n.º 23
0
        private void cbTipoUser_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            if ((TipoUser)Enum.Parse(typeof(TipoUser), cbTipoUser.SelectedIndex.ToString()) == TipoUser.AcessoTudo && mTipoUser != TipoUser.AcessoTudo)
            {
                mTipoUser = TipoUser.AcessoTudo;
                GISADataset.UserGroupsRow[] ugAcessoPublicados =
                    (GISADataset.UserGroupsRow[])GisaDataSetHelper.GetInstance().UserGroups.Select(string.Format("IDUser={0} AND IDGroup={1}", CurrentTrusteeRow.ID, PermissoesHelper.GrpAcessoPublicados.ID));

                Debug.Assert(ugAcessoPublicados.Length > 0);
                ugAcessoPublicados[0].Delete();

                GISADataset.UserGroupsRow ugAcessoCompleto = GisaDataSetHelper.GetInstance().UserGroups.NewUserGroupsRow();
                ugAcessoCompleto.IDUser  = CurrentTrusteeRow.ID;
                ugAcessoCompleto.IDGroup = PermissoesHelper.GrpAcessoCompleto.ID;
                GisaDataSetHelper.GetInstance().UserGroups.AddUserGroupsRow(ugAcessoCompleto);
            }
            else if ((TipoUser)Enum.Parse(typeof(TipoUser), cbTipoUser.SelectedIndex.ToString()) == TipoUser.AcessoInfoPub && mTipoUser != TipoUser.AcessoInfoPub)
            {
                mTipoUser = TipoUser.AcessoInfoPub;
                GISADataset.UserGroupsRow[] ugAcessoCompleto =
                    (GISADataset.UserGroupsRow[])GisaDataSetHelper.GetInstance().UserGroups.Select(string.Format("IDUser={0} AND IDGroup={1}", CurrentTrusteeRow.ID, PermissoesHelper.GrpAcessoCompleto.ID));

                Debug.Assert(ugAcessoCompleto.Length > 0);
                ugAcessoCompleto[0].Delete();

                GISADataset.UserGroupsRow ugAcessoPublicados = GisaDataSetHelper.GetInstance().UserGroups.NewUserGroupsRow();
                ugAcessoPublicados.IDUser  = CurrentTrusteeRow.ID;
                ugAcessoPublicados.IDGroup = PermissoesHelper.GrpAcessoPublicados.ID;
                GisaDataSetHelper.GetInstance().UserGroups.AddUserGroupsRow(ugAcessoPublicados);
            }

            GUIHelper.GUIHelper.deleteSelectedLstVwItems(lvMembers);
            PersistencyHelper.save();
            PersistencyHelper.cleanDeletedData();

            GUIHelper.GUIHelper.clearField(lvMembers);
            base.EnumerateMembership(CurrentTrusteeRow);
            this.Cursor = Cursors.Default;
        }
Ejemplo n.º 24
0
        private void ClickTbCriar()
        {
            FormMovimento frm = new FormMovimento();

            frm.LoadData();
            frm.CurrentMovimento = null;
            frm.Text             = "Criar nova " + this.NomeMovimento;
            if (frm.ShowDialog() == DialogResult.OK)
            {
                // ler os valores do form e gravá-los
                GISADataset.MovimentoRow newReqRow = GisaDataSetHelper.GetInstance().Movimento.NewMovimentoRow();
                newReqRow.CatCode = this.CatCode;
                newReqRow.MovimentoEntidadeRow = frm.Entidade;
                newReqRow.Data   = frm.Data;
                newReqRow.Versao = new byte[] { };
                GisaDataSetHelper.GetInstance().Movimento.AddMovimentoRow(newReqRow);

                PersistencyHelper.save();
                PersistencyHelper.cleanDeletedData();

                movList.ReloadList(newReqRow);
            }
        }
Ejemplo n.º 25
0
        private void DeleteRelacao(ListView lstVw)
        {
            var  IDNivel                = new List <string>();
            var  IDControloAut          = new List <string>();
            var  frdRow                 = default(GISADataset.FRDBaseRow);
            long IDTipoNivelRelacionado = -1;

            foreach (ListViewItem item in lstVw.SelectedItems)
            {
                if (item.Tag.GetType() == typeof(GISADataset.ControloAutRelRow))
                {
                    var carRow = (GISADataset.ControloAutRelRow)item.Tag;
                    IDControloAut.Add(carRow.IDControloAut.ToString());
                    IDControloAut.Add(carRow.IDControloAutAlias.ToString());
                }
                else
                {
                    var rhRow = (GISADataset.RelacaoHierarquicaRow)item.Tag;
                    IDControloAut.Add(rhRow.NivelRowByNivelRelacaoHierarquica.GetNivelControloAutRows()[0].IDControloAut.ToString());
                    IDControloAut.Add(rhRow.NivelRowByNivelRelacaoHierarquicaUpper.GetNivelControloAutRows()[0].IDControloAut.ToString());
                    IDNivel.Add(rhRow.ID.ToString());
                    frdRow = rhRow.NivelRowByNivelRelacaoHierarquica.GetFRDBaseRows().Single();
                    IDTipoNivelRelacionado = rhRow.IDTipoNivelRelacionado;
                }
            }

            GUIHelper.GUIHelper.deleteSelectedLstVwItems(lstVw);

            var postSaveAction = new PostSaveAction();

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

            postSaveAction.postSaveDelegate = delegate(PersistencyHelper.PostSaveArguments postSaveArgs)
            {
                if (!postSaveArgs.cancelAction)
                {
                    // registar eliminação
                    ((frmMain)TopLevelControl).CurrentContext.RaiseRegisterModificationEvent(CurrentControloAut);
                    var caRegRow = GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao.Cast <GISADataset.ControloAutDataDeDescricaoRow>().Single(r => r.RowState == DataRowState.Added);

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

                    if (frdRow != null)
                    {
                        var nvlRegRow = RecordRegisterHelper
                                        .CreateFRDBaseDataDeDescricaoRow(frdRow,
                                                                         caRegRow.TrusteeUserRowByTrusteeUserControloAutDataDeDescricao,
                                                                         caRegRow.TrusteeUserRowByTrusteeUserControloAutDataDeDescricaoAuthority,
                                                                         caRegRow.DataAutoria);
                        nvlRegRow.DataEdicao             = caRegRow.DataEdicao;
                        nvlRegRow.IDTipoNivelRelacionado = 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);
                    }
                }
            };
            var successfulSave = PersistencyHelper.save(postSaveAction);

            PersistencyHelper.cleanDeletedData();

            if (successfulSave == PersistencyHelper.SaveResult.successful)
            {
                GISA.Search.Updater.updateProdutor(IDControloAut);
                GISA.Search.Updater.updateNivelDocumentalComProdutores(IDNivel);
            }
        }
Ejemplo n.º 26
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;
        }
Ejemplo n.º 27
0
 public PersistencyHelper.SaveResult Save(PostSaveAction postSaveAction, bool activateOpcaoCancelar)
 {
     return(PersistencyHelper.save(postSaveAction, activateOpcaoCancelar));
 }
Ejemplo n.º 28
0
		protected override void AcceptContents(object Value)
		{
			GISADataset.ControloAutRow ControloAutRow = (GISADataset.ControloAutRow)Value;

			if (FRDBase != null)
			{
				// Carregar nivel do CA largado

				IDbConnection conn = GisaDataSetHelper.GetConnection();
				try
				{
					conn.Open();
					DBAbstractDataLayer.DataAccessRules.NivelRule.Current.LoadNivelByControloAut(ControloAutRow.ID, GisaDataSetHelper.GetInstance(), conn);
				}
				finally
				{
					conn.Close();
				}

				if (IsValidRelacaoHierarquica(ControloAutRow))
				{
					// Apresentar form que permita escolher a data da relação
					FormRelacaoHierarquica frmRh = new FormRelacaoHierarquica();
					// Pode-se obter a primeira relação encontrada para efeitos de determinação 
					// do tipo de nível uma vez que o tipo de nível dos níveis documentais nunca se alterará
					frmRh.relacaoNvl.TipoNivelRelacionadoRow = TipoNivelRelacionado.GetPrimeiraRelacaoEncontrada(this.FRDBase.NivelRow).TipoNivelRelacionadoRow;
					frmRh.relacaoNvl.ContextNivelRow = ControloAutRow.GetNivelControloAutRows()[0].NivelRow;
					if (frmRh.ShowDialog() == DialogResult.Cancel)
					{
						return;
					}

					if (GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", this.FRDBase.NivelRow.ID, ControloAutRow.GetNivelControloAutRows()[0].NivelRow.ID), "", DataViewRowState.Deleted).Length > 0)
					{

						GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", this.FRDBase.NivelRow.ID, ControloAutRow.GetNivelControloAutRows()[0].NivelRow.ID), "", DataViewRowState.Deleted)[0].AcceptChanges();
					}

					GISADataset.RelacaoHierarquicaRow rhRow = null;
					rhRow = GisaDataSetHelper.GetInstance().RelacaoHierarquica.NewRelacaoHierarquicaRow();
					TempRelacaoHierarquica = rhRow;

					rhRow.ID = this.FRDBase.NivelRow.ID;
					rhRow.IDUpper = ControloAutRow.GetNivelControloAutRows()[0].NivelRow.ID;
					rhRow.IDTipoNivelRelacionado = TipoNivelRelacionado.GetTipoNivelRelacionadoDaPrimeiraRelacaoEncontrada(this.FRDBase.NivelRow).ID;
					rhRow.Descricao = frmRh.relacaoNvl.txtDescricao.Text;
					rhRow.InicioAno = frmRh.relacaoNvl.dtRelacaoInicio.ValueYear;
					rhRow.InicioMes = frmRh.relacaoNvl.dtRelacaoInicio.ValueMonth;
					rhRow.InicioDia = frmRh.relacaoNvl.dtRelacaoInicio.ValueDay;
					rhRow.FimAno = frmRh.relacaoNvl.dtRelacaoFim.ValueYear;
					rhRow.FimMes = frmRh.relacaoNvl.dtRelacaoFim.ValueMonth;
					rhRow.FimDia = frmRh.relacaoNvl.dtRelacaoFim.ValueDay;
					GisaDataSetHelper.GetInstance().RelacaoHierarquica.AddRelacaoHierarquicaRow(rhRow);

                    // no caso de se tratar de uma entidade produtora é necessário validar o código de referência do nivel documental do contexto
                    if (ControloAutRow.IDTipoNoticiaAut == (long)TipoNoticiaAut.EntidadeProdutora)
                    {
                        var argsPC = new PersistencyHelper.EnsureUniqueCodigoNivelPreConcArguments();
                        argsPC.rhRowID = rhRow.ID;
                        argsPC.rhRowIDUpper = rhRow.IDUpper;

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

                        postSaveAction.postSaveDelegate = delegate(PersistencyHelper.PostSaveArguments postSaveArgs)
                        {
                            if (argsPC.successful)
                            {
                                if (this.parent == null)
                                    Debug.Assert(false, "CONTEXTO PARENT DEVE ESTAR DEFINIDO.");

                                if (this.parent.GetType() == typeof(MasterPanelSeries))
                                {
                                    ((MasterPanelSeries)this.parent).CurrentContext.RaiseRegisterModificationEvent(this.FRDBase);
                                    PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao,
                                        GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao.Cast<GISADataset.FRDBaseDataDeDescricaoRow>().Where(r => r.RowState == DataRowState.Added).ToArray(), postSaveArgs.tran);
                                }
                            }
                        };

                        var result = PersistencyHelper.save(DelegatesHelper.verificaCodigosRepetidos, argsPC, postSaveAction, true);

                        if (result == PersistencyHelper.SaveResult.successful)
                        {
                            PersistencyHelper.cleanDeletedData();
                            GisaDataSetHelper.VisitControloAutDicionario(ControloAutRow, DisplayFormaAutorizada);
                            GISA.Search.Updater.updateNivelDocumental(this.FRDBase.NivelRow.ID);
                        }
                        else
                        {
                            if (argsPC.message.Length > 0)
                                MessageBox.Show(argsPC.message, "Adição", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }

					
				}
				else
				{
					MessageBox.Show("Não é possível a existência de items repetidos.", "Adição", MessageBoxButtons.OK, MessageBoxIcon.Warning);
				}
			}
			else if (this.ControloAut != null)
			{
				Debug.Assert(false, "ORGANIC RELATIONS BETWEEN CAS NOT IMPLEMENTED. SHOULDN'T BE NEEDED");
			}
		}
Ejemplo n.º 29
0
        public override PersistencyHelper.SaveResult Save(bool activateOpcaoCancelar)
		{
			return PersistencyHelper.save(activateOpcaoCancelar);
		}
Ejemplo n.º 30
0
		protected override void AddTrustee()
		{
            GISADataset.TrusteeRow truRow = null;
			GISADataset.TrusteeUserRow usrRow = null;

			FormCreateTrustee form = new FormCreateTrustee();
			form.Text = "Novo utilizador";
			switch (form.ShowDialog())
			{
				case DialogResult.OK:
                    ((frmMain)TopLevelControl).EnterWaitMode();
					truRow = GisaDataSetHelper.GetInstance().Trustee.NewTrusteeRow();
					truRow.Name = form.txtTrusteeName.Text;
					truRow.Description = string.Empty;
					truRow.CatCode = "USR";
					truRow.BuiltInTrustee = false;
					truRow.IsActive = true;
					truRow.Versao = new byte[]{};
					truRow.isDeleted = 0;
					usrRow = GisaDataSetHelper.GetInstance().TrusteeUser.NewTrusteeUserRow();
					usrRow.Password = "";
					usrRow.FullName = "";
					usrRow.IsAuthority = false;
					usrRow["IDTrusteeUserDefaultAuthority"] = DBNull.Value;
					usrRow.Versao = new byte[]{};
					usrRow.isDeleted = 0;
					usrRow.TrusteeRow = truRow;

                    // selecionar o grupo "TODOS"
                    GISADataset.TrusteeGroupRow tgRow = (GISADataset.TrusteeGroupRow)(((GISADataset.TrusteeRow)(GisaDataSetHelper.GetInstance().Trustee.Select("Name='ACESSO_COMPLETO'")[0])).GetTrusteeGroupRows()[0]);

                    // incluir o novo utilizador no grupo "TODOS" por omissão
					GisaDataSetHelper.GetInstance().Trustee.AddTrusteeRow(truRow);
					GisaDataSetHelper.GetInstance().TrusteeUser.AddTrusteeUserRow(usrRow);
					GisaDataSetHelper.GetInstance().UserGroups.AddUserGroupsRow(usrRow, tgRow, new byte[]{}, 0);

					PersistencyHelper.CreateTrusteePreConcArguments ctpca = new PersistencyHelper.CreateTrusteePreConcArguments();
					ctpca.truRowID = truRow.ID;
					ctpca.usrRowID = usrRow.ID;

					Trace.WriteLine("A criar utilizador...");

                    PersistencyHelper.save(AddTrusteeIfUsernameDoesntExist, ctpca);
					PersistencyHelper.cleanDeletedData();

					if (! ctpca.successful)
					{
						MessageBox.Show("Este nome já existe atribuído a um utilizador ou grupo, " + Environment.NewLine + "por favor escolha outro nome.", form.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
						UpdateTrustees(null);
					}
					else
					{
                        // actualizar interface
						UpdateTrustees(truRow);
					}

                    ((frmMain)TopLevelControl).LeaveWaitMode();
                    break;
				case DialogResult.Cancel:
				break;
			}
		}