public async Task CreateApiResourceAsync(MApiResourceDto dto)
        {
            var resource = _mapper.Map <ApiResource>(dto);
            await DbContext.ApiResources.AddAsync(resource);

            await DbContext.SaveChangesAsync();

            EventDispatcher.DispatchCreatedEvent("IDPApiResources", _mapper.Map <MApiResourceListDto>(resource));
        }
        public async Task <IActionResult> UpdateApiResource(MApiResourceDto dto)
        {
            var resourceInDB = await ApiResourcesService.GetApiResourceAsync(dto.Id);

            var secrets    = resourceInDB.Secrets.ToDictionary(sec => sec.Id, sec => sec);
            var newSecrets = new List <ApiResourceSecret>();

            foreach (var dtoSecret in dto.Secrets)
            {
                ApiResourceSecret sec = null;
                if (dtoSecret.Id != Guid.Empty)
                {
                    sec = secrets[dtoSecret.Id];
                    if (sec.Description != dtoSecret.Description)
                    {
                        sec.Description = dtoSecret.Description;
                    }

                    if (sec.Expiration != dtoSecret.Expiration)
                    {
                        sec.Expiration = dtoSecret.Expiration;
                    }
                }
                else
                {
                    dtoSecret.Value = dtoSecret.Value.ToSha512();
                    sec             = _mapper.Map <ApiResourceSecret>(dtoSecret);
                }

                if (sec != null)
                {
                    newSecrets.Add(sec);
                }
            }

            var updated = _mapper.Map(dto, resourceInDB);

            updated.Secrets = newSecrets;

            await ApiResourcesService.UpdateApiResourceAsync(updated);

            return(Ok());
        }
        public async Task <IActionResult> CreateApiResource(MApiResourceDto dto)
        {
            await ApiResourcesService.CreateApiResourceAsync(dto);

            return(Ok());
        }