//Realizar os tratamentos necessários
        //Salvar um novo registro
        //Salvar o arquivo no banco de dados
        //Verificar se deve-se atualizar um registro existente ou criar um novo
        public bool salvar(MaterialApoio OMaterial, HttpPostedFileBase OArquivo)
        {
            bool flagSucesso = false;

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

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

            if (flagSucesso && OArquivo != null)
            {
                var OArquivoUpload = new ArquivoUpload();

                OArquivoUpload.idReferenciaEntidade = OMaterial.id;

                OArquivoUpload.entidade = EntityTypes.MATERIAL_APOIO;

                OArquivoUpload.titulo = OMaterial.titulo;

                this.OArquivoUploadDocumentoBL.salvar(OArquivoUpload, OArquivo);
            }

            return(flagSucesso);
        }
        //Persistir o objecto e salvar na base de dados
        private bool inserir(MaterialApoio OMaterialApoio)
        {
            OMaterialApoio.idUnidade = User.idUnidade();

            OMaterialApoio.setDefaultInsertValues <MaterialApoio>();

            db.MaterialApoio.Add(OMaterialApoio);

            db.SaveChanges();

            return(OMaterialApoio.id > 0);
        }
        //Exclusao logica de registros
        public UtilRetorno excluir(int id)
        {
            MaterialApoio OMaterialApoio = this.carregar(id);

            if (OMaterialApoio == null)
            {
                return(UtilRetorno.newInstance(true, "O registro não foi localizado."));
            }

            OMaterialApoio.flagExcluido = "S";

            OMaterialApoio.idUsuarioAlteracao = User.id();

            OMaterialApoio.dtAlteracao = DateTime.Now;

            db.SaveChanges();

            return(UtilRetorno.newInstance(false, "O registro foi removido com sucesso."));
        }
        //Persistir o objecto e atualizar informações
        private bool atualizar(MaterialApoio OMaterialApoio)
        {
            //Localizar existentes no banco
            var dbMaterialApoio = this.carregar(OMaterialApoio.id);

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

            OMaterialApoio.setDefaultUpdateValues();

            var MaterialEntry = db.Entry(dbMaterialApoio);

            MaterialEntry.CurrentValues.SetValues(OMaterialApoio);

            MaterialEntry.ignoreFields <MaterialApoio>();

            db.SaveChanges();

            return(OMaterialApoio.id > 0);
        }