/// <summary> /// Дубликаты по критерию для разбивки постранично /// </summary> /// <param name="criteria"> /// The criteria. /// </param> /// <returns> /// The <see cref="SearchResult{Twin}"/> . /// </returns> public SearchResult <Twin> GetTwins(SearchTwinCriteria criteria) { return(ObjectFactory.GetInstance <ITwinManager>().GetTwins(criteria)); }
/// <summary> /// Дубликаты по критерию для разбивки постранично /// </summary> /// <param name="criteria"> /// The criteria. /// </param> /// <returns> /// The <see cref="SearchResult{Twin}"/> . /// </returns> public SearchResult <Twin> GetTwins(SearchTwinCriteria criteria) { return(InvokeInterceptors(() => Service.GetTwins(criteria))); }
/// <summary> /// Дубликаты по критерию для разбивки постранично /// </summary> /// <param name="criteria"> /// The criteria. /// </param> /// <returns> /// The /// <see> /// <cref>SearchResult</cref> /// </see> /// . /// </returns> public SearchResult <Twin> GetTwins(SearchTwinCriteria criteria) { var session = ObjectFactory.GetInstance <ISessionFactory>().GetCurrentSession(); var currentUser = ObjectFactory.GetInstance <ISecurityProvider>().GetCurrentUser(); Concept twinType = null; InsuredPerson insuredPerson1 = null; MedicalInsurance medicalInsurance1 = null; Organisation smo1 = null; InsuredPerson insuredPerson2 = null; MedicalInsurance medicalInsurance2 = null; Organisation smo2 = null; var query = session.QueryOver <Twin>() .JoinAlias(x => x.TwinType, () => twinType) .Where(x => twinType.Id == TypeTwin.TypeTwin2); if (currentUser.HasTf()) { var tf = currentUser.GetTf(); query.JoinAlias(x => x.FirstInsuredPerson, () => insuredPerson1) .JoinAlias(() => insuredPerson1.MedicalInsurances, () => medicalInsurance1) .JoinAlias(() => medicalInsurance1.Smo, () => smo1) .And(() => medicalInsurance1.IsActive) .And(() => smo1.Parent.Id == tf.Id) .JoinAlias(x => x.SecondInsuredPerson, () => insuredPerson2) .JoinAlias(() => insuredPerson2.MedicalInsurances, () => medicalInsurance2) .JoinAlias(() => medicalInsurance2.Smo, () => smo2) .And(() => medicalInsurance2.IsActive) .And(() => smo2.Parent.Id == tf.Id); } TwinsKey twinKeys = null; SearchKeyType skt = null; switch (criteria.KeyType) { case TwinKeyType.All: break; case TwinKeyType.Standard: query.JoinAlias(t => t.TwinsKeys, () => twinKeys) .JoinAlias(t => twinKeys.KeyType, () => skt) .WhereRestrictionOn(t => skt.Tfoms) .IsNull(); break; case TwinKeyType.NonStandard: query.JoinAlias(t => t.TwinsKeys, () => twinKeys).Where(t => twinKeys.KeyType.Id == criteria.KeyId); break; } var count = query.RowCount(); var searchResult = new SearchResult <Twin> { Skip = criteria.Skip, Total = count }; query.Skip(criteria.Skip).Take(criteria.Take); searchResult.Rows = query.List(); return(searchResult); }