protected virtual async Task <TenantCacheItem> GetCacheItemAsync(Guid?id, string name) { var cacheKey = CalculateCacheKey(id, name); var cacheItem = await Cache.GetAsync(cacheKey, considerUow : true); if (cacheItem != null) { return(cacheItem); } if (id.HasValue) { using (CurrentTenant.Change(null)) //TODO: No need this if we can implement to define host side (or tenant-independent) entities! { var tenant = await TenantRepository.FindAsync(id.Value); return(await SetCacheAsync(cacheKey, tenant)); } } if (!name.IsNullOrWhiteSpace()) { using (CurrentTenant.Change(null)) //TODO: No need this if we can implement to define host side (or tenant-independent) entities! { var tenant = await TenantRepository.FindByNameAsync(name); return(await SetCacheAsync(cacheKey, tenant)); } } throw new AbpException("Both id and name can't be invalid."); }
public virtual async Task <TenantDto> GetAsync(string name) { var tenant = await TenantRepository.FindByNameAsync(name, false); if (tenant == null) { throw new UserFriendlyException(L["TenantNotFoundByName", name]); } return(ObjectMapper.Map <Tenant, TenantDto>(tenant)); }
public async Task <LookupTenantByNameResult> LookupByName(LookupTenantByNameInput input, CancellationToken ct) { var tenant = await TenantRepository.FindByNameAsync(input.TenancyName, false, ct); if (tenant == null) { return(new LookupTenantByNameResult(false)); } return(tenant.IsDeleted ? new LookupTenantByNameResult(false) : new LookupTenantByNameResult(true, tenant.Id)); }
public virtual async Task <TenantConfiguration> FindAsync(string name) { using (CurrentTenant.Change(null)) //TODO: No need this if we can implement to define host side (or tenant-independent) entities! { var tenant = await TenantRepository.FindByNameAsync(name); if (tenant == null) { return(null); } return(ObjectMapper.Map <Tenant, TenantConfiguration>(tenant)); } }
public async Task <RegisterTenantResult> Create(RegisterTenantInput input, CancellationToken ct) { using (DataFilter.Disable <IMultiTenant>()) { var existsTenant = await TenantRepository.FindByNameAsync(input.Name, false, ct); if (existsTenant != null) { throw new BusinessException(ScoringDomainErrorCodes.TenantAlreadyExists) .WithData("name", input.Name); } } // Create tenant var tenant = await TenantManager.CreateAsync(input.Name); tenant = await TenantRepository.InsertAsync(tenant, true, ct); IdentityUser adminIdentity; using (CurrentTenant.Change(tenant.Id)) { await DataSeeder.SeedAsync( new DataSeedContext(tenant.Id) .WithProperty("AdminEmail", input.AdminEmailAddress) .WithProperty("AdminPassword", input.AdminPassword) ); adminIdentity = await UserManager.FindByEmailAsync(input.AdminEmailAddress); } var adminTokenDto = new RegisterAdminTokenDto(await AuthJwtProvider.GenerateJwt(adminIdentity, ct)); var tenantDto = ObjectMapper.Map <Tenant, TenantDto>(tenant); return(new RegisterTenantResult(adminTokenDto, tenantDto)); }