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); }
public async Task <IActionResult> AddObjectLevel(IEnumerable <ObjectLevel> objectLevels) { var data = await levelService.AddObjectLevel(objectLevels); return(Ok(new ApiOkResponse(data))); }