コード例 #1
0
        /// <summary>
        /// Async togle like state
        /// </summary>
        /// <param name="entityId">Change like status entity Id</param>
        /// <param name="userName">Change like status user name</param>
        /// <returns></returns>
        public async Task TogleLikedStateAsync(string entityId, string userName)
        {
            var photo = await _unitOfWork.PhotoRepository.FindByIdAsync(entityId);

            //check exist entity in DB
            if (_unitOfWork.LikedEntityRepository.FindAll().Any(e => e.Id == entityId))
            {
                //check exist user in collection
                var entity = await _unitOfWork.LikedEntityRepository.FindByIdAsync(entityId);

                if (entity.Users.Any(u => u.UserName == userName))
                {
                    var user = await _unitOfWork.UserManager.FindByNameAsync(userName);

                    //remove user from collection
                    entity.Users.Remove(user);

                    //decrease like count in photo data
                    photo.Raiting.VoicesCount--;
                }
                else
                {
                    entity.Users.Add(await _unitOfWork.UserManager.FindByNameAsync(userName));
                    //increase like count
                    photo.Raiting.VoicesCount++;
                }

                //check cpacity collection
                //if capacity = 0, remove entity from table
                if (entity.Users.Count == 0)
                {
                    _unitOfWork.LikedEntityRepository.Remove(entity);
                }

                await _unitOfWork.SaveASync();
            }
            else
            {
                var tempEntity = new LikedEntity()
                {
                    Id = entityId
                };
                tempEntity.Users.Add(await _unitOfWork.UserManager.FindByNameAsync(userName));

                _unitOfWork.LikedEntityRepository.Add(tempEntity);
                //increase like count
                photo.Raiting.VoicesCount++;

                await _unitOfWork.SaveASync();
            }
        }
コード例 #2
0
 /// <summary>
 /// Remove liked entity
 /// </summary>
 /// <param name="entity">liked entity</param>
 public void Remove(LikedEntity entity)
 {
     _context.LikedEntities.Remove(entity);
 }
コード例 #3
0
 /// <summary>
 /// Update liked entity
 /// </summary>
 /// <param name="entity">liked entity for update</param>
 /// <returns></returns>
 public Task UpdateAsync(LikedEntity entity)
 {
     throw new NotImplementedException();
 }
コード例 #4
0
 /// <summary>
 /// Add liked entity
 /// </summary>
 /// <param name="entity">liked entity</param>
 public void Add(LikedEntity entity)
 {
     _context.LikedEntities.Add(entity);
 }