public ResultadoOperacionDto BorrarGruposYRolesNoAsociadosAEmpresaUsuario(long idUsuario, long idUsuarioExec)
        {
            ResultadoOperacionDto resultado = new ResultadoOperacionDto();
            //Obtener las empresas actuales del usuario
            IList <long> idEmpresas = UsuarioEmpresaRepository.Get(x => x.IdUsuario == idUsuario).ToList().Select(it => it.IdEmpresa).ToList();
            //Obtener los roles del usuario
            IList <long> idRolesEmpresa = RolRepository.Get(x => !idEmpresas.Contains(x.IdEmpresa)).Select(it => it.IdRol).ToList();
            //Obtener los roles del usuario
            IList <long> idRolesUsuarioEmpresa = UsuarioRolRepository.Get(x => x.IdUsuario == idUsuario && idRolesEmpresa.Contains(x.IdRol)).Select(it => it.IdUsuarioRol).ToList();

            //grupos : eliminar los grupos que no están en las empresas

            UsuarioGrupoRepository.DeleteByCondition(x => x.IdUsuario == idUsuario && !idEmpresas.Contains(x.GrupoUsuarios.IdEmpresa));

            //roles: eleminar los roles que no estén en las empresas

            foreach (var idRolUsuarioEmpresa in idRolesUsuarioEmpresa)
            {
                UsuarioRolRepository.BorrarUsuarioRol(idRolUsuarioEmpresa);
            }

            resultado.Resultado = true;

            resultado.InformacionAuditoria = new InformacionAuditoriaDto(idUsuario, ConstantsAccionAuditable.Borrar,
                                                                         ConstantsModulo.Grupos, "Eliminar los roles y grupos que ya no pertenecen a las empresas asignadas al usuario",
                                                                         null);

            return(resultado);
        }
        public ResultadoOperacionDto BorrarEmpresasUsuario(long idUsuario)
        {
            var resultado = new ResultadoOperacionDto();

            try
            {
                UsuarioEmpresaRepository.BorrarEmpresasUsuario(idUsuario);
                resultado.Resultado = true;
            }
            catch (Exception exception)
            {
                resultado.Resultado        = false;
                resultado.Mensaje          = exception.Message;
                resultado.InformacionExtra = exception;
            }
            return(resultado);
        }
        public ResultadoOperacionDto ObtenerUsuarioEmpresas()
        {
            var resultado = new ResultadoOperacionDto();

            try
            {
                resultado.InformacionExtra = UsuarioEmpresaRepository.ObtenerUsuarioEmpresas();
                resultado.Resultado        = true;
            }
            catch (Exception exception)
            {
                resultado.Resultado        = false;
                resultado.Mensaje          = exception.Message;
                resultado.InformacionExtra = exception;
            }
            return(resultado);
        }
        public ResultadoOperacionDto VerificarUsuarioEsEmpresa(long idEmpresa, long idUsuario)
        {
            var resultado = new ResultadoOperacionDto();

            try
            {
                resultado.InformacionExtra = UsuarioEmpresaRepository.VerificarUsuarioEmpresa(idEmpresa, idUsuario);
                resultado.Resultado        = true;
            }
            catch (Exception exception)
            {
                resultado.Resultado        = false;
                resultado.Mensaje          = exception.Message;
                resultado.InformacionExtra = exception;
            }
            return(resultado);
        }
        public ResultadoOperacionDto ObtenerEmpresasPorIdEmpresaIdUsuario(long?idEmpresa, long?idUsuario)
        {
            var resultado = new ResultadoOperacionDto();

            try
            {
                resultado.InformacionExtra = UsuarioEmpresaRepository.ObtenerEmpresasPorIdEmpresaIdUsuario(idEmpresa, idUsuario);
                resultado.Resultado        = true;
            }
            catch (Exception exception)
            {
                resultado.Resultado        = false;
                resultado.Mensaje          = exception.Message;
                resultado.InformacionExtra = exception;
                LogUtil.Error(exception);
            }
            return(resultado);
        }
        public ResultadoOperacionDto GuardarUsuarioEmpresa(UsuarioEmpresa usuarioEmpresa, long idUsuarioExec)
        {
            var resultado = new ResultadoOperacionDto();

            try
            {
                var param = new List <object>()
                {
                    Repository.ObtenerUsuarioPorId(usuarioEmpresa.IdUsuario).CorreoElectronico
                };
                var informacionAuditoria = new InformacionAuditoriaDto(idUsuarioExec, ConstantsAccionAuditable.Insertar, ConstantsModulo.Usuarios, usuarioEmpresa.IdUsuarioEmpresa == 0 ? MensajesServicios.InsertarUsuarioEmpresa : MensajesServicios.ActualizarUsuarioEmpresa, param);

                resultado.InformacionExtra     = UsuarioEmpresaRepository.GuardarUsuarioEmpresa(usuarioEmpresa);
                resultado.InformacionAuditoria = informacionAuditoria;
                resultado.Resultado            = true;
            }
            catch (Exception exception)
            {
                resultado.Resultado        = false;
                resultado.Mensaje          = exception.Message;
                resultado.InformacionExtra = exception;
            }
            return(resultado);
        }