Ejemplo n.º 1
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.º 2
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.º 3
0
        public static void ValidateMovimentoDelete(PersistencyHelper.PreConcArguments args)
        {
            var vmdiPsa = args as PersistencyHelper.ValidateMovimentoDeleteItemPreConcArguments;
            var dmRow   = GisaDataSetHelper.GetInstance().DocumentosMovimentados.Cast <GISADataset.DocumentosMovimentadosRow>()
                          .SingleOrDefault(r => r.RowState == DataRowState.Deleted && (long)r["IDNivel", DataRowVersion.Original] == vmdiPsa.IDNivel && (long)r["IDMovimento", DataRowVersion.Original] == vmdiPsa.IDMovimento);

            // este caso acontece quando a linha está detached (o documento foi adicionado, e antes de ser gravado, foi removido da requisição/devolução)
            if (dmRow == null)
            {
                return;
            }

            // não é permitido eliminar a associação de documentos a devoluções com requisições posteriores mas sem devolução
            // não é permitido eliminar a associação de documentos a requisições com devolução posterior
            vmdiPsa.continueSave = !DBAbstractDataLayer.DataAccessRules.MovimentoRule.Current.temMovimentosPosteriores(vmdiPsa.IDNivel, vmdiPsa.IDMovimento, vmdiPsa.CatCode, args.tran);

            if (vmdiPsa.continueSave)
            {
                return;
            }

            System.Data.DataSet tempgisaBackup2 = vmdiPsa.gisaBackup;
            PersistencyHelper.BackupRow(ref tempgisaBackup2, dmRow);
            vmdiPsa.gisaBackup = tempgisaBackup2;
            dmRow.RejectChanges();
        }
Ejemplo n.º 4
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();
        }
Ejemplo n.º 5
0
        public static void verificaCodigosRepetidos(PersistencyHelper.PreConcArguments args)
        {
            var pcArgs = (PersistencyHelper.EnsureUniqueCodigoNivelPreConcArguments)args;
            var rhRow  = GisaDataSetHelper.GetInstance().RelacaoHierarquica.Cast <GISADataset.RelacaoHierarquicaRow>().SingleOrDefault(r => r.RowState != DataRowState.Deleted && r.ID == pcArgs.rhRowID && r.IDUpper == pcArgs.rhRowIDUpper);

            if (rhRow != null)
            {
                var codigo = rhRow.NivelRowByNivelRelacaoHierarquica.Codigo;
                var ID     = DBAbstractDataLayer.DataAccessRules.NivelRule.Current.GetIDCodigoRepetido(codigo, rhRow.ID, pcArgs.tran, pcArgs.testOnlyWithinNivel, rhRow.NivelRowByNivelRelacaoHierarquicaUpper.ID);

                if (ID > long.MinValue)
                {
                    // erro
                    pcArgs.message = string.Format(
                        "Não foi possível completar a operação uma vez que" + Environment.NewLine +
                        "por debaixo da entidade produtora selecionada" + Environment.NewLine +
                        "o código parcial '{0}' já é utilizado pela unidade " + Environment.NewLine +
                        "informacional com o identificador {1}.", codigo, rhRow.ID);

                    var tempgisaBackup3 = pcArgs.gisaBackup;
                    PersistencyHelper.BackupRow(ref tempgisaBackup3, rhRow);
                    pcArgs.gisaBackup = tempgisaBackup3;
                    rhRow.RejectChanges();
                }
                else
                {
                    pcArgs.successful = true;
                }
            }
        }
		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.º 7
0
        // garantir que o tipo de quantidade da descrição física existe aquando da sua gravação na BD
        private void TipoAcondicionamentoIsBeingUsedByOthers(GISA.Model.PersistencyHelper.PreConcArguments args)
        {
            GISA.Model.PersistencyHelper.ManageDescFisicasPreConcArguments mcfPca = null;
            mcfPca = (GISA.Model.PersistencyHelper.ManageDescFisicasPreConcArguments)args;
            GISADataset.FRDBaseRow frd = (GISADataset.FRDBaseRow)(GisaDataSetHelper.GetInstance().FRDBase.Select("ID=" + mcfPca.frdID.ToString())[0]);
            ArrayList quantList        = mcfPca.quant;

            int nTQuant = 0;

            GISADataset.TipoAcondicionamentoRow row = null;
            try
            {
                foreach (long quant in quantList)
                {
                    row     = (GISADataset.TipoAcondicionamentoRow)(GisaDataSetHelper.GetInstance().TipoAcondicionamento.Select("ID=" + quant.ToString(), "", DataViewRowState.Deleted)[0]);
                    nTQuant = FRDRule.Current.CountUFDimensoesAcumuladas(quant, mcfPca.tran);
                    System.Data.DataSet tempgisaBackup1 = mcfPca.gisaBackup;
                    PersistencyHelper.BackupRow(ref tempgisaBackup1, row);
                    mcfPca.gisaBackup = tempgisaBackup1;
                    if (nTQuant > 0)
                    {
                        row.RejectChanges();
                        mcfPca.aResult = PersistencyHelper.ManageDescFisicasPreConcArguments.ActionResult.quantidadeUsedByOthers;
                    }
                }
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw ex;
            }
        }
Ejemplo n.º 8
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.º 9
0
        public override bool ViewToModel()
        {
            // Prever os casos em que estamos num nível sem FRD (EDs ou GAs) ou num nível que acaba de ser eliminado
            if (CurrentFRDBase != null && !(CurrentFRDBase.RowState == DataRowState.Detached))
            {
                bool successful = base.ViewToModel();

                if (!successful)
                {
                    return(successful);
                }

                bool changesMade = PersistencyHelper.hasCurrentDatasetChanges();
                if (changesMade)
                {
                    AddRegistration(CurrentFRDBase, existsModifiedData);
                }

                return(successful);
            }
            else
            {
                return(true);
            }
        }
Ejemplo n.º 10
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.º 11
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.º 12
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.º 13
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.º 14
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.º 16
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.º 17
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.º 18
0
		public static void DeleteInDataSet(DataRow DeletableRow, bool onlyRemove, DataSet gBackup)
		{
            // Parte-se do pressuposto que o nivel a apagar é folha
			ArrayList open = new ArrayList();
			ArrayList closed = new ArrayList();
			open.Add(DeletableRow);
			// open -> rows por expandir
			// closed -> rows já expandidas
			while (open.Count > 0)
			{
				DataRow current = (DataRow)(open[0]);
				if (! (closed.Contains(current)))
				{
					foreach (DataRelation rel in current.Table.DataSet.Relations)
					{
						if (rel.ParentTable == current.Table)
						{
							open.AddRange(current.GetChildRows(rel, DataRowVersion.Default));
						}
					}
					closed.Add(current);
					open.Remove(current);
				}
			}
			// Remover do dataset todas as linhas encontradas começando pelo fim 
			// de forma a manter a integridade referencial

			try
			{
				for (int i = closed.Count - 1; i >= 0; i--)
				{
					DataRow current = (DataRow)(closed[i]);
					Trace.WriteLine(string.Format("{0}.{1} is Delete'ing DataRow from DataTable {2}", new System.Diagnostics.StackFrame().GetMethod().DeclaringType.FullName, new System.Diagnostics.StackFrame().GetMethod().Name, current.Table.TableName));
					if (onlyRemove)
					{
						current.Table.Rows.Remove(current);
					}
					else
					{
						if (gBackup != null)
						{
							PersistencyHelper.BackupRow(ref gBackup, current);
						}
						current.Delete();
					}
				}
			}
			catch (Exception e)
			{
				Trace.WriteLine(e.ToString());
			}
		}
Ejemplo n.º 19
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.º 21
0
		private void editTrusteeIfUsernameDoesntExist(PersistencyHelper.PreConcArguments args)
		{
			PersistencyHelper.EditTrusteePreConcArguments etpca = null;
			etpca = (PersistencyHelper.EditTrusteePreConcArguments)args;
			etpca.successful = false;
			DataSet gisaBackup = etpca.gisaBackup;

			if (DBAbstractDataLayer.DataAccessRules.TrusteeRule.Current.isValidNewTrustee(etpca.username, etpca.tran))
			{
				PersistencyHelper.BackupRow(ref gisaBackup, etpca.truRow);
				etpca.truRow.Name = etpca.username;
				etpca.successful = true;
			}
		}
Ejemplo n.º 22
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.º 23
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.º 24
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.º 25
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.º 26
0
		//metodo responsavel por eliminar todos os termos de um CA que não estejam a ser utilizados por outros
		public static void deleteCAXTermos(PersistencyHelper.PreConcArguments args)
		{
			long caRowID = ((PersistencyHelper.DeleteCAXPreConcArguments)args).caRowID;
			string catCode = ((PersistencyHelper.DeleteCAXPreConcArguments)args).catCode;
			DataSet gisaBackup = ((PersistencyHelper.DeleteCAXPreConcArguments)args).gisaBackup;
			foreach (GISADataset.DicionarioRow drow in ((PersistencyHelper.DeleteCAXPreConcArguments)args).termos)
			{
				//Nota: é necessário verificar se o estado de drow é deleted pelo facto de ser possivel, numa situação de concorência
				//entre clientes oracle (só neste tipo de clientes é que esta situação se verificou) que obriga a re-executar a transacção;
				//apesar de existir um método que repõe os valores originais, este só é executado após todos os delegates PreConc o que
				//neste caso concreto vai apagar as datarows da tabela Dicionario
				if (! (DiplomaModeloRule.Current.isTermoUsedByOthers(caRowID, catCode, drow.Termo, true, args.tran)))
				{
					PersistencyHelper.BackupRow(ref gisaBackup, drow);
					drow.Delete();
				}
			}
		}
Ejemplo n.º 27
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.º 28
0
        public static void EnsureNivelUpperExists(PersistencyHelper.PreConcArguments args)
        {
            PersistencyHelper.VerifyIfRHNivelUpperExistsPreConcArguments pcArgs = null;
            pcArgs = (PersistencyHelper.VerifyIfRHNivelUpperExistsPreConcArguments)args;

            GISADataset.NivelRow nRow = (GISADataset.NivelRow)(GisaDataSetHelper.GetInstance().Nivel.Select("ID=" + pcArgs.nRowID.ToString())[0]);
            long rhRowIDUpper         = nRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica()[0].IDUpper;

            if (rhRowIDUpper < 0)
            {
                pcArgs.RHNivelUpperExists = true;
            }
            else
            {
                // antes de obter o código verificar se adição de um novo nível ainda é possível (por razões de concorrência)
                pcArgs.RHNivelUpperExists = NivelRule.Current.isNivelDeleted(rhRowIDUpper, args.tran);
            }

            if (!pcArgs.RHNivelUpperExists)
            {
                GISADataset.RelacaoHierarquicaRow rhRow      = (GISADataset.RelacaoHierarquicaRow)(GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", pcArgs.rhRowID, pcArgs.rhRowIDUpper))[0]);
                GISADataset.NivelDesignadoRow     ndRow      = (GISADataset.NivelDesignadoRow)(GisaDataSetHelper.GetInstance().NivelDesignado.Select("ID=" + pcArgs.ndRowID.ToString())[0]);
                GISADataset.FRDBaseRow            frdBaseRow = (GISADataset.FRDBaseRow)(GisaDataSetHelper.GetInstance().FRDBase.Select("ID=" + pcArgs.frdBaseID.ToString())[0]);

                System.Data.DataSet tempgisaBackup1 = pcArgs.gisaBackup;
                PersistencyHelper.BackupRow(ref tempgisaBackup1, rhRow);
                pcArgs.gisaBackup = tempgisaBackup1;
                rhRow.RejectChanges();
                System.Data.DataSet tempgisaBackup2 = pcArgs.gisaBackup;
                PersistencyHelper.BackupRow(ref tempgisaBackup2, ndRow);
                pcArgs.gisaBackup = tempgisaBackup2;
                ndRow.RejectChanges();
                System.Data.DataSet tempgisaBackup3 = pcArgs.gisaBackup;
                PersistencyHelper.BackupRow(ref tempgisaBackup3, nRow);
                pcArgs.gisaBackup = tempgisaBackup3;
                nRow.RejectChanges();
                System.Data.DataSet tempgisaBackup4 = pcArgs.gisaBackup;
                PersistencyHelper.BackupRow(ref tempgisaBackup4, frdBaseRow);
                pcArgs.gisaBackup = tempgisaBackup4;
                frdBaseRow.RejectChanges();
                pcArgs.message = "Não foi possível criar a unidade informacional uma" + Environment.NewLine + "vez que a unidade superior foi apagada por outro utilizador.";
            }
        }
Ejemplo n.º 29
0
        public static void DeleteMovimento(PersistencyHelper.PreConcArguments args)
        {
            var dmPca = args as PersistencyHelper.DeleteMovimentoPreConcArguments;
            var dmRow = GisaDataSetHelper.GetInstance().Movimento.Cast <GISADataset.MovimentoRow>()
                        .Single(r => r.RowState == DataRowState.Deleted && (long)r["ID", DataRowVersion.Original] == dmPca.IDMovimento);

            // Não é permitido eliminar requisições de documentos devolvidos posteriormente nem eliminar devoluções
            // com requisições posteriores (sem devolução) dos mesmos documentos
            dmPca.continueSave = !DBAbstractDataLayer.DataAccessRules.MovimentoRule.Current.CanDeleteMovimento(dmPca.IDMovimento, dmPca.CatCode, args.tran);

            if (dmPca.continueSave)
            {
                return;
            }

            System.Data.DataSet tempgisaBackup2 = dmPca.gisaBackup;
            PersistencyHelper.BackupRow(ref tempgisaBackup2, dmRow);
            dmPca.gisaBackup = tempgisaBackup2;
            dmRow.RejectChanges();
        }
Ejemplo n.º 30
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;
        }