diff --git a/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/ExtraFilterDto.cs b/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/ExtraFilterDto.cs index 20ef3cd8..71e95a05 100644 --- a/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/ExtraFilterDto.cs +++ b/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/ExtraFilterDto.cs @@ -11,6 +11,6 @@ public class ExtraFilterDto public class ExtraFilterItemsDto { + public string Key { get; set; } public string Value { get; set; } - public string Text { get; set; } } diff --git a/api/src/Kurs.Platform.Application/ListForms/ListFormSelectAppService.cs b/api/src/Kurs.Platform.Application/ListForms/ListFormSelectAppService.cs index 71a3a3c2..190927da 100644 --- a/api/src/Kurs.Platform.Application/ListForms/ListFormSelectAppService.cs +++ b/api/src/Kurs.Platform.Application/ListForms/ListFormSelectAppService.cs @@ -301,6 +301,45 @@ public class ListFormSelectAppService : PlatformAppService, IListFormSelectAppSe } } + if (!listForm.ExtraFilterJson.IsNullOrWhiteSpace()) + { + var extraFilterList = JsonSerializer.Deserialize(listForm.ExtraFilterJson) ?? []; + foreach (var extraFilter in extraFilterList) + { + if (!string.IsNullOrWhiteSpace(extraFilter.SqlQuery)) + { + var (dynamicDataRepository, connectionString, dataSourceType) = await dynamicDataManager.GetAsync(listForm.IsTenant, listForm.DataSourceCode); + + var items = await dynamicDataRepository.QueryAsync(extraFilter.SqlQuery, connectionString); + if (items != null) + { + var filter = result.GridOptions.ExtraFilterDto.FirstOrDefault(a => a.FieldName == extraFilter.FieldName); + + if (filter != null) + { + var newItems = new List(); + + // Yeni gelenleri ekle + foreach (var item in items) + { + if (item is IDictionary dynamicItem) + { + newItems.Add(new ExtraFilterItemsDto + { + Key = dynamicItem.ContainsKey("Key") ? dynamicItem["Key"]?.ToString() : null, + Value = dynamicItem.ContainsKey("Value") ? dynamicItem["Value"]?.ToString() : null + }); + } + } + + // Listeyi tekrar array olarak ata + filter.Items = newItems.ToArray(); // burada direkt filter kullan + } + } + } + } + } + return result; } diff --git a/ui/dev-dist/sw.js b/ui/dev-dist/sw.js index c428ae47..529c4b75 100644 --- a/ui/dev-dist/sw.js +++ b/ui/dev-dist/sw.js @@ -82,7 +82,7 @@ define(['./workbox-a959eb95'], (function (workbox) { 'use strict'; "revision": "3ca0b8505b4bec776b69afdba2768812" }, { "url": "/index.html", - "revision": "0.0c8gpen89r8" + "revision": "0.ubgloq1q818" }], {}); workbox.cleanupOutdatedCaches(); workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("/index.html"), { diff --git a/ui/src/proxy/form/models.ts b/ui/src/proxy/form/models.ts index d2573ca2..8066c248 100644 --- a/ui/src/proxy/form/models.ts +++ b/ui/src/proxy/form/models.ts @@ -735,8 +735,8 @@ export interface ExtraFilterDto { } export interface ExtraFilterItemsDto { + key: string value: string - text: string } export interface ExtraFilterEditDto extends ExtraFilterDto { diff --git a/ui/src/views/admin/listForm/edit/json-row-operations/JsonRowOpDialogExtraFilter.tsx b/ui/src/views/admin/listForm/edit/json-row-operations/JsonRowOpDialogExtraFilter.tsx index 7e5772fd..8989b45e 100644 --- a/ui/src/views/admin/listForm/edit/json-row-operations/JsonRowOpDialogExtraFilter.tsx +++ b/ui/src/views/admin/listForm/edit/json-row-operations/JsonRowOpDialogExtraFilter.tsx @@ -260,7 +260,7 @@ function JsonRowOpDialogExtraFilter({ diff --git a/ui/src/views/list/GridExtraFilterToolbar.tsx b/ui/src/views/list/GridExtraFilterToolbar.tsx index c19344bf..011a05b4 100644 --- a/ui/src/views/list/GridExtraFilterToolbar.tsx +++ b/ui/src/views/list/GridExtraFilterToolbar.tsx @@ -29,8 +29,8 @@ export function GridExtraFilterToolbar({ > {fs.items.map((item: any) => ( - ))}