public async Task <RedirectUriEntity> UpsertEntityAsync( string downstreamOIDCConfigurationId, string oidcClientConfigurationId, RedirectUriEntity entity) { var utcNow = DateTime.UtcNow; RedirectUriEntity result = null; var oidcClientConfiguration = (from item in _context.OIDCClientConfigurations where item.DownstreamOIDCConfigurationFK == downstreamOIDCConfigurationId && item.Id == oidcClientConfigurationId select item).FirstOrDefault(); if (oidcClientConfiguration == null) { throw new Exception("Item not present"); } var entityByNameInDb = (from item in oidcClientConfiguration.RedirectUris where item.RedirectUri == entity.RedirectUri select item).FirstOrDefault(); if (entityByNameInDb != null) { result = entityByNameInDb; // already here, so lets delete the entity that is trying to chang into this one. var entityInDb = (from item in oidcClientConfiguration.RedirectUris where item.Id == entity.Id select item).FirstOrDefault(); if (entityInDb != null) { oidcClientConfiguration.RedirectUris.Remove(entityInDb); } } else { var entityInDb = (from item in oidcClientConfiguration.RedirectUris where item.Id == entity.Id select item).FirstOrDefault(); if (entityInDb != null) { result = entityInDb; // update entityInDb.Updated = utcNow; _entityFrameworkMapperAccessor.MapperIgnoreBaseAndForeignTables.Map(entity, entityInDb); } else { // brand new entity.Id = GuidS; entity.Created = utcNow; entity.Updated = utcNow; entity.OIDCClientConfigurationFK = oidcClientConfigurationId; oidcClientConfiguration.RedirectUris.Add(entity); result = entity; } } await _context.SaveChangesAsync(); return(result); }
public async Task DeleteEntityAsync(RedirectUriEntity entity) { var entityInDb = _context.RedirectUris.Find(entity.Id); if (entityInDb != null) { _context.RedirectUris.Remove(entityInDb); await _context.SaveChangesAsync(); } }