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