public IActionResult UpdateTestClient(TestClientViewModel clientViewModel)
        {
            if (!ModelState.IsValid)
            {
                _trackTelemetry.TrackEvent(EventName.UpdateTestClient, EventType.Action, EventStatus.Fail);
                return(View());
            }

            var apiScopes = clientViewModel.ApiScopes.Split(" ").Select(apiScope => apiScope.Trim()).ToList();

            var clientEntity = _configurationDbContext.Clients.AsQueryable()
                               .Include(c => c.AllowedScopes)
                               .Single(c => c.Id == clientViewModel.Id);

            clientEntity.ClientId      = clientViewModel.ClientId;
            clientEntity.ClientName    = clientViewModel.ClientName;
            clientEntity.AllowedScopes = apiScopes.Select(scope => new ClientScope
            {
                Client = clientEntity,
                Scope  = scope
            }).ToList();

            _configurationDbContext.Clients.Update(clientEntity);
            _configurationDbContext.SaveChanges();

            _trackTelemetry.TrackEvent(EventName.UpdateTestClient, EventType.Action, EventStatus.Success);

            return(RedirectToAction(nameof(Index)));
        }
        public IActionResult AddTestClient(TestClientViewModel clientViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var apiScopes = clientViewModel.ApiScopes.Split(" ").Select(apiScope => apiScope.Trim()).ToArray();

            var client = new ClientModel
            {
                ClientId          = clientViewModel.ClientId,
                ClientName        = clientViewModel.ClientName,
                AllowedGrantTypes = GrantTypes.ResourceOwnerPasswordAndClientCredentials,

                ClientSecrets =
                {
                    new SecretModel(clientViewModel.ClientSecret.Sha256())
                },

                AllowedScopes = apiScopes
            };

            _configurationDbContext.Clients.Add(client.ToEntity());
            _configurationDbContext.SaveChanges();

            _trackTelemetry.TrackEvent(EventName.AddTestClient, EventType.Action, EventStatus.Success);
            return(RedirectToAction(nameof(Index)));
        }