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); }
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); }