コード例 #1
0
ファイル: SquadResolver.cs プロジェクト: vnorr/diffen
 public Models.Squad.Player Convert(Database.Entities.User.FavoritePlayer source, Models.Squad.Player destination, ResolutionContext context)
 {
     return(new Models.Squad.Player
     {
         Id = source.PlayerId,
         FirstName = source.Player.FirstName,
         LastName = source.Player.LastName,
         KitNumber = source.Player.KitNumber,
         IsOutOnLoan = source.Player.IsOutOnLoan,
         IsHereOnLoan = source.Player.IsHereOnLoan,
         IsCaptain = source.Player.IsCaptain,
         IsSold = source.Player.IsSold
     });
 }
コード例 #2
0
        public async Task <List <Result> > UpdateUserAsync(string userId, Models.User.CRUD.User user)
        {
            // user is fetched with user manager due to issue with entity framework (entity is already being tracked...)
            var currentUser = await _userManager.Users.Include(x => x.NickNames).Include(x => x.FavoritePlayer).Include(x => x.Region).ThenInclude(x => x.Region).FirstOrDefaultAsync(x => x.Id == userId);

            var currentNick = currentUser.NickNames.Current();

            var results = new List <Result>();

            if (!string.IsNullOrEmpty(currentNick) && !currentNick.Equals(user.NickName))
            {
                if (!await _dbClient.NickNameIsAlreadyTakenByOtherUserAsync(user.NickName))
                {
                    var nickName = new Database.Entities.User.NickName
                    {
                        UserId  = userId,
                        Nick    = user.NickName,
                        Created = DateTime.Now
                    };
                    results.Update(await _dbClient.CreateNewNickNameForUserAsync(nickName), ResultMessages.CreateNick);
                }
            }
            if (currentUser.Bio == null && !string.IsNullOrEmpty(user.Bio) || currentUser.Bio != null && !currentUser.Bio.Equals(user.Bio))
            {
                results.Update(await _dbClient.UpdateUserBioAsync(userId, user.Bio), ResultMessages.UpdateBio);
            }

            if (!string.IsNullOrEmpty(user.Region))
            {
                if (currentUser.Region?.Region?.Name != user.Region)
                {
                    results.Update(await _dbClient.UpdateRegionForUserAsync(userId, user.Region), ResultMessages.UpdateRegion);
                }
            }
            else
            {
                if (await _dbClient.UserHasRegionSelectedAsync(userId))
                {
                    results.Update(await _dbClient.DeleteRegionForUserAsync(userId), ResultMessages.UpdateRegion);
                }
            }

            if (string.IsNullOrEmpty(user.SecludeUntil) && currentUser.SecludedUntil != null)
            {
                currentUser.SecludedUntil = null;
                results.Update(await _dbClient.UpdateUserAsync(currentUser), ResultMessages.RemoveSeclude);
            }
            else
            {
                if (!string.IsNullOrEmpty(user.SecludeUntil))
                {
                    if (Convert.ToDateTime(user.SecludeUntil).Date != Convert.ToDateTime(currentUser.SecludedUntil).Date)
                    {
                        currentUser.SecludedUntil = Convert.ToDateTime(user.SecludeUntil);
                        results.Update(await _dbClient.UpdateUserAsync(currentUser), ResultMessages.CreateSeclude);
                    }
                }
            }

            var currentRoles = await _userManager.GetRolesAsync(currentUser);

            if (!currentRoles.SequenceEqual(user.Roles))
            {
                var removeResult = await _userManager.RemoveFromRolesAsync(currentUser, currentRoles);

                var addResult = await _userManager.AddToRolesAsync(currentUser, user.Roles);

                results.Update(removeResult.Succeeded && addResult.Succeeded, ResultMessages.UpdateRoles);
            }

            if (currentUser.FavoritePlayer != null)
            {
                if (currentUser.FavoritePlayer.PlayerId == user.FavoritePlayerId)
                {
                    return(results);
                }
                if (await _dbClient.UserHasAFavoritePlayerSelectedAsync(userId))
                {
                    results.Update(await _dbClient.DeleteFavoritePlayerConnectionToUserAsync(userId), ResultMessages.RemovedFavoritePlayer);
                }

                if (user.FavoritePlayerId <= 0)
                {
                    return(results);
                }
                var favoritePlayer = new Database.Entities.User.FavoritePlayer
                {
                    PlayerId = user.FavoritePlayerId,
                    UserId   = userId
                };
                results.Update(await _dbClient.ConnectFavoritePlayerToUserAsync(favoritePlayer), ResultMessages.CreateFavoritePlayer);
            }
            else
            {
                if (user.FavoritePlayerId <= 0)
                {
                    return(results);
                }
                var favoritePlayer = new Database.Entities.User.FavoritePlayer
                {
                    PlayerId = user.FavoritePlayerId,
                    UserId   = userId
                };
                results.Update(await _dbClient.ConnectFavoritePlayerToUserAsync(favoritePlayer), ResultMessages.CreateFavoritePlayer);
            }
            return(results);
        }