예제 #1
0
        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);
        }
예제 #2
0
        public async Task DeleteEntityAsync(RedirectUriEntity entity)
        {
            var entityInDb = _context.RedirectUris.Find(entity.Id);

            if (entityInDb != null)
            {
                _context.RedirectUris.Remove(entityInDb);
                await _context.SaveChangesAsync();
            }
        }