コード例 #1
0
        public async Task <OutfitMember> UpdateCharacterOutfitMembership(Character character)
        {
            OutfitMember            outfitMember;
            CensusOutfitMemberModel membership;

            try
            {
                membership = await _censusCharacter.GetCharacterOutfitMembership(character.Id);
            }
            catch (CensusConnectionException)
            {
                return(null);
            }

            if (membership == null)
            {
                await RemoveOutfitMemberAsync(character.Id);

                return(null);
            }

            var outfit = await GetOutfitInternalAsync(membership.OutfitId, character);

            if (outfit == null)
            {
                _logger.LogError(84624, $"Unable to resolve outfit {membership.OutfitId} for character {character.Id}");
                return(null);
            }

            outfitMember = new OutfitMember
            {
                OutfitId        = membership.OutfitId,
                CharacterId     = membership.CharacterId,
                MemberSinceDate = membership.MemberSinceDate,
                Rank            = membership.Rank,
                RankOrdinal     = membership.RankOrdinal
            };

            outfitMember = await UpsertOutfitMemberAsync(outfitMember);

            return(outfitMember);
        }
コード例 #2
0
        private async Task <OutfitMember> UpsertOutfitMemberAsync(OutfitMember newEntity)
        {
            using (var factory = _dbContextHelper.GetFactory())
            {
                var dbContext = factory.GetDbContext();

                var storeEntity = await dbContext.OutfitMembers.AsNoTracking().FirstOrDefaultAsync(m => m.CharacterId == newEntity.CharacterId);

                if (storeEntity == null)
                {
                    await dbContext.AddAsync(newEntity);
                }
                else
                {
                    storeEntity = newEntity;
                    dbContext.Update(storeEntity);
                }
                await dbContext.SaveChangesAsync();
            }
            return(newEntity);
        }