Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static QueryOver<Partner, Partner> ApplyFilterByPartnerType(this QueryOver<Partner, Partner> query,
- string[] partnerTypes)
- {
- if (partnerTypes == null || partnerTypes.Length == 0)
- {
- // не указали желаемый тип к/а, вернем пустое множество
- return query.Where(x => x.Id != x.Id); //!!!
- }
- //в целях оптимизации, если нужны все типы контрагентов
- if (partnerTypes.Contains("COMPANY", StringComparer.InvariantCultureIgnoreCase)
- && partnerTypes.Contains("BRANCH", StringComparer.InvariantCultureIgnoreCase)
- && partnerTypes.Contains("PERSON", StringComparer.InvariantCultureIgnoreCase))
- {
- return query; //!!!
- }
- var disjunction = Restrictions.Disjunction();
- if (partnerTypes.Contains("COMPANY", StringComparer.InvariantCultureIgnoreCase))
- {
- var restriction = Restrictions.Where<Partner>(x => x.GetType() == typeof(Company));
- restriction = Restrictions.And(restriction, Restrictions.On<Company>(x => x.HeadCompany).IsNull);
- disjunction.Add(restriction);
- }
- if (partnerTypes.Contains("BRANCH", StringComparer.InvariantCultureIgnoreCase))
- {
- var restriction = Restrictions.Where<Partner>(x => x.GetType() == typeof(Company));
- restriction = Restrictions.And(restriction, Restrictions.On<Company>(x => x.HeadCompany).IsNotNull);
- disjunction.Add(restriction);
- }
- if (partnerTypes.Contains("PERSON", StringComparer.InvariantCultureIgnoreCase))
- {
- var restriction = Restrictions.Where<Partner>(x => x.GetType() == typeof(PersonPartner));
- disjunction.Add(restriction);
- }
- return query.Where(disjunction);
- }
- return Ok(partners.ToPagedList<PartnerListItemDto>());
- }
- vm.filteredPartners = ["COMPANY", "BRANCH", "PERSON"];
- vm.properties = [
- { title: "Юр. лицо", value: PartnersTypeConstants.Properties.COMPANY, isSelected: false },
- { title: "Обособленное подразделение", value: PartnersTypeConstants.Properties.BRANCH, isSelected: false },
- { title: "Физ. лицо", value: PartnersTypeConstants.Properties.PERSON, isSelected: false }
- ];
- vm.selectedValue = [];
- function setPropertyShortName(propertySelection) {
- //vm.selectedValue = !propertySelection.isSelected ? propertySelection.value : undefined;
- for (var i = 0; i < vm.properties.length; i++) {
- if (vm.properties[i].value === vm.filteredPartners.value) {
- vm.properties[i].isSelected = propertySelection.isSelected;
- continue;
- }
- vm.properties[i].isSelected = false;
- }
- search(true);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement