Exemplo n.º 1
0
        public async Task UpdateAsync(string id, AddOrEditClientDto dto)
        {
            var entity = await _clients.SingleOrDefaultAsync(x => x.Id.Equals(id));

            var clientConfiguration = await _clientConfiguration.Where(x => x.ClientId.Equals(id)).ToListAsync();

            _clientConfiguration.RemoveRange(clientConfiguration);

            AddClientConfiguration(entity);

            var user = await _user.SingleOrDefaultAsync(x => x.UserName.Equals($"{entity.SubDomain}@{entity.ClientId}"));

            var strategy = _context.Database.CreateExecutionStrategy();

            await strategy.ExecuteAsync(async() =>
            {
                using (var transaction = _context.Database.BeginTransaction())
                {
                    await _context.SaveChangesAsync();

                    await SetCacheTenantProfileAsync(entity, user);

                    await _proxyService.UpdateTenantAsync(entity.ClientId);

                    transaction.Commit();
                }
            });
        }
Exemplo n.º 2
0
        public async Task CreateAsync(AddOrEditClientDto dto)
        {
            string clientId = await CheckDuplicationClientIdAsync(dto.SubDomain);

            var entity = dto.ToEntity();

            entity.ClientId = clientId;

            entity.ClientUri = _tenantConfig.ParseClientUriBySubDomain(dto.SubDomain);

            _clients.Add(entity);

            AddClientConfiguration(entity);

            var user = new User {
                UserName = $"{dto.SubDomain}@{clientId}"
            };

            user.PasswordHash = _passwordHasher.HashPassword(user, "Admin@1234");

            _user.Add(user);

            _userClient.Add(new UserClient(user.Id, entity.Id));

            var strategy = _context.Database.CreateExecutionStrategy();

            await strategy.ExecuteAsync(async() =>
            {
                using var transaction = _context.Database.BeginTransaction();

                await _context.SaveChangesAsync();

                await SetCacheTenantProfileAsync(entity, user);

                await _proxyService.CreateTenantAsync(entity.ClientId);

                transaction.Commit();
            });
        }
        public async Task <IActionResult> Update(string id, [FromBody] AddOrEditClientDto dto)
        {
            await _clientService.UpdateAsync(id, dto);

            return(Success());
        }
        public async Task <IActionResult> Create([FromBody] AddOrEditClientDto dto)
        {
            await _clientService.CreateAsync(dto);

            return(Success());
        }
Exemplo n.º 5
0
 public static Client ToEntity(this AddOrEditClientDto dto)
 {
     return(Mapper.Map <Client>(dto));
 }