コード例 #1
0
        public async Task <bool> SubscribeAsync(Subscribe sub)
        {
            if (!sub.IsValidate)
            {
                return(false);
            }

            var topic = await _topicServce.GetTopicAsync(sub.TopicId);

            if (topic.IsNull())
            {
                return(false);
            }

            //再判断下是否已经订阅过

            var searchOptions = new SubscribeSearchOptions {
                ServiceId = sub.ServiceId, SubscriberId = sub.SubscriberId, TopicId = sub.TopicId, TargetId = sub.TargetId
            };
            var existSubscribes = await Search(searchOptions, null);

            if (!existSubscribes.IsNull() && existSubscribes.Count > 0)
            {
                return(false);
            }

            sub.Id = Guid.NewGuid().ToString();
            return(SubscribeDb.Insert(sub));
        }
コード例 #2
0
        public async Task <bool> UnSubsribeAsync(Subscribe sub)
        {
            var topic = await _topicServce.GetTopicAsync(sub.TopicId);

            if (topic.IsNull())
            {
                return(false);
            }

            var searchOptions = new SubscribeSearchOptions {
                ServiceId = sub.ServiceId, SubscriberId = sub.SubscriberId, TopicId = sub.TopicId, TargetId = sub.TargetId
            };
            var existSubscribes = await Search(searchOptions, null);

            if (existSubscribes.IsNull() || existSubscribes.Count() <= 0)
            {
                return(false);
            }

            try
            {
                return(SubscribeDb.DeleteById(existSubscribes.First().Id.ToGuid()));
            }
            catch
            {
                return(false);
            }
        }
コード例 #3
0
        public async Task <List <SubscribeViewModel> > GetSubscribeTarget([FromBody] SubscribeSearchOptions viewModel)
        {
            viewModel.SubscriberId = viewModel?.SubscriberId ?? User.GetUserId();
            viewModel.ServiceId    = viewModel?.ServiceId ?? User.GetServiceId();
            var subscribes = await _subscribeService.Search(
                viewModel,
                null
                );

            List <SubscribeViewModel> results = new List <SubscribeViewModel>();

            foreach (var item in subscribes)
            {
                results.Add(Mapper.Map <SubscribeViewModel>(item));
            }

            return(results);
        }
コード例 #4
0
        public async Task <List <Subscribe> > Search(SubscribeSearchOptions options, PageOptions page)
        {
            var query = DB.Queryable <Subscribe>();

            if (!options.IsNull())
            {
                var SubscriberId = options?.SubscriberId;
                var TargetId     = options?.TargetId;
                var ServiceId    = options?.ServiceId;
                var TopicId      = options?.TopicId;
                var code         = options?.Code;


                if (!SubscriberId.IsNullOrEmpty())
                {
                    query.Where(s => s.SubscriberId == SubscriberId);
                }
                if (!TargetId.IsNullOrEmpty())
                {
                    query.Where(s => s.TargetId == TargetId);
                }
                if (!ServiceId.IsNullOrEmpty())
                {
                    query.Where(s => s.ServiceId == ServiceId);
                }
                if (!TopicId.IsNullOrEmpty())
                {
                    query.Where(s => s.TopicId == TopicId);
                }
            }

            var targets = new List <Subscribe>();

            if (!page.IsNull() && page.IsValidate)
            {
                targets = await query.ToPageListAsync(page.PageIndex, page.PageSize);
            }
            else
            {
                targets = await query.ToListAsync();
            }

            return(targets);
        }