예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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;
        }