Exemplo n.º 1
0
    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.");
    }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 4
0
        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));
        }