Exemplo n.º 1
0
 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;
     }
 }
Exemplo n.º 2
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;
        }