Пример #1
0
 public Server(IProjectionContext projectionContext, EventReader eventReader, IConsole console, Projections.OrderHandler orderHandler, WebServer webServer)
 {
     _projectionContext = projectionContext;
     _eventReader = eventReader;
     _console = console;
     _orderHandler = orderHandler;
     _webServer = webServer;
 }
Пример #2
0
 // END CUT HERE
 // BEGIN CUT HERE
 public static void Main()
 {
     try {
     Projections ___test = new Projections();
     ___test.run_test(-1);
     } catch(Exception e) {
     //Console.WriteLine(e.StackTrace);
     Console.WriteLine(e.ToString());
     }
 }
Пример #3
0
 public void Project(Projections type)
 {
     switch (type)
     {
         case Projections.Cabinet:
             ProjectCabinet();
             break;
         case Projections.Perspective:
             ProjectPerspective();
             break;
     }
 }
Пример #4
0
    private void DoSearch(bool isExport)
    {
        DetachedCriteria selectCriteria = DetachedCriteria.For(typeof(DssExportHistory));

        DetachedCriteria selectCountCriteria = DetachedCriteria.For(typeof(DssExportHistory)).SetProjection(Projections.Count("Id"));

        selectCriteria.Add(Expression.Or(Expression.Eq("IsActive", true), Expression.IsNull("TransNo")));
        selectCountCriteria.Add(Expression.Or(Expression.Eq("IsActive", true), Expression.IsNull("TransNo")));

        if (this.tbStartDate.Text.Trim() != string.Empty)
        {
            DateTime startDate = DateTime.Parse(this.tbStartDate.Text.Trim());
            selectCriteria.Add(Expression.Ge("CreateDate", startDate));
            selectCountCriteria.Add(Expression.Ge("CreateDate", startDate));
        }

        if (this.tbEndDate.Text.Trim() != string.Empty)
        {
            DateTime endDate = DateTime.Parse(this.tbEndDate.Text.Trim());
            selectCriteria.Add(Expression.Lt("CreateDate", endDate.AddDays(1)));
            selectCountCriteria.Add(Expression.Lt("CreateDate", endDate.AddDays(1)));
        }

        if (isExport)
        {
            ExportEvent((new object[] { selectCriteria, selectCountCriteria }), null);
        }
        else
        {
            SearchEvent((new object[] { selectCriteria, selectCountCriteria }), null);
        }
    }
Пример #5
0
        /// <summary>
        /// Gets the permissions for the specified user and entity
        /// </summary>
        /// <typeparam name="TEntity"></typeparam>
        /// <param name="user">The user.</param>
        /// <param name="entity"></param>
        /// <returns></returns>
        public Permission[] GetPermissionsFor <TEntity>(IUser user, TEntity entity) where TEntity : class
        {
            Guid key = Security.ExtractKey(entity);

            EntitiesGroup[] entitiesGroups = authorizationRepository.GetAssociatedEntitiesGroupsFor(entity);

            DetachedCriteria criteria = DetachedCriteria.For <Permission>()
                                        .Add(Expression.Eq("User", user) ||
                                             Subqueries.PropertyIn("UsersGroup.Id",
                                                                   SecurityCriterions.AllGroups(user).SetProjection(Projections.Id())))
                                        .Add(Expression.Eq("EntitySecurityKey", key) || Expression.In("EntitiesGroup", entitiesGroups));

            return(FindResults(criteria));
        }
Пример #6
0
 public override void AddProjection(ProjectionList projections)
 {
     projections.Add(Projections.Property("class"));
 }
Пример #7
0
        public async Task ManyToManyCollectionOptimisticLockingWithMergeAsync()
        {
            ClearCounts();

            Plan     pOrig = new Plan("plan");
            Contract cOrig = new Contract(null, "gail", "phone");

            pOrig.AddContract(cOrig);
            ISession     s = OpenSession();
            ITransaction t = s.BeginTransaction();

            await(s.PersistAsync(pOrig));
            await(t.CommitAsync());
            s.Close();

            AssertInsertCount(2);
            AssertUpdateCount(0);
            ClearCounts();

            s = OpenSession();
            t = s.BeginTransaction();
            Plan     p    = await(s.GetAsync <Plan>(pOrig.Id));
            Contract newC = new Contract(null, "sherman", "note");

            p.AddContract(newC);
            await(t.CommitAsync());
            s.Close();

            AssertInsertCount(1);
            AssertUpdateCount(isContractVersioned ? 1 : 0);
            ClearCounts();

            s = OpenSession();
            t = s.BeginTransaction();
            pOrig.RemoveContract(cOrig);
            try
            {
                await(s.MergeAsync(pOrig));
                Assert.That(isContractVersioned, Is.False);
            }
            catch (StaleObjectStateException)
            {
                Assert.That(isContractVersioned, Is.True);
            }
            finally
            {
                await(t.RollbackAsync());
            }
            s.Close();

            s = OpenSession();
            t = s.BeginTransaction();
            p = await(s.CreateCriteria <Plan>().UniqueResultAsync <Plan>());
            await(s.DeleteAsync(p));
            Assert.That(await(s.CreateCriteria <Plan>().SetProjection(Projections.RowCountInt64()).UniqueResultAsync <long>()), Is.EqualTo(0L));
            Assert.That(await(s.CreateCriteria <Contract>().SetProjection(Projections.RowCountInt64()).UniqueResultAsync <long>()), Is.EqualTo(0L));
            await(t.CommitAsync());
            s.Close();

            AssertUpdateCount(0);
            AssertDeleteCount(3);
        }
Пример #8
0
        /// <summary>
        /// Gets the permissions for the specified user
        /// </summary>
        /// <param name="user">The user.</param>
        /// <returns></returns>
        public Permission[] GetPermissionsFor(IUser user)
        {
            DetachedCriteria criteria = DetachedCriteria.For <Permission>()
                                        .Add(Expression.Eq("User", user) ||
                                             Subqueries.PropertyIn("UsersGroup.Id",
                                                                   SecurityCriterions.AllGroups(user).SetProjection(Projections.Id())));

            return(FindResults(criteria));
        }
Пример #9
0
        public async Task MoveManyToManyElementToExistingEntityCollectionAsync()
        {
            ClearCounts();

            Plan p = new Plan("plan");

            p.AddContract(new Contract(null, "gail", "phone"));
            Plan         p2 = new Plan("plan2");
            ISession     s  = OpenSession();
            ITransaction t  = s.BeginTransaction();

            await(s.PersistAsync(p));
            await(s.PersistAsync(p2));
            await(t.CommitAsync());
            s.Close();

            AssertInsertCount(3);
            AssertUpdateCount(0);
            ClearCounts();

            s = OpenSession();
            t = s.BeginTransaction();
            p = await(s.CreateCriteria <Plan>().Add(Restrictions.IdEq(p.Id)).UniqueResultAsync <Plan>());
            Assert.That(p.Contracts.Count, Is.EqualTo(1));
            Contract c = p.Contracts.First();

            Assert.That(c.CustomerName, Is.EqualTo("gail"));
            if (isPlanContractsBidirectional)
            {
                Assert.That(c.Plans.First(), Is.SameAs(p));
            }
            p.RemoveContract(c);
            await(t.CommitAsync());
            s.Close();

            AssertInsertCount(0);
            AssertUpdateCount(isPlanVersioned && isContractVersioned ? 2 : 0);
            ClearCounts();

            s  = OpenSession();
            t  = s.BeginTransaction();
            p2 = await(s.CreateCriteria <Plan>().Add(Restrictions.IdEq(p2.Id)).UniqueResultAsync <Plan>());
            c  = await(s.CreateCriteria <Contract>().Add(Restrictions.IdEq(c.Id)).UniqueResultAsync <Contract>());
            p2.AddContract(c);
            await(t.CommitAsync());
            s.Close();

            AssertInsertCount(0);
            AssertUpdateCount(isPlanVersioned && isContractVersioned ? 2 : 0);
            ClearCounts();

            s  = OpenSession();
            t  = s.BeginTransaction();
            p  = await(s.CreateCriteria <Plan>().Add(Restrictions.IdEq(p.Id)).UniqueResultAsync <Plan>());
            p2 = await(s.CreateCriteria <Plan>().Add(Restrictions.IdEq(p2.Id)).UniqueResultAsync <Plan>());

            /*
             * if (isPlanContractsInverse) {
             *      Assert.That(p.Contracts.Count, Is.EqualTo(1));
             *      c = p.Contracts.First();
             *      Assert.That(c.CustomerName, Is.EqualTo("gail"));
             *      if (isPlanContractsBidirectional) {
             *              Assert.That(c.Plans.First(), Is.SameAs(p));
             *      }
             *      assertEquals( 0, p2.getContracts().size() );
             * }
             * else {
             */
            Assert.That(p.Contracts.Count, Is.EqualTo(0));
            Assert.That(p2.Contracts.Count, Is.EqualTo(1));
            c = p2.Contracts.First();
            Assert.That(c.CustomerName, Is.EqualTo("gail"));
            if (isPlanContractsBidirectional)
            {
                Assert.That(c.Plans.First(), Is.SameAs(p2));
            }
            //}
            await(s.DeleteAsync(p));
            await(s.DeleteAsync(p2));
            Assert.That(await(s.CreateCriteria <Plan>().SetProjection(Projections.RowCountInt64()).UniqueResultAsync()), Is.EqualTo(0L));
            Assert.That(await(s.CreateCriteria <Contract>().SetProjection(Projections.RowCountInt64()).UniqueResultAsync()), Is.EqualTo(0L));
            await(t.CommitAsync());
            s.Close();

            AssertUpdateCount(0);
            AssertDeleteCount(3);
        }
Пример #10
0
        public async Task CreateWithNonEmptyManyToManyCollectionMergeWithNewElementAsync()
        {
            ClearCounts();

            Plan     p = new Plan("plan");
            Contract c = new Contract(null, "gail", "phone");

            p.AddContract(c);
            ISession     s = OpenSession();
            ITransaction t = s.BeginTransaction();

            await(s.PersistAsync(p));
            await(t.CommitAsync());
            s.Close();

            AssertInsertCount(2);
            AssertUpdateCount(0);
            ClearCounts();

            Contract newC = new Contract(null, "yogi", "mail");

            p.AddContract(newC);

            s = OpenSession();
            t = s.BeginTransaction();
            p = (Plan)await(s.MergeAsync(p));
            await(t.CommitAsync());
            s.Close();

            AssertInsertCount(1);
            AssertUpdateCount(isContractVersioned && isPlanVersioned ? 1 : 0);              // NH-specific: Hibernate issues a separate UPDATE for the version number
            ClearCounts();

            s = OpenSession();
            t = s.BeginTransaction();
            p = await(s.CreateCriteria <Plan>().UniqueResultAsync <Plan>());
            Assert.That(p.Contracts.Count, Is.EqualTo(2));
            foreach (Contract aContract in p.Contracts)
            {
                if (aContract.Id == c.Id)
                {
                    Assert.That(aContract.CustomerName, Is.EqualTo("gail"));
                }
                else if (!aContract.CustomerName.Equals(newC.CustomerName))
                {
                    Assert.Fail("unknown contract:" + aContract.CustomerName);
                }
                if (isPlanContractsBidirectional)
                {
                    Assert.That(aContract.Plans.First(), Is.SameAs(p));
                }
            }
            await(s.DeleteAsync(p));
            Assert.That(await(s.CreateCriteria <Plan>().SetProjection(Projections.RowCountInt64()).UniqueResultAsync()), Is.EqualTo(0L));
            Assert.That(await(s.CreateCriteria <Contract>().SetProjection(Projections.RowCountInt64()).UniqueResultAsync()), Is.EqualTo(0L));
            await(t.CommitAsync());
            s.Close();

            AssertUpdateCount(0);
            AssertDeleteCount(3);
        }
Пример #11
0
        private DetachedCriteria getDetachedEvents(Int32 top, string[] codigosMensaje, Byte[] estados, DateTime?from, DateTime?to, DateTime?expiresOn, int?maxMonths, Boolean?esPopup, Boolean?reqAtencion, Int32?lastId)
        {
            var result = DetachedCriteria.For <LogMensajeAdmin>("dlm");

            if (codigosMensaje.Length > 0)
            {
                var mdc = DetachedCriteria.For <Mensaje>("dm")
                          .SetProjection(Projections.Property("Id"))
                          .Add(Restrictions.In(Projections.Property <Mensaje>(lm => lm.Codigo), codigosMensaje));

                result.Add(Subqueries.PropertyIn("Mensaje.Id", mdc));
            }

            if (expiresOn != null)
            {
                result.Add(Restrictions.Gt(Projections.Property <LogMensajeAdmin>(lm => lm.Expiracion), expiresOn));
            }

            if (esPopup != null)
            {
                result.CreateAlias("Accion", "a", JoinType.InnerJoin)
                .Add(Restrictions.Eq("a.EsPopUp", esPopup.Value));
            }

            #region Por Id/Estado o RequiereAtencion

            if ((esPopup ?? false) && (reqAtencion ?? false))
            {
                var conj2 = Restrictions.Conjunction()
                            .Add(Restrictions.Eq("Estado", (byte)0))
                            .Add(Restrictions.Eq("a.RequiereAtencion", true));

                result.Add(conj2);
            }
            else
            {
                var conj1 = Restrictions.Conjunction();

                if (from != null || to != null || maxMonths != null)
                {
                    if (maxMonths != null)
                    {
                        var minDesde = DateTime.UtcNow.AddMonths(-maxMonths.Value);
                        from = (@from ?? DateTime.MinValue) > minDesde ? from : minDesde;
                    }
                    if (from != null && to != null)
                    {
                        conj1.Add(Restrictions.Between(Projections.Property <LogMensajeAdmin>(lm => lm.Fecha), from, to));
                    }
                    else
                    {
                        conj1.Add(Restrictions.Ge(Projections.Property <LogMensajeAdmin>(lm => lm.Fecha), from));
                    }
                }

                if (estados.Length > 0)
                {
                    conj1.Add(Restrictions.In(Projections.Property <LogMensajeAdmin>(lm => lm.Estado), estados));
                }

                if (lastId != null && lastId > 0)
                {
                    conj1.Add(Restrictions.Gt(Projections.Property <LogMensajeAdmin>(lm => lm.Id), lastId));
                }

                result.Add(conj1);
            }

            #endregion

            if (top > 0)
            {
                result.SetMaxResults(top);
            }

            result.SetProjection(Projections.Property <LogMensajeAdmin>(lm => lm.Id));

            return(result);
        }
Пример #12
0
 /// <summary>Metoda stránkování (úprava na datové vrstvě).</summary>
 /// <param name="count">kolik fotografií vracím</param>
 /// <param name="page">kterou stránku chci zobrazit</param>
 /// <param name="totalPhotographs">(out výstupní parametr) kolik fotografií celkem existuje</param>
 public IList <Photography> GetPhotographsPaged(int count, int page, out int totalPhotographs)
 {
     totalPhotographs = session.CreateCriteria <Photography>().SetProjection(Projections.RowCount()).UniqueResult <int>();
     return(session.CreateCriteria <Photography>().SetFirstResult((page - 1) * count).SetMaxResults(count).List <Photography>());
 }
Пример #13
0
        public void Should_Filter_Null_Or_Whitespace_Column_Correctly()
        {
            var category = DatabaseTestDataProvider.ProvideRandomTestItemCategory();

            category.Name = "   ";

            Repository.Save(category);
            UnitOfWork.Commit();

            TestItemCategory alias = null;
            var loadedCategory     = Repository
                                     .AsQueryOver(() => alias)
                                     .Where(RestrictionsExtensions.IsNullOrWhiteSpace(Projections.Property(() => alias.Name)))
                                     .And(() => alias.Id == category.Id)
                                     .SingleOrDefault <TestItemCategory>();

            Assert.IsNotNull(loadedCategory);
            Assert.AreEqual(category.Id, loadedCategory.Id);
        }
Пример #14
0
        public async Task ExecutableCriteriaAsync()
        {
            // All query below don't have sense, are only to test if all needed classes are serializable

            // Basic criterion
            DetachedCriteria dc = DetachedCriteria.For(typeof(Student))
                                  .Add(Expression.Between("Name", "aaaaa", "zzzzz"))
                                  .Add(Expression.EqProperty("Name", "Name"))
                                  .Add(Expression.Ge("Name", "a"))
                                  .Add(Expression.GeProperty("Name", "Name"))
                                  .Add(Expression.Gt("Name", "z"))
                                  .Add(Expression.GtProperty("Name", "Name"))
                                  .Add(Expression.IdEq(1))
                                  .Add(Expression.In("Name", new string[] { "Gavin", "Ralph" }))
                                  .Add(Expression.InsensitiveLike("Name", "GAVIN"))
                                  .Add(Expression.IsEmpty("Enrolments"))
                                  .Add(Expression.IsNotEmpty("Enrolments"))
                                  .Add(Expression.IsNotNull("PreferredCourse"))
                                  .Add(Expression.IsNull("PreferredCourse"))
                                  .Add(Expression.Le("Name", "a"))
                                  .Add(Expression.LeProperty("Name", "Name"))
                                  .Add(Expression.Lt("Name", "z"))
                                  .Add(Expression.LtProperty("Name", "Name"))
                                  .Add(Expression.Like("Name", "G%"))
                                  .Add(Expression.Not(Expression.Eq("Name", "Ralph")))
                                  .Add(Expression.NotEqProperty("Name", "Name"))
                                  .AddOrder(Order.Asc("StudentNumber"))
                                  .SetProjection(Property.ForName("StudentNumber"));

            await(SerializeAndListAsync(dc));

            // Like match modes
            dc = DetachedCriteria.For(typeof(Student))
                 .Add(Expression.Like("Name", "Gavin", MatchMode.Anywhere))
                 .Add(Expression.Like("Name", "Gavin", MatchMode.End))
                 .Add(Expression.Like("Name", "Gavin", MatchMode.Exact))
                 .Add(Expression.Like("Name", "Gavin", MatchMode.Start));

            await(SerializeAndListAsync(dc));

            // Logical Expression
            dc = DetachedCriteria.For(typeof(Student))
                 .Add(Expression.Or(Expression.Eq("Name", "Ralph"), Expression.Eq("Name", "Gavin")))
                 .Add(
                Expression.And(Expression.Gt("StudentNumber", 1L),
                               Expression.Lt("StudentNumber", 10L)));

            await(SerializeAndListAsync(dc));

            // Projections
            dc = DetachedCriteria.For(typeof(Enrolment))
                 .SetProjection(Projections.Distinct(Projections.ProjectionList()
                                                     .Add(Projections.Property("StudentNumber"), "stNumber")
                                                     .Add(Projections.Property("CourseCode"), "cCode")))
                 .Add(Expression.Lt("StudentNumber", 668L));
            await(SerializeAndListAsync(dc));

            if (TestDialect.SupportsCountDistinct)
            {
                dc = DetachedCriteria.For(typeof(Enrolment))
                     .SetProjection(Projections.Count("StudentNumber").SetDistinct());
                await(SerializeAndListAsync(dc));
            }

            dc = DetachedCriteria.For(typeof(Enrolment))
                 .SetProjection(Projections.ProjectionList()
                                .Add(Projections.Count("StudentNumber"))
                                .Add(Projections.Max("StudentNumber"))
                                .Add(Projections.Min("StudentNumber"))
                                .Add(Projections.Avg("StudentNumber")));
            await(SerializeAndListAsync(dc));

            // Junctions
            dc = DetachedCriteria.For(typeof(Student))
                 .Add(Expression.Conjunction()
                      .Add(Expression.Eq("Name", "Ralph"))
                      .Add(Expression.Eq("StudentNumber", 1L)))
                 .Add(Expression.Disjunction()
                      .Add(Expression.Eq("Name", "Ralph"))
                      .Add(Expression.Eq("Name", "Gavin")));
            await(SerializeAndListAsync(dc));

            // Subquery
            dc = DetachedCriteria.For(typeof(Student))
                 .Add(Property.ForName("StudentNumber").Eq(232L))
                 .SetProjection(Property.ForName("Name"));

            DetachedCriteria dcs = DetachedCriteria.For(typeof(Student))
                                   .Add(Subqueries.PropertyEqAll("Name", dc));

            await(SerializeAndListAsync(dc));

            // SQLCriterion
            dc = DetachedCriteria.For(typeof(Student))
                 .Add(Expression.Sql("{alias}.Name = 'Gavin'"));
            await(SerializeAndListAsync(dc));

            // SQLProjection
            dc = DetachedCriteria.For(typeof(Enrolment))
                 .SetProjection(Projections.SqlProjection("1 as constOne, count(*) as countStar",
                                                          new String[] { "constOne", "countStar" },
                                                          new IType[] { NHibernateUtil.Int32, NHibernateUtil.Int32 }));
            await(SerializeAndListAsync(dc));

            dc = DetachedCriteria.For(typeof(Student))
                 .SetProjection(
                Projections.SqlGroupProjection("COUNT({alias}.studentId), {alias}.preferredCourseCode",
                                               "{alias}.preferredCourseCode",
                                               new string[] { "studentsOfCourse", "CourseCode" },
                                               new IType[] { NHibernateUtil.Int32, NHibernateUtil.Int32 }));
            await(SerializeAndListAsync(dc));

            // Result transformers
            dc = DetachedCriteria.For(typeof(Enrolment))
                 .CreateAlias("Student", "st")
                 .CreateAlias("Course", "co")
                 .SetProjection(Projections.ProjectionList()
                                .Add(Projections.Property("st.Name"), "studentName")
                                .Add(Projections.Property("co.Description"), "courseDescription")
                                )
                 .AddOrder(Order.Desc("studentName"))
                 .SetResultTransformer(Transformers.AliasToBean(typeof(StudentDTO)));
            await(SerializeAndListAsync(dc));
        }
Пример #15
0
        private static void Game_OnGameLoad(EventArgs args)
        {
            try
            {
                Player = EloBuddy.Player.Instance;
                MapId  = (int)LeagueSharp.Common.Utility.Map.GetMap().Type;
                Rand   = new Random();

                GetSpellsInGame();
                GetSmiteSlot();
                GetGameTroysInGame();
                GetAurasInGame();
                GetHeroesInGame();
                GetComboDamage();
                //Helpers.CreateLogPath();

                Origin = new Menu("Activator", "activator", true);

                Menu cmenu = new Menu("Cleansers", "cmenu");
                GetItemGroup("Items.Cleansers").ForEach(t => NewItem((CoreItem)NewInstance(t), cmenu));
                CreateSubMenu(cmenu, false);
                Origin.AddSubMenu(cmenu);

                Menu dmenu = new Menu("Defensives", "dmenu");
                GetItemGroup("Items.Defensives").ForEach(t => NewItem((CoreItem)NewInstance(t), dmenu));
                CreateSubMenu(dmenu, false);
                Origin.AddSubMenu(dmenu);

                Menu smenu = new Menu("Summoners", "smenu");
                GetItemGroup("Summoners").ForEach(t => NewSumm((CoreSum)NewInstance(t), smenu));
                CreateSubMenu(smenu, true, true);
                Origin.AddSubMenu(smenu);

                Menu omenu = new Menu("Offensives", "omenu");
                GetItemGroup("Items.Offensives").ForEach(t => NewItem((CoreItem)NewInstance(t), omenu));
                CreateSubMenu(omenu, true);
                Origin.AddSubMenu(omenu);

                Menu imenu = new Menu("Consumables", "imenu");
                GetItemGroup("Items.Consumables").ForEach(t => NewItem((CoreItem)NewInstance(t), imenu));
                Origin.AddSubMenu(imenu);

                Menu amenu = new Menu("Auto Spells", "amenu");
                GetItemGroup("Spells.Evaders").ForEach(t => NewSpell((CoreSpell)NewInstance(t), amenu));
                GetItemGroup("Spells.Shields").ForEach(t => NewSpell((CoreSpell)NewInstance(t), amenu));
                GetItemGroup("Spells.Health").ForEach(t => NewSpell((CoreSpell)NewInstance(t), amenu));
                GetItemGroup("Spells.Slows").ForEach(t => NewSpell((CoreSpell)NewInstance(t), amenu));
                GetItemGroup("Spells.Heals").ForEach(t => NewSpell((CoreSpell)NewInstance(t), amenu));
                CreateSubMenu(amenu, false);
                Origin.AddSubMenu(amenu);

                Menu zmenu = new Menu("Misc/Settings", "settings");

                if (SmiteInGame)
                {
                    Menu ddmenu = new Menu("Drawings", "drawings");
                    ddmenu.AddItem(new MenuItem("drawsmitet", "Draw Smite Text")).SetValue(true);
                    ddmenu.AddItem(new MenuItem("drawfill", "Draw Smite Fill")).SetValue(true);
                    ddmenu.AddItem(new MenuItem("drawsmite", "Draw Smite Range")).SetValue(true);
                    zmenu.AddSubMenu(ddmenu);
                }

                var bbmenu = new Menu("Debug Tools", "bbmenu");
                bbmenu.AddItem(new MenuItem("acdebug", "Debug Income Damage")).SetValue(false);
                bbmenu.AddItem(new MenuItem("acdebug2", "Debug Item Priority")).SetValue(false);
                bbmenu.AddItem(new MenuItem("dumpdata", "Dump Spell Data")).SetValue(false);
                zmenu.AddSubMenu(bbmenu);

                zmenu.AddItem(new MenuItem("autolevelup", "Auto Level Ultimate")).SetValue(true).SetTooltip("Level 6 Only");
                zmenu.AddItem(new MenuItem("autotrinket", "Auto Upgrade Trinket")).SetValue(false);
                zmenu.AddItem(new MenuItem("healthp", "Ally Priority:")).SetValue(new StringList(new[] { "Low HP", "Most AD/AP", "Most HP" }, 1));
                zmenu.AddItem(new MenuItem("weightdmg", "Weight Income Damage (%)"))
                .SetValue(new Slider(115, 100, 150))
                .SetTooltip("Make Activator# think you are taking more damage than calulated.");
                zmenu.AddItem(new MenuItem("usecombo", "Combo (active)")).SetValue(new KeyBind(32, KeyBindType.Press, true));

                Menu uumenu = new Menu("Spell Database", "evadem");
                LoadSpellMenu(uumenu);
                zmenu.AddSubMenu(uumenu);

                Origin.AddSubMenu(zmenu);
                Origin.AddToMainMenu();

                // drawings
                Drawings.Init();

                // handlers
                Projections.Init();
                Trinkets.Init();

                // tracks dangerous or lethal buffs/auras
                Buffs.StartOnUpdate();

                // tracks gameobjects
                Gametroys.StartOnUpdate();

                // on bought item
                //Obj_AI_Base.OnPlaceItemInSlot += Obj_AI_Base_OnPlaceItemInSlot;
                Shop.OnBuyItem += Obj_AI_Base_OnPlaceItemInSlot;

                // on level up
                Obj_AI_Base.OnLevelUp += Obj_AI_Base_OnLevelUp;

                Chat.Print("<b><font color=\"#FF3366\">Activator#</font></b> - Loaded!");
                //Updater.UpdateCheck();

                // init valid auto spells
                foreach (CoreSpell autospell in Lists.Spells)
                {
                    if (Player.GetSpellSlot(autospell.Name) != SpellSlot.Unknown)
                    {
                        Game.OnUpdate += autospell.OnTick;
                    }
                }

                // init valid summoners
                foreach (CoreSum summoner in Lists.Summoners)
                {
                    if (summoner.Slot != SpellSlot.Unknown ||
                        summoner.ExtraNames.Any(x => Player.GetSpellSlot(x) != SpellSlot.Unknown) ||
                        summoner.Name == "summonerteleport")
                    {
                        Game.OnUpdate += summoner.OnTick;
                    }
                }

                // find items (if F5)
                foreach (CoreItem item in Lists.Items)
                {
                    if (!LeagueSharp.Common.Items.HasItem(item.Id))
                    {
                        continue;
                    }

                    if (!Lists.BoughtItems.Contains(item))
                    {
                        if (item.Category.Any())
                        {
                            Game.OnUpdate += item.OnTick;
                        }

                        if (item.Category.Any(t => t == MenuType.Gapcloser))
                        {
                            AntiGapcloser.OnEnemyGapcloser += item.OnEnemyGapcloser;
                        }

                        Lists.BoughtItems.Add(item);
                        Chat.Print("<b><font color=\"#FF3366\">Activator#</font></b> - <font color=\"#FFF280\">" + item.Name + "</font> active!");
                    }
                }
            }

            catch (Exception e)
            {
                Console.WriteLine(e);
                Chat.Print("Exception thrown at <font color=\"#FFF280\">Activator.OnGameLoad</font>");
            }
        }
Пример #16
0
        /// <summary>
        /// Saves the media tags.
        /// </summary>
        /// <param name="media">The media.</param>
        /// <param name="tags">The tags.</param>
        /// <param name="newCreatedTags">The new created tags.</param>
        public void SaveMediaTags(Media media, IEnumerable <string> tags, out IList <Tag> newCreatedTags)
        {
            var trimmedTags = new List <string>();

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

            newCreatedTags = 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)
                {
                    unitOfWork.Session.Delete(mediaTags[i]);
                }
            }

            // Add new tags:
            List <string> 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)
            {
                // 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
                    {
                        Tag newTag = new Tag {
                            Name = tag
                        };
                        unitOfWork.Session.SaveOrUpdate(newTag);
                        newCreatedTags.Add(newTag);
                        mediaTag.Tag = newTag;
                    }

                    unitOfWork.Session.SaveOrUpdate(mediaTag);
                }
            }
        }
        public IList <TransactionLog> GetAllTransactionLog(string cardPAN, string mti, string responseCode, DateTime?transactionDateFrom, DateTime?transactionDateTo, int start, int limit, out int total)
        {
            List <TransactionLog> result = new List <TransactionLog>();

            try
            {
                ICriteria criteria = _Session.CreateCriteria(typeof(TransactionLog));
                if (!string.IsNullOrEmpty(cardPAN))
                {
                    criteria.Add(Expression.Like("CardPAN", cardPAN));
                }
                if (!string.IsNullOrEmpty(mti))
                {
                    criteria.Add(Expression.Like("MTI", mti));
                }
                if (!string.IsNullOrEmpty(responseCode))
                {
                    criteria.Add(Expression.Like("ResponseCode", responseCode));
                }
                if (transactionDateFrom.HasValue && !transactionDateFrom.Value.Equals(DateTime.MinValue))
                {
                    criteria.Add(Expression.Ge("TransactionDate", transactionDateFrom.Value));
                }
                if (transactionDateTo.HasValue && !transactionDateTo.Value.Equals(DateTime.MinValue))
                {
                    criteria.Add(Expression.Le("TransactionDate", transactionDateTo.Value.AddDays(1).AddSeconds(-1)));
                }
                ICriteria countCriteria = CriteriaTransformer.Clone(criteria).SetProjection(Projections.RowCountInt64());
                ICriteria listCriteria  = CriteriaTransformer.Clone(criteria).SetFirstResult(start).SetMaxResults(limit);
                listCriteria.AddOrder(Order.Desc("Id"));

                IList allResults = _Session.CreateMultiCriteria().Add(listCriteria).Add(countCriteria).List();

                foreach (var o in (IList)allResults[0])
                {
                    result.Add((TransactionLog)o);
                }

                total = Convert.ToInt32((long)((IList)allResults[1])[0]);
            }
            catch (Exception)
            {
                throw;
            }
            return(result);
        }
Пример #18
0
        public ActionResult Index(UserIndexOptions options, PagerParameters pagerParameters)
        {
            if (!service.Authorizer.Authorize(Permissions.ManageUsers, T("Not authorized to list users")))
            {
                return(new HttpUnauthorizedResult());
            }

            var userType = contentDefinitionManager.GetTypeDefinition("User");
            var hasBasicUserProfilePart = userType.Parts.Any(p => p.PartDefinition.Name == nameof(BasicUserProfilePart));

            // Create criteria
            var session = transactionManager.GetSession();
            var query   = session.CreateCriteria <ContentItemVersionRecord>("version")
                          .CreateAlias("version.ContentItemRecord", "item", JoinType.InnerJoin)
                          // content item is aggregation of part records
                          .CreateAlias("item.ContentType", "type", JoinType.InnerJoin)
                          .CreateAlias("item.UserPartRecord", "user", JoinType.InnerJoin)
                          .Add(Restrictions.Eq("type.Name", "User"))
                          .Add(Restrictions.Eq("version.Published", true));

            if (hasBasicUserProfilePart)
            {
                query.CreateAlias(
                    "item.BasicUserProfilePartRecord",
                    "profile",
                    JoinType.LeftOuterJoin
                    ); // Not all user have profiles, e.g Admin
            }
            SetFilter(options, query, hasBasicUserProfilePart);

            var totalItemCount = query.SetProjection(Projections.RowCount()).UniqueResult <int>();
            var pager          = new Pager(siteService.GetSiteSettings(), pagerParameters);
            var pagerShape     = Shape.Pager(pager).TotalItemCount(totalItemCount);

            SetProjectionList(hasBasicUserProfilePart, query);
            // FirstResult is row index start from 0
            // pager.GetStartIndex() is calculated row index that we use
            // If we want page number, use pager.Page.
            query.SetFirstResult(pager.GetStartIndex()).SetMaxResults(pager.PageSize);
            SetSortOrder(options, query, hasBasicUserProfilePart);

            var results = query.List <BasicUserProfileDto>();
            var model   = new UserIndexViewModel {
                Users = results.Select(u => new ViewModels.UserEntry()
                {
                    User = u
                }).ToList(),
                Options = options,
                Pager   = pagerShape
            };

            // maintain previous route data when generating page links
            var routeData = new RouteData();

            routeData.Values.Add("Options.Filter", options.Filter);
            routeData.Values.Add("Options.Search", options.Search);
            routeData.Values.Add("Options.Order", options.Order);
            pagerShape.RouteData(routeData);

            // https://stackoverflow.com/questions/43565738/name-valuetuple-properties-when-creating-with-new/43566072#43566072
            // can't cast with "is (Url: string, Email: string>) activationEmail"
            if (TempData[activationEmailKey] is ValueTuple <string, string> activationEmail)
            {
                var(url, email)           = activationEmail;
                model.ActivationEmailSent = Shape.ActivationEmailSent(Url: url, Email: email);
            }
            ;

            return(View(model));
        }
Пример #19
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="FqProjectionList" /> class.
 /// </summary>
 public FqProjectionList()
 {
     _list = Projections.ProjectionList();
 }
Пример #20
0
        public async Task InsertIntoFromSelect_WithSelectClauseParametersAsync()
        {
            using (ISession s = OpenSession())
            {
                using (s.BeginTransaction())
                {
                    // arrange
                    await(s.SaveAsync(new Animal()
                    {
                        Description = "cat1", BodyWeight = 2.1f
                    }));
                    await(s.SaveAsync(new Animal()
                    {
                        Description = "cat2", BodyWeight = 2.5f
                    }));
                    await(s.SaveAsync(new Animal()
                    {
                        Description = "cat3", BodyWeight = 2.7f
                    }));

                    // act
                    await(s.CreateQuery("insert into Animal (description, bodyWeight) select a.description, :weight from Animal a where a.bodyWeight < :weight")
                          .SetParameter <float>("weight", 5.7f).ExecuteUpdateAsync());

                    // assert
                    Assert.AreEqual(3, await(s.CreateCriteria <Animal>().SetProjection(Projections.RowCount())
                                             .Add(Restrictions.Gt("bodyWeight", 5.5f)).UniqueResultAsync <int>()));

                    await(s.CreateQuery("delete from Animal").ExecuteUpdateAsync());
                    await(s.Transaction.CommitAsync());
                }
            }
        }
Пример #21
0
 public void CanMaxProjectionOnIdentityProjection()
 {
     using (ISession s = OpenSession())
     {
         ISQLFunction arithmaticAddition = new VarArgsSQLFunction("(", "+", ")");
         ICriteria    c =
             s.CreateCriteria(typeof(Person)).SetProjection(
                 Projections.Max(Projections.SqlFunction(arithmaticAddition, NHibernateUtil.GuessType(typeof(double)),
                                                         Projections.Property("IQ"), Projections.Property("ShoeSize"))));
         IList list = c.List();
         Assert.AreEqual(108, list[0]);
     }
 }
Пример #22
0
        public async Task CreateWithNonEmptyManyToManyCollectionUpdateWithNewElementAsync()
        {
            ClearCounts();

            Plan     p = new Plan("plan");
            Contract c = new Contract(null, "gail", "phone");

            p.AddContract(c);
            ISession     s = OpenSession();
            ITransaction t = s.BeginTransaction();

            await(s.PersistAsync(p));
            await(t.CommitAsync());
            s.Close();

            AssertInsertCount(2);
            AssertUpdateCount(0);
            ClearCounts();

            Contract newC = new Contract(null, "sherman", "telepathy");

            p.AddContract(newC);

            s = OpenSession();
            t = s.BeginTransaction();
            await(s.UpdateAsync(p));
            await(t.CommitAsync());
            s.Close();

            AssertInsertCount(1);
            AssertUpdateCount(isContractVersioned ? 1 : 0);
            ClearCounts();

            s = OpenSession();
            t = s.BeginTransaction();
            p = await(s.CreateCriteria <Plan>().UniqueResultAsync <Plan>());
            Assert.That(p.Contracts.Count, Is.EqualTo(2));
            foreach (Contract aContract in p.Contracts)
            {
                if (aContract.Id == c.Id)
                {
                    Assert.That(aContract.CustomerName, Is.EqualTo("gail"));
                }
                else if (aContract.Id == newC.Id)
                {
                    Assert.That(aContract.CustomerName, Is.EqualTo("sherman"));
                }
                else
                {
                    Assert.Fail("unknown contract");
                }
                if (isPlanContractsBidirectional)
                {
                    Assert.That(aContract.Plans.First(), Is.SameAs(p));
                }
            }
            await(s.DeleteAsync(p));
            Assert.That(await(s.CreateCriteria <Contract>().SetProjection(Projections.RowCountInt64()).UniqueResultAsync <long>()), Is.EqualTo(0L));
            Assert.That(await(s.CreateCriteria <Plan>().SetProjection(Projections.RowCountInt64()).UniqueResultAsync <long>()), Is.EqualTo(0L));
            await(t.CommitAsync());
            s.Close();

            AssertUpdateCount(0);
            AssertDeleteCount(3);
        }
Пример #23
0
        private IQueryOver <VodovozOrder> GetOrdersQuery(IUnitOfWork uow)
        {
            OrderForRouteListJournalNode resultAlias = null;
            VodovozOrder     orderAlias            = null;
            Nomenclature     nomenclatureAlias     = null;
            OrderItem        orderItemAlias        = null;
            Counterparty     counterpartyAlias     = null;
            DeliveryPoint    deliveryPointAlias    = null;
            DeliverySchedule deliveryScheduleAlias = null;
            Employee         authorAlias           = null;
            Employee         lastEditorAlias       = null;
            District         districtAlias         = null;

            Nomenclature sanitizationNomenclature = new NomenclatureRepository(new NomenclatureParametersProvider()).GetSanitisationNomenclature(uow);

            var query = uow.Session.QueryOver <VodovozOrder>(() => orderAlias);

            if (FilterViewModel.ViewTypes != ViewTypes.Order && FilterViewModel.ViewTypes != ViewTypes.All)
            {
                query.Where(o => o.Id == -1);
            }

            if (FilterViewModel.RestrictStatus != null)
            {
                query.Where(o => o.OrderStatus == FilterViewModel.RestrictStatus);
            }

            if (FilterViewModel.RestrictPaymentType != null)
            {
                query.Where(o => o.PaymentType == FilterViewModel.RestrictPaymentType);
            }

            if (FilterViewModel.HideStatuses != null)
            {
                query.WhereRestrictionOn(o => o.OrderStatus).Not.IsIn(FilterViewModel.HideStatuses);
            }

            if (FilterViewModel.RestrictOnlySelfDelivery != null)
            {
                query.Where(o => o.SelfDelivery == FilterViewModel.RestrictOnlySelfDelivery);
            }

            if (FilterViewModel.RestrictWithoutSelfDelivery != null)
            {
                query.Where(o => o.SelfDelivery != FilterViewModel.RestrictWithoutSelfDelivery);
            }

            if (FilterViewModel.RestrictCounterparty != null)
            {
                query.Where(o => o.Client == FilterViewModel.RestrictCounterparty);
            }

            if (FilterViewModel.RestrictDeliveryPoint != null)
            {
                query.Where(o => o.DeliveryPoint == FilterViewModel.RestrictDeliveryPoint);
            }

            if (FilterViewModel.RestrictStartDate != null)
            {
                query.Where(o => o.DeliveryDate >= FilterViewModel.RestrictStartDate);
            }

            if (FilterViewModel.RestrictEndDate != null)
            {
                query.Where(o => o.DeliveryDate <= FilterViewModel.RestrictEndDate.Value.AddDays(1).AddTicks(-1));
            }

            if (FilterViewModel.RestrictLessThreeHours == true)
            {
                query.Where(Restrictions
                            .GtProperty(Projections.SqlFunction(
                                            new SQLFunctionTemplate(NHibernateUtil.Time, "ADDTIME(?1, ?2)"),
                                            NHibernateUtil.Time,
                                            Projections.Property(() => deliveryScheduleAlias.From),
                                            Projections.Constant("3:0:0")),
                                        Projections.Property(() => deliveryScheduleAlias.To)));
            }

            if (FilterViewModel.RestrictHideService != null)
            {
                query.Where(o => o.IsService != FilterViewModel.RestrictHideService);
            }

            if (FilterViewModel.RestrictOnlyService != null)
            {
                query.Where(o => o.IsService == FilterViewModel.RestrictOnlyService);
            }

            if (FilterViewModel.OrderPaymentStatus != null)
            {
                query.Where(o => o.OrderPaymentStatus == FilterViewModel.OrderPaymentStatus);
            }

            var bottleCountSubquery = QueryOver.Of <OrderItem>(() => orderItemAlias)
                                      .Where(() => orderAlias.Id == orderItemAlias.Order.Id)
                                      .JoinAlias(() => orderItemAlias.Nomenclature, () => nomenclatureAlias)
                                      .Where(() => nomenclatureAlias.Category == NomenclatureCategory.water && nomenclatureAlias.TareVolume == TareVolume.Vol19L)
                                      .Select(Projections.Sum(() => orderItemAlias.Count));

            var sanitisationCountSubquery = QueryOver.Of <OrderItem>(() => orderItemAlias)
                                            .Where(() => orderAlias.Id == orderItemAlias.Order.Id)
                                            .Where(() => orderItemAlias.Nomenclature.Id == sanitizationNomenclature.Id)
                                            .Select(Projections.Sum(() => orderItemAlias.Count));

            var orderSumSubquery = QueryOver.Of <OrderItem>(() => orderItemAlias)
                                   .Where(() => orderItemAlias.Order.Id == orderAlias.Id)
                                   .Select(
                Projections.Sum(
                    Projections.SqlFunction(
                        new SQLFunctionTemplate(NHibernateUtil.Decimal, "?1 * ?2 - IF(?3 IS NULL OR ?3 = 0, IFNULL(?4, 0), ?3)"),
                        NHibernateUtil.Decimal,
                        Projections.Property <OrderItem>(x => x.Count),
                        Projections.Property <OrderItem>(x => x.Price),
                        Projections.Property <OrderItem>(x => x.DiscountMoney),
                        Projections.Property <OrderItem>(x => x.OriginalDiscountMoney)
                        )
                    )
                );

            query.Left.JoinAlias(o => o.DeliveryPoint, () => deliveryPointAlias)
            .Left.JoinAlias(o => o.DeliverySchedule, () => deliveryScheduleAlias)
            .Left.JoinAlias(o => o.Client, () => counterpartyAlias)
            .Left.JoinAlias(o => o.Author, () => authorAlias)
            .Left.JoinAlias(o => o.LastEditor, () => lastEditorAlias)
            .Left.JoinAlias(() => deliveryPointAlias.District, () => districtAlias);

            query.Where(GetSearchCriterion(
                            () => orderAlias.Id,
                            () => counterpartyAlias.Name,
                            () => deliveryPointAlias.CompiledAddress,
                            () => authorAlias.LastName,
                            () => orderAlias.DriverCallId,
                            () => orderAlias.OnlineOrder,
                            () => orderAlias.EShopOrder,
                            () => orderAlias.OrderPaymentStatus
                            ));

            if (FilterViewModel.IncludeDistrictsIds != null && FilterViewModel.IncludeDistrictsIds.Any())
            {
                query = query.Where(() => deliveryPointAlias.District.Id.IsIn(FilterViewModel.IncludeDistrictsIds));
            }

            // Для того чтобы уже добавленные в МЛ заказы больше не появлялись
            if (FilterViewModel.ExceptIds != null && FilterViewModel.ExceptIds.Any())
            {
                query.Where(o => !RestrictionExtensions.IsIn(o.Id, FilterViewModel.ExceptIds));
            }

            var resultQuery = query
                              .SelectList(list => list
                                          .Select(() => orderAlias.Id).WithAlias(() => resultAlias.Id)
                                          .Select(() => orderAlias.SelfDelivery).WithAlias(() => resultAlias.IsSelfDelivery)
                                          .Select(() => deliveryScheduleAlias.Name).WithAlias(() => resultAlias.DeliveryTime)
                                          .Select(() => orderAlias.OrderStatus).WithAlias(() => resultAlias.StatusEnum)
                                          .Select(() => orderAlias.Address1c).WithAlias(() => resultAlias.Address1c)
                                          .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorLastName)
                                          .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorName)
                                          .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorPatronymic)
                                          .Select(() => counterpartyAlias.Name).WithAlias(() => resultAlias.Counterparty)
                                          .Select(() => districtAlias.DistrictName).WithAlias(() => resultAlias.DistrictName)
                                          .Select(() => deliveryPointAlias.CompiledAddress).WithAlias(() => resultAlias.CompilledAddress)
                                          .Select(() => deliveryPointAlias.City).WithAlias(() => resultAlias.City)
                                          .Select(() => deliveryPointAlias.Street).WithAlias(() => resultAlias.Street)
                                          .Select(() => deliveryPointAlias.Building).WithAlias(() => resultAlias.Building)
                                          .SelectSubQuery(orderSumSubquery).WithAlias(() => resultAlias.Sum)
                                          .SelectSubQuery(bottleCountSubquery).WithAlias(() => resultAlias.BottleAmount)
                                          .SelectSubQuery(sanitisationCountSubquery).WithAlias(() => resultAlias.SanitisationAmount)
                                          )
                              .OrderBy(x => x.CreateDate).Desc
                              .TransformUsing(Transformers.AliasToBean <OrderForRouteListJournalNode <VodovozOrder> >());

            return(resultQuery);
        }
Пример #24
0
        public async Task RemoveManyToManyElementUsingMergeAsync()
        {
            ClearCounts();

            Plan     p = new Plan("plan");
            Contract c = new Contract(null, "gail", "phone");

            p.AddContract(c);

            ISession     s = OpenSession();
            ITransaction t = s.BeginTransaction();

            await(s.PersistAsync(p));
            await(t.CommitAsync());
            s.Close();

            AssertInsertCount(2);
            AssertUpdateCount(0);
            ClearCounts();

            p.RemoveContract(c);
            Assert.That(p.Contracts.Count, Is.EqualTo(0));
            if (isPlanContractsBidirectional)
            {
                Assert.That(c.Plans.Count, Is.EqualTo(0));
            }
            s = OpenSession();
            t = s.BeginTransaction();
            p = (Plan)await(s.MergeAsync(p));
            await(t.CommitAsync());
            s.Close();

            AssertUpdateCount(isContractVersioned ? 1 : 0);
            AssertDeleteCount(0);
            ClearCounts();

            s = OpenSession();
            t = s.BeginTransaction();
            p = await(s.CreateCriteria <Plan>().UniqueResultAsync <Plan>());
            if (isPlanContractsInverse)
            {
                Assert.That(p.Contracts.Count, Is.EqualTo(1));
                c = p.Contracts.First();
                Assert.That(c.CustomerName, Is.EqualTo("gail"));
                Assert.That(c.Plans.First(), Is.SameAs(p));
            }
            else
            {
                Assert.That(p.Contracts.Count, Is.EqualTo(0));
                c = await(s.CreateCriteria <Contract>().UniqueResultAsync <Contract>());
                if (isPlanContractsBidirectional)
                {
                    Assert.That(c.Plans.Count, Is.EqualTo(0));
                }
                await(s.DeleteAsync(c));
            }
            await(s.DeleteAsync(p));
            Assert.That(await(s.CreateCriteria <Plan>().SetProjection(Projections.RowCountInt64()).UniqueResultAsync <long>()), Is.EqualTo(0L));
            Assert.That(await(s.CreateCriteria <Contract>().SetProjection(Projections.RowCountInt64()).UniqueResultAsync <long>()), Is.EqualTo(0L));
            await(t.CommitAsync());
            s.Close();

            AssertUpdateCount(0);
            AssertDeleteCount(2);
        }
Пример #25
0
        public static object[] CollectDetailParam(IDictionary <string, string> dic, List <string> statusList, List <string> typeList, bool newItem)
        {
            string orderNo       = (dic == null || !dic.ContainsKey("OrderNo")) ? null : dic["OrderNo"];
            string flow          = (dic == null || !dic.ContainsKey("Flow")) ? null : dic["Flow"];
            string partyFrom     = (dic == null || !dic.ContainsKey("PartyFrom")) ? null : dic["PartyFrom"];
            string partyTo       = (dic == null || !dic.ContainsKey("PartyTo")) ? null : dic["PartyTo"];
            string moduleType    = (dic == null || !dic.ContainsKey("ModuleType")) ? null : dic["ModuleType"];
            string locationFrom  = (dic == null || !dic.ContainsKey("LocationFrom")) ? null : dic["LocationFrom"];
            string locationTo    = (dic == null || !dic.ContainsKey("LocationTo")) ? null : dic["LocationTo"];
            string moduleSubType = (dic == null || !dic.ContainsKey("ModuleSubType")) ? null : dic["ModuleSubType"];
            string priority      = (dic == null || !dic.ContainsKey("Priority")) ? null : dic["Priority"];
            string createUser    = (dic == null || !dic.ContainsKey("CreateUser")) ? null : dic["CreateUser"];
            string startDate     = (dic == null || !dic.ContainsKey("StartDate")) ? null : dic["StartDate"];
            string endDate       = (dic == null || !dic.ContainsKey("EndDate")) ? null : dic["EndDate"];
            string currentUser   = (dic == null || !dic.ContainsKey("CurrentUser")) ? null : dic["CurrentUser"];

            DetachedCriteria selectCriteria      = DetachedCriteria.For(typeof(OrderDetail));
            DetachedCriteria selectCountCriteria = DetachedCriteria.For(typeof(OrderDetail))
                                                   .SetProjection(Projections.Count("Id"));
            IDictionary <string, string> alias = new Dictionary <string, string>();

            selectCriteria.CreateAlias("OrderHead", "od");
            selectCriteria.CreateAlias("od.PartyFrom", "pf");
            selectCriteria.CreateAlias("od.PartyTo", "pt");
            selectCountCriteria.CreateAlias("OrderHead", "od");
            selectCountCriteria.CreateAlias("od.PartyFrom", "pf");
            selectCountCriteria.CreateAlias("od.PartyTo", "pt");
            alias.Add("PartyFrom", "pf");
            alias.Add("PartyTo", "pt");

            #region 设置订单Type查询条件
            selectCriteria.Add(Expression.In("od.Type", typeList));
            selectCountCriteria.Add(Expression.In("od.Type", typeList));
            #endregion

            #region 设置订单SubType查询条件
            if (moduleSubType != null && moduleSubType != string.Empty)
            {
                selectCriteria.Add(Expression.Eq("od.SubType", moduleSubType));
                selectCountCriteria.Add(Expression.Eq("od.SubType", moduleSubType));
            }
            #endregion

            selectCriteria.Add(Expression.Eq("od.IsNewItem", newItem));
            selectCountCriteria.Add(Expression.Eq("od.IsNewItem", newItem));

            if (orderNo != null && orderNo != string.Empty)
            {
                selectCriteria.Add(Expression.Like("od.OrderNo", orderNo, MatchMode.Start));
                selectCountCriteria.Add(Expression.Like("od.OrderNo", orderNo, MatchMode.Start));
            }

            if (priority != null && priority != string.Empty)
            {
                selectCriteria.Add(Expression.Eq("od.Priority", priority));
                selectCountCriteria.Add(Expression.Eq("od.Priority", priority));
            }

            #region partyFrom
            if (partyFrom != null && partyFrom != string.Empty)
            {
                selectCriteria.Add(Expression.Eq("pf.Code", partyFrom));
                selectCountCriteria.Add(Expression.Eq("pf.Code", partyFrom));
            }
            else if (moduleType != BusinessConstants.CODE_MASTER_ORDER_TYPE_VALUE_PROCUREMENT)
            {
                #region partyFrom
                SecurityHelper.SetPartyFromSearchCriteria(
                    selectCriteria, selectCountCriteria, partyFrom, moduleType, currentUser);
                #endregion
            }
            #endregion

            #region partyTo
            if (partyTo != null && partyTo != string.Empty)
            {
                selectCriteria.Add(Expression.Eq("pt.Code", partyTo));
                selectCountCriteria.Add(Expression.Eq("pt.Code", partyTo));
            }
            else if (moduleType != BusinessConstants.CODE_MASTER_ORDER_TYPE_VALUE_DISTRIBUTION)
            {
                #region partyTo
                SecurityHelper.SetPartyToSearchCriteria(
                    selectCriteria, selectCountCriteria, partyTo, moduleType, currentUser);
                #endregion
            }
            #endregion

            if (locationFrom != null && locationFrom != string.Empty)
            {
                selectCriteria.Add(Expression.Eq("od.LocationFrom.Code", locationFrom));
                selectCountCriteria.Add(Expression.Eq("od.LocationFrom.Code", locationFrom));
            }

            if (locationTo != null && locationTo != string.Empty)
            {
                selectCriteria.Add(Expression.Eq("od.LocationTo.Code", locationTo));
                selectCountCriteria.Add(Expression.Eq("od.LocationTo.Code", locationTo));
            }

            if (flow != null && flow != string.Empty)
            {
                selectCriteria.Add(Expression.Eq("od.Flow", flow));
                selectCountCriteria.Add(Expression.Eq("od.Flow", flow));
            }

            if (createUser != null && createUser != string.Empty)
            {
                selectCriteria.Add(Expression.Eq("od.CreateUser.Code", createUser));
                selectCountCriteria.Add(Expression.Eq("od.CreateUser.Code", createUser));
            }

            #region date
            if (startDate != null && startDate != string.Empty)
            {
                selectCriteria.Add(Expression.Ge("od.CreateDate", DateTime.Parse(startDate)));
                selectCountCriteria.Add(Expression.Ge("od.CreateDate", DateTime.Parse(startDate)));
            }
            if (endDate != null && endDate != string.Empty)
            {
                selectCriteria.Add(Expression.Lt("od.CreateDate", DateTime.Parse(endDate).AddDays(1)));
                selectCountCriteria.Add(Expression.Lt("od.CreateDate", DateTime.Parse(endDate).AddDays(1)));
            }
            #endregion

            #region status
            if (statusList != null && statusList.Count > 0)
            {
                selectCriteria.Add(Expression.In("od.Status", statusList));
                selectCountCriteria.Add(Expression.In("od.Status", statusList));
            }
            #endregion
            return(new object[] { selectCriteria, selectCountCriteria, alias, false });
        }
Пример #26
0
        /// <summary>
        /// Gets the permissions for the specified entity
        /// </summary>
        /// <typeparam name="TEntity">The type of the entity.</typeparam>
        /// <param name="user">The user.</param>
        /// <param name="entity">The entity.</param>
        /// <param name="operationName">Name of the operation.</param>
        /// <returns></returns>
        public Permission[] GetPermissionsFor <TEntity>(IUser user, TEntity entity, string operationName) where TEntity : class
        {
            Guid key = Security.ExtractKey(entity);

            string[]        operationNames = Strings.GetHierarchicalOperationNames(operationName);
            EntitiesGroup[] entitiesGroups = authorizationRepository.GetAssociatedEntitiesGroupsFor(entity);

            //UsersGroup[] usersGroups = authorizationRepository.GetAssociatedUsersGroupFor(user);

            AbstractCriterion onCriteria =
                (Restrictions.Eq("EntitySecurityKey", key) || Restrictions.In("EntitiesGroup", entitiesGroups)) ||
                (Restrictions.IsNull("EntitiesGroup") && Restrictions.IsNull("EntitySecurityKey"));
            DetachedCriteria criteria = DetachedCriteria.For <Permission>()
                                        .Add(Restrictions.Eq("User", user) ||
                                             Subqueries.PropertyIn("UsersGroup.Id",
                                                                   SecurityCriterions.AllGroups(user).SetProjection(Projections.Id())))
                                        .Add(onCriteria)
                                        .CreateAlias("Operation", "op")
                                        .Add(Restrictions.In("op.Name", operationNames));

            return(FindResults(criteria));
        }
Пример #27
0
 public void Reproject(Projections.ProjectionInfo targetProjection)
 {
     //throw new NotImplementedException();
 }
Пример #28
0
        /// <summary>
        /// Gets the permissions for the specified entity
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="operationName">Name of the operation.</param>
        /// <returns></returns>
        public Permission[] GetGlobalPermissionsFor(IUser user, string operationName)
        {
            string[]         operationNames = Strings.GetHierarchicalOperationNames(operationName);
            DetachedCriteria criteria       = DetachedCriteria.For <Permission>()
                                              .Add(Expression.Eq("User", user) ||
                                                   Subqueries.PropertyIn("UsersGroup.Id",
                                                                         SecurityCriterions.AllGroups(user).SetProjection(Projections.Id())))
                                              .Add(Expression.IsNull("EntitiesGroup"))
                                              .Add(Expression.IsNull("EntitySecurityKey"))
                                              .CreateAlias("Operation", "op")
                                              .Add(Expression.In("op.Name", operationNames));

            return(FindResults(criteria));
        }
Пример #29
0
        public void IncomeSum(DateTime from, DateTime to, out double income, out double receivable)
        {
            income     = 0;
            receivable = 0;
            ICriteria criteria = _session.OpenSession().CreateCriteria(typeof(Booking));

            criteria.Add(LockCondition());
            criteria.Add(Expression.Ge("StartDate", from.Date));
            criteria.Add(Expression.Le("StartDate", to.Date));
            criteria.SetProjection(Projections.ProjectionList().Add(Projections.Sum("Total")).Add(Projections.Sum("Paid")));
            //criteria.SetProjection(Projections.Sum(Booking.TOTAL));
            //criteria.SetProjection(Projections.Sum(Booking.PAID));
            IList list       = criteria.List();
            IList resultList = (IList)list[0];

            if (resultList[0] != null)
            {
                income = Convert.ToDouble(resultList[0]);
            }
            if (resultList[1] != null)
            {
                receivable = income - Convert.ToDouble(resultList[1]);
            }
            return;
        }
Пример #30
0
        public virtual void AddProjection(ProjectionList projections)
        {
            var projection = Projections.Property(_accessor.ToPropertyName()).As(_accessor.Name);

            projections.Add(projection);
        }
Пример #31
0
        public IList <Customer> UseCriterialAPI_GetDistinctCustomers(DateTime orderDate)
        {
            IList <int> ids = Session.CreateCriteria(typeof(Customer))
                              .SetProjection(Projections.Distinct(Projections.ProjectionList().Add(Projections.Property("Id"))))
                              .CreateCriteria("Orders")
                              .Add(Restrictions.Gt("OrderDate", orderDate))
                              .List <int>();

            return(Session.CreateCriteria(typeof(Customer))
                   .Add(Restrictions.In("Id", ids.ToArray <int>()))
                   .List <Customer>());
        }
        public override QueryOver <NodeVersion> VisitFieldPredicate(FieldPredicateExpression node)
        {
            var fieldName  = node.SelectorExpression.FieldName;
            var valueKey   = node.SelectorExpression.ValueKey;
            var fieldValue = node.ValueExpression.Value;

            switch (fieldName.ToLowerInvariant())
            {
            case "id":
                Guid idValue = GetIdValue(node);

                switch (node.ValueExpression.ClauseType)
                {
                case ValuePredicateType.Equal:
                    return(QueryOver.Of <NodeVersion>().Where(x => x.Node.Id == idValue).Select(x => x.Id));

                case ValuePredicateType.NotEqual:
                    return(QueryOver.Of <NodeVersion>().Where(x => x.Node.Id != idValue).Select(x => x.Id));;

                default:
                    throw new InvalidOperationException(
                              "Cannot query an item by id by any other operator than == or !=");
                }
            }

            NodeVersion              aliasNodeVersion         = null;
            Attribute                aliasAttribute           = null;
            AttributeDefinition      aliasAttributeDefinition = null;
            AttributeStringValue     aliasStringValue         = null;
            AttributeLongStringValue aliasLongStringValue     = null;
            NodeRelation             aliasNodeRelation        = null;
            AttributeDateValue       aliasDateValue           = null;

            //TODO: This is going to need to lookup more than string values

            var queryString = QueryOver.Of <NodeVersion>(() => aliasNodeVersion)
                              .JoinQueryOver <Attribute>(() => aliasNodeVersion.Attributes, () => aliasAttribute)
                              .JoinQueryOver <AttributeDefinition>(() => aliasAttribute.AttributeDefinition, () => aliasAttributeDefinition)
                              .Left.JoinQueryOver <AttributeStringValue>(() => aliasAttribute.AttributeStringValues, () => aliasStringValue)
                              .Left.JoinQueryOver <AttributeLongStringValue>(() => aliasAttribute.AttributeLongStringValues, () => aliasLongStringValue)
                              .Left.JoinQueryOver(() => aliasAttribute.AttributeDateValues, () => aliasDateValue)
                              //select the field name...
                              .Where(x => aliasAttributeDefinition.Alias == fieldName);

            if (!valueKey.IsNullOrWhiteSpace())
            {
                //if the value key is specified, then add that to the query
                queryString = queryString.And(() => aliasStringValue.ValueKey == valueKey || aliasLongStringValue.ValueKey == valueKey).Select(x => x.Id);
            }


            //now, select the field value....
            switch (node.ValueExpression.ClauseType)
            {
            case ValuePredicateType.Equal:
                var sqlCeCompatibleQuery =
                    Restrictions.Or(
                        Restrictions.Eq(
                            Projections.Property <AttributeStringValue>(x => aliasStringValue.Value), fieldValue),
                        Restrictions.Like(
                            Projections.Property <AttributeLongStringValue>(x => aliasLongStringValue.Value),
                            fieldValue as string,
                            MatchMode.Exact));

                return(queryString.And(sqlCeCompatibleQuery).Select(x => x.Id));

            case ValuePredicateType.NotEqual:
                return(queryString.And(x => aliasStringValue.Value != fieldValue).Select(x => x.Id));

            case ValuePredicateType.MatchesWildcard:
            case ValuePredicateType.Contains:
                return(queryString.And(Restrictions.Like(Projections.Property <AttributeStringValue>(x => aliasStringValue.Value), fieldValue as string, MatchMode.Anywhere)).Select(x => x.Id));

            case ValuePredicateType.StartsWith:
                return(queryString.And(Restrictions.Like(Projections.Property <AttributeStringValue>(x => aliasStringValue.Value), fieldValue as string, MatchMode.Start)).Select(x => x.Id));

            case ValuePredicateType.EndsWith:
                return(queryString.And(Restrictions.Like(Projections.Property <AttributeStringValue>(x => aliasStringValue.Value), fieldValue as string, MatchMode.End)).Select(x => x.Id));

            case ValuePredicateType.LessThanOrEqual:
                return
                    (queryString.And(
                         Restrictions.Le(Projections.Property <AttributeDateValue>(x => aliasDateValue.Value),
                                         (DateTimeOffset)fieldValue)));

            case ValuePredicateType.GreaterThanOrEqual:
                return
                    (queryString.And(
                         Restrictions.Ge(Projections.Property <AttributeDateValue>(x => aliasDateValue.Value),
                                         (DateTimeOffset)fieldValue)));

            default:
                throw new InvalidOperationException(
                          "This linq provider doesn't support a ClauseType of {0} for field {1}".InvariantFormat(
                              node.ValueExpression.ClauseType.ToString(), fieldName));
            }
        }
Пример #33
0
        public async Task StringTypesAsync()
        {
            var whenFalse =
                Dialect is Oracle8iDialect
                //Most dialects allow to return DbType.String and DbType.AnsiString in case statement
                //But Oracle throws 'ORA-12704: character set mismatch'
                                        ? Projections.Constant("otherstring", NHibernateUtil.AnsiString)
                                        : Projections.Constant("otherstring");

            using (var session = OpenSession())
                using (var transaction = session.BeginTransaction())
                {
                    // data
                    await(session.SaveAsync(new Entity {
                        Name = "Alpha"
                    }));
                    await(session.SaveAsync(new Entity {
                        Name = "Beta"
                    }));
                    await(session.SaveAsync(new Entity {
                        Name = "Gamma"
                    }));

                    await(transaction.CommitAsync());
                }

            // whenTrue is constant, whenFalse is property
            using (var session = OpenSession())
            {
                ICriteria tagCriteria = session.CreateCriteria(typeof(Entity));

                var conditionalProjection = Projections.Conditional(
                    Restrictions.Not(
                        Restrictions.Like(nameof(Entity.Name), "B%")),
                    //Property - ansi string length 5; contstant - string, length 10
                    whenFalse,
                    Projections.Property(nameof(Entity.Name)));
                tagCriteria.SetProjection(conditionalProjection);

                // run query
                var results = await(tagCriteria.ListAsync());

                Assert.That(results, Is.EquivalentTo(new[] { "otherstring", "Beta", "otherstring" }));
            }

            // whenTrue is property, whenFalse is constant
            using (var session = OpenSession())
            {
                ICriteria tagCriteria = session.CreateCriteria(typeof(Entity));

                var conditionalProjection = Projections.Conditional(
                    Restrictions.Like(nameof(Entity.Name), "B%"),
                    Projections.Property(nameof(Entity.Name)),
                    whenFalse);
                tagCriteria.SetProjection(conditionalProjection);

                // run query
                var results = await(tagCriteria.ListAsync());

                Assert.That(results, Is.EquivalentTo(new[] { "otherstring", "Beta", "otherstring" }));
            }
        }
Пример #34
0
        public void Read()
        {
            fileHeader = ReadFileHeader();

            // Spatial reference system parameters are stored in a file with the same name but a different (.prj) extension.
            var prjFile = fName.Replace(".shp", ".prj");
            prjFile = prjFile.Replace(".SHP", ".PRJ");
            ReadSRSInfo(prjFile);

            // Read geometry
            Shapes = new List<Shape>();
            ReadShapes();

            // dBase file has the same name but a different (.dbf) extension.
            var dbaseFile = fName.Replace(".shp", ".dbf");
            dbaseFile = dbaseFile.Replace(".SHP", ".DBF");
            ReadDBaseFile(dbaseFile);

            if (fileHeader.ProjectionInfo != null)
            {
                if (fileHeader.ProjectionInfo.Name.ToLower().Contains("stereographic"))
                {
                    if (fileHeader.ProjectionInfo.Name.ToLower().Contains("south"))
                    {
                        Projection = Projections.PolarStereo;
                    }
                    else
                    {
                        Projection = Projections.PolarStereo;
                    }
                }
            }
        }
Пример #35
0
        /// <summary>
        /// Adds the postfix to the specified URL.
        /// </summary>
        /// <param name="url">The page URL.</param>
        /// <param name="prefixPattern">The prefix pattern.</param>
        /// <param name="unsavedUrls">The list of not saved yet urls.</param>
        /// <returns>
        /// URL with added postfix (if such needed)
        /// </returns>
        public string AddPageUrlPostfix(string url, string prefixPattern, List <string> unsavedUrls = null)
        {
            url = (url ?? string.Empty).Trim();
            var endsWithSlash = url.EndsWith("/", StringComparison.Ordinal);

            url = url.Trim('/');

            prefixPattern = (prefixPattern ?? string.Empty).Trim('/');
            if (string.IsNullOrWhiteSpace(prefixPattern) || prefixPattern.IndexOf("{0}", StringComparison.OrdinalIgnoreCase) == -1)
            {
                prefixPattern = "{0}";
            }

            var fullUrl = FixUrl(string.Format(prefixPattern + "/", url).Trim('/'));

            // Check, if such record exists
            var exists = PathExistsInDb(fullUrl) ||
                         (unsavedUrls != null && PathExistsInUnsavedList(fullUrl, unsavedUrls));

            if (exists)
            {
                // Load all titles
                var  urlToReplace = string.Format("/" + prefixPattern + "-", url);
                var  urlToSearch  = string.Format("{0}%", urlToReplace);
                Page alias        = null;

                var paths = unitOfWork.Session
                            .QueryOver(() => alias)
                            .Where(p => !p.IsDeleted)
                            .Where(Restrictions.InsensitiveLike(Projections.Property(() => alias.PageUrl), urlToSearch))
                            .Select(p => p.PageUrl)
                            .List <string>();

                if (unsavedUrls != null)
                {
                    unsavedUrls
                    .Where(u => u.StartsWith(urlToReplace))
                    .ToList()
                    .ForEach(paths.Add);
                }

                int maxNr       = 0;
                var recheckInDb = false;
                foreach (var path in paths)
                {
                    int pathNr;
                    var intStr = path.Replace(urlToReplace, null).Split('-')[0].Trim('/');

                    if (int.TryParse(intStr, out pathNr))
                    {
                        if (pathNr > maxNr)
                        {
                            maxNr = pathNr;
                        }
                    }
                    else
                    {
                        recheckInDb = true;
                    }
                }

                if (maxNr == int.MaxValue)
                {
                    recheckInDb = true;
                }
                else
                {
                    maxNr++;
                }

                if (string.IsNullOrWhiteSpace(url))
                {
                    fullUrl     = string.Format(prefixPattern, "-");
                    recheckInDb = true;
                }
                else
                {
                    fullUrl = string.Format(prefixPattern + "-{1}/", url, maxNr);
                }

                if (recheckInDb)
                {
                    return(AddPageUrlPostfix(fullUrl, null));
                }
            }

            // Restore trailing slash behavior if needed.
            if (configuration.UrlMode == TrailingSlashBehaviorType.Mixed)
            {
                if (endsWithSlash)
                {
                    if (!fullUrl.Trim().EndsWith("/", StringComparison.Ordinal))
                    {
                        fullUrl = string.Concat(fullUrl, "/");
                    }
                }
                else
                {
                    if (fullUrl.Trim().EndsWith("/", StringComparison.Ordinal))
                    {
                        fullUrl = fullUrl.TrimEnd('/').Trim();
                    }
                }
            }
            return(FixUrl(fullUrl));
        }