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
{
@ -6,7 +8,7 @@ public class ExtraFilterDto
public string Caption { get; set; }
public string Operator { get; set; }
public string DefaultValue { get; set; }
public ExtraFilterItemsDto[] Items { get; set; }
public List<ExtraFilterItemsDto> Items { get; set; }
}
public class ExtraFilterItemsDto

View file

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

View file

@ -308,18 +308,19 @@ public class ListFormSelectAppService : PlatformAppService, IListFormSelectAppSe
{
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);
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)
{
var newItems = new List<ExtraFilterItemsDto>();
// Yeni gelenleri ekle
foreach (var item in items)
{
if (item is IDictionary<string, object> dynamicItem)
@ -332,9 +333,11 @@ public class ListFormSelectAppService : PlatformAppService, IListFormSelectAppSe
}
}
// Listeyi tekrar array olarak ata
filter.Items = newItems.ToArray(); // burada direkt filter kullan
filter.Items = newItems;
}
// 🔑 yeniden atıyoruz ki setter çalışsın
result.GridOptions.ExtraFilterDto = filters.ToArray();
}
}
}

View file

@ -12262,6 +12262,12 @@
"en": "Extra Filters",
"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",
"key": "ListForms.ListFormEdit.ExtraFieldName",

View file

@ -10,7 +10,6 @@ public class ExtraFilter : ValueObject
public string Operator { get; set; }
public string DefaultValue { get; set; }
public string SqlQuery { get; set; }
public ExtraFilterItems[] Items { get; set; }
protected override IEnumerable<object> GetAtomicValues()
{
@ -19,12 +18,5 @@ public class ExtraFilter : ValueObject
yield return Operator;
yield return DefaultValue;
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'),
caption: string().required('Caption Required'),
operator: string().required('Operator Required'),
defaultValue: string().required('Value Required'),
defaultValue: string(),
sqlQuery: string().required('SQL Query Required'),
})
@ -154,6 +154,7 @@ function JsonRowOpDialogExtraFilter({
onSubmit={async (values, { setSubmitting }) => {
setSubmitting(true)
try {
delete values.items
const input: ListFormJsonRowDto = {
index: data.index,
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) => (
<option key={item.key} value={item.key}>
{item.value}