Exemplo n.º 1
0
        public async Task <PostViewModel> AddPost(AddPostRequest request)
        {
            var currentUser = Feature.CurrentUser(httpContextAccessor, userRepository);
            var post        = PostAdapter.FromRequest(request);

            post.AuthorId = currentUser.Id.ToString();
            await postRepository.AddAsync(post);

            await fcmRepository.AddToGroup(new AddUserToGroupRequest()
            {
                GroupName = post.OId,
                Type      = Feature.GetTypeName(post),
                UserIds   = new List <string> {
                    currentUser.OId
                }
            });

            foreach (var item in request.Fields)
            {
                item.ObjectId = post.OId;
            }

            await levelService.AddObjectLevel(request.Fields);

            var userMatchs = await GetUsersMatchPostField(post);

            foreach (var user in userMatchs)
            {
                var followBuilder = Builders <Follow> .Filter;
                var followFilter  = followBuilder.Eq("from_id", user.OId) & followBuilder.Eq("to_id", currentUser.OId);
                var follows       = await followRepository.FindListAsync(followFilter);

                follows.ForEach(async x =>
                {
                    var notificationDetail = new Noftication()
                    {
                        AuthorId        = currentUser.OId,
                        OwnerId         = currentUser.OId,
                        ObjectId        = post.OId,
                        ObjectThumbnail = post.Title
                    };
                    await fcmRepository.PushNotify(x.FromId, notificationDetail, NotificationContent.AddPostNotification);
                });
            }
            var response = mapper.Map <PostViewModel>(post);

            return(response);
        }
Exemplo n.º 2
0
        public async Task <IActionResult> AddObjectLevel(IEnumerable <ObjectLevel> objectLevels)
        {
            var data = await levelService.AddObjectLevel(objectLevels);

            return(Ok(new ApiOkResponse(data)));
        }