private void ConfigureFilter() { var subdivisionsFilter = _filter.CreateParameterSet( "Подразделения", "subdivision", new ParametersFactory(UoW, (filters) => { SelectableEntityParameter <Subdivision> resultAlias = null; var query = UoW.Session.QueryOver <Subdivision>(); if (filters != null && filters.Any()) { foreach (var f in filters) { query.Where(f()); } } query.SelectList(list => list .Select(x => x.Id).WithAlias(() => resultAlias.EntityId) .Select(x => x.Name).WithAlias(() => resultAlias.EntityTitle) ); query.TransformUsing(Transformers.AliasToBean <SelectableEntityParameter <Subdivision> >()); return(query.List <SelectableParameter>()); }) ); var orderAuthorsFilter = _filter.CreateParameterSet( "Авторы заказов", "order_author", new ParametersFactory(UoW, (filters) => { SelectableEntityParameter <Employee> resultAlias = null; EmployeeWageParameter wageParameterAlias = null; WageParameterItem wageParameterItemAlias = null; var query = UoW.Session.QueryOver <Employee>() .JoinAlias(e => e.WageParameters, () => wageParameterAlias) .JoinAlias(() => wageParameterAlias.WageParameterItem, () => wageParameterItemAlias); if (filters != null && filters.Any()) { foreach (var f in filters) { var criterion = f(); if (criterion != null) { query.Where(criterion); } } } query.Where(e => e.Status == EmployeeStatus.IsWorking) .And(e => e.Category == EmployeeCategory.office) .And(() => wageParameterAlias.EndDate == null || wageParameterAlias.EndDate >= DateTime.Now) .And(() => wageParameterItemAlias.WageParameterItemType == WageParameterItemTypes.SalesPlan); var authorProjection = CustomProjections.Concat_WS( " ", Projections.Property <Employee>(x => x.LastName), Projections.Property <Employee>(x => x.Name), Projections.Property <Employee>(x => x.Patronymic) ); query.SelectList(list => list .Select(x => x.Id).WithAlias(() => resultAlias.EntityId) .Select(authorProjection).WithAlias(() => resultAlias.EntityTitle) ); query.TransformUsing(Transformers.AliasToBean <SelectableEntityParameter <Employee> >()); return(query.List <SelectableParameter>()); }) ); orderAuthorsFilter.AddFilterOnSourceSelectionChanged(subdivisionsFilter, () => { var selectedValues = subdivisionsFilter.GetSelectedValues().ToArray(); return(!selectedValues.Any() ? null : subdivisionsFilter.FilterType == SelectableFilterType.Include ? Restrictions.On <Employee>(x => x.Subdivision).IsIn(selectedValues) : Restrictions.On <Employee>(x => x.Subdivision).Not.IsIn(selectedValues)); } ); var viewModel = new SelectableParameterReportFilterViewModel(_filter); var filterWidget = new SelectableParameterReportFilterView(viewModel); vboxParameters.Add(filterWidget); filterWidget.Show(); }
private void ConfigureReport() { var geoGroups = _filter.CreateParameterSet( "Части города", "geographic_groups", new ParametersFactory(UoW, (filters) => { SelectableEntityParameter <GeographicGroup> resultAlias = null; var query = UoW.Session.QueryOver <GeographicGroup>(); if (filters != null && filters.Any()) { foreach (var f in filters) { query.Where(f()); } } query.SelectList(list => list .Select(x => x.Id).WithAlias(() => resultAlias.EntityId) .Select(x => x.Name).WithAlias(() => resultAlias.EntityTitle) ); query.TransformUsing(Transformers.AliasToBean <SelectableEntityParameter <GeographicGroup> >()); return(query.List <SelectableParameter>()); }) ); District districtAlias = null; DistrictsSet districtsSetAlias = null; GeographicGroup geoGroupAlias = null; var districtParameter = _filter.CreateParameterSet( "Районы", "districts", new ParametersFactory(UoW, (filters) => { SelectableEntityParameter <District> resultAlias = null; var query = UoW.Session.QueryOver(() => districtAlias) .JoinAlias(() => districtAlias.DistrictsSet, () => districtsSetAlias) .Left.JoinAlias(() => districtAlias.GeographicGroup, () => geoGroupAlias) .Where(() => districtsSetAlias.Status == DistrictsSetStatus.Active); if (filters != null && filters.Any()) { foreach (var f in filters) { var filterCriterion = f(); if (filterCriterion != null) { query.Where(filterCriterion); } } } query.SelectList(list => list .Select(() => districtAlias.Id).WithAlias(() => resultAlias.EntityId) .Select(() => districtAlias.DistrictName).WithAlias(() => resultAlias.EntityTitle) ); var result = query.TransformUsing(Transformers.AliasToBean <SelectableEntityParameter <District> >()) .List <SelectableEntityParameter <District> >(); foreach (var parameter in result) { parameter.EntityTitle = $"{parameter.EntityId} {parameter.EntityTitle}"; } return(result.Cast <SelectableParameter>().ToList()); }) ); districtParameter.AddFilterOnSourceSelectionChanged(geoGroups, () => { var selectedValues = geoGroups.GetSelectedValues(); if (!selectedValues.Any()) { return(null); } return(Restrictions.On(() => geoGroupAlias.Id).IsIn(selectedValues.ToArray())); }); var viewModel = new SelectableParameterReportFilterViewModel(_filter); var filterWidget = new SelectableParameterReportFilterView(viewModel); vboxSelectableFilter.Add(filterWidget); filterWidget.Show(); }
private void ConfigureReport() { treeviewDeliveryIntervals.ColumnsConfig = FluentColumnsConfig <Time> .Create() .AddColumn("").AddTextRenderer(x => $"{x.Value:hh\\:mm}") .Finish(); treeviewDeliveryIntervals.ItemsDataSource = Times; treeviewDeliveryIntervals.HeadersVisible = false; var geoGroups = filter.CreateParameterSet( "Части города", "geographic_groups", new ParametersFactory(UoW, (filters) => { SelectableEntityParameter <GeographicGroup> resultAlias = null; var query = UoW.Session.QueryOver <GeographicGroup>(); if (filters != null && filters.Any()) { foreach (var f in filters) { query.Where(f()); } } query.SelectList(list => list .Select(x => x.Id).WithAlias(() => resultAlias.EntityId) .Select(x => x.Name).WithAlias(() => resultAlias.EntityTitle) ); query.TransformUsing(Transformers.AliasToBean <SelectableEntityParameter <GeographicGroup> >()); return(query.List <SelectableParameter>()); }) ); District districtAlias = null; GeographicGroup geoGroupAlias = null; var districtParameter = filter.CreateParameterSet( "Районы", "districts", new ParametersFactory(UoW, (filters) => { SelectableEntityParameter <District> resultAlias = null; var query = UoW.Session.QueryOver <District>(() => districtAlias) .Left.JoinAlias(() => districtAlias.GeographicGroup, () => geoGroupAlias); if (filters != null && filters.Any()) { foreach (var f in filters) { var filterCriterion = f(); if (filterCriterion != null) { query.Where(filterCriterion); } } } query.SelectList(list => list .Select(() => districtAlias.Id).WithAlias(() => resultAlias.EntityId) .Select(() => districtAlias.DistrictName).WithAlias(() => resultAlias.EntityTitle) ); var result = query.TransformUsing(Transformers.AliasToBean <SelectableEntityParameter <District> >()) .List <SelectableEntityParameter <District> >(); foreach (var parameter in result) { parameter.EntityTitle = $"{parameter.EntityId} {parameter.EntityTitle}"; } return(result.Cast <SelectableParameter>().ToList()); }) ); districtParameter.AddFilterOnSourceSelectionChanged(geoGroups, () => { var selectedValues = geoGroups.GetSelectedValues(); if (!selectedValues.Any()) { return(null); } return(Restrictions.On(() => geoGroupAlias.Id).IsIn(selectedValues.ToArray())); }); var viewModel = new SelectableParameterReportFilterViewModel(filter); var filterWidget = new SelectableParameterReportFilterView(viewModel); vboxParameters.Add(filterWidget); filterWidget.Show(); }