public async Task <ConstructedTeam> CreateConstructedTeam(ConstructedTeam constructedTeam)
        {
            if (!IsValidConstructedTeamName(constructedTeam.Name))
            {
                return(null);
            }

            if (!IsValidConstructedTeamAlias(constructedTeam.Alias))
            {
                return(null);
            }

            using (await _constructedTeamLock.WaitAsync($"{constructedTeam.Id}"))
            {
                try
                {
                    using var factory = _dbContextHelper.GetFactory();
                    var dbContext = factory.GetDbContext();

                    dbContext.ConstructedTeams.Add(constructedTeam);

                    await dbContext.SaveChangesAsync();

                    await SetUpConstructedTeamsMap();

                    return(constructedTeam);
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex.ToString());

                    return(null);
                }
            }
        }
        public async Task <bool> UpdateConstructedTeamInfo(ConstructedTeam teamUpdate)
        {
            var updateId       = teamUpdate.Id;
            var updateName     = teamUpdate.Name;
            var updateAlias    = teamUpdate.Alias;
            var updateIsHidden = teamUpdate.IsHiddenFromSelection;

            if (!IsValidConstructedTeamName(updateName))
            {
                _logger.LogError($"Error update Constructed Team {updateId} info: invalid team name");
                return(false);
            }

            if (!IsValidConstructedTeamAlias(updateAlias))
            {
                _logger.LogError($"Error update Constructed Team {updateId} info: invalid team alias");
                return(false);
            }

            using (await _constructedTeamLock.WaitAsync($"{updateId}"))
            {
                try
                {
                    using var factory = _dbContextHelper.GetFactory();
                    var dbContext = factory.GetDbContext();

                    var storeEntity = await GetConstructedTeam(updateId, true);

                    if (storeEntity == null)
                    {
                        return(false);
                    }

                    var oldName     = storeEntity.Name;
                    var oldAlias    = storeEntity.Alias;
                    var oldIsHidden = storeEntity.IsHiddenFromSelection;

                    storeEntity.Name  = updateName;
                    storeEntity.Alias = updateAlias;
                    storeEntity.IsHiddenFromSelection = updateIsHidden;

                    dbContext.ConstructedTeams.Update(storeEntity);

                    await dbContext.SaveChangesAsync();

                    await SetUpConstructedTeamsMap();

                    var message = new ConstructedTeamInfoChangeMessage(storeEntity, oldName, oldAlias, oldIsHidden);
                    _messageService.BroadcastConstructedTeamInfoChangeMessage(message);

                    return(true);
                }
                catch (Exception ex)
                {
                    _logger.LogError($"Error update Constructed Team {updateId} info: {ex}");
                    return(false);
                }
            }
        }
 private ConstructedTeamFormInfo ConvertToTeamFormInfo(ConstructedTeam constructedTeam)
 {
     return(new ConstructedTeamFormInfo
     {
         Id = constructedTeam.Id,
         Name = constructedTeam.Name,
         Alias = constructedTeam.Alias,
         IsHiddenFromSelection = constructedTeam.IsHiddenFromSelection
     });
 }
        public TeamConstructedTeamChangeMessage(int teamOrdinal, ConstructedTeam constructedTeam, int factionId, TeamChangeType changeType, int?playersFound = null)
        {
            TeamOrdinal     = teamOrdinal;
            ConstructedTeam = constructedTeam;
            FactionId       = factionId;
            ChangeType      = changeType;

            PlayersFound = playersFound;

            Info = GetInfoMessage();
        }
Exemple #5
0
        public ConstructedTeamInfoChangeMessage(ConstructedTeam constructedTeam, string oldName, string oldAlias, bool oldIsHidden)
        {
            ConstructedTeam = constructedTeam;

            NewName     = ConstructedTeam.Name;
            NewAlias    = ConstructedTeam.Alias;
            NewIsHidden = ConstructedTeam.IsHiddenFromSelection;

            OldName     = oldName;
            OldAlias    = oldAlias;
            OldIsHidden = oldIsHidden;


            Info = $"Info changed for Constructed Team {ConstructedTeam.Id}: [{OldAlias}] {OldName} {OldIsHidden.ToString().ToUpper()} => [{NewAlias}] {NewName} {NewIsHidden.ToString().ToUpper()}";
        }