Beispiel #1
0
        public void NoDeletions()
        {
            var r = new Restrictions();

            string ignored;
            Assert.IsFalse(r.IsValidChangeSet(new Dictionary<object, Restrictions.ShadowModifiedMember[]>(), new List<object>() { new User() }, new List<object>(), new List<object>(), new List<int>(), out ignored));
        }
Beispiel #2
0
        public void NoUserTypeIdUpdate()
        {
            var r = new Restrictions();

            var user = new User
            {
                Id = 1,
                UserTypeId = 2
            };

            var updates = new Dictionary<object, Restrictions.ShadowModifiedMember[]>();
            updates[user] = new Restrictions.ShadowModifiedMember[]
                { 
                    new Restrictions.ShadowModifiedMember
                    { 
                        Member = typeof(User).GetProperty("UserTypeId"),
                        CurrentValue = user.UserTypeId,
                        OriginalValue = 1
                    }
                };

            string ignored;
            Assert.IsFalse(r.IsValidChangeSet(updates, new List<object>(), new List<object>(), new List<object>() { user }, new List<int>() { 1 }, out ignored));
            Assert.IsFalse(r.IsValidChangeSet(updates, new List<object>(), new List<object>(), new List<object>() { user }, new List<int>(), out ignored));
        }
Beispiel #3
0
 public Value(BigRational baseVal, BigRational exponent, NumberType type, Restrictions restrictions)
 {
     switch (type) {
         case NumberType.exponent:
             InitExp(baseVal, exponent, restrictions);
             break;
     }
 }
Beispiel #4
0
 public Value(double baseVal, double exponent, NumberType type, Restrictions restrictions)
 {
     switch (type) {
         case NumberType.exponent:
             InitExp(baseVal, exponent, restrictions);
             break;
     }
 }
Beispiel #5
0
        public void UpdateUsersInList()
        {
            var r = new Restrictions();

            var user = new User
            {
                Id = 1,
                CreationDate = DateTime.UtcNow
            };

            var updates = new Dictionary<object, Restrictions.ShadowModifiedMember[]>();
            updates[user] = new Restrictions.ShadowModifiedMember[]
                { 
                    new Restrictions.ShadowModifiedMember
                    { 
                        Member = typeof(User).GetProperty("CreationDate"),
                        CurrentValue = user.CreationDate,
                        OriginalValue = null
                    }
                };

            string ignored;
            Assert.IsTrue(r.IsValidChangeSet(updates, new List<object>(), new List<object>(), new List<object>() { user }, new List<int>() { 1 }, out ignored), ignored);
        }
Beispiel #6
0
        public void NoPendingUserInsert()
        {
            var r = new Restrictions();

            var pending = new PendingUser
            {
                Id = 1
            };

            var updates = new Dictionary<object, Restrictions.ShadowModifiedMember[]>();

            string ignored;
            Assert.IsFalse(r.IsValidChangeSet(updates, new List<object>(), new List<object>() { pending }, new List<object>(), new List<int>(), out ignored));
            Assert.IsFalse(r.IsValidChangeSet(updates, new List<object>(), new List<object>() { pending }, new List<object>(), new List<int>() { 1 }, out ignored));
        }
Beispiel #7
0
        public void UserAttributeInsertWithUserId()
        {
            var r = new Restrictions();

            var attr = new UserAttribute
            {
                UserId = 1
            };

            var updates = new Dictionary<object, Restrictions.ShadowModifiedMember[]>();

            string ignored;
            Assert.IsTrue(r.IsValidChangeSet(updates, new List<object>(), new List<object>() { attr }, new List<object>(), new List<int>() { 1 }, out ignored));
        }
Beispiel #8
0
        /// <summary>
        /// Saves the tags.
        /// </summary>
        /// <param name="sitemap">The sitemap.</param>
        /// <param name="tags">The tags.</param>
        /// <param name="newCreatedTags">The new created tags.</param>
        public void SaveTags(Sitemap sitemap, IList <string> tags, out IList <Tag> newCreatedTags)
        {
            var trimmedTags = new List <string>();

            if (tags != null)
            {
                foreach (var tag in tags)
                {
                    trimmedTags.Add(tag.Trim());
                }
            }

            // remove tags who are equal (tags are case insensitive)
            for (int i = 0; i < trimmedTags.Count; i++)
            {
                for (int j = i + 1; j < trimmedTags.Count; j++)
                {
                    if (i != j && trimmedTags[i].ToLowerInvariant() == trimmedTags[j].ToLowerInvariant())
                    {
                        trimmedTags.RemoveAt(j);
                        --j;
                    }
                }
            }

            newCreatedTags = new List <Tag>();

            Tag tagAlias = null;

            // Tags merge:
            var sitemapTags = unitOfWork.Session
                              .QueryOver <SitemapTag>()
                              .Where(t => !t.IsDeleted && t.Sitemap.Id == sitemap.Id)
                              .JoinQueryOver(t => t.Tag, JoinType.InnerJoin)
                              .Where(t => !t.IsDeleted)
                              .List <SitemapTag>();

            // Remove deleted tags:
            for (var i = sitemapTags.Count - 1; i >= 0; i--)
            {
                var tag = trimmedTags.FirstOrDefault(s => s.ToLower() == sitemapTags[i].Tag.Name.ToLower());
                if (tag == null)
                {
                    UpdateModifiedInformation(sitemapTags[i]);
                    unitOfWork.Session.Delete(sitemapTags[i]);
                }
            }

            // Add new tags:
            var tagsInsert = new List <string>();

            foreach (var tag in trimmedTags)
            {
                var existSitemapTag = sitemapTags.FirstOrDefault(sitemapTag => sitemapTag.Tag.Name.ToLower() == tag.ToLower());
                if (existSitemapTag == null)
                {
                    tagsInsert.Add(tag);
                }
            }

            if (tagsInsert.Count <= 0)
            {
                return;
            }

            // Get existing tags:
            var existingTags = unitOfWork.Session.QueryOver(() => tagAlias)
                               .Where(t => !t.IsDeleted)
                               .Where(Restrictions.In(Projections.Property(() => tagAlias.Name), tagsInsert))
                               .List <Tag>();

            foreach (var tag in tagsInsert)
            {
                var sitemapTag = new SitemapTag {
                    Sitemap = sitemap
                };

                var existTag = existingTags.FirstOrDefault(t => t.Name.ToLower() == tag.ToLower());
                if (existTag != null)
                {
                    sitemapTag.Tag = existTag;
                }
                else
                {
                    var newTag = new Tag {
                        Name = tag
                    };
                    unitOfWork.Session.SaveOrUpdate(newTag);
                    newCreatedTags.Add(newTag);
                    sitemapTag.Tag = newTag;
                }

                UpdateModifiedInformation(sitemapTag);
                unitOfWork.Session.SaveOrUpdate(sitemapTag);
            }
        }
Beispiel #9
0
        public void NoUserHistoryUpdates()
        {
            var r = new Restrictions();

            var history = new UserHistory
            {
                Id = 1
            };

            var updates = new Dictionary<object, Restrictions.ShadowModifiedMember[]>();
            updates[history] = new Restrictions.ShadowModifiedMember[]
                {
                    new Restrictions.ShadowModifiedMember
                    {
                        Member = typeof(UserHistory).GetProperty("Id"),
                        CurrentValue = history.Id,
                        OriginalValue = 2
                    }
                };

            string ignored;
            Assert.IsFalse(r.IsValidChangeSet(updates, new List<object>(), new List<object>(), new List<object>() { history }, new List<int>() { 1 }, out ignored));
        }
 public void SetRestrictionFromText(string text)
 {
     string str = text;
     string str1 = str;
     if (str != null)
     {
         if (str1 == "I")
         {
             this.DesignState = Restrictions.I;
             return;
         }
         if (str1 == "O")
         {
             this.DesignState = Restrictions.O;
             return;
         }
         if (str1 == "IO")
         {
             this.DesignState = Restrictions.IO;
             return;
         }
         if (str1 != "E")
         {
             return;
         }
         this.DesignState = Restrictions.E;
     }
 }
Beispiel #11
0
        /// <summary>
        /// Saves the page tags.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="tags">The tags.</param>
        /// <param name="newCreatedTags">The new created tags.</param>
        public void SavePageTags(PageProperties page, IList <string> tags, out IList <Tag> newCreatedTags)
        {
            var trimmedTags = new List <string>();

            if (tags != null)
            {
                foreach (var tag in tags)
                {
                    trimmedTags.Add(tag.Trim());
                }
            }

            // remove tags who are equal (tags are case insensitive)
            for (int i = 0; i < trimmedTags.Count; i++)
            {
                for (int j = i + 1; j < trimmedTags.Count; j++)
                {
                    if (i != j && trimmedTags[i].ToLowerInvariant() == trimmedTags[j].ToLowerInvariant())
                    {
                        trimmedTags.RemoveAt(j);
                        --j;
                    }
                }
            }

            newCreatedTags = new List <Tag>();

            Tag tagAlias = null;

            // Tags merge:
            IList <PageTag> pageTags = unitOfWork.Session
                                       .QueryOver <PageTag>()
                                       .Where(t => !t.IsDeleted && t.Page.Id == page.Id)
                                       .JoinQueryOver <Tag>(t => t.Tag, JoinType.InnerJoin)
                                       .Where(t => !t.IsDeleted)
                                       .List <PageTag>();

            // All page tag list
            var finalTagList = new List <PageTag>();

            // Remove deleted tags:
            for (int i = pageTags.Count - 1; i >= 0; i--)
            {
                string tag = null;
                tag = trimmedTags.FirstOrDefault(s => s.ToLower() == pageTags[i].Tag.Name.ToLower());

                if (tag == null)
                {
                    var tagToRemove = pageTags[i];
                    UpdateModifiedInformation(tagToRemove);
                    unitOfWork.Session.Delete(tagToRemove);
                    finalTagList.Add(tagToRemove);
                }
            }

            // Add new tags:
            var tagsInsert = new List <string>();

            foreach (string tag in trimmedTags)
            {
                PageTag existPageTag = pageTags.FirstOrDefault(pageTag => pageTag.Tag.Name.ToLower() == tag.ToLower());
                if (existPageTag == null)
                {
                    tagsInsert.Add(tag);
                }
            }

            if (tagsInsert.Count > 0)
            {
                // Get existing tags:
                IList <Tag> existingTags = unitOfWork.Session.QueryOver(() => tagAlias)
                                           .Where(t => !t.IsDeleted)
                                           .Where(Restrictions.In(Projections.Property(() => tagAlias.Name), tagsInsert))
                                           .List <Tag>();

                foreach (string tag in tagsInsert)
                {
                    var pageTag = new PageTag();
                    pageTag.Page = page;

                    Tag existTag = existingTags.FirstOrDefault(t => t.Name.ToLower() == tag.ToLower());
                    if (existTag != null)
                    {
                        pageTag.Tag = existTag;
                    }
                    else
                    {
                        var newTag = new Tag();
                        newTag.Name = tag;
                        unitOfWork.Session.SaveOrUpdate(newTag);
                        newCreatedTags.Add(newTag);
                        pageTag.Tag = newTag;
                    }

                    UpdateModifiedInformation(pageTag);
                    unitOfWork.Session.SaveOrUpdate(pageTag);
                    finalTagList.Add(pageTag);
                }
            }
            page.PageTags = finalTagList;
        }
Beispiel #12
0
 /// <summary>Exponent</summary>
 public void InitExp(BigRational expBase, BigRational expPower, Restrictions restrictionsToPass)
 {
     this.ExpBase = new Value(expBase, restrictionsToPass);
     this.ExpPower = new Value(expPower, restrictionsToPass);
     this.RationalValue = (BigRational.Pow(expBase, (BigInteger)expPower));
     primaryNumType = NumberType.exponent;
 }
Beispiel #13
0
 public static Asda2TeleportingPointRecord GetRecordByID(long id)
 {
     return(FindOne((ICriterion)Restrictions.Eq("Guid", id)));
 }
Beispiel #14
0
 public static Asda2TeleportingPointRecord[] LoadItems(uint lowCharId)
 {
     return(FindAll((ICriterion)Restrictions.Eq("OwnerId", lowCharId)));
 }
Beispiel #15
0
        void ConfigureDlg()
        {
            canEdit = !UoW.IsNew && StoreDocumentHelper.CanEditDocument(WarehousePermissions.ShiftChangeEdit, Entity.Warehouse);

            if (Entity.Id != 0 && Entity.TimeStamp < DateTime.Today)
            {
                var permissionValidator = new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance());
                canEdit &= permissionValidator.Validate(typeof(ShiftChangeWarehouseDocument), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id, nameof(RetroactivelyClosePermission));
            }

            canCreate = UoW.IsNew && !StoreDocumentHelper.CheckCreateDocument(WarehousePermissions.ShiftChangeCreate, Entity.Warehouse);

            if (!canCreate && UoW.IsNew)
            {
                FailInitialize = true;
                return;
            }

            if (!canEdit && !UoW.IsNew)
            {
                MessageDialogHelper.RunWarningDialog("У вас нет прав на изменение этого документа.");
            }

            ydatepickerDocDate.Sensitive = yentryrefWarehouse.IsEditable = ytextviewCommnet.Editable = canEdit || canCreate;

            ytreeviewNomenclatures.Sensitive =
                buttonFillItems.Sensitive    =
                    buttonAdd.Sensitive      = canEdit || canCreate;

            ytreeviewNomenclatures.ItemsDataSource = Entity.ObservableItems;
            ytreeviewNomenclatures.YTreeModel?.EmitModelChanged();

            ydatepickerDocDate.Binding.AddBinding(Entity, e => e.TimeStamp, w => w.Date).InitializeFromSource();
            if (UoW.IsNew)
            {
                yentryrefWarehouse.ItemsQuery = StoreDocumentHelper.GetRestrictedWarehouseQuery(WarehousePermissions.ShiftChangeCreate);
            }
            if (!UoW.IsNew)
            {
                yentryrefWarehouse.ItemsQuery = StoreDocumentHelper.GetRestrictedWarehouseQuery(WarehousePermissions.ShiftChangeEdit);
            }
            yentryrefWarehouse.Binding.AddBinding(Entity, e => e.Warehouse, w => w.Subject).InitializeFromSource();
            yentryrefWarehouse.Changed += OnWarehouseChanged;

            ytextviewCommnet.Binding.AddBinding(Entity, e => e.Comment, w => w.Buffer.Text).InitializeFromSource();

            string errorMessage       = "Не установлены единицы измерения у следующих номенклатур :" + Environment.NewLine;
            int    wrongNomenclatures = 0;

            foreach (var item in Entity.Items)
            {
                if (item.Nomenclature.Unit == null)
                {
                    errorMessage += string.Format("Номер: {0}. Название: {1}{2}",
                                                  item.Nomenclature.Id, item.Nomenclature.Name, Environment.NewLine);
                    wrongNomenclatures++;
                }
            }
            if (wrongNomenclatures > 0)
            {
                MessageDialogHelper.RunErrorDialog(errorMessage);
                FailInitialize = true;
                return;
            }

            filter = new SelectableParametersReportFilter(UoW);

            var nomenclatureParam = filter.CreateParameterSet(
                "Номенклатуры",
                "nomenclature",
                new ParametersFactory(UoW, (filters) => {
                SelectableEntityParameter <Nomenclature> resultAlias = null;
                var query = UoW.Session.QueryOver <Nomenclature>()
                            .Where(x => !x.IsArchive);
                if (filters != null && filters.Any())
                {
                    foreach (var f in filters)
                    {
                        var filterCriterion = f();
                        if (filterCriterion != null)
                        {
                            query.Where(filterCriterion);
                        }
                    }
                }

                query.SelectList(list => list
                                 .Select(x => x.Id).WithAlias(() => resultAlias.EntityId)
                                 .Select(x => x.OfficialName).WithAlias(() => resultAlias.EntityTitle)
                                 );
                query.TransformUsing(Transformers.AliasToBean <SelectableEntityParameter <Nomenclature> >());
                return(query.List <SelectableParameter>());
            })
                );

            var nomenclatureTypeParam = filter.CreateParameterSet(
                "Типы номенклатур",
                "nomenclature_type",
                new ParametersEnumFactory <NomenclatureCategory>()
                );

            nomenclatureParam.AddFilterOnSourceSelectionChanged(nomenclatureTypeParam,
                                                                () => {
                var selectedValues = nomenclatureTypeParam.GetSelectedValues();
                if (!selectedValues.Any())
                {
                    return(null);
                }
                return(Restrictions.On <Nomenclature>(x => x.Category).IsIn(nomenclatureTypeParam.GetSelectedValues().ToArray()));
            }
                                                                );

            //Предзагрузка. Для избежания ленивой загрузки
            UoW.Session.QueryOver <ProductGroup>().Fetch(SelectMode.Fetch, x => x.Childs).List();

            filter.CreateParameterSet(
                "Группы товаров",
                "product_group",
                new RecursiveParametersFactory <ProductGroup>(UoW,
                                                              (filters) => {
                var query = UoW.Session.QueryOver <ProductGroup>();
                if (filters != null && filters.Any())
                {
                    foreach (var f in filters)
                    {
                        query.Where(f());
                    }
                }
                return(query.List());
            },
                                                              x => x.Name,
                                                              x => x.Childs)
                );

            var filterViewModel = new SelectableParameterReportFilterViewModel(filter);
            var filterWidget    = new SelectableParameterReportFilterView(filterViewModel);

            vboxParameters.Add(filterWidget);
            filterWidget.Show();

            ConfigureNomenclaturesView();
        }
Beispiel #16
0
        public static List <WaterPriceNode> GetWaterPrices(IUnitOfWork uow)
        {
            List <WaterPriceNode> result = new List <WaterPriceNode>();

            var waterPrintNom = GetPrintableWaterNomenclatures(uow);

            if (!waterPrintNom.Any())
            {
                return(result);
            }

            //Цены
            WaterPriceNode    nodeAlias = null;
            NomenclaturePrice nomenclaturePriceAlias = null;
            Nomenclature      nomenclatureAlias      = null;
            var resultPrices =
                uow.Session.QueryOver <NomenclaturePrice>(() => nomenclaturePriceAlias)
                .Left.JoinAlias(() => nomenclaturePriceAlias.Nomenclature, () => nomenclatureAlias)
                .WhereRestrictionOn(() => nomenclatureAlias.Id).IsIn(waterPrintNom.Select(x => x.Id).ToArray())
                .SelectList(list => list
                            .SelectGroup(() => nomenclaturePriceAlias.MinCount)
                            //Количество
                            .Select(
                                Projections.Cast(
                                    NHibernateUtil.AnsiString,
                                    Projections.Property(() => nomenclaturePriceAlias.MinCount))
                                ).WithAlias(() => nodeAlias.Count)

                            //Цена номенклатуры 1
                            .Select(Projections.Max(
                                        Projections.Conditional(
                                            Restrictions.Eq(Projections.Property(() => nomenclatureAlias.Id), waterPrintNom[0].Id),
                                            Projections.Cast(
                                                NHibernateUtil.AnsiString,
                                                Projections.Property(() => nomenclaturePriceAlias.Price)),
                                            Projections.Constant("", NHibernateUtil.AnsiString)))
                                    ).WithAlias(() => nodeAlias.Water1)
                            //Id номенклатуры 1
                            .Select(() => waterPrintNom[0].Id).WithAlias(() => nodeAlias.Id1)

                            //Цена номенклатуры 2
                            .Select(Projections.Max(
                                        waterPrintNom.Count() > 1
                                                           ? Projections.Conditional(
                                            Restrictions.Eq(Projections.Property(() => nomenclatureAlias.Id), waterPrintNom[1].Id),
                                            Projections.Cast(
                                                NHibernateUtil.AnsiString,
                                                Projections.Property(() => nomenclaturePriceAlias.Price)),
                                            Projections.Constant("", NHibernateUtil.AnsiString))
                                                           : Projections.Constant("", NHibernateUtil.AnsiString))
                                    ).WithAlias(() => nodeAlias.Water2)
                            //Id номенклатуры 2
                            .Select(() => waterPrintNom.Count() > 1 ? waterPrintNom[1].Id : 0).WithAlias(() => nodeAlias.Id2)

                            //Цена номенклатуры 3
                            .Select(Projections.Max(
                                        waterPrintNom.Count() > 2
                                                           ? Projections.Conditional(
                                            Restrictions.Eq(Projections.Property(() => nomenclatureAlias.Id), waterPrintNom[2].Id),
                                            Projections.Cast(
                                                NHibernateUtil.AnsiString,
                                                Projections.Property(() => nomenclaturePriceAlias.Price)),
                                            Projections.Constant("", NHibernateUtil.AnsiString))
                                                           : Projections.Constant("", NHibernateUtil.AnsiString))
                                    ).WithAlias(() => nodeAlias.Water3)
                            //Id номенклатуры 3
                            .Select(() => waterPrintNom.Count() > 2 ? waterPrintNom[2].Id : 0).WithAlias(() => nodeAlias.Id3)

                            //Цена номенклатуры 4
                            .Select(Projections.Max(
                                        waterPrintNom.Count() > 3
                                                           ? Projections.Conditional(
                                            Restrictions.Eq(Projections.Property(() => nomenclatureAlias.Id), waterPrintNom[3].Id),
                                            Projections.Cast(
                                                NHibernateUtil.AnsiString,
                                                Projections.Property(() => nomenclaturePriceAlias.Price)),
                                            Projections.Constant("", NHibernateUtil.AnsiString))
                                                           : Projections.Constant("", NHibernateUtil.AnsiString))
                                    ).WithAlias(() => nodeAlias.Water4)
                            //Id номенклатуры 4
                            .Select(() => waterPrintNom.Count() > 3 ? waterPrintNom[3].Id : 0).WithAlias(() => nodeAlias.Id4)

                            //Цена номенклатуры 5
                            .Select(Projections.Max(
                                        waterPrintNom.Count() > 4
                                                           ? Projections.Conditional(
                                            Restrictions.Eq(Projections.Property(() => nomenclatureAlias.Id), waterPrintNom[4].Id),
                                            Projections.Cast(
                                                NHibernateUtil.AnsiString,
                                                Projections.Property(() => nomenclaturePriceAlias.Price)),
                                            Projections.Constant("", NHibernateUtil.AnsiString))
                                                           : Projections.Constant("", NHibernateUtil.AnsiString))
                                    ).WithAlias(() => nodeAlias.Water5)
                            //Id номенклатуры 5
                            .Select(() => waterPrintNom.Count() > 4 ? waterPrintNom[4].Id : 0).WithAlias(() => nodeAlias.Id5)

                            ).TransformUsing(Transformers.AliasToBean <WaterPriceNode>())
                .List <WaterPriceNode>();

            foreach (var item in resultPrices)
            {
                result.Add(item);
            }
            return(result);
        }
 private static ICriterion ProcessOrExpression(BinaryExpression expression)
 {
     return(Restrictions.Or(
                ProcessExpression(expression.Left),
                ProcessExpression(expression.Right)));
 }
 private static ICriterion Ne(ProjectionInfo property, object value)
 {
     return
         (Restrictions.Not(
              property.CreateCriterion(Restrictions.Eq, Restrictions.Eq, value)));
 }
Beispiel #19
0
 protected override ICriterion WhereExpress(string keyword)
 {
     return(Restrictions.And(Restrictions.On <Role> (r => r.Name).IsLike(keyword), Restrictions.Where <Role> (r => r.RoleType != RoleType.Internal)));
 }
Beispiel #20
0
        public void PendingUserUpdateDeletionDate()
        {
            var r = new Restrictions();

            var pending = new PendingUser
            {
                Id = 1,
                DeletionDate = DateTime.Now
            };

            var updates = new Dictionary<object, Restrictions.ShadowModifiedMember[]>();
            updates[pending] = new Restrictions.ShadowModifiedMember[]
                {
                    new Restrictions.ShadowModifiedMember
                    {
                        Member = typeof(PendingUser).GetProperty("DeletionDate"),
                        CurrentValue = pending.DeletionDate,
                        OriginalValue = null
                    }
                };

            string ignored;
            Assert.IsTrue(r.IsValidChangeSet(updates, new List<object>(), new List<object>(), new List<object>() { pending }, new List<int>(), out ignored));
        }
Beispiel #21
0
        public async Task RunAsync(int iterations)
        {
            using (var connection = GetOpenConnection())
            {
                var tests = new Tests();

                // Linq2SQL
                Try(() =>
                {
                    var l2scontext1 = GetL2SContext(connection);
                    tests.Add(id => l2scontext1.Posts.First(p => p.Id == id), "Linq2Sql: Normal");

                    var l2scontext2     = GetL2SContext(connection);
                    var compiledGetPost = CompiledQuery.Compile((Linq2Sql.DataClassesDataContext ctx, int id) => ctx.Posts.First(p => p.Id == id));
                    tests.Add(id => compiledGetPost(l2scontext2, id), "Linq2Sql: Compiled");

                    var l2scontext3 = GetL2SContext(connection);
                    tests.Add(id => l2scontext3.ExecuteQuery <Post>("select * from Posts where Id = {0}", id).First(), "Linq2Sql: ExecuteQuery");
                }, "LINQ-to-SQL");

                // Entity Framework
                Try(() =>
                {
                    var entityContext = new EFContext(connection);
                    tests.Add(id => entityContext.Posts.First(p => p.Id == id), "Entity Framework");

                    var entityContext2 = new EFContext(connection);
                    tests.Add(id => entityContext2.Database.SqlQuery <Post>("select * from Posts where Id = {0}", id).First(), "Entity Framework: SqlQuery");

                    //var entityContext3 = new EFContext(connection);
                    //tests.Add(id => entityFrameworkCompiled(entityContext3, id), "Entity Framework CompiledQuery");

                    //var entityContext4 = new EFContext(connection);
                    //tests.Add(id => entityContext4.Posts.Where("it.Id = @id", new System.Data.Objects.ObjectParameter("id", id)).First(), "Entity Framework ESQL");

                    var entityContext5 = new EFContext(connection);
                    tests.Add(id => entityContext5.Posts.AsNoTracking().First(p => p.Id == id), "Entity Framework: No Tracking");
                }, "Entity Framework");

                // Dapper
                Try(() =>
                {
                    var mapperConnection = GetOpenConnection();
                    tests.Add(id => mapperConnection.Query <Post>("select * from Posts where Id = @Id", new { Id = id }, buffered: true).First(), "Dapper: Query (buffered)");
                    tests.Add(id => mapperConnection.Query <Post>("select * from Posts where Id = @Id", new { Id = id }, buffered: false).First(), "Dapper: Query (non-buffered)");
                    tests.Add(id => mapperConnection.QueryFirstOrDefault <Post>("select * from Posts where Id = @Id", new { Id = id }), "Dapper: QueryFirstOrDefault");


                    var mapperConnection2 = GetOpenConnection();
                    tests.Add(id => mapperConnection2.Query("select * from Posts where Id = @Id", new { Id = id }, buffered: true).First(), "Dapper: Dynamic Query (buffered)");
                    tests.Add(id => mapperConnection2.Query("select * from Posts where Id = @Id", new { Id = id }, buffered: false).First(), "Dapper: Dynamic Query (non-buffered)");
                    tests.Add(id => mapperConnection2.QueryFirstOrDefault("select * from Posts where Id = @Id", new { Id = id }), "Dapper: Dynamic QueryFirstOrDefault");

                    // dapper.contrib
                    var mapperConnection3 = GetOpenConnection();
                    tests.Add(id => mapperConnection3.Get <Post>(id), "Dapper.Contrib");
                }, "Dapper");

                // Massive
                Try(() =>
                {
                    var massiveModel      = new DynamicModel(ConnectionString);
                    var massiveConnection = GetOpenConnection();
                    tests.Add(id => massiveModel.Query("select * from Posts where Id = @0", massiveConnection, id).First(), "Massive: Dynamic ORM Query");
                }, "Massive");

                // PetaPoco
                Try(() =>
                {
                    // PetaPoco test with all default options
                    var petapoco = new PetaPoco.Database(ConnectionString, "System.Data.SqlClient");
                    petapoco.OpenSharedConnection();
                    tests.Add(id => petapoco.Fetch <Post>("SELECT * from Posts where Id=@0", id).First(), "PetaPoco: Normal");

                    // PetaPoco with some "smart" functionality disabled
                    var petapocoFast = new PetaPoco.Database(ConnectionString, "System.Data.SqlClient");
                    petapocoFast.OpenSharedConnection();
                    petapocoFast.EnableAutoSelect    = false;
                    petapocoFast.EnableNamedParams   = false;
                    petapocoFast.ForceDateTimesToUtc = false;
                    tests.Add(id => petapocoFast.Fetch <Post>("SELECT * from Posts where Id=@0", id).First(), "PetaPoco: Fast");
                }, "PetaPoco");

                // NHibernate
                Try(() =>
                {
                    var nhSession1 = NHibernateHelper.OpenSession();
                    tests.Add(id => nhSession1.CreateSQLQuery(@"select * from Posts where Id = :id")
                              .SetInt32("id", id)
                              .List(), "NHibernate: SQL");

                    var nhSession2 = NHibernateHelper.OpenSession();
                    tests.Add(id => nhSession2.CreateQuery(@"from Post as p where p.Id = :id")
                              .SetInt32("id", id)
                              .List(), "NHibernate: HQL");

                    var nhSession3 = NHibernateHelper.OpenSession();
                    tests.Add(id => nhSession3.CreateCriteria <Post>()
                              .Add(Restrictions.IdEq(id))
                              .List(), "NHibernate: Criteria");

                    var nhSession4 = NHibernateHelper.OpenSession();
                    tests.Add(id => nhSession4
                              .Query <Post>()
                              .First(p => p.Id == id), "NHibernate: LINQ");

                    var nhSession5 = NHibernateHelper.OpenSession();
                    tests.Add(id => nhSession5.Get <Post>(id), "NHibernate: Session.Get");
                }, "NHibernate");

                // Simple.Data
                Try(() =>
                {
                    var sdb = Simple.Data.Database.OpenConnection(ConnectionString);
                    tests.Add(id => sdb.Posts.FindById(id).FirstOrDefault(), "Simple.Data");
                }, "Simple.Data");

                // Belgrade
                Try(() =>
                {
                    var query = new Belgrade.SqlClient.SqlDb.QueryMapper(ConnectionString);
                    tests.AddAsync(id => query.ExecuteReader("SELECT TOP 1 * FROM Posts WHERE Id = " + id,
                                                             reader =>
                    {
                        var post            = new Post();
                        post.Id             = reader.GetInt32(0);
                        post.Text           = reader.GetString(1);
                        post.CreationDate   = reader.GetDateTime(2);
                        post.LastChangeDate = reader.GetDateTime(3);

                        post.Counter1 = reader.IsDBNull(4) ? null : (int?)reader.GetInt32(4);
                        post.Counter2 = reader.IsDBNull(5) ? null : (int?)reader.GetInt32(5);
                        post.Counter3 = reader.IsDBNull(6) ? null : (int?)reader.GetInt32(6);
                        post.Counter4 = reader.IsDBNull(7) ? null : (int?)reader.GetInt32(7);
                        post.Counter5 = reader.IsDBNull(8) ? null : (int?)reader.GetInt32(8);
                        post.Counter6 = reader.IsDBNull(9) ? null : (int?)reader.GetInt32(9);
                        post.Counter7 = reader.IsDBNull(10) ? null : (int?)reader.GetInt32(10);
                        post.Counter8 = reader.IsDBNull(11) ? null : (int?)reader.GetInt32(11);
                        post.Counter9 = reader.IsDBNull(12) ? null : (int?)reader.GetInt32(12);
                    }), "Belgrade Sql Client");
                }, "Belgrade Sql Client");

                //Susanoo
                var susanooDb = new DatabaseManager(connection);

                var susanooPreDefinedCommand =
                    CommandManager.Instance.DefineCommand("SELECT * FROM Posts WHERE Id = @Id", CommandType.Text)
                    .DefineResults <Post>()
                    .Realize();

                var susanooDynamicPreDefinedCommand =
                    CommandManager.Instance.DefineCommand("SELECT * FROM Posts WHERE Id = @Id", CommandType.Text)
                    .DefineResults <dynamic>()
                    .Realize();

                tests.Add(Id =>
                          CommandManager.Instance.DefineCommand("SELECT * FROM Posts WHERE Id = @Id", CommandType.Text)
                          .DefineResults <Post>()
                          .Realize()
                          .Execute(susanooDb, new { Id }).First(), "Susanoo: Mapping Cache Retrieval");

                tests.Add(Id =>
                          CommandManager.Instance.DefineCommand("SELECT * FROM Posts WHERE Id = @Id", CommandType.Text)
                          .DefineResults <dynamic>()
                          .Realize()
                          .Execute(susanooDb, new { Id }).First(), "Susanoo: Dynamic Mapping Cache Retrieval");

                tests.Add(Id => susanooDynamicPreDefinedCommand
                          .Execute(susanooDb, new { Id }).First(), "Susanoo: Dynamic Mapping Static");

                tests.Add(Id => susanooPreDefinedCommand
                          .Execute(susanooDb, new { Id }).First(), "Susanoo: Mapping Static");

                //ServiceStack's OrmLite:
                Try(() =>
                {
                    var dbFactory = new OrmLiteConnectionFactory(ConnectionString, SqlServerDialect.Provider);
                    var db        = dbFactory.Open();
                    tests.Add(id => db.SingleById <Post>(id), "ServiceStack.OrmLite: SingleById");
                }, "ServiceStack.OrmLite");

                // Hand Coded
                var postCommand = new SqlCommand();
                postCommand.Connection  = connection;
                postCommand.CommandText = @"select Id, [Text], [CreationDate], LastChangeDate, 
                Counter1,Counter2,Counter3,Counter4,Counter5,Counter6,Counter7,Counter8,Counter9 from Posts where Id = @Id";
                var idParam = postCommand.Parameters.Add("@Id", SqlDbType.Int);

                tests.Add(id =>
                {
                    idParam.Value = id;

                    using (var reader = postCommand.ExecuteReader())
                    {
                        reader.Read();
                        var post            = new Post();
                        post.Id             = reader.GetInt32(0);
                        post.Text           = reader.GetNullableString(1);
                        post.CreationDate   = reader.GetDateTime(2);
                        post.LastChangeDate = reader.GetDateTime(3);

                        post.Counter1 = reader.GetNullableValue <int>(4);
                        post.Counter2 = reader.GetNullableValue <int>(5);
                        post.Counter3 = reader.GetNullableValue <int>(6);
                        post.Counter4 = reader.GetNullableValue <int>(7);
                        post.Counter5 = reader.GetNullableValue <int>(8);
                        post.Counter6 = reader.GetNullableValue <int>(9);
                        post.Counter7 = reader.GetNullableValue <int>(10);
                        post.Counter8 = reader.GetNullableValue <int>(11);
                        post.Counter9 = reader.GetNullableValue <int>(12);
                    }
                }, "Hand Coded");

                // Subsonic isn't maintained anymore - doesn't import correctly
                //Try(() =>
                //    {
                //    // Subsonic ActiveRecord
                //    tests.Add(id => 3SubSonic.Post.SingleOrDefault(x => x.Id == id), "SubSonic ActiveRecord.SingleOrDefault");

                //    // Subsonic coding horror
                //    SubSonic.tempdbDB db = new SubSonic.tempdbDB();
                //    tests.Add(id => new SubSonic.Query.CodingHorror(db.Provider, "select * from Posts where Id = @0", id).ExecuteTypedList<Post>(), "SubSonic Coding Horror");
                //}, "Subsonic");

                //// BLToolkit - doesn't import correctly in the new .csproj world
                //var db1 = new DbManager(GetOpenConnection());
                //tests.Add(id => db1.SetCommand("select * from Posts where Id = @id", db1.Parameter("id", id)).ExecuteList<Post>(), "BLToolkit");


#if !COREFX
                var table = new DataTable
                {
                    Columns =
                    {
                        { "Id",             typeof(int)      },
                        { "Text",           typeof(string)   },
                        { "CreationDate",   typeof(DateTime) },
                        { "LastChangeDate", typeof(DateTime) },
                        { "Counter1",       typeof(int)      },
                        { "Counter2",       typeof(int)      },
                        { "Counter3",       typeof(int)      },
                        { "Counter4",       typeof(int)      },
                        { "Counter5",       typeof(int)      },
                        { "Counter6",       typeof(int)      },
                        { "Counter7",       typeof(int)      },
                        { "Counter8",       typeof(int)      },
                        { "Counter9",       typeof(int)      },
                    }
                };
                tests.Add(id =>
                {
                    idParam.Value   = id;
                    object[] values = new object[13];
                    using (var reader = postCommand.ExecuteReader())
                    {
                        reader.Read();
                        reader.GetValues(values);
                        table.Rows.Add(values);
                    }
                }, "DataTable via IDataReader.GetValues");
#endif
                Console.WriteLine();
                Console.WriteLine("Running...");
                await tests.RunAsync(iterations).ConfigureAwait(false);
            }
        }
Beispiel #22
0
 Models.Value IRepository <Models.Value> .GetById(int id)
 {
     using (ISession session = NHibernateHelper.OpenSession())
         return(session.CreateCriteria <Models.Value>().Add(Restrictions.Eq("ID", id)).UniqueResult <Models.Value>());
 }
Beispiel #23
0
 public Value(BigRational doubleVal, Factors factors, Restrictions restrictions)
 {
     InitDouble(doubleVal, restrictions);
     this.factors = factors;
 }
Beispiel #24
0
 public async Task UsingExpressionProjectionAsync()
 {
     await(TestActionAsync(criteria => criteria.Add(Restrictions.Eq(Projections.Property("alias.BooleanData"), true))));
 }
        public void Test1()
        {
            // 1: Agrego el test y saco el main
            // 8: Introduce Variable
            // 28: Muevo CreateSession aca
            // Bad Smell 4: Que el test conozca como conectarse!
            ISession session     = CreateSession();
            var      transaction = session.BeginTransaction();
            // 24: No tiene sentido stream() en Customer, lo muevo aca
            // 25: Introduce variable
            // 26: Saco archivo. Inline de stream. Inline de lineReader. Generalize Type en ImportCustomer.
            // rename stream1 a inputStream
            var inputStream = new StringReader("C,Pepe,Sanchez,D,22333444\n" +
                                               "A,San Martin,3322,Olivos,1636,BsAs\n" +
                                               "A,Maipu,888,Florida,1122,Buenos Aires\n" +
                                               "C,Juan,Perez,C,23-25666777-9\n" +
                                               "A,Alem,1122,CABA,1001,CABA");

            Customer.ImportCustomers(session, inputStream);
            // 2: Agrego asserts sobre cantidad de customers... pero no puedo
            // 3: Comento la linea para que el test corra
            // 9: Ahora si puedo usar session, pero el test falla porque la session esta cerrada!
            // 12: ahora si asserto
            var customers = session.CreateCriteria <Customer>().List <Customer>();

            Assert.AreEqual(2, customers.Count);
            // 13: No tiene sentido CloseSession en Customer, lo muevo aca
            // 14: No tiene sentido el CloseSession! hago Inline

            // 15: Me aseguro que uno de ellos sea Pepe Sanchez
            customers = session.CreateCriteria <Customer>().
                        Add(Restrictions.Eq("IdentificationType", "D")).
                        Add(Restrictions.Eq("IdentificationNumber", "22333444")).List <Customer>();
            Assert.AreEqual(1, customers.Count);
            // 16: Asserto sobre los datos de Pepe Sanchez
            var customer = customers[0];

            Assert.AreEqual("Pepe", customer.FirstName);
            Assert.AreEqual("Sanchez", customer.LastName);
            Assert.AreEqual("D", customer.IdentificationType);
            Assert.AreEqual("22333444", customer.IdentificationNumber);
            Assert.AreEqual(2, customer.NumberOfAddress()); // No rompo encapsulamiento!

            // 17: Me aseguro que las direcciones sean correctas
            var address = customer.AddressAt("San Martin"); // No rompo encapsulamiento!

            Assert.AreEqual(3322, address.StreetNumber);
            Assert.AreEqual("Olivos", address.Town);
            Assert.AreEqual(1636, address.ZipCode);
            Assert.AreEqual("BsAs", address.Province);

            // 18: Me aseguro sobre la otra direccion
            // Bad Smell 1: Copy & Paste
            address = customer.AddressAt("Maipu");
            Assert.AreEqual(888, address.StreetNumber);
            Assert.AreEqual("Florida", address.Town);
            Assert.AreEqual(1122, address.ZipCode);
            Assert.AreEqual("Buenos Aires", address.Province);

            // 19: Me aseguro que Juan Perez haya sido importando bien
            // Bad Smell 2: Otro copy & paste
            // Bad Smell 3: Como se busca esta en el test!
            customers = session.CreateCriteria <Customer>().
                        Add(Restrictions.Eq("IdentificationType", "C")).
                        Add(Restrictions.Eq("IdentificationNumber", "23-25666777-9")).List <Customer>();
            Assert.AreEqual(1, customers.Count);

            customer = customers[0];
            Assert.AreEqual("Juan", customer.FirstName);
            Assert.AreEqual("Perez", customer.LastName);
            Assert.AreEqual("C", customer.IdentificationType);
            Assert.AreEqual("23-25666777-9", customer.IdentificationNumber);
            Assert.AreEqual(1, customer.NumberOfAddress());

            address = customer.AddressAt("Alem");
            Assert.AreEqual(1122, address.StreetNumber);
            Assert.AreEqual("CABA", address.Town);
            Assert.AreEqual(1001, address.ZipCode);
            Assert.AreEqual("CABA", address.Province);

            transaction.Commit();
            session.Close();
            inputStream.Close();
        }
Beispiel #26
0
        public User DoLogin(User user)
        {
            MsgResult msg = new MsgResult();

            using (ISession session = DbUtils.GetSession())
            {
                user = session
                       .CreateCriteria(typeof(User))
                       .Add(Restrictions.Eq("Username", user.Username))
                       .UniqueResult <User>();
                if ("admin".Equals(user.Username))
                {
                    user.Menus = session
                                 .CreateCriteria(typeof(Menu))
                                 .List <Menu>();;
                }
                IList <Menu> menus = new List <Menu>();
                if (user != null)
                {
                    //加載懶加載的數據
                    NHibernateUtil.Initialize(user.Menus);
                    foreach (Menu menu in user.Menus)
                    {
                        NHibernateUtil.Initialize(menu.Prems);
                        menus.Add(menu);
                    }
                    NHibernateUtil.Initialize(user.Roles);
                    foreach (Role role in user.Roles)
                    {
                        NHibernateUtil.Initialize(role.Menus);
                        foreach (Menu menu in role.Menus)
                        {
                            NHibernateUtil.Initialize(menu.Prems);
                            bool flag = true;
                            foreach (Menu m in menus)
                            {
                                if (menu.Id == m.Id)
                                {
                                    flag = false;
                                }
                            }
                            if (flag)
                            {
                                menus.Add(menu);
                            }
                        }
                    }
                    NHibernateUtil.Initialize(user.Groups);
                    foreach (Group group in user.Groups)
                    {
                        NHibernateUtil.Initialize(group.Roles);
                        foreach (Role role in group.Roles)
                        {
                            NHibernateUtil.Initialize(role.Menus);
                            foreach (Menu menu in role.Menus)
                            {
                                NHibernateUtil.Initialize(menu.Prems);
                                bool flag = true;
                                foreach (Menu m in menus)
                                {
                                    if (menu.Id == m.Id)
                                    {
                                        flag = false;
                                    }
                                }
                                if (flag)
                                {
                                    menus.Add(menu);
                                }
                            }
                        }
                    }
                    user.Menus = menus;
                }
                return(user);
            }
        }
 private void NextDesignState()
 {
     switch (this.DesignState)
     {
         case Restrictions.I:
         {
             this.DesignState = Restrictions.O;
             return;
         }
         case Restrictions.IO:
         {
             this.DesignState = Restrictions.E;
             return;
         }
         case Restrictions.IOE:
         {
             return;
         }
         case Restrictions.O:
         {
             this.DesignState = Restrictions.IO;
             return;
         }
         case Restrictions.E:
         {
             this.DesignState = Restrictions.I;
             return;
         }
         default:
         {
             return;
         }
     }
 }
Beispiel #28
0
        /// <summary>
        /// Get users that are in the given staff type
        /// </summary>
        /// <param name="staffType">staff type to get users in</param>
        /// <returns></returns>
        public IList <User> FindByType(StaffType staffType)
        {
            ICriteria criteria = Session.CreateCriteria <User>().Add(Restrictions.Eq("StaffType", staffType));

            return(criteria.List <User>());
        }
Beispiel #29
0
        public void NoUserHistoryInsertsWithoutIds()
        {
            var r = new Restrictions();

            var history = new UserHistory
            {
                Id = 1
            };

            var updates = new Dictionary<object, Restrictions.ShadowModifiedMember[]>();

            string ignored;
            Assert.IsFalse(r.IsValidChangeSet(updates, new List<object>(), new List<object>() { history }, new List<object>(), new List<int>(), out ignored));
        }
        private IEnumerable <PromosetDuplicateInfoNode> GetPhonesResult(IUnitOfWork uow, IEnumerable <Phone> phones)
        {
            Domain.Orders.Order     orderAlias         = null;
            Domain.Orders.OrderItem orderItemAlias     = null;
            Counterparty            counterpartyAlias  = null;
            DeliveryPoint           deliveryPointAlias = null;
            Phone counterpartyPhoneAlias          = null;
            Phone deliveryPointPhoneAlias         = null;
            PromosetDuplicateInfoNode resultAlias = null;

            var phonesArray    = phones.Select(x => x.DigitsNumber).ToArray();
            var nullProjection = Projections.SqlFunction(
                new SQLFunctionTemplate(NHibernateUtil.String, "NULLIF(1,1)"),
                NHibernateUtil.String
                );

            var counterpartyPhoneProjection = Projections.Conditional(
                Restrictions.In(Projections.Property(() => counterpartyPhoneAlias.DigitsNumber), phonesArray),
                Projections.Property(() => counterpartyPhoneAlias.DigitsNumber),
                nullProjection
                );

            var deliveryPointPhoneProjection = Projections.Conditional(
                Restrictions.In(Projections.Property(() => deliveryPointPhoneAlias.DigitsNumber), phonesArray),
                Projections.Property(() => deliveryPointPhoneAlias.DigitsNumber),
                nullProjection
                );

            var counterpartyConcatPhoneProjection = Projections.SqlFunction(
                new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT(DISTINCT ?1 SEPARATOR ?2)"),
                NHibernateUtil.String,
                counterpartyPhoneProjection,
                Projections.Constant(", ")
                );

            var deliveryPointConcatPhoneProjection = Projections.SqlFunction(
                new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT(DISTINCT ?1 SEPARATOR ?2)"),
                NHibernateUtil.String,
                deliveryPointPhoneProjection,
                Projections.Constant(", ")
                );

            var concatPhoneProjection = Projections.SqlFunction(
                new SQLFunctionTemplate(NHibernateUtil.String, "CONCAT_WS(', ', ?1, ?2)"),
                NHibernateUtil.String,
                counterpartyConcatPhoneProjection,
                deliveryPointConcatPhoneProjection
                );

            var phoneResult = uow.Session.QueryOver(() => orderAlias)
                              .Left.JoinAlias(() => orderAlias.OrderItems, () => orderItemAlias)
                              .Left.JoinAlias(() => orderAlias.Client, () => counterpartyAlias)
                              .Left.JoinAlias(() => orderAlias.DeliveryPoint, () => deliveryPointAlias)
                              .Left.JoinAlias(() => counterpartyAlias.Phones, () => counterpartyPhoneAlias)
                              .Left.JoinAlias(() => deliveryPointAlias.Phones, () => deliveryPointPhoneAlias)
                              .Where(
                Restrictions.Or(
                    Restrictions.In(Projections.Property(() => counterpartyPhoneAlias.DigitsNumber), phonesArray),
                    Restrictions.In(Projections.Property(() => deliveryPointPhoneAlias.DigitsNumber), phonesArray)
                    )
                )
                              .Where(Restrictions.IsNotNull(Projections.Property(() => orderItemAlias.PromoSet)))
                              .SelectList(list => list
                                          .SelectGroup(() => orderAlias.Id)
                                          .Select(() => orderAlias.DeliveryDate).WithAlias(() => resultAlias.Date)
                                          .Select(() => counterpartyAlias.Name).WithAlias(() => resultAlias.Client)
                                          .Select(() => deliveryPointAlias.CompiledAddress).WithAlias(() => resultAlias.Address)
                                          .Select(concatPhoneProjection).WithAlias(() => resultAlias.Phone)
                                          ).TransformUsing(Transformers.AliasToBean <PromosetDuplicateInfoNode>())
                              .List <PromosetDuplicateInfoNode>();

            return(phoneResult);
        }
Beispiel #31
0
        public void UserAttributeUpdateWithUserId()
        {
            var r = new Restrictions();

            var attr = new UserAttribute
            {
                UserId = 1
            };

            var updates = new Dictionary<object, Restrictions.ShadowModifiedMember[]>();
            updates[attr] = new Restrictions.ShadowModifiedMember[]
                {
                    new Restrictions.ShadowModifiedMember
                    {
                        Member = typeof(UserAttribute).GetProperty("UserId"),
                        CurrentValue = attr.Id,
                        OriginalValue = 2
                    }
                };

            string ignored;
            Assert.IsTrue(r.IsValidChangeSet(updates, new List<object>(), new List<object>(), new List<object>() { attr }, new List<int>() { 1 }, out ignored));
        }
Beispiel #32
0
 Bulletin.Models.Clarification IRepository <Bulletin.Models.Clarification> .GetById(int id)
 {
     using (ISession session = NHibernateHelper.OpenSession())
         return(session.CreateCriteria <Bulletin.Models.Clarification>().Add(Restrictions.Eq("ID", id)).UniqueResult <Models.Clarification>());
 }
Beispiel #33
0
        public void UserSiteAuthorizationInsertWithUserId()
        {
            var r = new Restrictions();

            var siteAuth = new UserSiteAuthorization
            {
                UserId = 1
            };

            var updates = new Dictionary<object, Restrictions.ShadowModifiedMember[]>();

            string ignored;
            Assert.IsTrue(r.IsValidChangeSet(updates, new List<object>(), new List<object>() { siteAuth }, new List<object>(), new List<int>() { 1 }, out ignored));
        }
        public IEnumerable <IDamageTypeState> GetByProperty(string propertyName, object propertyValue, IList <string> orders = null, int firstResult = 0, int maxResults = int.MaxValue, IList <string> fields = null)
        {
            var filter = Restrictions.Eq(propertyName, propertyValue);

            return(Get(filter, orders, firstResult, maxResults, fields));
        }
Beispiel #35
0
        public void NoPendingUserUpdateOnNonDeletionDate()
        {
            var r = new Restrictions();

            var pending = new PendingUser
            {
                Id = 1
            };

            var updates = new Dictionary<object, Restrictions.ShadowModifiedMember[]>();
            updates[pending] = new Restrictions.ShadowModifiedMember[]
                {
                    new Restrictions.ShadowModifiedMember
                    {
                        Member = typeof(PendingUser).GetProperty("Id"),
                        CurrentValue = pending.Id,
                        OriginalValue = 2
                    }
                };

            string ignored;
            Assert.IsFalse(r.IsValidChangeSet(updates, new List<object>(), new List<object>(), new List<object>(){pending}, new List<int>(), out ignored));
            Assert.IsFalse(r.IsValidChangeSet(updates, new List<object>(), new List<object>(), new List<object>(){pending}, new List<int>() { 1 }, out ignored));
        }
Beispiel #36
0
        private void ConfigureDlg()
        {
            dateperiodpicker1.StartDate = dateperiodpicker1.EndDate = DateTime.Today;

            var nomenclatureTypeParam = filter.CreateParameterSet(
                "Типы номенклатур",
                "nomenclature_type",
                new ParametersEnumFactory <NomenclatureCategory>()
                );

            var nomenclatureParam = filter.CreateParameterSet(
                "Номенклатуры",
                "nomenclature",
                new ParametersFactory(UoW, (filters) => {
                SelectableEntityParameter <Nomenclature> resultAlias = null;
                var query = UoW.Session.QueryOver <Nomenclature>()
                            .Where(x => !x.IsArchive);
                if (filters != null && filters.Any())
                {
                    foreach (var f in filters)
                    {
                        var filterCriterion = f();
                        if (filterCriterion != null)
                        {
                            query.Where(filterCriterion);
                        }
                    }
                }

                query.SelectList(list => list
                                 .Select(x => x.Id).WithAlias(() => resultAlias.EntityId)
                                 .Select(x => x.OfficialName).WithAlias(() => resultAlias.EntityTitle)
                                 );
                query.TransformUsing(Transformers.AliasToBean <SelectableEntityParameter <Nomenclature> >());
                return(query.List <SelectableParameter>());
            })
                );

            nomenclatureParam.AddFilterOnSourceSelectionChanged(nomenclatureTypeParam,
                                                                () => {
                var selectedValues = nomenclatureTypeParam.GetSelectedValues();
                if (!selectedValues.Any())
                {
                    return(null);
                }
                return(Restrictions.On <Nomenclature>(x => x.Category).IsIn(nomenclatureTypeParam.GetSelectedValues().ToArray()));
            }
                                                                );

            //Предзагрузка. Для избежания ленивой загрузки
            UoW.Session.QueryOver <ProductGroup>().Fetch(SelectMode.Fetch, x => x.Childs).List();

            filter.CreateParameterSet(
                "Группы товаров",
                "product_group",
                new RecursiveParametersFactory <ProductGroup>(UoW,
                                                              (filters) => {
                var query = UoW.Session.QueryOver <ProductGroup>();
                if (filters != null && filters.Any())
                {
                    foreach (var f in filters)
                    {
                        query.Where(f());
                    }
                }
                return(query.List());
            },
                                                              x => x.Name,
                                                              x => x.Childs)
                );

            var viewModel    = new SelectableParameterReportFilterViewModel(filter);
            var filterWidget = new SelectableParameterReportFilterView(viewModel);

            vboxParameters.Add(filterWidget);
            filterWidget.Show();

            ytreeSortPriority.ColumnsConfig = FluentColumnsConfig <SelectableSortTypeNode> .Create()
                                              .AddColumn("").AddToggleRenderer(x => x.Selected)
                                              .AddColumn("Имя").AddEnumRenderer(x => x.SortType)
                                              .Finish();

            ytreeSortPriority.HeadersVisible = false;
            ytreeSortPriority.Reorderable    = true;

            ytreeSortPriority.ItemsDataSource = selectableSortTypeNodes;

            foreach (SortType enumItem in Enum.GetValues(typeof(SortType)))
            {
                selectableSortTypeNodes.Add(new SelectableSortTypeNode(enumItem));
            }

            RefreshAvailableSortTypes();

            yentryrefWarehouse.Changed += YentryrefWarehouse_Changed;
        }
Beispiel #37
0
 public IList <CustomEmployeeGroup> LoadMyCustomGroups(Employee owner)
 {
     return(Session.CreateCriteria <CustomEmployeeGroup>()
            .Add(Restrictions.Eq("Owner", owner))
            .List <CustomEmployeeGroup>());
 }
        public bool Load()
        {
            PerfomanceLogger PFL = new PerfomanceLogger(SessionLog, "Contract.Load");
              if (IsValid)
              {
            /*QueryResult Data = OraQuery.Execute(Connection,
              @"select ClientID, ContractNumber, Name, ContractComment, DateStart, DateFinish, Type, State, CurrencyID, OwnerID,
               opsOnlineRestrictions.CheckContract(:ContractID, :TerminalID, :ServicePointID, :RegionID, :NetworkID, :NetworkOwnerID, Type, ClientID, OwnerID) ContractRestriction,
               opsOnlineRestrictions.CheckContractOwner(OwnerID, :TerminalID, :ServicePointID, :RegionID, :NetworkID, :NetworkOwnerID, :ContractID, Type, ClientID) ContractOwnerRestriction,
               opsOnlineRestrictions.CheckNetworkOwner(:NetworkOwnerID, :TerminalID, :ServicePointID, :RegionID, :NetworkID, :ContractID, Type, ClientID, OwnerID) NetworkOwnerRestriction,
               (select count(1) from ContractLimits z where z.ContractID = c.id) LimitsCount
             * --,
              -- (select count(1) from ContractAccounts z where z.ContractID = c.id) AccountsCount,
             --  (select count(1) from OwnerAccounts z where z.OwnerID = c.OwnerID) OwnerAccountsCount
              from Contracts c where c.id = :ContractID",
              new string[] { "ContractID", "TerminalID", "ServicePointID", "RegionID", "NetworkID", "NetworkOwnerID" },
              new object[] { ID, Terminal.ID, Terminal.ServicePoint.ID, Terminal.ServicePoint.Region.ID, Terminal.ServicePoint.Network.ID, Terminal.ServicePoint.Network.GlobalOwner.ID }, 1);*/

            if (DataObject != null)
            {
              Number = Cvt.ToString(DataObject["ContractNumber"]);
              /*Name = Cvt.ToString(Data[0, "Name"]);
              Comment = Cvt.ToString(Data[0, "ContractComment"]);*/
              DateStart = Cvt.ToDateTime(DataObject["DateStart"], DateTime.MinValue);
              DateFinish = Cvt.ToDateTime(DataObject["DateFinish"], DateTime.MinValue);
              Type = (ContractTypes)Cvt.ToByte(DataObject["Type"]);
              State = (ContractStates)Cvt.ToByte(DataObject["State"]);
              Restriction = (Restrictions)Cvt.ToByte(DataObject["ContractRestriction"]);
              ContractOwnerRestriction = (Restrictions)Cvt.ToByte(DataObject["ContractOwnerRestriction"]);
              NetworkOwnerRestriction = (Restrictions)Cvt.ToByte(DataObject["NetworkOwnerRestriction"]);
              CurrencyID = Cvt.ToUInt32(DataObject["CurrencyID"]);
              OwnerID = Cvt.ToUInt32(DataObject["OwnerID"]);
              HasTariffs = Cvt.ToInt32(DataObject["TariffsCount"]) > 0;
              HasLimits = Cvt.ToInt32(DataObject["LimitsCount"]) > 0;
              HasAccounts = Cvt.ToInt32(DataObject["AccountsCount"]) > 0;
              HasOwnerAccounts = Cvt.ToInt32(DataObject["OwnerAccountsCount"]) > 0;

              // получаем данные по клиенту, привязанному к договору
              ClientID = Cvt.ToUInt64(DataObject["ClientID"]); // контракт ВСЕГДА привязан к клиенту. Если это не так - генерируем ошибку
              /*switch (Type)
              {
            case ContractTypes.Loyalty:
              LoyaltyClient = new LoyaltyClientInfo(this);
              LoyaltyClient.ID = ClientID;
              LoyaltyClient.Load(); // получаем из БД информацию по клиенту лояльности
              break;
            case ContractTypes.Corporate:
              CorporateClient = new CorporateClientInfo(this);
              CorporateClient.ID = ClientID;
              CorporateClient.Load(); // получаем из БД информацию по корпоративному клиенту
              break;
            default:
              ErrorMessage.Add("Неизвестный тип '{0}' клиентского договора ID='{1}'", Type, ID);
              break;
              }*/

              if (ErrorMessage.IsEmpty)
              {
            /*Accounts = new ContractAccountsInfo(this);  счета загружаются по требованию
            Accounts.Load(); // загружаем счета договора*/

            /*TariffPeriods = new ContractTariffPeriodsInfo(this); активные периоды тарифов загружаются по требованию
            TariffPeriods.Load(); // загружаем действующие периоды тарифов            */

            //OwnerAccounts.Load(); // загружаем счета владельца договора
              }

              /*if (ErrorMessage.IsEmpty && Accounts.Count == 0) /*наличие счетов не проверяем...
            ErrorMessage.Add("Отсутствуют активные счета у договора {0}-{1}", Number, Name);*/
              // PA:07.08.2014 счета договора не проверяем после ввода ICardScript.DataScope

              if (ErrorMessage.IsEmpty && !Card.Transaction.Script.AvoidChecks && Card.Transaction.Source != TransactionSources.Offline)
              {
            if (ErrorMessage.IsEmpty && ContractOwnerRestriction == Restrictions.Forbidden)
              ErrorMessage.Add("Владелец договора\nзапретил обслуживание на\nданной точке продаж.");
            if (ErrorMessage.IsEmpty && NetworkOwnerRestriction == Restrictions.Forbidden)
              ErrorMessage.Add("Владелец сети ТО\nзапретил обслуживание\nдоговора на данной\nточке продаж.");

            if (ErrorMessage.IsEmpty && State != ContractStates.Allowed)
              ErrorMessage.Add("Обслуживание договора\nзапрещено");

            if (ErrorMessage.IsEmpty && Card.Transaction.TerminalDateTime < DateStart)
              ErrorMessage.Add("Договор не начал\nдействовать. Дата начала\nдействия договора:\n{0}\nТекущая дата:\n{1}", DateStart.ToString("dd.MM.yyyy HH:mm:ss"), Card.Transaction.TerminalDateTime.ToString("dd.MM.yyyy HH:mm:ss"));

            if (ErrorMessage.IsEmpty && Card.Transaction.TerminalDateTime > DateFinish)
              ErrorMessage.Add("Срок действия договора\nистёк. Дата окончания\nдействия договора:\n{0}.\nТекущая дата:\n{1}", DateFinish.ToString("dd.MM.yyyy HH:mm:ss"), Card.Transaction.TerminalDateTime.ToString("dd.MM.yyyy HH:mm:ss"));
              }
            }
            else
              ErrorMessage.Add("Договор ID = {0} не найден");
              }
              PFL.Stop();
              return ErrorMessage.IsEmpty;
        }
Beispiel #39
0
 /// <summary>Decimal value</summary>
 public void InitDouble(BigRational val, Restrictions restrictions)
 {
     this.RationalValue = val;
     this.primaryNumType = NumberType.rational;
     if (val == (BigInteger)(val)) {
         //this is done to avoid the accumulation of miniscule errors:
         RationalValue = (BigInteger)val;
         primaryNumType = NumberType.integer;
         if (restrictions != Restrictions.dontFactorMe) {
             factors = new Factors((new List<BigInteger>(){(BigInteger)RationalValue}));
         }
     }
     rationalEvaluated = (double)RationalValue.Numerator / (double)RationalValue.Denominator;
 }
Beispiel #40
0
 /// <summary>Exponent</summary>
 public void InitExp(double expBase, double expPower, Restrictions restrictionsToPass)
 {
     this.ExpBase = new Value(expBase, restrictionsToPass);
     this.ExpPower = new Value(expPower, restrictionsToPass);
     this.deciValue = (Math.Pow(expBase, expPower));
     primaryNumType = NumberType.exponent;
 }
Beispiel #41
0
 public Value(BigRational doubleVal, Restrictions restrictions)
 {
     InitDouble(doubleVal, restrictions);
 }
Beispiel #42
0
 public Value(double doubleVal, Factors factors, Restrictions restrictions)
 {
     InitDouble(doubleVal, restrictions);
 }
Beispiel #43
0
 public IList <Employee> GetEmployees(Guid[] employeeIds)
 {
     return(Session.CreateCriteria <Employee>()
            .Add(Restrictions.In("Id", employeeIds))
            .List <Employee>());
 }
Beispiel #44
0
        /// <summary>
        /// Saves the media tags.
        /// </summary>
        /// <param name="media">The media.</param>
        /// <param name="tags">The tags.</param>
        /// <param name="newTags">The new tags.</param>
        public void SaveMediaTags(Media media, IList <string> tags, out IList <Tag> newTags)
        {
            var trimmedTags = new List <string>();

            if (tags != null)
            {
                foreach (var tag in tags)
                {
                    trimmedTags.Add(tag.Trim());
                }
            }

            newTags = new List <Tag>();

            Tag tagAlias = null;

            // Tags merge:
            var mediaTags = unitOfWork.Session
                            .QueryOver <MediaTag>()
                            .Where(t => !t.IsDeleted && t.Media.Id == media.Id)
                            .JoinQueryOver(t => t.Tag, JoinType.InnerJoin)
                            .Where(t => !t.IsDeleted)
                            .List <MediaTag>();

            // Remove deleted tags:
            for (var i = mediaTags.Count - 1; i >= 0; i--)
            {
                var tag = trimmedTags.FirstOrDefault(s => s.ToLower() == mediaTags[i].Tag.Name.ToLower());
                if (tag == null)
                {
                    UpdateModifiedInformation(mediaTags[i]);
                    unitOfWork.Session.Delete(mediaTags[i]);
                }
            }

            // Add new tags:
            var tagsInsert = new List <string>();

            foreach (var tag in trimmedTags)
            {
                var existMediaTag = mediaTags.FirstOrDefault(mediaTag => mediaTag.Tag.Name.ToLower() == tag.ToLower());
                if (existMediaTag == null)
                {
                    tagsInsert.Add(tag);
                }
            }

            if (tagsInsert.Count <= 0)
            {
                return;
            }

            // Get existing tags:
            var existingTags = unitOfWork.Session.QueryOver(() => tagAlias)
                               .Where(t => !t.IsDeleted)
                               .Where(Restrictions.In(Projections.Property(() => tagAlias.Name), tagsInsert))
                               .List <Tag>();

            foreach (var tag in tagsInsert)
            {
                var mediaTag = new MediaTag {
                    Media = media
                };

                var existTag = existingTags.FirstOrDefault(t => t.Name.ToLower() == tag.ToLower());
                if (existTag != null)
                {
                    mediaTag.Tag = existTag;
                }
                else
                {
                    var newTag = new Tag {
                        Name = tag
                    };
                    unitOfWork.Session.SaveOrUpdate(newTag);
                    newTags.Add(newTag);
                    mediaTag.Tag = newTag;
                }

                UpdateModifiedInformation(mediaTag);
                unitOfWork.Session.SaveOrUpdate(mediaTag);
            }
        }
Beispiel #45
0
 /// <summary>Decimal value</summary>
 public void InitDouble(double val, Restrictions restrictions)
 {
     this.deciValue = val;
     if (val == Math.Floor(val)) {
         //this is done to avoid the accumulation of miniscule errors:
         deciValue = Math.Floor(val);
         primaryNumType = NumberType.integer;
         if (restrictions != Restrictions.dontFactorMe && restrictions != Restrictions.dontFactorDontSetFraction) {
             factors = new Factors((int)deciValue);
         }
         natural = new MathNet.Numerics.Natural();
     }else if (restrictions != Restrictions.dontSetToFraction && restrictions != Restrictions.dontFactorDontSetFraction) {
         asAFraction = decimalToFraction(deciValue);
     }
     this.primaryNumType = NumberType.deci;
 }
Beispiel #46
0
 public void UsingExpression()
 {
     TestAction(criteria => criteria.Add(Restrictions.Eq("alias.BooleanData", true)));
 }
Beispiel #47
0
 public Value(double doubleVal, Restrictions restrictions)
 {
     InitDouble(doubleVal, restrictions);
 }
Beispiel #48
0
 public void UsingExpressionProjection()
 {
     TestAction(criteria => criteria.Add(Restrictions.Eq(Projections.Property("alias.BooleanData"), true)));
 }
        public void OnClauseDetached_SubCriteria()
        {
            DetachedCriteria expected =
                DetachedCriteria.For <Person>()
                .CreateCriteria("PersonList", "alias1", JoinType.LeftOuterJoin, Restrictions.Eq("Name", "many func t,bool"))
                .CreateCriteria("PersonList", "alias2", JoinType.LeftOuterJoin, Restrictions.Eq("alias1.Name", "many func bool"))
                .CreateCriteria("PersonList", "alias3", JoinType.LeftOuterJoin, Restrictions.Eq("Name", "many private"))
                .CreateCriteria("Father", "alias4", JoinType.LeftOuterJoin, Restrictions.Eq("Name", "one func t,bool"))
                .CreateCriteria("Father", "alias5", JoinType.LeftOuterJoin, Restrictions.Eq("alias4.Name", "one func bool"))
                .CreateCriteria("Father", "alias6", JoinType.LeftOuterJoin, Restrictions.Eq("Name", "one private"))
                .CreateCriteria("alias1.PersonList", "alias7", JoinType.LeftOuterJoin, Restrictions.Eq("Name", "a many func t,bool"))
                .CreateCriteria("alias2.PersonList", "alias8", JoinType.LeftOuterJoin, Restrictions.Eq("alias1.Name", "a many func bool"))
                .CreateCriteria("alias3.PersonList", "alias9", JoinType.LeftOuterJoin, Restrictions.Eq("Name", "a many private"))
                .CreateCriteria("alias4.Father", "alias10", JoinType.LeftOuterJoin, Restrictions.Eq("Name", "a one func t,bool"))
                .CreateCriteria("alias5.Father", "alias11", JoinType.LeftOuterJoin, Restrictions.Eq("alias4.Name", "a one func bool"))
                .CreateCriteria("alias6.Father", "alias12", JoinType.LeftOuterJoin, Restrictions.Eq("Name", "a one private"));

            Person             alias1  = null;
            Person             alias2  = null;
            Person             alias3  = null;
            Person             alias4  = null;
            Person             alias5  = null;
            Person             alias6  = null;
            Person             alias7  = null;
            Person             alias8  = null;
            Person             alias9  = null;
            Person             alias10 = null;
            Person             alias11 = null;
            Person             alias12 = null;
            QueryOver <Person> actual  =
                QueryOver.Of <Person>()
                .Left.JoinQueryOver(p => p.PersonList, () => alias1, p => p.Name == "many func t,bool")
                .Left.JoinQueryOver(p => p.PersonList, () => alias2, () => alias1.Name == "many func bool")
                .Left.JoinQueryOver(p => p.PersonList, () => alias3, Restrictions.Eq("Name", "many private"))
                .Left.JoinQueryOver(p => p.Father, () => alias4, p => p.Name == "one func t,bool")
                .Left.JoinQueryOver(p => p.Father, () => alias5, () => alias4.Name == "one func bool")
                .Left.JoinQueryOver(p => p.Father, () => alias6, Restrictions.Eq("Name", "one private"))
                .Left.JoinQueryOver(() => alias1.PersonList, () => alias7, p => p.Name == "a many func t,bool")
                .Left.JoinQueryOver(() => alias2.PersonList, () => alias8, () => alias1.Name == "a many func bool")
                .Left.JoinQueryOver(() => alias3.PersonList, () => alias9, Restrictions.Eq("Name", "a many private"))
                .Left.JoinQueryOver(() => alias4.Father, () => alias10, p => p.Name == "a one func t,bool")
                .Left.JoinQueryOver(() => alias5.Father, () => alias11, () => alias4.Name == "a one func bool")
                .Left.JoinQueryOver(() => alias6.Father, () => alias12, Restrictions.Eq("Name", "a one private"));

            AssertCriteriaAreEqual(expected, actual);
        }
Beispiel #50
0
        public async Task CanUseCriteriaAsync()
        {
            await(FillDbAsync());
            int hqlCount;
            int criteriaCount;

            using (ISession session = OpenSession())
            {
                IList <TestClass> retvalue =
                    await(session.CreateQuery("Select tc from TestClass tc join tc.Id.Customer cu where cu.Name = :name").SetString("name", "Alkampfer")
                          .ListAsync <TestClass>());
                hqlCount = retvalue.Count;
            }

            using (ISession session = OpenSession())
            {
                ICriteria c =
                    session.CreateCriteria(typeof(TestClass)).CreateAlias("Id.Customer", "IdCust").Add(Restrictions.Eq("IdCust.Name",
                                                                                                                       "Alkampfer"));
                IList <TestClass> retvalue = await(c.ListAsync <TestClass>());
                criteriaCount = retvalue.Count;
            }
            Assert.That(criteriaCount, Is.EqualTo(1));
            Assert.That(criteriaCount, Is.EqualTo(hqlCount));

            await(CleanupAsync());
        }