/*Rotinas de Cadastro*/
        //Verificar se deve-se atualizar um registro existente ou criar um novo
        public bool salvar(TipoAssociado OTipoAssociado)
        {
            if (OTipoAssociado.id == 0)
            {
                return(this.inserir(OTipoAssociado));
            }

            return(this.atualizar(OTipoAssociado));
        }
        //Persistir o objecto e salvar na base de dados
        private bool inserir(TipoAssociado OTipoAssociado)
        {
            OTipoAssociado.setDefaultInsertValues <TipoAssociado>();

            db.TipoAssociado.Add(OTipoAssociado);

            db.SaveChanges();

            return(OTipoAssociado.id > 0);
        }
        //Chamador das ações do evento
        public void execute(object source)
        {
            try {
                this.OAssociado = source as Associado;

                this.OTipoAssociado = this.OTipoAssociadoBL.carregar(UtilNumber.toInt32(OAssociado.idTipoAssociado));

                this.gerarOcorrencia();

                this.gerarOcorrenciaEstipulante();
            } catch (Exception ex) {
                UtilLog.saveError(ex, $"Erro no manipulador do evento de cadastro do associado {this.OAssociado.Pessoa.nome}");
            }
        }
        //Persistir o objecto e atualizar informações
        private bool atualizar(TipoAssociado OTipoAssociado)
        {
            //Localizar existentes no banco
            TipoAssociado dbTipoAssociado = this.carregar(OTipoAssociado.id);

            if (dbTipoAssociado == null)
            {
                return(false);
            }

            OTipoAssociado.setDefaultUpdateValues <TipoAssociado>();

            var TipoEntry = db.Entry(dbTipoAssociado);

            TipoEntry.CurrentValues.SetValues(OTipoAssociado);
            TipoEntry.ignoreFields(new[] { "flagSistema" });

            db.SaveChanges();
            return(OTipoAssociado.id > 0);
        }