Beispiel #1
0
        /// <summary>
        /// Multi-tenant update/save entity
        /// </summary>
        protected async Task SaveTenantMappings(Device device, DeviceModel model)
        {
            device.LimitedToTenants = model.SelectedTenantIds.Any();

            var existingTenantMappings = await _tenantMappingService.GetTenantMappings(device);

            var tenants = await _tenantService.GetTenantsAsync();

            foreach (var tenant in tenants)
            {
                if (model.SelectedTenantIds.Contains(tenant.Id))
                {
                    //new tenant
                    if (existingTenantMappings.Count(tm => tm.TenantId == tenant.Id) == 0)
                    {
                        await _tenantMappingService.InsertTenantMapping(device, tenant.Id);
                    }
                }
                else
                {
                    //remove tenant
                    var tenantMappingToDelete = existingTenantMappings.FirstOrDefault(tm => tm.TenantId == tenant.Id);
                    if (tenantMappingToDelete != null)
                    {
                        await _tenantMappingService.DeleteTenantMapping(tenantMappingToDelete);
                    }
                }
            }
        }
Beispiel #2
0
        protected async Task UpdateTenantMappings <TEntity>(TEntity entity, List <int> passedTenantIds)
            where TEntity : BaseEntity, ITenantMappingSupported
        {
            if (passedTenantIds == null)
            {
                return;
            }

            entity.LimitedToTenants = passedTenantIds.Any();

            var existingTenantMappings = await TenantMappingService.GetTenantMappings(entity);

            var tenants = await TenantService.GetTenantsAsync();

            foreach (var tenant in tenants)
            {
                if (passedTenantIds.Contains(tenant.Id))
                {
                    //new tenant
                    if (existingTenantMappings.Count(sm => sm.TenantId == tenant.Id) == 0)
                    {
                        await TenantMappingService.InsertTenantMapping(entity, tenant.Id);
                    }
                }
                else
                {
                    //remove tenant
                    var tenantMappingToDelete = existingTenantMappings.FirstOrDefault(sm => sm.TenantId == tenant.Id);
                    if (tenantMappingToDelete != null)
                    {
                        await TenantMappingService.DeleteTenantMapping(tenantMappingToDelete);
                    }
                }
            }
        }