Example #1
0
        public async Task <BlogDTO> GetByIdAsync(int id)
        {
            var blogEntity = await _blogRepository.GetByIdAsync(id);

            if (blogEntity is null)
            {
                return(null);
            }

            var blogDTO = ToDTO(blogEntity);

            var ratings = await _blogRatingRepository.GetAllByBlogIdAsync(id);

            if (ratings.Any())
            {
                blogDTO.AverageRating = ratings.Average(br => br.Rate);
            }

            var currentUser = await _currentUserProvider.GetCurrentUserAsync();

            if (currentUser != null)
            {
                var blogRating = await _blogRatingRepository
                                 .GetByBlogIdAndUserIdAsync(id, currentUser.Id);

                blogDTO.RatingByUser = blogRating is null ? default : blogRating.Rate;
            }

            return(blogDTO);
        }
Example #2
0
        public async Task <GameFullDTO> CreateNewGameWithFriend(GameFullDTO game)
        {
            if (uow == null)
            {
                return(null);
            }

            if (string.IsNullOrWhiteSpace(game.Fen))
            {
                game.Fen = ChessGame.DefaultFen;
            }
            else
            {
#warning кинуть исключение с информацией если Fen неккоректен
                // var game = new ChessGame(entity.Fen);
            }

            game.Status = DataAccess.Helpers.GameStatus.Waiting;
            var sides           = game.Sides.ToList();
            var currentUserSide = sides.Where(s => s.Player == null).First();
            var opponent        = sides.Where(s => s.Player != null).First().Player;
            var currentUser     = await _currentUserProvider.GetCurrentUserAsync();

            currentUserSide.Player = mapper.Map <UserDTO>(currentUser);
            game.Sides             = new List <SideDTO>()
            {
                currentUserSide
            };

            GameFullDTO targetGame;
            var         gameRepo    = uow.GetRepository <Game>();
            var         createdGame = await gameRepo
                                      .GetOneAsync(g =>
                                                   g.Status == DataAccess.Helpers.GameStatus.Waiting &&
                                                   ((g.Sides.Count() == 1 && g.Sides.First().PlayerId == currentUser.Id)
                                                    ||
                                                    (g.Sides.Where(s => s.PlayerId == currentUser.Id).Count() > 0 && g.Sides.Where(s => s.Player == null).Count() > 0)));

            if (createdGame != null)
            {
                createdGame.Fen   = game.Fen;
                createdGame.Sides = new List <Side>()
                {
                    mapper.Map <Side>(currentUserSide)
                };
                targetGame = mapper.Map <GameFullDTO>(await gameRepo.UpdateAsync(createdGame));
                await uow.SaveAsync();
            }
            else
            {
                game.CreationDate = DateTime.Now;
                targetGame        = await base.AddAsync(game);
            }
            await _notificationService.InviteUserAsync(opponent.Uid, targetGame.Id);

            return(targetGame);
        }
        private async Task FillBaseEntityFields()
        {
            var user = await _currentUserProvider.GetCurrentUserAsync();

            string userFullName = user is null ? "Anonymous" : user.FullName;

            var now = DateTime.Now;

            var entityEntries = ChangeTracker
                                .Entries <BaseEntity>()
                                .ToList();

            entityEntries.ForEach(e =>
            {
                var entity = e.Entity;

                entity.LastUpdateDate = now;
                entity.LastUpdateBy   = userFullName;

                switch (e.State)
                {
                case EntityState.Added:
                    entity.DateCreated = now;
                    entity.CreatedBy   = userFullName;
                    break;

                case EntityState.Modified:
                    #region DateCreated and CreatedBy value should not be changed
                    entity.DateCreated = e.GetDatabaseValues().GetValue <DateTime>(BaseEntityFields.DateCreated);
                    entity.CreatedBy   = e.GetDatabaseValues().GetValue <string>(BaseEntityFields.CreatedBy);
                    #endregion
                    break;
                }
            });
        }
Example #4
0
        public async Task <UserProfileDTO> UpdateUserAsync(string email, UserUpdateDTO userUpdateDTO)
        {
            Preconditions.NotNullOrWhiteSpace(email, nameof(email));
            Preconditions.NotNull(userUpdateDTO, nameof(userUpdateDTO));

            var applicationUser = await _userManager.FindByEmailAsync(email);

            if (applicationUser is null)
            {
                throw new EntityNotFoundException(nameof(ApplicationUser));
            }

            var currentUser = await _currentUserProvider.GetCurrentUserAsync();

            if (currentUser is null)
            {
                throw new UnauthorizedAccessException();
            }

            if (!applicationUser.Equals(currentUser))
            {
                throw new InvalidOperationException();
            }

            applicationUser.FirstName      = userUpdateDTO.FirstName;
            applicationUser.LastName       = userUpdateDTO.LastName;
            applicationUser.ProfilePicture = userUpdateDTO.ProfilePicture;

            var identityResult = await _userManager.UpdateAsync(applicationUser);

            if (!identityResult.Succeeded)
            {
                return(null);
            }

            var userProfileDTO = _mapper.Map <UserProfileDTO>(applicationUser);

            userProfileDTO.Roles = await _roleManager.GetUserRolesAsync(applicationUser);

            return(userProfileDTO);
        }
        public async Task InsertAsync(BlogRatingDTO blogRatingDTO)
        {
            Preconditions.NotNull(blogRatingDTO, nameof(blogRatingDTO));

            var user = await _currentUserProvider.GetCurrentUserAsync();

            var currentRating = await _blogRatingRepository.GetByBlogIdAndUserIdAsync(blogRatingDTO.BlogID, user.Id);

            if (currentRating is null)
            {
                var blogRatingEntity = _mapper.Map <BlogRating>(blogRatingDTO);
                blogRatingEntity.ApplicationUserID = user.Id;
                blogRatingEntity.CreatedBy         = user.FullName;
                blogRatingEntity.LastUpdateBy      = user.FullName;
                await _blogRatingRepository.InsertAsync(blogRatingEntity);
            }
            else
            {
                currentRating.Rate         = blogRatingDTO.Rate;
                currentRating.LastUpdateBy = user.FullName;
                await _blogRatingRepository.UpdateAsync(currentRating);
            }
        }
Example #6
0
        public async Task <UserDTO> GetCurrentUser()
        {
            if (uow == null)
            {
                return(null);
            }

            var currentUser = await _currentUserProvider.GetCurrentUserAsync();

            if (currentUser == null)
            {
                return(null);
            }

            var currentDbUser = await uow.GetRepository <User>()
                                .GetOneAsync(u => string.Equals(u.Uid, currentUser.Uid));

            var currentUserDTO = mapper.Map <UserDTO>(currentUser);

            currentUserDTO.Uid = currentUser.Uid;
            currentUserDTO.Id  = currentDbUser.Id;
            return(currentUserDTO);
        }
Example #7
0
        public async Task <List <UserSettingModel> > GetUserSettings()
        {
            var user = await _userProvider.GetCurrentUserAsync();

            return(await _userSettingsRepository.GetUserSettings(user.Id));
        }