public static void SetCodigo(PersistencyHelper.PreSaveArguments args) { PersistencyHelper.IsCodigoUFBeingUsedPreSaveArguments psa = null; psa = (PersistencyHelper.IsCodigoUFBeingUsedPreSaveArguments)args; GISADataset.NivelUnidadeFisicaCodigoRow codRow = null; // a atribuição de um código de referência ocorre quando se cria uma // UF nova ou se está a mudar a ED de uma UF e é atribuído só se não houver // qualquer conflito de concorrência if (!psa.cancelSetNewCodigo) { GISADataset.NivelRow nivelUFRow = (GISADataset.NivelRow)(GisaDataSetHelper.GetInstance().Nivel.Select("ID=" + psa.nivelUFRowID.ToString())[0]); codRow = UnidadesFisicasHelper.GetNewCodigoRow(nivelUFRow, System.DateTime.Now.Year); decimal newCounterValue = DBAbstractDataLayer.DataAccessRules.UFRule.Current.IsCodigoUFBeingUsed(codRow.ID, codRow.Ano, psa.tran); if (newCounterValue != 0M) { nivelUFRow.Codigo = "UF" + codRow.Ano.ToString() + "-" + newCounterValue.ToString(); } else { nivelUFRow.Codigo = "UF" + codRow.Ano.ToString() + "-" + codRow.Contador.ToString(); } //quer tenha sido adicionada uma entrada na tabela NivelUnidadeFisicaCodigo quer so tenha sido actualizado //o contador de uma das linhas, essa operação foi executada directamente na base de dados pelo que para //manter a coerência é necessário confirmar a mesma operação do lado do dataset codRow.AcceptChanges(); DBAbstractDataLayer.DataAccessRules.UFRule.Current.ReloadNivelUFCodigo(GisaDataSetHelper.GetInstance(), codRow.ID, codRow.Ano, psa.tran); } }
public static GISADataset.NivelRow CreateUF(GISADataset.NivelRow nivelED, string designacaoUF, string guiaUF) { GISADataset.TipoNivelRelacionadoRow tnrRow = (GISADataset.TipoNivelRelacionadoRow)(GisaDataSetHelper.GetInstance().TipoNivelRelacionado.Select(string.Format("ID={0}", TipoNivelRelacionado.UF))[0]); GISADataset.NivelRow nufRow = null; GISADataset.NivelDesignadoRow ndufRow = null; GISADataset.RelacaoHierarquicaRow rhufRow = null; GISADataset.NivelUnidadeFisicaRow nufufRow = null; GISADataset.FRDBaseRow frdufRow = null; // nivel nufRow = GisaDataSetHelper.GetInstance().Nivel.NewNivelRow(); // nivelDesignado ndufRow = GisaDataSetHelper.GetInstance().NivelDesignado.NewNivelDesignadoRow(); // RelacaoHierarquica rhufRow = GisaDataSetHelper.GetInstance().RelacaoHierarquica.NewRelacaoHierarquicaRow(); // NivelUnidadeFisicaRow nufufRow = GisaDataSetHelper.GetInstance().NivelUnidadeFisica.NewNivelUnidadeFisicaRow(); // FRDBaseRow frdufRow = GisaDataSetHelper.GetInstance().FRDBase.NewFRDBaseRow(); GISADataset tempWith1 = GisaDataSetHelper.GetInstance(); Trace.WriteLine("A criar unidade física..."); nufRow.TipoNivelRow = tnrRow.TipoNivelRow; nufRow.Codigo = UnidadesFisicasHelper.GenerateNewCodigoString(nivelED, System.DateTime.Now.Year); nufRow.CatCode = "NVL"; ndufRow.NivelRow = nufRow; ndufRow.Designacao = designacaoUF; //CreateUF_edID = nivelED.ID; //CreateUF_designacao = designacaoUF; //CreateUF_guia = guiaUF; rhufRow.NivelRowByNivelRelacaoHierarquica = nufRow; rhufRow.TipoNivelRelacionadoRow = (GISADataset.TipoNivelRelacionadoRow)(GisaDataSetHelper.GetInstance().TipoNivelRelacionado.Select(string.Format("ID={0}", TipoNivelRelacionado.UF))[0]); rhufRow["InicioAno"] = DBNull.Value; rhufRow["InicioMes"] = DBNull.Value; rhufRow["InicioDia"] = DBNull.Value; rhufRow["FimAno"] = DBNull.Value; rhufRow["FimMes"] = DBNull.Value; rhufRow["FimDia"] = DBNull.Value; rhufRow.NivelRowByNivelRelacaoHierarquicaUpper = nivelED; nufufRow.GuiaIncorporacao = guiaUF; nufufRow.NivelDesignadoRow = ndufRow; frdufRow.NivelRow = nufRow; frdufRow.NotaDoArquivista = string.Empty; frdufRow.TipoFRDBaseRow = (GISADataset.TipoFRDBaseRow)(GisaDataSetHelper.GetInstance().TipoFRDBase.Select(string.Format("ID={0}", System.Enum.Format(typeof(TipoFRDBase), TipoFRDBase.FRDUnidadeFisica, "D")))[0]); frdufRow.RegrasOuConvencoes = string.Empty; tempWith1.Nivel.AddNivelRow(nufRow); tempWith1.NivelDesignado.AddNivelDesignadoRow(ndufRow); tempWith1.RelacaoHierarquica.AddRelacaoHierarquicaRow(rhufRow); tempWith1.NivelUnidadeFisica.AddNivelUnidadeFisicaRow(nufufRow); tempWith1.FRDBase.AddFRDBaseRow(frdufRow); var sfrdDatasProducaoRow = GisaDataSetHelper.GetInstance().SFRDDatasProducao.Cast <GISADataset.SFRDDatasProducaoRow>().Where(r => r.IDFRDBase == frdufRow.ID).SingleOrDefault(); if (sfrdDatasProducaoRow == null) { GisaDataSetHelper.GetInstance().SFRDDatasProducao.AddSFRDDatasProducaoRow(frdufRow, "", "", "", "", false, "", "", "", "", false, new byte[] { }, 0); } return(nufRow); }
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; }