//Persistir o objecto e atualizar informações
        private bool atualizar(PlanoCarreira OPlanoCarreira)
        {
            //Localizar existentes no banco
            var dbPlanoCarreira = db.PlanoCarreira.condicoesSeguranca().FirstOrDefault(x => x.id == OPlanoCarreira.id);

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

            var dbEntry = db.Entry(dbPlanoCarreira);

            OPlanoCarreira.setDefaultUpdateValues();

            dbEntry.CurrentValues.SetValues(OPlanoCarreira);

            dbEntry.ignoreFields();

            //Gerar log de alterações
            this.OPlanoCarreiraAlteracaoDadoBL.alterarCampo(OPlanoCarreira.id, "descricao", OPlanoCarreira.descricao, "Descrição");
            this.OPlanoCarreiraAlteracaoDadoBL.alterarCampo(OPlanoCarreira.id, "pontuacao", OPlanoCarreira.pontuacao.ToString(), "Pontuação");

            db.SaveChanges();

            return(OPlanoCarreira.id > 0);
        }
        //Persistir o objecto e salvar na base de dados
        private bool inserir(PlanoCarreira OPlanoCarreira)
        {
            OPlanoCarreira.setDefaultInsertValues();

            db.PlanoCarreira.Add(OPlanoCarreira);

            db.SaveChanges();

            return(OPlanoCarreira.id > 0);
        }
        //Verificar se deve-se atualizar um registro existente ou criar um novo
        public bool salvar(PlanoCarreira OPlanoCarreira)
        {
            var flagSucesso = false;

            if (OPlanoCarreira.id > 0)
            {
                flagSucesso = this.atualizar(OPlanoCarreira);
            }

            if (OPlanoCarreira.id == 0)
            {
                flagSucesso = this.inserir(OPlanoCarreira);
            }

            return(flagSucesso);
        }
        /// <summary>
        /// Faz a alteração de qualquer campo informado
        /// </summary>
        private UtilRetorno alterarCampo(PlanoCarreira OPlanoCarreira, LogAlteracao OLog)
        {
            var ORetorno = UtilRetorno.newInstance(true);

            var listaCamposNaoEditaveis = new[] {
                "id"
                , "idOrganizacao"
                , "idUsuarioCadastro"
                , "idUsuarioAlteracao"
                , "dtCadastro"
            };

            if (listaCamposNaoEditaveis.Contains(OLog.nomeCampoAlterado))
            {
                return(UtilRetorno.newInstance(true, "O dado informado não pode ser alterado."));
            }

            OLog.valorAntigo = OPlanoCarreira.alterarValorCampo(OLog.nomeCampoAlterado, OLog.valorNovo);

            if (OLog.valorAntigo == null)
            {
                ORetorno.listaErros.Add("O valor informado é inválido");

                return(ORetorno);
            }

            var Retorno = db.validateAndSave();

            if (Retorno.flagError)
            {
                return(Retorno);
            }

            OLog.nomeCampoAlterado = OLog.nomeCampoAlterado.abreviar(255);
            OLog.nomeCampoDisplay  = OLog.nomeCampoDisplay.abreviar(255);
            OLog.valorNovo         = OPlanoCarreira.getValorCampo(OLog.nomeCampoAlterado).removeTags().abreviar(255);
            OLog.valorAntigo       = OLog.valorAntigo.removeTags().abreviar(255);
            OLog.oldValueSelect    = OLog.valorAntigo.isEmpty() ? null : OLog.oldValueSelect.removeTags().abreviar(255);

            OLogAlteracaoBL.salvar(OLog);

            ORetorno.flagError = false;

            return(ORetorno);
        }
 public PlanoCarreiraForm()
 {
     this.PlanoCarreira = new PlanoCarreira();
 }