ExtraFilterDto Items kısmı çalıştırıldı

This commit is contained in:
Sedat ÖZTÜRK 2025-09-18 09:17:20 +03:00
parent 8c11fedfc9
commit fef0623349
7 changed files with 23 additions and 19 deletions

View file

@ -1,4 +1,6 @@
namespace Kurs.Platform.ListForms; using System.Collections.Generic;
namespace Kurs.Platform.ListForms;
public class ExtraFilterDto public class ExtraFilterDto
{ {
@ -6,7 +8,7 @@ public class ExtraFilterDto
public string Caption { get; set; } public string Caption { get; set; }
public string Operator { get; set; } public string Operator { get; set; }
public string DefaultValue { get; set; } public string DefaultValue { get; set; }
public ExtraFilterItemsDto[] Items { get; set; } public List<ExtraFilterItemsDto> Items { get; set; }
} }
public class ExtraFilterItemsDto public class ExtraFilterItemsDto

View file

@ -26,8 +26,8 @@ public class ListFormAutoMapperProfile : Profile
CreateMap<SubFormRelationDto, SubFormRelation>().ReverseMap(); CreateMap<SubFormRelationDto, SubFormRelation>().ReverseMap();
CreateMap<WidgetEditDto, Widget>().ReverseMap(); CreateMap<WidgetEditDto, Widget>().ReverseMap();
CreateMap<ExtraFilterDto, ExtraFilter>().ReverseMap(); CreateMap<ExtraFilterDto, ExtraFilter>().ReverseMap();
CreateMap<ExtraFilterItemsDto, ExtraFilterItems>().ReverseMap(); CreateMap<ExtraFilterEditDto, ExtraFilterDto>()
CreateMap<ExtraFilterEditDto, ExtraFilterDto>().ReverseMap(); .ForMember(dest => dest.Items, opt => opt.MapFrom(src => src.Items));
CreateMap<ExtraFilterEditDto, ExtraFilter>().ReverseMap(); CreateMap<ExtraFilterEditDto, ExtraFilter>().ReverseMap();
CreateMap<ListFormImport, ListFormsImportDto>(); CreateMap<ListFormImport, ListFormsImportDto>();

View file

@ -308,18 +308,19 @@ public class ListFormSelectAppService : PlatformAppService, IListFormSelectAppSe
{ {
if (!string.IsNullOrWhiteSpace(extraFilter.SqlQuery)) if (!string.IsNullOrWhiteSpace(extraFilter.SqlQuery))
{ {
var (dynamicDataRepository, connectionString, dataSourceType) = await dynamicDataManager.GetAsync(listForm.IsTenant, listForm.DataSourceCode); var (dynamicDataRepository, connectionString, dataSourceType) =
await dynamicDataManager.GetAsync(listForm.IsTenant, listForm.DataSourceCode);
var items = await dynamicDataRepository.QueryAsync(extraFilter.SqlQuery, connectionString); var items = await dynamicDataRepository.QueryAsync(extraFilter.SqlQuery, connectionString);
if (items != null) if (items != null)
{ {
var filter = result.GridOptions.ExtraFilterDto.FirstOrDefault(a => a.FieldName == extraFilter.FieldName); var filters = result.GridOptions.ExtraFilterDto.ToList();
var filter = filters.FirstOrDefault(a => a.FieldName == extraFilter.FieldName);
if (filter != null) if (filter != null)
{ {
var newItems = new List<ExtraFilterItemsDto>(); var newItems = new List<ExtraFilterItemsDto>();
// Yeni gelenleri ekle
foreach (var item in items) foreach (var item in items)
{ {
if (item is IDictionary<string, object> dynamicItem) if (item is IDictionary<string, object> dynamicItem)
@ -332,9 +333,11 @@ public class ListFormSelectAppService : PlatformAppService, IListFormSelectAppSe
} }
} }
// Listeyi tekrar array olarak ata filter.Items = newItems;
filter.Items = newItems.ToArray(); // burada direkt filter kullan
} }
// 🔑 yeniden atıyoruz ki setter çalışsın
result.GridOptions.ExtraFilterDto = filters.ToArray();
} }
} }
} }

View file

@ -12262,6 +12262,12 @@
"en": "Extra Filters", "en": "Extra Filters",
"tr": "Ekstra Filtreler" "tr": "Ekstra Filtreler"
}, },
{
"resourceName": "Platform",
"key": "ListForms.ListFormEdit.ExtraFiltersDescription",
"en": "You can create extra filter fields on the Grid.",
"tr": "Grid üzerinde ek filtre alanları oluşturabilirsiniz."
},
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "ListForms.ListFormEdit.ExtraFieldName", "key": "ListForms.ListFormEdit.ExtraFieldName",

View file

@ -10,7 +10,6 @@ public class ExtraFilter : ValueObject
public string Operator { get; set; } public string Operator { get; set; }
public string DefaultValue { get; set; } public string DefaultValue { get; set; }
public string SqlQuery { get; set; } public string SqlQuery { get; set; }
public ExtraFilterItems[] Items { get; set; }
protected override IEnumerable<object> GetAtomicValues() protected override IEnumerable<object> GetAtomicValues()
{ {
@ -19,12 +18,5 @@ public class ExtraFilter : ValueObject
yield return Operator; yield return Operator;
yield return DefaultValue; yield return DefaultValue;
yield return SqlQuery; yield return SqlQuery;
yield return Items;
} }
} }
public class ExtraFilterItems
{
public string Value { get; set; }
public string Text { get; set; }
}

View file

@ -31,7 +31,7 @@ const schema = object().shape({
fieldName: string().required('Field Name Required'), fieldName: string().required('Field Name Required'),
caption: string().required('Caption Required'), caption: string().required('Caption Required'),
operator: string().required('Operator Required'), operator: string().required('Operator Required'),
defaultValue: string().required('Value Required'), defaultValue: string(),
sqlQuery: string().required('SQL Query Required'), sqlQuery: string().required('SQL Query Required'),
}) })
@ -154,6 +154,7 @@ function JsonRowOpDialogExtraFilter({
onSubmit={async (values, { setSubmitting }) => { onSubmit={async (values, { setSubmitting }) => {
setSubmitting(true) setSubmitting(true)
try { try {
delete values.items
const input: ListFormJsonRowDto = { const input: ListFormJsonRowDto = {
index: data.index, index: data.index,
fieldName: data.tabName, fieldName: data.tabName,

View file

@ -27,7 +27,7 @@ export function GridExtraFilterToolbar({
) )
} }
> >
<option value="">Seçiniz</option> {!fs.defaultValue && <option value="">Seçiniz</option>}
{fs.items.map((item: any) => ( {fs.items.map((item: any) => (
<option key={item.key} value={item.key}> <option key={item.key} value={item.key}>
{item.value} {item.value}