private void ApplyTenants(TQuery original, DiagnosticsQueryViewModel vm)
 {
     if (options.Value.TenantLinkMode == LinkMode.MultiSelect)
     {
         vm.Tenants = (from t in original.Tenants select t.TenantId).ToArray();
     }
     else
     {
         vm.Tenants = Array.Empty <int>();
     }
 }
        public async Task <IActionResult> Create([DataSourceRequest] DataSourceRequest request, DiagnosticsQueryViewModel viewModel)
        {
            var model = new TQuery();

            if (ModelState.IsValid)
            {
/* Nicht gemergte Änderung aus Projekt "ITVComponents.WebCoreToolkit.Net.TelerikUi (netcoreapp3.1)"
 * Vor:
 *              await this.TryUpdateModelAsync<DiagnosticsQueryViewModel,DiagnosticsQuery>(model);
 * Nach:
 *              await this.TryUpdateModelAsync<DiagnosticsQueryViewModel, DiagnosticsQueryDefinition>(model);
 */
                await this.TryUpdateModelAsync <DiagnosticsQueryViewModel, TQuery>(model);

                db.DiagnosticsQueries.Add(model);
                SetTenants(viewModel.Tenants, model);
                await db.SaveChangesAsync();
            }

            return(Json(await new[] { model.ToViewModel <TQuery, DiagnosticsQueryViewModel>(ApplyTenants) }.ToDataSourceResultAsync(request, ModelState)));
        }
        public async Task <IActionResult> Update([DataSourceRequest] DataSourceRequest request, DiagnosticsQueryViewModel viewModel)
        {
            var model = db.DiagnosticsQueries.First(n => n.DiagnosticsQueryId == viewModel.DiagnosticsQueryId);

            if (ModelState.IsValid)
            {
                await this.TryUpdateModelAsync <DiagnosticsQueryViewModel, TQuery>(model, "", m => { return(m.ElementType == null); });

                SetTenants(viewModel.Tenants, model);
                await db.SaveChangesAsync();
            }

            return(Json(await new[] { model.ToViewModel <TQuery, DiagnosticsQueryViewModel>(ApplyTenants) }.ToDataSourceResultAsync(request, ModelState)));
        }
        public async Task <IActionResult> Destroy([DataSourceRequest] DataSourceRequest request, DiagnosticsQueryViewModel viewModel)
        {
            var model = db.DiagnosticsQueries.First(n => n.DiagnosticsQueryId == viewModel.DiagnosticsQueryId);

            if (ModelState.IsValid)
            {
                db.TenantDiagnosticsQueries.RemoveRange(model.Tenants);
                db.DiagnosticsQueryParameters.RemoveRange(model.Parameters);
                db.DiagnosticsQueries.Remove(model);
                await db.SaveChangesAsync();
            }

            return(Json(await new[] { viewModel }.ToDataSourceResultAsync(request, ModelState)));
        }