public LOG_PERFIL_FUNCIONALIDADE BuscaEInsereFuncionalidades(string eightIDUsuarioModificador, long codPerfil, long codTela,
                                                                     List <FUNCIONALIDADE> novasFuncionalidades, DB_LaborSafetyEntities entities = null)
        {
            if (entities == null)
            {
                entities = new DB_LaborSafetyEntities();
            }

            //Busca as funcionalidades antigas
            var perfilFuncionalidadeExitente = entities.PERFIL_FUNCIONALIDADE.Where(x => x.CodPerfil == codPerfil && x.CodTela == codTela).ToList();

            //Se não houverem registros antigos, não insere o log
            if (perfilFuncionalidadeExitente == null)
            {
                return(null);
            }

            //Armazena os códigos das funcionalidades
            string codFuncionalidadesAntigas = "";
            string codNovasFuncionalidades   = "";

            List <FUNCIONALIDADE> funcionalidadesAntigas = new List <FUNCIONALIDADE>();

            foreach (var item in perfilFuncionalidadeExitente)
            {
                funcionalidadesAntigas.Add(item.FUNCIONALIDADE);
                codFuncionalidadesAntigas += codFuncionalidadesAntigas.Length == 0 ? item.FUNCIONALIDADE.CodFuncionalidade.ToString()
                    : "," + item.FUNCIONALIDADE.CodFuncionalidade.ToString();
                //string.Join(",", item.FUNCIONALIDADE.CodFuncionalidade);
            }

            foreach (var item in novasFuncionalidades)
            {
                codNovasFuncionalidades += codNovasFuncionalidades.Length == 0 ? item.CodFuncionalidade.ToString()
                    : "," + item.CodFuncionalidade.ToString();
            }

            //Insere a diferença
            if (codFuncionalidadesAntigas != codNovasFuncionalidades)
            {
                LOG_PERFIL_FUNCIONALIDADE log = new LOG_PERFIL_FUNCIONALIDADE();
                log.CodUsuarioModificador = eightIDUsuarioModificador;
                log.CodPerfil             = codPerfil;
                log.CodTela = codTela;
                log.CodigosFuncionalidadesAnteriores = codFuncionalidadesAntigas;
                log.CodigosNovasFuncionalidades      = codNovasFuncionalidades;
                log.DataAlteracao = DateTime.Now;

                var result = this.Inserir(log, entities);
                return(result);
            }
            else
            {
                return(null);
            }
        }
        public LOG_PERFIL_FUNCIONALIDADE Inserir(LOG_PERFIL_FUNCIONALIDADE modelo, DB_LaborSafetyEntities entities = null)
        {
            if (entities == null)
            {
                entities = new DB_LaborSafetyEntities();
            }

            LOG_PERFIL_FUNCIONALIDADE logPerfil = new LOG_PERFIL_FUNCIONALIDADE();

            logPerfil.CodigosFuncionalidadesAnteriores = modelo.CodigosFuncionalidadesAnteriores;
            logPerfil.CodigosNovasFuncionalidades      = modelo.CodigosNovasFuncionalidades;
            logPerfil.CodPerfil             = modelo.CodPerfil;
            logPerfil.CodTela               = modelo.CodTela;
            logPerfil.CodUsuarioModificador = modelo.CodUsuarioModificador;
            logPerfil.DataAlteracao         = DateTime.Now;

            entities.LOG_PERFIL_FUNCIONALIDADE.Add(logPerfil);
            entities.SaveChanges();

            return(logPerfil);
        }