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; }
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(); }
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; }
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; } }
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); } }
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(); }
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 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(); }
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(); }
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(); }
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; } }
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; } }
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(); }
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; } }
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(); }
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; }
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; }
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(); }
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; }
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); } }
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); } }
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; }
private void btnMaterialManager_Click(object sender, System.EventArgs e) { if (CurrentUFFRDBase.RowState == DataRowState.Detached) { MessageBox.Show("A unidade física selecionada foi apagada por outro utilizador motivo pelo qual " + System.Environment.NewLine + "não é possível editar os Tipos de Material.", "Unidade física apagada", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } IDbConnection conn = GisaDataSetHelper.GetConnection(); try { conn.Open(); UFRule.Current.LoadTipoAcondicionamento(GisaDataSetHelper.GetInstance(), conn); } catch (Exception ex) { Trace.WriteLine(ex); throw; } finally { conn.Close(); } FormMateriaisEditor formMatEditor = new FormMateriaisEditor(); formMatEditor.LoadData(GisaDataSetHelper.GetInstance().TipoAcondicionamento.Select("NOT Designacao = '<Desconhecido>'"), "Designacao"); formMatEditor.ShowDialog(); GISA.Model.PersistencyHelper.ManageDescFisicasPreConcArguments args = new GISA.Model.PersistencyHelper.ManageDescFisicasPreConcArguments(); args.frdID = CurrentUFFRDBase.ID; ArrayList rowList = new ArrayList(); foreach (DataRow row in GisaDataSetHelper.GetInstance().Tables["TipoAcondicionamento"].Select("", "", DataViewRowState.Deleted)) { rowList.Add(row["ID", DataRowVersion.Original]); } args.quant = rowList; PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(TipoAcondicionamentoIsBeingUsedByOthers, args); PersistencyHelper.cleanDeletedData(); if (args.aResult == PersistencyHelper.ManageDescFisicasPreConcArguments.ActionResult.quantidadeUsedByOthers) { MessageBox.Show("Um ou mais tipos de acondicionamento não puderam ser" + Environment.NewLine + "removidos por estarem atualmente em uso.", "Remoção de Elementos", MessageBoxButtons.OK, MessageBoxIcon.Warning); } if (successfulSave == PersistencyHelper.SaveResult.successful) { GISA.Search.Updater.updateUnidadeFisica(CurrentUFFRDBase.NivelRow.ID); } GISADataset.TipoAcondicionamentoRow selectedTipoAcondicionamento = (GISADataset.TipoAcondicionamentoRow)cbTipo.SelectedItem; cbTipo.Items.Clear(); cbTipo.DisplayMember = "Designacao"; cbTipo.Items.AddRange(GisaDataSetHelper.GetInstance().TipoAcondicionamento.Select("", "Designacao")); if (selectedTipoAcondicionamento != null) { cbTipo.SelectedItem = selectedTipoAcondicionamento; } else { cbTipo.SelectedItem = (GISADataset.TipoAcondicionamentoRow)(GisaDataSetHelper.GetInstance().TipoAcondicionamento.Select(string.Format("ID={0:d}", TipoAcondicionamento.Pasta))[0]); } }
public void Recontextualize(SaveArgs s) { //quando se está a fechar a aplicação, o timer da pxlistview pode disparar depois de os contextos estarem limpos (e consequentemente lançar uma excepção; só ocorre quando o timer dispara quando a execução está dentro do método que trata o fecho da aplicação) if (((frmMain)TopLevelControl) == null || ((frmMain)TopLevelControl).ActiveControl is MasterPanelAdminGlobal || ((frmMain)TopLevelControl).ActiveControl is MasterPanelEstatisticas) { return; } ((frmMain)TopLevelControl).EnterWaitMode(); try { if (isInnerContextValid()) { ViewToModel(); if (s != null) { if (s.psAction != null) { s.save = Save(s.psAction, true); } else { s.save = Save(true); } } else { Save(); } } if (s != null && s.save == PersistencyHelper.SaveResult.unsuccessful) { ((frmMain)TopLevelControl).LeaveWaitMode(); return; } Deactivate(); //Remove-se de memória todas as linhas marcadas com isDeleted=true na BD //esta chamada não se encontra imediatamente a seguir ao save pois existem //situações que o método recontextualize é chamado propositadamente PersistencyHelper.cleanDeletedData(); if (!(isOuterContextValid())) { PanelMensagem panel = GetNoContextMessage(); if (panel != null) { this.Visible = true; ActivateMessagePanel(panel); } } else { PanelMensagem panel = null; if (isOuterContextDeleted()) { panel = GetDeletedContextMessage(); ActivateMessagePanel(panel); this.Visible = true; } else if (!(hasReadPermission())) { panel = GetNoReadPermissionMessage(); ActivateMessagePanel(panel); this.Visible = true; } else if (!(isConnected())) { panel = GetNoConnectionMessage(); if (panel != null) { this.Visible = true; ActivateMessagePanel(panel); } } else { DeactivateMessagePanel(GetNoContextMessage()); try { RefreshPanelSelection(); long start = DateTime.Now.Ticks; LoadData(); Trace.WriteLine("LoadData: " + new TimeSpan(DateTime.Now.Ticks - start).ToString()); start = DateTime.Now.Ticks; ModelToView(); Trace.WriteLine("ModelToView: " + new TimeSpan(DateTime.Now.Ticks - start).ToString()); } catch (Exception ex) { Trace.WriteLine(ex); throw; } this.Visible = true; } } } finally { ((frmMain)TopLevelControl).LeaveWaitMode(); } }
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"); } }
// Trata a criação de novos níveis e respectivas relações. Caso se trate // de um nível orgânico (estrutural e que esteja associado a uma EP) o // nível correspondente deverá já existir e não será por isso criado, // será criada apenas a relação. private bool handleNewNivel(Form frm, GISADataset.NivelRow parentNivelRow, GISADataset.TipoNivelRelacionadoRow tnrRow) { frm.Text = "Criar " + tnrRow.Designacao; bool successfulSave = true; switch (frm.ShowDialog()) { case DialogResult.OK: Trace.WriteLine("A criar nível..."); long click = DateTime.Now.Ticks; string designacaoUFAssociada = string.Empty; PostSaveAction postSaveAction = null; var nRow = GisaDataSetHelper.GetInstance().Nivel.AddNivelRow(tnrRow.TipoNivelRow, ((FormAddNivel)frm).txtCodigo.Text.Trim(), "NVL", new byte[] { }, 0); var ndRow = GisaDataSetHelper.GetInstance().NivelDesignado.AddNivelDesignadoRow(nRow, ((FormAddNivel)frm).txtDesignacao.Text.Trim(), new byte[] { }, 0); var frdRow = GisaDataSetHelper.GetInstance().FRDBase.AddFRDBaseRow(nRow, (GISADataset.TipoFRDBaseRow)(GisaDataSetHelper.GetInstance().TipoFRDBase.Select("ID=" + DomainValuesHelper.stringifyEnumValue(TipoFRDBase.FRDOIRecolha))[0]), "", "", new byte[] { }, 0); var rhRow = GisaDataSetHelper.GetInstance().RelacaoHierarquica.AddRelacaoHierarquicaRow(nRow, parentNivelRow, tnrRow, null, null, null, null, null, null, null, new byte[] { }, 0); //valores por omissão var globalConfig = GisaDataSetHelper.GetInstance().GlobalConfig.Cast <GISADataset.GlobalConfigRow>().Single(); if (globalConfig.ApplyDefaultValues) { var sfrdcaRow = GisaDataSetHelper.GetInstance().SFRDCondicaoDeAcesso .AddSFRDCondicaoDeAcessoRow(frdRow, "", globalConfig.IsCondicaoDeAcessoNull() ? "" : globalConfig.CondicaoDeAcesso, globalConfig.IsCondicaoDeReproducaoNull() ? "" : globalConfig.CondicaoDeReproducao, "", new byte[] {}, 0); foreach (GISADataset.ConfigLinguaRow r in globalConfig.GetConfigLinguaRows()) { GisaDataSetHelper.GetInstance().SFRDLingua.AddSFRDLinguaRow(sfrdcaRow, r.Iso639Row, new byte[] { }, 0); } foreach (GISADataset.ConfigAlfabetoRow r in globalConfig.GetConfigAlfabetoRows()) { GisaDataSetHelper.GetInstance().SFRDAlfabeto.AddSFRDAlfabetoRow(sfrdcaRow, r.Iso15924Row, new byte[] { }, 0); } } var selectedTipologia = ((FormNivelDocumentalFedora)frm).Tipologia; if (selectedTipologia != null) { GisaDataSetHelper.GetInstance().IndexFRDCA.AddIndexFRDCARow(frdRow, selectedTipologia.ControloAutRow, -1, new byte[] { }, 0); } // Só adicionar permissões ao grupo TODOS dos níveis lógicos e a níveis documentais imediatamente // abaixo de níveis orgânicos (Documentos soltos e séries); caso se se trate de um nível estrutural // controlado, as permissões já foram atribuidas aquando da criação do controlo de autoridade if (nRow.IDTipoNivel == TipoNivel.DOCUMENTAL && parentNivelRow.IDTipoNivel == TipoNivel.ESTRUTURAL) { var nUpperRow = rhRow == null ? default(GISADataset.NivelRow) : rhRow.NivelRowByNivelRelacaoHierarquicaUpper; PermissoesHelper.AddNewNivelGrantPermissions(nRow, nUpperRow); } postSaveAction = new PostSaveAction(); var args = new PersistencyHelper.GenericPostSaveArguments(); postSaveAction.args = args; postSaveAction.postSaveDelegate = delegate(PersistencyHelper.PostSaveArguments postSaveArgs) { if (!postSaveArgs.cancelAction && nRow != null && nRow.RowState != DataRowState.Detached && nRow.RowState != DataRowState.Deleted) { // registar a criação do nivel documental GISADataset.FRDBaseRow frdDocRow = null; GISADataset.FRDBaseRow[] frdDocRows = nRow.GetFRDBaseRows(); if (frdDocRows.Length > 0) { frdDocRow = frdDocRows[0]; } CurrentContext.RaiseRegisterModificationEvent(frdDocRow); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao, GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao.Cast <GISADataset.FRDBaseDataDeDescricaoRow>().Where(frd => frd.RowState == DataRowState.Added).ToArray(), postSaveArgs.tran); } }; // se se tratar de um (sub)documento é necessário garantir que se trata de um código // único dentro da sua série (se constituir série) ou nivel estrutural superior PersistencyHelper.ValidateNivelAddAndAssocNewUFPreConcArguments pcArgs = new PersistencyHelper.ValidateNivelAddAndAssocNewUFPreConcArguments(); PersistencyHelper.SetNewCodigosPreSaveArguments psArgs = new PersistencyHelper.SetNewCodigosPreSaveArguments(); PersistencyHelper.EnsureUniqueCodigoNivelPreConcArguments pcArgsNivel = new PersistencyHelper.EnsureUniqueCodigoNivelPreConcArguments(); pcArgs.argsNivel = pcArgsNivel; // dados que serão usados no delegate responsável pela criação do nível documental pcArgsNivel.nRowID = nRow.ID; pcArgsNivel.ndRowID = ndRow.ID; pcArgsNivel.rhRowID = rhRow.ID; pcArgsNivel.rhRowIDUpper = rhRow.IDUpper; pcArgsNivel.frdBaseID = frdRow.ID; pcArgsNivel.testOnlyWithinNivel = true; // permitir ao delegate selecionar o delegate correspondente ao tipo de nível que se está a criar pcArgs.IDTipoNivelRelacionado = tnrRow.ID; psArgs.createNewNivelCodigo = false; psArgs.createNewUFCodigo = false; psArgs.setNewCodigo = rhRow.IDTipoNivelRelacionado == TipoNivelRelacionado.SD; psArgs.argsNivelDocSimples = NiveisHelper.AddNivelDocumentoSimplesWithDelegateArgs(nRow.GetNivelDesignadoRows().Single(), rhRow.IDUpper, rhRow.IDTipoNivelRelacionado); PersistencyHelper.save(DelegatesHelper.ValidateNivelAddAndAssocNewUF, pcArgs, DelegatesHelper.SetNewCodigos, psArgs, postSaveAction); if (!pcArgsNivel.successful) { successfulSave = false; MessageBox.Show(pcArgsNivel.message, "Criação de unidade de descrição", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (parentNivelRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica()[0].TipoNivelRelacionadoRow.ID == TipoNivelRelacionado.SR) { GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection()); try { DBAbstractDataLayer.DataAccessRules.FRDRule.Current.LoadSFRDAvaliacaoData(GisaDataSetHelper.GetInstance(), parentNivelRow.ID, ho.Connection); } finally { ho.Dispose(); } } PersistencyHelper.cleanDeletedData(new List <TableDepthOrdered.TableCloudType>(new TableDepthOrdered.TableCloudType[] { PersistencyHelper.determinaNuvem("RelacaoHierarquica"), PersistencyHelper.determinaNuvem("FRDBase") })); if (!successfulSave) { return(successfulSave); } GISA.Search.Updater.updateNivelDocumentalComProdutores(nRow.ID); GISA.Search.Updater.updateNivelDocumental(nRow.ID); this.nivelNavigator1.AddNivel(nRow); Debug.WriteLine("<<A criar nível...>> " + new TimeSpan(DateTime.Now.Ticks - click).ToString()); break; case DialogResult.Cancel: successfulSave = false; break; } return(successfulSave); }
private bool validateData() { GISADataset.ControloAutDicionarioRow cadRow = ControloAutDicionarioAutorizado; GISADataset.TipoControloAutRelRow tcarRow = null; tcarRow = (GISADataset.TipoControloAutRelRow)relacaoCA.cbTipoControloAutRel.SelectedItem; PersistencyHelper.VerifyRelExistencePreConcArguments pcArgs = new PersistencyHelper.VerifyRelExistencePreConcArguments(); IDbConnection conn = GisaDataSetHelper.GetConnection(); try { conn.Open(); DBAbstractDataLayer.DataAccessRules.NivelRule.Current.LoadNivelByControloAut(cadRow.IDControloAut, GisaDataSetHelper.GetInstance(), conn); } catch (Exception ex) { Trace.WriteLine(ex); throw ex; } finally { conn.Close(); } string errorTitle = "Erro ao estabelecer relação"; if (! mInEditMode) { // Garantir que uma EP não é relacionada com ela própria. if (cadRow.ControloAutRow.ID == ContextControloAut.ID) { MessageBox.Show("Não é permitido relacionar uma notícia de autoridade consigo própria.", errorTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } // validar que a relação que pretendemos criar ainda não existe if (GisaDataSetHelper.GetInstance().ControloAutRel.Select(string.Format("((IDControloAut={0} AND IDControloAutAlias={1}) OR (IDControloAut={1} AND IDControloAutAlias={0})) AND IDTipoRel = {2:d}", cadRow.ControloAutRow.ID, ContextControloAut.ID, tcarRow.ID)).Length > 0 || (tcarRow.ID == Convert.ToInt64(TipoControloAutRel.Hierarquica) && GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1} OR ID={1} AND IDUpper={0}", cadRow.ControloAutRow.GetNivelControloAutRows()[0].NivelRow.ID, ContextControloAut.GetNivelControloAutRows()[0].NivelRow.ID)).Length > 0)) { MessageBox.Show("Não é permitida mais que uma relação do mesmo tipo " + Environment.NewLine + "entre as mesmas duas entidades produtoras.", errorTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } //Agir de forma diferente conforme seja uma relação hierarquica ou seja uma relação de outro qualquer tipo if (tcarRow.ID == Convert.ToInt64(TipoControloAutRel.Hierarquica)) { // Carregar informação do Nível do CA com que se pretende estabelecer esta relação GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection()); try { DBAbstractDataLayer.DataAccessRules.FRDRule.Current.LoadRetrieveSelectionData(GisaDataSetHelper.GetInstance(), cadRow.IDControloAut, ho.Connection); DBAbstractDataLayer.DataAccessRules.FRDRule.Current.LoadFRD(GisaDataSetHelper.GetInstance(), ContextControloAut.GetNivelControloAutRows()[0].NivelRow.ID, ho.Connection); } finally { ho.Dispose(); } long tnrID = 0; tnrID = ((TipoNivelRelacionado.PossibleSubNivel)relacaoCA.cbTipoNivel.SelectedItem).SubIDTipoNivelRelacionado; GISADataset.RelacaoHierarquicaRow rhRow = null; rhRow = GisaDataSetHelper.GetInstance().RelacaoHierarquica.NewRelacaoHierarquicaRow(); rhRow.IDUpper = cadRow.ControloAutRow.GetNivelControloAutRows()[0].NivelRow.ID; rhRow.ID = ContextControloAut.GetNivelControloAutRows()[0].NivelRow.ID; rhRow.IDTipoNivelRelacionado = tnrID; // Guardar datas rhRow.InicioAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoInicio.ValueYear); rhRow.InicioMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoInicio.ValueMonth); rhRow.InicioDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoInicio.ValueDay); rhRow.FimAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoFim.ValueYear); rhRow.FimMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoFim.ValueMonth); rhRow.FimDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoFim.ValueDay); rhRow.Descricao = relacaoCA.txtDescricao.Text; //rhRow.isDeleted = 0; GisaDataSetHelper.GetInstance().RelacaoHierarquica.AddRelacaoHierarquicaRow(rhRow); pcArgs.ID = rhRow.ID; pcArgs.IDUpper = rhRow.IDUpper; pcArgs.IDTipoRel = rhRow.IDTipoNivelRelacionado; pcArgs.isCARRow = false; // actualizar permissões implícitas var postSaveAction = new PostSaveAction(); PersistencyHelper.UpdatePermissionsPostSaveArguments args = new PersistencyHelper.UpdatePermissionsPostSaveArguments(); postSaveAction.args = args; postSaveAction.postSaveDelegate = delegate(PersistencyHelper.PostSaveArguments postSaveArgs) { if (!postSaveArgs.cancelAction && ContextControloAut.RowState != DataRowState.Detached && pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.NoError) { if (this.parent.GetType() == typeof(MasterPanelControloAut)) { ((MasterPanelControloAut)this.parent).CurrentContext.RaiseRegisterModificationEvent(this.ContextControloAut); var caRegRow = GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao.Cast<GISADataset.ControloAutDataDeDescricaoRow>().Single(r => r.RowState == DataRowState.Added); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao, new GISADataset.ControloAutDataDeDescricaoRow[] { caRegRow }, postSaveArgs.tran); var frdRow = rhRow.NivelRowByNivelRelacaoHierarquica.GetFRDBaseRows().SingleOrDefault(); if (frdRow == null) { var tipoFRD = (GISADataset.TipoFRDBaseRow)(GisaDataSetHelper.GetInstance().TipoFRDBase.Select("ID=" + DomainValuesHelper.stringifyEnumValue(TipoFRDBase.FRDOIRecolha))[0]); frdRow = GisaDataSetHelper.GetInstance().FRDBase.AddFRDBaseRow(rhRow.NivelRowByNivelRelacaoHierarquica, tipoFRD, "", "", new byte[] { }, 0); var dp = GisaDataSetHelper.GetInstance().SFRDDatasProducao.AddSFRDDatasProducaoRow(frdRow, "", "", "", "", false, "", "", "", "", false, new byte[] { }, 0); var ce = GisaDataSetHelper.GetInstance().SFRDConteudoEEstrutura.AddSFRDConteudoEEstruturaRow(frdRow, "", "", new byte[] { }, 0); var c = GisaDataSetHelper.GetInstance().SFRDContexto.AddSFRDContextoRow(frdRow, "", "", "", false, new byte[] { }, 0); var da = GisaDataSetHelper.GetInstance().SFRDDocumentacaoAssociada.AddSFRDDocumentacaoAssociadaRow(frdRow, "", "", "", "", new byte[] { }, 0); var ds = GisaDataSetHelper.GetInstance().SFRDDimensaoSuporte.AddSFRDDimensaoSuporteRow(frdRow, "", new byte[] { }, 0); var ng = GisaDataSetHelper.GetInstance().SFRDNotaGeral.AddSFRDNotaGeralRow(frdRow, "", new byte[] { }, 0); var CurrentSFRDAvaliacao = GisaDataSetHelper.GetInstance().SFRDAvaliacao.NewSFRDAvaliacaoRow(); CurrentSFRDAvaliacao.FRDBaseRow = frdRow; CurrentSFRDAvaliacao.IDPertinencia = 1; CurrentSFRDAvaliacao.IDDensidade = 1; CurrentSFRDAvaliacao.IDSubdensidade = 1; CurrentSFRDAvaliacao.Publicar = false; CurrentSFRDAvaliacao.Observacoes = ""; CurrentSFRDAvaliacao.AvaliacaoTabela = false; GisaDataSetHelper.GetInstance().SFRDAvaliacao.AddSFRDAvaliacaoRow(CurrentSFRDAvaliacao); var condA = GisaDataSetHelper.GetInstance().SFRDCondicaoDeAcesso.AddSFRDCondicaoDeAcessoRow(frdRow, "", "", "", "", new byte[] { }, 0); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().FRDBase, new DataRow[] { frdRow }, postSaveArgs.tran); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDDatasProducao, new DataRow[] { dp }, postSaveArgs.tran); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDConteudoEEstrutura, new DataRow[] { ce }, postSaveArgs.tran); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDContexto, new DataRow[] { c }, postSaveArgs.tran); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDDocumentacaoAssociada, new DataRow[] { da }, postSaveArgs.tran); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDDimensaoSuporte, new DataRow[] { ds }, postSaveArgs.tran); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDNotaGeral, new DataRow[] { ng }, postSaveArgs.tran); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDAvaliacao, new DataRow[] { CurrentSFRDAvaliacao }, postSaveArgs.tran); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().SFRDCondicaoDeAcesso, new DataRow[] { condA }, postSaveArgs.tran); } var nvlRegRow = RecordRegisterHelper .CreateFRDBaseDataDeDescricaoRow(frdRow, caRegRow.TrusteeUserRowByTrusteeUserControloAutDataDeDescricao, caRegRow.TrusteeUserRowByTrusteeUserControloAutDataDeDescricaoAuthority, caRegRow.DataAutoria); nvlRegRow.DataEdicao = caRegRow.DataEdicao; nvlRegRow.IDTipoNivelRelacionado = rhRow.IDTipoNivelRelacionado; GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao.AddFRDBaseDataDeDescricaoRow(nvlRegRow); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao, GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao.Cast<GISADataset.FRDBaseDataDeDescricaoRow>().Where(r => r.RowState == DataRowState.Added).ToArray(), postSaveArgs.tran); } } }; PersistencyHelper.save(ValidateCreateRel, pcArgs, postSaveAction); PersistencyHelper.cleanDeletedData(); if (ContextControloAut.RowState == DataRowState.Detached) { MessageBox.Show("Não é possível estabelecer a relação uma vez que a notícia de autoridade " + System.Environment.NewLine + "selecionada no painel superior foi apagada por outro utilizador.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } else { if (pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.RelationAlreadyExists) { MessageBox.Show("Não é permitida mais que uma relação do mesmo tipo entre as mesmas duas entidades produtoras.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } else if (pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.CyclicRelation) { MessageBox.Show("Prestes a criar um conjunto de relações cíclicas.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } else if (pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.CADeleted) { MessageBox.Show("Não é possível estabelecer a relação uma vez que uma das notícias de autoridade " + System.Environment.NewLine + "foi apagada por outro utilizador.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } else { GISA.Search.Updater.updateProdutor(new List<string>() { cadRow.ControloAutRow.ID.ToString(), ContextControloAut.ID.ToString()}); GISA.Search.Updater.updateNivelDocumentalComProdutores(cadRow.ControloAutRow.GetNivelControloAutRows()[0].ID); } } } else { GISADataset.ControloAutRelRow carRow = null; carRow = GisaDataSetHelper.GetInstance().ControloAutRel.NewControloAutRelRow(); carRow.IDControloAut = cadRow.ControloAutRow.ID; carRow.IDControloAutAlias = ContextControloAut.ID; carRow.IDTipoRel = tcarRow.ID; // Guardar datas carRow.InicioAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoInicio.ValueYear); carRow.InicioMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoInicio.ValueMonth); carRow.InicioDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoInicio.ValueDay); carRow.FimAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoFim.ValueYear); carRow.FimMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoFim.ValueMonth); carRow.FimDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoFim.ValueDay); carRow.Descricao = relacaoCA.txtDescricao.Text; GisaDataSetHelper.GetInstance().ControloAutRel.AddControloAutRelRow(carRow); pcArgs.ID = carRow.IDControloAut; pcArgs.IDUpper = carRow.IDControloAutAlias; pcArgs.IDTipoRel = carRow.IDTipoRel; pcArgs.isCARRow = true; var postSaveAction = new PostSaveAction(); PersistencyHelper.UpdatePermissionsPostSaveArguments args = new PersistencyHelper.UpdatePermissionsPostSaveArguments(); postSaveAction.args = args; postSaveAction.postSaveDelegate = delegate(PersistencyHelper.PostSaveArguments postSaveArgs) { if (!postSaveArgs.cancelAction && ContextControloAut.RowState != DataRowState.Detached && pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.NoError) { if (this.parent.GetType() == typeof(MasterPanelControloAut)) { ((MasterPanelControloAut)this.parent).CurrentContext.RaiseRegisterModificationEvent(this.ContextControloAut); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao, GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao.Cast<GISADataset.ControloAutDataDeDescricaoRow>().Where(r => r.RowState == DataRowState.Added).ToArray(), postSaveArgs.tran); } } }; PersistencyHelper.save(ValidateCreateRel, pcArgs, postSaveAction); PersistencyHelper.cleanDeletedData(); if (ContextControloAut.RowState == DataRowState.Detached) { MessageBox.Show("Não é possível estabelecer a relação uma vez que a notícia de autoridade " + System.Environment.NewLine + "selecionada no painel superior foi apagada por outro utilizador.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } else { if (pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.RelationAlreadyExists) { MessageBox.Show("Não é permitida mais que uma relação do mesmo tipo entre as mesmas duas entidades produtoras.", "Erro ao estabelecer relação", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } else { GISA.Search.Updater.updateProdutor(new List<string>() { carRow.IDControloAut.ToString(), carRow.IDControloAutAlias.ToString() }); } } } } else // edição { //Agir de forma diferente conforme seja uma relação hierarquica ou seja uma relação de outro qualquer tipo if (tcarRow.ID == Convert.ToInt64(TipoControloAutRel.Hierarquica)) { long tnrID = 0; tnrID = ((TipoNivelRelacionado.PossibleSubNivel)relacaoCA.cbTipoNivel.SelectedItem).SubIDTipoNivelRelacionado; GISADataset.RelacaoHierarquicaRow rhRow = null; rhRow = (GISADataset.RelacaoHierarquicaRow)ContextRel; // Guardar tipo de nivel rhRow.IDTipoNivelRelacionado = tnrID; // Guardar datas rhRow.InicioAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoInicio.ValueYear); rhRow.InicioMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoInicio.ValueMonth); rhRow.InicioDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoInicio.ValueDay); rhRow.FimAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoFim.ValueYear); rhRow.FimMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoFim.ValueMonth); rhRow.FimDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoFim.ValueDay); // Guardar descrição rhRow.Descricao = relacaoCA.txtDescricao.Text; var postSaveAction = new PostSaveAction(); PersistencyHelper.UpdatePermissionsPostSaveArguments args = new PersistencyHelper.UpdatePermissionsPostSaveArguments(); postSaveAction.args = args; postSaveAction.postSaveDelegate = delegate(PersistencyHelper.PostSaveArguments postSaveArgs) { if (!postSaveArgs.cancelAction && ContextControloAut.RowState != DataRowState.Detached && pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.NoError) { if (this.parent.GetType() == typeof(MasterPanelControloAut)) { ((MasterPanelControloAut)this.parent).CurrentContext.RaiseRegisterModificationEvent(this.ContextControloAut); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao, GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao.Cast<GISADataset.ControloAutDataDeDescricaoRow>().Where(r => r.RowState == DataRowState.Added).ToArray(), postSaveArgs.tran); } } }; PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(postSaveAction); PersistencyHelper.cleanDeletedData(); if (successfulSave == PersistencyHelper.SaveResult.successful) UpdateCA(rhRow); } else { GISADataset.ControloAutRelRow carRow = null; carRow = (GISADataset.ControloAutRelRow)ContextRel; // Actualização de uma relação previamente existente carRow["IDTipoRel"] = ((GISADataset.TipoControloAutRelRow)relacaoCA.cbTipoControloAutRel.SelectedItem).ID; // guardar datas carRow.InicioAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoInicio.ValueYear); carRow.InicioMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoInicio.ValueMonth); carRow.InicioDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoInicio.ValueDay); carRow.FimAno = GISA.Utils.GUIHelper.ReadYear(relacaoCA.dtRelacaoFim.ValueYear); carRow.FimMes = GISA.Utils.GUIHelper.ReadMonth(relacaoCA.dtRelacaoFim.ValueMonth); carRow.FimDia = GISA.Utils.GUIHelper.ReadDay(relacaoCA.dtRelacaoFim.ValueDay); carRow.Descricao = relacaoCA.txtDescricao.Text; var postSaveAction = new PostSaveAction(); PersistencyHelper.UpdatePermissionsPostSaveArguments args = new PersistencyHelper.UpdatePermissionsPostSaveArguments(); postSaveAction.args = args; postSaveAction.postSaveDelegate = delegate(PersistencyHelper.PostSaveArguments postSaveArgs) { if (!postSaveArgs.cancelAction && ContextControloAut.RowState != DataRowState.Detached && pcArgs.CreateEditResult == PersistencyHelper.VerifyRelExistencePreConcArguments.CreateEditRelationErrors.NoError) { if (this.parent.GetType() == typeof(MasterPanelControloAut)) { ((MasterPanelControloAut)this.parent).CurrentContext.RaiseRegisterModificationEvent(this.ContextControloAut); PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao, GisaDataSetHelper.GetInstance().ControloAutDataDeDescricao.Cast<GISADataset.ControloAutDataDeDescricaoRow>().Where(r => r.RowState == DataRowState.Added).ToArray(), postSaveArgs.tran); } } }; PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(postSaveAction); PersistencyHelper.cleanDeletedData(); if (successfulSave == PersistencyHelper.SaveResult.successful) UpdateCA(carRow); } } //TODO: PARA ALGUMAS DAS SEGUINTES VALIDACOES SERÁ NECESSÁRIO TRAZER PARA DENTRO DESTE FORM UMA GRANDE PARTE DA LOGICA EXISTENTE FORA DELE, NOMEADAMENTE A NOÇÃO DE SE ESTE FORM ESTÁ A SER UTILIZADO NA CRIAÇÃO OU NA EDIÇÃO DE UMA DADA RELAÇÃO //ToDo: validar que as datas da relação não vão para alem das datas de existencia de ambos os níveis (superior e inferior) //ToDo: validar que o tipo de nivel escolhido está de acordo com os tipos de nivel subordinados return true; }
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; } }
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; } }