public static void createNewCodigoSerie(PersistencyHelper.PreSaveArguments args) { try { GISADataset.NivelRow nRow = null; nRow = (GISADataset.NivelRow)(GisaDataSetHelper.GetInstance().Nivel.Select("ID=" + ((PersistencyHelper.FetchLastCodigoSeriePreSaveArguments)args).nRowID.ToString())[0]); // antes de obter o código verificar se adição de um novo nível ainda é possível (por razões de concorrência) bool RHNivelUpperExists = ((PersistencyHelper.VerifyIfRHNivelUpperExistsPreConcArguments)(((PersistencyHelper.FetchLastCodigoSeriePreSaveArguments)args).pcArgs)).RHNivelUpperExists; if (RHNivelUpperExists) { NivelRule.Current.FillTipoNivelRelacionadoCodigo(GisaDataSetHelper.GetInstance(), args.tran); nRow.Codigo = NiveisHelper.getNextSeriesCodigo(true); // estamos dentro de um save e de uma transaccao por isso podemos fazer um update DBAbstractDataLayer.DataAccessRules.PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().TipoNivelRelacionadoCodigo, GisaDataSetHelper.GetInstance().TipoNivelRelacionadoCodigo.Select(), args.tran); } } catch (Exception ex) { Trace.WriteLine(ex); throw; } }
public static void ValidateNivelAddAndAssocNewUF(PersistencyHelper.PreConcArguments args) { PersistencyHelper.ValidateNivelAddAndAssocNewUFPreConcArguments pcArgs = null; pcArgs = (PersistencyHelper.ValidateNivelAddAndAssocNewUFPreConcArguments)args; bool addSuccessful = false; pcArgs.argsNivel.tran = pcArgs.tran; pcArgs.argsNivel.gisaBackup = pcArgs.gisaBackup; var frdID = long.MinValue; if (pcArgs.IDTipoNivelRelacionado == TipoNivelRelacionado.SR || pcArgs.IDTipoNivelRelacionado == TipoNivelRelacionado.SSR) { var argsNivel = pcArgs.argsNivel as PersistencyHelper.VerifyIfRHNivelUpperExistsPreConcArguments; EnsureNivelUpperExists(pcArgs.argsNivel); pcArgs.message = argsNivel.message; addSuccessful = ((PersistencyHelper.VerifyIfRHNivelUpperExistsPreConcArguments)pcArgs.argsNivel).RHNivelUpperExists; frdID = argsNivel.frdBaseID; } else if (pcArgs.IDTipoNivelRelacionado == TipoNivelRelacionado.D || pcArgs.IDTipoNivelRelacionado == TipoNivelRelacionado.SD) { var argsNivel = pcArgs.argsNivel as PersistencyHelper.EnsureUniqueCodigoNivelPreConcArguments; ensureUniqueCodigo(pcArgs.argsNivel); pcArgs.message = argsNivel.message; addSuccessful = ((PersistencyHelper.EnsureUniqueCodigoNivelPreConcArguments)pcArgs.argsNivel).successful; frdID = argsNivel.frdBaseID; } if (addSuccessful) { GISADataset.FRDBaseRow frdNivelDocRow = (GISADataset.FRDBaseRow)(GisaDataSetHelper.GetInstance().FRDBase.Select("ID=" + frdID.ToString())[0]); var sfrdDatasProducaoRow = GisaDataSetHelper.GetInstance().SFRDDatasProducao.Cast <GISADataset.SFRDDatasProducaoRow>().Where(r => r.IDFRDBase == frdNivelDocRow.ID).SingleOrDefault(); if (sfrdDatasProducaoRow == null) { GisaDataSetHelper.GetInstance().SFRDDatasProducao.AddSFRDDatasProducaoRow(frdNivelDocRow, "", "", "", "", false, "", "", "", "", false, new byte[] { }, 0); } var sfrdConteudoEEstruturaRow = GisaDataSetHelper.GetInstance().SFRDConteudoEEstrutura.Cast <GISADataset.SFRDConteudoEEstruturaRow>().Where(r => r.IDFRDBase == frdNivelDocRow.ID).SingleOrDefault(); if (sfrdConteudoEEstruturaRow == null) { GisaDataSetHelper.GetInstance().SFRDConteudoEEstrutura.AddSFRDConteudoEEstruturaRow(frdNivelDocRow, "", "", new byte[] { }, 0); } var sfrdContextoRow = GisaDataSetHelper.GetInstance().SFRDContexto.Cast <GISADataset.SFRDContextoRow>().Where(r => r.IDFRDBase == frdNivelDocRow.ID).SingleOrDefault(); if (sfrdContextoRow == null) { GisaDataSetHelper.GetInstance().SFRDContexto.AddSFRDContextoRow(frdNivelDocRow, "", "", "", false, new byte[] { }, 0); } var sfrdDocumentacaoAssociadaRow = GisaDataSetHelper.GetInstance().SFRDDocumentacaoAssociada.Cast <GISADataset.SFRDDocumentacaoAssociadaRow>().Where(r => r.IDFRDBase == frdNivelDocRow.ID).SingleOrDefault(); if (sfrdDocumentacaoAssociadaRow == null) { GisaDataSetHelper.GetInstance().SFRDDocumentacaoAssociada.AddSFRDDocumentacaoAssociadaRow(frdNivelDocRow, "", "", "", "", new byte[] { }, 0); } var sfrdDimensaoSuporteRow = GisaDataSetHelper.GetInstance().SFRDDimensaoSuporte.Cast <GISADataset.SFRDDimensaoSuporteRow>().Where(r => r.IDFRDBase == frdNivelDocRow.ID).SingleOrDefault(); if (sfrdDimensaoSuporteRow == null) { GisaDataSetHelper.GetInstance().SFRDDimensaoSuporte.AddSFRDDimensaoSuporteRow(frdNivelDocRow, "", new byte[] { }, 0); } var sfrdNotaGeralRow = GisaDataSetHelper.GetInstance().SFRDNotaGeral.Cast <GISADataset.SFRDNotaGeralRow>().Where(r => r.IDFRDBase == frdNivelDocRow.ID).SingleOrDefault(); if (sfrdNotaGeralRow == null) { GisaDataSetHelper.GetInstance().SFRDNotaGeral.AddSFRDNotaGeralRow(frdNivelDocRow, "", new byte[] { }, 0); } var sfrdAgrupadorRow = GisaDataSetHelper.GetInstance().SFRDAgrupador.Cast <GISADataset.SFRDAgrupadorRow>().Where(r => r.IDFRDBase == frdNivelDocRow.ID).SingleOrDefault(); if (sfrdAgrupadorRow == null) { GisaDataSetHelper.GetInstance().SFRDAgrupador.AddSFRDAgrupadorRow(frdNivelDocRow, "", new byte[] { }, 0); } var sfrdAvaliacaoRow = GisaDataSetHelper.GetInstance().SFRDAvaliacao.Cast <GISADataset.SFRDAvaliacaoRow>().Where(r => r.IDFRDBase == frdNivelDocRow.ID).SingleOrDefault(); if (sfrdAvaliacaoRow == null) { var CurrentSFRDAvaliacao = GisaDataSetHelper.GetInstance().SFRDAvaliacao.NewSFRDAvaliacaoRow(); CurrentSFRDAvaliacao.FRDBaseRow = frdNivelDocRow; CurrentSFRDAvaliacao.IDPertinencia = 1; CurrentSFRDAvaliacao.IDDensidade = 1; CurrentSFRDAvaliacao.IDSubdensidade = 1; CurrentSFRDAvaliacao.Publicar = false; CurrentSFRDAvaliacao.Observacoes = ""; CurrentSFRDAvaliacao.AvaliacaoTabela = false; GisaDataSetHelper.GetInstance().SFRDAvaliacao.AddSFRDAvaliacaoRow(CurrentSFRDAvaliacao); } var sfrdCondicaoDeAcessoRow = GisaDataSetHelper.GetInstance().SFRDCondicaoDeAcesso.Cast <GISADataset.SFRDCondicaoDeAcessoRow>().Where(r => r.IDFRDBase == frdNivelDocRow.ID).SingleOrDefault(); if (sfrdCondicaoDeAcessoRow == null) { GisaDataSetHelper.GetInstance().SFRDCondicaoDeAcesso.AddSFRDCondicaoDeAcessoRow(frdNivelDocRow, "", "", "", "", new byte[] { }, 0); } } if (addSuccessful && pcArgs.addNewUF) { GISADataset.FRDBaseRow frdNivelDocRow = (GISADataset.FRDBaseRow)(GisaDataSetHelper.GetInstance().FRDBase.Select("ID=" + pcArgs.IDFRDBaseNivelDoc.ToString())[0]); GISADataset.NivelRow nivelEDRow = NiveisHelper.GetNivelED(pcArgs.produtor); GISADataset.NivelRow nivelUFRow = UnidadesFisicasHelper.CreateUF(nivelEDRow, pcArgs.designacaoUFAssociada); PersistencyHelper.AddEditUFPreConcArguments argsPCNewUF = (PersistencyHelper.AddEditUFPreConcArguments)pcArgs.argsUF; PersistencyHelper.IsCodigoUFBeingUsedPreSaveArguments argsPSNewUF = (PersistencyHelper.IsCodigoUFBeingUsedPreSaveArguments)argsPCNewUF.psa; argsPCNewUF.nivelUFRowID = nivelUFRow.ID; argsPCNewUF.ndufRowID = nivelUFRow.ID; argsPCNewUF.rhufRowID = nivelUFRow.ID; argsPCNewUF.rhufRowIDUpper = nivelEDRow.ID; argsPCNewUF.nufufRowID = nivelUFRow.ID; argsPCNewUF.tran = pcArgs.tran; argsPSNewUF.nivelUFRowID = nivelUFRow.ID; HandleUF(argsPCNewUF); pcArgs.message = argsPCNewUF.message; if (argsPCNewUF.OperationError == PersistencyHelper.AddEditUFPreConcArguments.OperationErrors.NoError) { GisaDataSetHelper.GetInstance().SFRDUnidadeFisica.AddSFRDUnidadeFisicaRow(frdNivelDocRow, nivelUFRow, null, new byte[] { }, 0); } } else if (!addSuccessful && pcArgs.addNewUF) { // caso onde o nível não foi criado e pretendia-se criar unidade física; neste caso cancela-se a atribuição do código // à unidade física PersistencyHelper.AddEditUFPreConcArguments argsPCNewUF = (PersistencyHelper.AddEditUFPreConcArguments)pcArgs.argsUF; PersistencyHelper.IsCodigoUFBeingUsedPreSaveArguments argsPSNewUF = (PersistencyHelper.IsCodigoUFBeingUsedPreSaveArguments)argsPCNewUF.psa; argsPSNewUF.cancelSetNewCodigo = true; } pcArgs.continueSave = addSuccessful; }