Пример #1
0
        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();
        }
Пример #3
0
        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();
        }